yolo目标检测系列--综述--v1
YOLO目标检测系列发展史
一、yolo v1
Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi.
You Only Look Once: Unified, Real-Time Object Detection. CVPR 2016
https://arxiv.org/abs/1506.02640
1.1 You Only Look Once: Unified, Real-Time Object Detection
• YOLO将全图划分为S×S的格子, 每个格子负责对落入其中的目标进行检测,一次性预测所有格子
所含目标的边界框、定位置信度、以及所有类别概率向量。
1.2 网格单元 (Grid cell)
-
YOLO将输入图像分成S×S网格。 每个网格单元仅预测一个目标。
例如,下面的黄色网格单元试图预测其中心(蓝点)落在网格单元内的 “人”目标。 -
每个网格单元预测固定数量的边界框。
在此示例中,黄色网格单元格进行2个边界框预测(蓝色框)来定位人的位置 -
对于每个网格单元,
• 预测B个边界框,每个框计算一个框置信度得分 (box confidence score)
• 只检测一个目标而不管边界框B的数量
• 预测C个条件类别概率(conditional class probabilities ) 。对于可能的目标类别,
每个类别预测一个值。
1.3 更多细节
•每个边界框包含5个元素:(x,y,w,h)和一个框置信度得分。
•框置信度得分(box confidence score)反映了框包含一个目标的可能性(objectness )以及边界框的准确程度。
•将边界框宽度w和高度h用图像宽度和高度归一化。 x和y是相应单元格的偏移量。 因此,x,y,w和h都在0和1之间。
•每个单元格有20个条件类别概率。 条件类别概率( conditional class probability )是检测到的目标属于特定类别
的概率(每个单元的每个类别有一个概率)。
更多细节
•为了评估PASCAL VOC,使用S = 7,B = 2。PASCAL VOC有20个类别标记,因此C = 20。最终预测是7 × 7 ×
30的张量。
•YOLO’s prediction has a shape of (S, S, B×5 + C) = (7, 7, 2×5 + 20) = (7, 7, 30).
1.4 网络设计
•YOLO主要是建立一个CNN网络来预测(7,7,30)的张量。 它使用CNN网络将空间维度减小到7×7,每个位置有1024个输出通道。
•YOLO使用两个全连接层执行线性回归,以进行7×7×2边界框预测。 将具有高的框置信度得分(大于0.25)的结果作为最终预测。
•YOLO有24个卷积层,后面是2个全连接的层(FC)。
•一些卷积层交替使用1×1的reduction层以减少特征图的深度。 对于最后一个卷积层,它输出一个形状为(7,7,1024)的张量。然后张量展开。 使用2个全连接的层作为一种线性回归的形式,它输出7×7×30个参数,然后reshape为(7,7,30)。
1.5 损失函数(Loss function)
- YOLO每个网格单元预测多个边界框。
为了计算true positive的损失,只希望其中一个框负责该目标。
为此,选择与GT具有最高IoU的那个框。
YOLO使用预测值和GT之间的误差平方的求和来计算损失。 损失函数包括:
➢ classification loss, 分类损失
➢ localization loss, 定位损失(预测边界框与GT之间的误差)
➢ confidence loss, 置信度损失(框的目标性;objectness of the box)
分类损失
定位损失
置信度损失(Confidence loss)
1.6 NMS 非极大值抑制
YOLO可能对同一个目标进行重复检测。 为了解决这个问题,YOLO采用非最大抑制(NMS)来消
除置信度较低的重复。 非最大抑制可以增加2~3%的mAP。
- 按类别置信度分数对预测进行排序
- 从最高分开始,如果发现任何先前的预测具有相同的类别并且与当前预测的IoU> 设定的阈值,则忽略当前预测
- 重复步骤2,直到检查完所有预测
1.7 yolo v1 优缺点
- 优点:
• 快速 (45fps),适合实时处理。
• 预测目标位置和类别由单个网络完成。 可以端到端训练以提高准确性。
• YOLO更加一般化。 当从自然图像推广到其它领域(如艺术图像)时,它优于其他方法 - 缺点:
对小目标及邻近目标检测效果差:
• 当一个小格中出现多于两个小目标或者一个小格中出现多个不同目标时效果欠佳。
• 原因:B表示每个小格预测边界框数,而YOLO默认落入同一格子里的所有边界框均为同种类的目标。