目录

一、YOLO的概念

二、单阶段和双阶段

三、比较模型的指标

1.IOU

2.置信度

 3.MAP指标

四、YOLOv1

五、YOLOv2


一、YOLO的概念

yolo(you only look once)是一种基于深度学习的目标检测算法。核心思想就是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别和位置。(yolo就是一个框架,一整套的解决方法,可以直接下载调用,传入一些参数就能使用。)

yolo算法将输入图像分为sxs个网格,每个网格负责预测该网格内是否存在目标以及目标的类别和位置信息。(但这里不是真的去切分一个图片,是在算法逻辑上进行划分区域,这样就达到计算快的效果)

此外,YOLO算法还采用了多尺度特征融合的技术,使得算法能够在不同尺度下对目标进行检测。 相比于传统的目标检测算法,如R-CNN、Fast R-CNN和Faster R-CNN等,YOLO算法具有更快的检测速度和更高的准确率。这得益于其端到端训练方式和单阶段检测的特性,使其可以同时处理分类和定位任务,避免了传统方法中的多阶段处理过程。经典的检测 方法有两种:one-stage:yolo系列;two-stage:faster-rcnn和mask-Rcnn系列。(YOLO 不仅更快,还在快的同时保持了很高的准确率,因为它是单阶段、端到端 + 多尺度融合检测)

二、单阶段和双阶段

双阶段的核心就是先筛选在细查,分为两步。

单阶段核心就是一步到位,直接输出最终结果。

YOLO系列就是单阶段

one-stage(单阶段)的优缺点:

  • 优点:识别速度非常快,适合做实时检测任务
  • 缺点:正确率相对较低

two-stage(双阶段)的优缺点:

  • 优点:正确率比较高,识别效果理想
  • 缺点:识别速度比较慢,通常达到5FPS(关于这项指标将会在后面介绍)

三、比较模型的指标

有哪些指标?

下面这张图是四个模型的对比,四个模型分别是SSD300,SSD500,YOLOv2,Tiny YOLO(Tiny代表精简版的意思)。mAP,FLOPS,FPS,Cfg,Weights是这几个模型对比的指标。

FLOPS:表示模型进行一次前向传播(即处理一张图像)所需要的浮点运算次数。它是一个衡量算法效率的关键指标,与模型的计算量和推断速度密切相关。简单来说,就是用来衡量模型的复杂度,越复杂就说明计算越多。

FPS:每秒可以处理的图像数量

1.IOU

在介绍map指标前需要先了解另一个指标IOU

yolo系列是目标检测,所以在一张图片上进行检测时,就会有两个框一个是目标检测真实框一个是预测框。

area of overlap=真实框和预测框的交集(

area of union=真实框和预测框的并集(

所以当IOU值越接近1的时候说明预测正确率更高,越接近0的时候说明正确率越低

2.置信度

此外还有一个指标叫做置信度,也是yolo系列中经常用到的

表示某个预测框中存在目标的可能性大小,是一个介于 0 到 1 之间的数值。例如,一个预测框的目标存在置信度为 0.8,意味着模型有 80% 的把握认为该预测框中包含一个目标。

 3.MAP指标

指标越高,表示正确率就越高,因为模型中牵扯到分类和回归,所以不能只用准确率或者r的平方作为指标。

再过去我们分类所用衡量模型的指标是精确率(预测的结果中有多少是正确的)、召回率(真实的结果中有多少是预测正确的),虽然我们yolo中不用此来做最终指标,但是获得map指标的过程中会用到。

在目标检测中,精确率和召回率的计算。

下面是三张目标检测结果图

蓝色区域框是真实框,另一个框是预测框,旁边红色数字是置信度。

有无预测到物体的判断:限制置信度阈值,例如阈值为0.9,超过0.9表示成功检测到物品对象,为1;低于阈值的表示没有成功检测到物品对象,为0.

目标检测精确率和召回率的计算步骤:

1)限制阈值:如果把阈值设为0.9,则图一是预测成功的,图二和图三是不成功的。

2)统计TP、FP、FN。

TP就是真实值是1预测值也是1,意思就是预测成功的,所以TP=1;

FP是真实值为0,但是预测值为1,三张图片真实值都为1,所以这里FP=0;

FN是真实值为1但是预测却没有,也就是没有预测成功的,所以FN=2。

3)然后我们再根据公式就可以算出来,精确率=tp/(tp+fp)=1/1,召回率=tp/(tp+fn)=1/3

当然,一开始设置的阈值不同那么结果就会不同,根据不同的阈值,我们绘制出召回率和精确率的曲线。(上述过程中只限制了置信度阈值,此外也可以限制IOU的值,多个条件限制也有助于结果的正确率提升。)

将曲线以下和坐标轴围成的面积作为map值,当map值越大,表示指标越好。

其中:(Map50-90意思就是计算这个范围内的阈值下的结果以0.05步长计算,计算出的结果求平均。)

  • mAP50:表示当 IoU 阈值为 0.5 时模型的平均精度。即只考虑预测框与真实框的重叠部分达到 50% 及以上的情况,计算所有类别的 AP(Average Precision)的平均值,AP 衡量的是随着不同置信度阈值的召回率变化,精度是如何变化的。mAP50 是一个固定的评估标准,仅关注 IoU 为 0.5 这一特定阈值下的模型性能。
  • mAP50 - 95:衡量的是模型在 IoU 阈值从 0.5 到 0.95 范围内的平均精度。计算的是所有类别的 AP 的平均值,其中 AP 是在 IoU 阈值从 0.5 到 0.95 的每个 0.05 步长上计算的。mAP50 - 95 考虑了更广泛的 IoU 范围,能够评估模型在不同重叠程度下的性能,提供了更全面的模型性能评估,是一个更严格的评估指标,其值通常比 mAP50 要低。

四、YOLOv1

1.输入图像:448x448x3,这是YOLOv1要求的固定的输入尺寸

2.主要结构:修改了googlenet,去掉了最后的全连接层,只保留了前20层卷积用来提取图像特征。

3.输出特征图:是14x14x1024的特征图

4.中间卷积:中间的几个14x14x1024和7x7x1024是YOLOv1自己设计的额外卷积层。都是用来提取和融合特征,下采样压缩空间维度,通道数保持1024,作用就是在保持高通道数的同时,逐步降低特征图尺寸。

5.全连接层:第一个全连接层FC,R是把7x7x1024的特征图展平,变成4096x1的向量,这里的R代表ReLU激活函数。第二个全连接层FC是把4096x1映射到1470x的向量。

6.reshape:将1470x1的向量重塑为7x7x30。7x7x30中7x7表示把图像分为7x7个网格,在一开始介绍YOLO的时候就提到过,这个切分不是真的切分。30维度中有十个维度是两个边界框的信息数值,每个网格都会有两个预测框,每个框有五个参数数值,x、y、w、h、confidence(置信度),x、y是这个框的中心点坐标,w是宽,h是高,宽和高都会被归一化。30中剩下的20是类别,也就是假设该网格负责预测物体,那么它是某个类别的概率。

7.检测后处理:从7x7x30的张量中解码楚所有预测框,应用非极大值抑制(NMS),去除重复框,然后输出图像中的检测结果(类别+边界框)

8.损失函数:YOLOv1的损失包括三部分,位置误差,confidence误差,分类误差。所以YOLOv1中损失函数的存在就是让这三个方面的损失达到一个平衡,使得模型效果达到最优。

本文第一句话就说yolov1把检测当成回归问题,不是分类。总体上就是在预测坐标,置信度和类别,所以损失函数全是平方误差,用来衡量预测值和真实值差多少。

1)位置误差

2)置信度误差

3)分类误差

整个损失函数运行中

  • 对每个网格、每个框:如果它负责预测物体 → 算位置误差 + 置信度误差 + 分类误差。如果它不负责预测物体 → 只算置信度误差(权重更低)。
  • 把所有误差加起来,就是总损失。
  • 训练时,模型通过反向传播,不断调整参数,让总损失越来越小。

9.NMS(非极大值抑制):当我们进行目标检测的时候,假如现在我们所给图片中的目标检测是一个人,模型一下子给很多个框,都框住了这个人,位置少有偏差,如下图。

每个框的置信度都不一样,但他们都指向用一个目标,而且最终我们也只要一个框,这时候NMS的作用就是留下分数高的,删掉那些与它重叠大的框。

NMS具体步骤:

  • 找出置信度最高的框
  • 计算其他框和他的重叠IOU
  • IOU超过阈值就删掉(这里阈值是可以自己定的)
  • 重复上面步骤直到没有重复框

类比:相当于给很多人分配同一个任务,然后最后选出一个做的最好的人

10.YOLOv1的优缺点

优点:速度快,简单

缺点:每个网格只预测一个类别,如果目标重叠了就无法识别出两个;其次就是小物体的检测效果一般,长宽比可选,但依旧限制在方框中,所以比较单一。

五、YOLOv2

在yolov1的基础上,v2做出的改变

1.YOLOv2版本舍弃了Dropout,卷积后全部加入Batch Normalization(残差网络的时候提到过)。网络的每一层都做了归一化,收敛相对更容易。经过Batch Normalization处理后的网格会提升2%的map。

2.YOLOv2有更大的分辨率,v1训练的时候用的是224*224,测试时用的是448*448,v2训练时额外进行了10次448*448的微调,使用高分辨率分类器后,YOLOv2的map提升4%。

3.YOLOv2网络结构:自研的darknet,实际输入是416*416,没有FC层5次降采样(压缩五次,2的5次方倍,所以输入图像必须是32的倍数),输出13*13的网格,1*1的卷积节省很多参数v2结构更简洁,计算效率更高,同时特征提取能力更强。

4.YOLOv2聚类提取先验框:faster-rcnn系列选择的先验框比例都是常规的,但是不一定完全适合数据集。。流程:在模型训练之前,提前把训练集的标签值提取出来,通过k-means聚类的方法,聚类出5个类别。结果当作是先验框。 最后在进行模型训练。

5.YOLOv2Anchor Box:通过引入anchor boxes,使得预测的box数量更多(13*13*n),跟faster-rcnn系列不同的是先验框并不是直接按照长宽固定比给定。v1直接给定,导致小目标检测效果差,v2提升了小目标和不同比例物体的检测精度。

6.YOLOV2Directed Location Prediction bbox:这是一种方法,其目的是进行位置微调,预测偏移量。它用于限制偏移量,以防止在训练时出现发散。这种方法预测的是相对位置,即相对于网格的偏移量。YOLOv1偏移中存在的问题,就是中心点可能会出网格。v2就不会出网格,训练更稳定,收敛更快。

7.YOLOV2Fine-Grained Features:浅层特征,细节丰富位置精确,分辨率大,感受野小。

v1最后一层时感受野太大了,小目标可能丢失了,需融合之前的特征。v2提升了对小目标的检测能力。

感受野:就是特征图上的点能看到原始图像多大区域。

8.YOLOV2Multi-Scale:整个网络结构不包含全连接层,因此输入图片的大小可以任意 最小的图像尺寸为320*320 最大的图像尺寸为608*608,输入的图片应该是32的倍数。v1只能接受固定尺寸,v2更灵活。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐