YOLOv3
- 1 摘要
- 2 YOLOv3
- 2.1 相对于v2的改进
- 2.2 网络架构
- 2.3 多尺度预测
- 2.4 YOLOv3结果
YOLO系列博文:
- 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
- 【第2篇:YOLO系列论文、代码和主要优缺点汇总】
- 【第3篇:YOLOv1——YOLO的开山之作】
- 【第4篇:YOLOv2——更好、更快、更强】
- 【第5篇:YOLOv3——多尺度预测】
1 摘要
- 发表日期:2018年4月
- 作者:Joseph Redmon, Ali Farhadi
- 论文:YOLOv3: An Incremental Improvement
- 代码:https://pjreddie.com/darknet/yolo/
- 主要优缺点:
- 使用Darknet-53作为主干网络,结合残差网络提高检测精度;
- 引入多尺度预测来改善对小物体的检测;
- 取消软分类器,使用独立的二元分类器提高模型性能。
2 YOLOv3
YOLOv3由 Joseph Redmon 和 Ali Farhadi 在 2018 年发表于 ArXiv上,它有着显著的改进和更大的架构,以达到与当时SOTA方法相当的水平,同时保持实时性能。
2.1 相对于v2的改进
YOLOv3相对于v2的变化如下:
- 边界框预测:YOLOv2网络为每个边界框预测四个坐标 tx, ty, tw, th,类似的,YOLOv3 使用逻辑回归为每个边界框预测一个目标性分数。对于与真实框重叠度最高的锚框,这个分数是 1,其余锚框则是 0。与 Faster R-CNN相反,YOLOv3 只为每个真实物体分配一个锚框。此外,如果没有任何锚框被分配给一个对象,则只会产生分类损失,而不会产生定位损失或置信度损失。
-
类别预测:v3没有使用 softmax 进行分类,而是将问题表示为多标签分类,使用二元交叉熵来训练独立的逻辑分类器。这一改变允许同一个框可以被赋予多个标签,可以很好地应用到一些具有重叠标签的复杂数据集中。例如,同一个物体既可以是“人”也可以是“男人”。
-
新的骨干网络:YOLOv3 具有一个更大的特征提取器,由 53 个带有残差连接的卷积层组成。
-
空间金字塔池化(SPP):论文中没有提到,作者还在骨干网络中添加了一个修改后的 SPP 块,该块将多个最大池化输出拼接在一起,但不进行下采样(步长 = 1),每个输出具有不同的核,大小是k × k,其中 k = 1, 5, 9, 13,扩大了感受野。这个版本被称为 YOLOv3-spp,是表现最好的版本,AP50 提高了 2.7%。
-
多尺度预测:类似于特征金字塔网络,YOLOv3 在三个不同尺度上预测三组框。
-
先验边界框:与 YOLOv2 类似,作者也使用 k-means 来确定Anchor。区别在于,在 YOLOv2 中,每格使用总共五个先验框,而在 YOLOv3 中,他们在三个不同尺度上使用三个先验框。
这些改进共同使得 YOLOv3 在维持实时性能的同时,达到了与当时的SOTA方法相媲美的效果。
2.2 网络架构
YOLOv3 中提出的架构骨干网络被称为 Darknet-53,它将所有的最大池化层替换为步幅卷积,并添加了残差连接,总共包含 53 个卷积层。
Darknet-53 骨干网络在 Top-1 和 Top-5 准确率上与 ResNet-152 相当,但速度几乎快了一倍。
2.3 多尺度预测
除了更大的架构外,YOLOv3 的一个关键特性是多尺度预测,即在多个网格尺寸上进行预测,这有助于获得更精细的边界框,并显著提高了小物体的预测能力,这是之前版本YOLO的主要劣势之一。
多尺度检测架构工作原理如下图所示:
第一个输出标记为y1,相当于YOLOv2的输出,大小是13×13。
第二个输出y2由Darknet-53中的(Res×4)的输出与(Res×8)的输出拼接而成。因为特征图大小不同(13×13和26×26),所以在拼接前有一个上采样的操作。
最后,通过上采样操作,第三个输出y3将26×26和52×52的特征图拼接起来。
对于包含80个类别的COCO数据集,每个尺度提供一个形状为N×N×[3×(4+1+80)]的输出张量,其中N×N是特征图(或网格单元)的大小,3表示每个单元格中的框数,而4+1包括四个坐标值和目标性分数,80是类别数。
2.4 YOLOv3结果
当YOLOv3发布时,物体检测的基准已经从PASCAL VOC变为了Microsoft COCO。因此,从那时起,所有的YOLO模型都在MS COCO数据集上进行评估。YOLOv3-spp在20帧每秒(FPS)的速度下达到了平均精度AP 36.2%和AP50 60.6%,这在当时达到了SOTA水平,并且速度是其他模型的两倍。