YOLO V1
一、核心思想
YOLO V1将目标检测视为一个单一的回归问题,摒弃了传统的两阶段目标检测方法(即先提取候选区域再进行分类)。它直接将整张图像作为网络的输入,经过一个神经网络后直接输出边界框(bounding box)的位置以及所属的类别。
将一幅图像分成SxS个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。
生成两个预选框,以及中心点:
二、网络架构
网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。(用1×1 reduction layers 紧跟 3×3 convolutional layers 取代Goolenet的 inception modules )。
- 输入层:输入图像的尺寸固定为448×448。这是因为YOLO V1的网络中,卷积层最后接了两个全连接层,而全连接层要求输入的数据是固定尺寸的。
- 卷积层:共有24个卷积层,用于对输入图像进行特征提取,不断地提取图像的抽象特征。在3×3的卷积后接1×1卷积,既降低了计算量,也提升了模型的非线性能力。
- 全连接层:两个全连接层位于卷积层之后。第一个全连接层将卷积得到的分布式特征映射到样本标记空间,把输入图像的所有卷积特征整合到一起;第二个全连接层将所有神经元得到的卷积特征进行维度转换,最后得到与目标检测网络输出维度相同的维度。除最后一层使用线性激活函数外,其余层都使用LeRU激活函数。
为什么最终会得到7x7x30的结果呢?
7×7意味着7×7个grid cell,30表示每个grid cell包含30个信息,其中2个预测框,每个预测框包含5个信息(x y w h c),分别为中心点位置坐标,宽高以及置信度,剩下20个是针对数据集的20个种类的预测概率(即假设该grid cell负责预测物体,那么它是某个类别的概率)。
三、损失函数
YOLO-V1算法最后输出的检测结果为7x7x30的形式,其中30个值分别包括两个候选框的位置和有无包含物体的置信度以及网格中包含20个物体类别的概率。
那么YOLO的损失就包括三部分:坐标位置误差,confidence误差,分类误差。
- 目标:让坐标(x,y,w,h),confidence,classification这个三个方面达到很好的平衡。
1. 坐标位置误差
判断若是预测物体则为1,进行中心点误差计算,若不是则为0不计算。
注意!!:只计算识别到物体的误差。
2. confidence误差
同位置误差相同,只计算识别到物体的误差。
对于下面公式noobj计算方式与上面公式相反,识别到物体标为0,没识别到标为1,这样计算的好处是:
若判断无误的话,计算结果为0,万一!出现识别错误了,可以减小误差。
计算方式是预测值减去标签值,可是我们知道,标签值中是不包含置信度的,那么,我们该如何计算标签值的置信度呢?
- 置信度计算
3. 分类误差
注意!!:不同之处,类别的概率预测与预选框个数无关,值计算每个网络的类别误差。
四、NMS非极大值抑制
NMS的主要目的是解决目标检测过程中出现的重复检测问题。在目标检测任务中,算法可能会预测出多个重叠或相似的边界框(bounding boxes),这些边界框可能指向同一个目标。NMS通过筛选局部极大值,找到最优的边界框,并抑制其他冗余的边界框。
五、YOLO优缺点
-
优点:
-
速度快:YOLO V1能够快速地处理图像,标准版本每秒可以处理45帧图像,极速版本甚至可以每秒处理150帧图像,完全满足视频的实时检测要求。
-
假阳性率低:在区分前景和背景区域方面表现较好,检测错误的情况较少,即不是目标误认为目标的概率较低。
-
泛化能力强:能够提取到目标通用的特征,迁移能力强,可以运用到其他新的领域。
-
-
缺点:
-
检测精度低:对于小物体以及靠得特别近的物体,检测效果不好。因为每个网格只有两个边框做预测,并且只有一个类别,当多个目标的中心都落在同一个网格里的时候,只能预测出来一个。
-
定位不准确:在损失函数中,大物体与小物体的位置损失权重是一样的,导致同等比例的位置误差,大物体的损失会比小物体大。
-
对新物体或宽高比例不常见的物体检测效果差:由于没有类似于anchor的先验框,对于新出现的物体或宽高比例不常见的物体,模型的检测效果不佳。
-
总结
本篇介绍了:
- YOLO V1目标检测直接将整张图像作为网络的输入,直接输出边界框的位置以及所属的类别
- 网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。最后输出结果包含两个预选框返回的中心坐标值以及宽高和置信度、类别数量。
- YOLO的损失就包括三部分:坐标位置误差,confidence误差,分类误差。值得注意的是,损失值只计算识别到物体的误差。
- 针对邻近网格可能会识别同一目标,发生重复检测问题,使用非极大值抑制找到最优边界框。