上一节总结了目标检测任务的one stage的三个代表性算法:SSD、RetinaNet以及YOLO v1(anchor free),本节将总结YOLO v2的网络亮点和设计细节。
有一个有趣的说法:YOLO将检测问题当做回归任务来解决,而不是分类任务
目录
3.2 High Resolution Classifier
3.5 Direct location prediction
3.6 Fine-Grained Features(细粒度特征)
1. YOLO v1缺陷(2016,CVPR)
- 群体性小目标检测效果差【第一节有具体分析为什么】
- 当目标出现新的尺寸或配置(目标比例)时,检测效果差(v1需要固定输入尺寸)
- 定位不准确(不基于anchor,而是直接预测目标的坐标信息,有点类似演化思想)
2. YOLO v2设计思想(2017,CVPR)
- 为提高物体定位精准性和召回率,相比v1提高了训练图像的分辨率
- 引入了faster rcnn中anchor box的思想
- 对网络结构的设计进行了改进,输出层使用卷积层替代YOLO的全连接层
- 相比YOLO,YOLO9000在识别种类、精度、速度、和定位准确性等方面都有大大提升
- 可以看到v2在544*544图像上的map达到78.6,当前最高值
3. YOLO v2的一些尝试
3.1 Batch Normalization
- v1中未使用BN,这里使用了BN操作,作者也通过实验证明该操作明显加速训练
- 减少了一系列正则化处理(移除了dropout),提升将近2个点
3.2 High Resolution Classifier
- v1中采用224*224训练分类器网络
- v2采用448*448,mAP提升4个点
3.3 Anchor Box
- 尝试使用基于anchor预测,这样能够简化目标边界框预测问题
- 未使用时,69.5mAP,recall81%;使用之后,69.2mAP,recall88%
- 召回率明显增大,意味着模型拥有更多的提升空间
3.4 Dimension Clusters(anchor聚类)
- 之前的Faster R-CNN和SSD中,作者并未给出我们为什么要采用给定的哪些预设anchor
- 如果我们拿到一个新的网络该如何预设anchor呢?
- 本文作者采用k-means法来获取anchor(也就是文中提到的prior)
- 基于训练集中所有目标的边界框采用k-means
3.5 Direct location prediction
- 之前的边界框回归损失项中,中心坐标的更新是通过边界框宽度乘以一个缩放系数,然后加上原始坐标位置,因为没有限制缩放系数的范围,导致训练的大部分时候都是不稳定的
- v2中通过对预测中心坐标偏移量(缩放系数)进行限制,让网络训练更稳定
- 通过sigmoid函数将其映射到[0,1]范围内,这样就保证该边界框一直在该网格内
3.6 Fine-Grained Features(细粒度特征)
- 之前的Faster R-CNN(FPN)和SSD均使用了不同的feature map以适应不同尺度大小的目标
- v2通过深度拼接的方式融合高层和底层的信息(passthrough layer)
- 该操作是特征图宽和高减半,深度变为4倍
3.7 Multi-scale Training
- 训练过程替换掉固定的输入图像尺寸(可以提高网络鲁棒性)
- 具体实现:每迭代10个batches,网络随机选择一个输入图像尺寸{320,352,..,608}
- 这里是因为图像缩放因子(下采样倍率)为32(输入尺寸416/输出尺寸13 = 32)
4. YOLO v2网络结构
4.1 Darknet-19(backbone)
- YOLOv2提出了一种新的分类模型Darknet-19,包含 19 conv + 5 maxpooling.
- 借鉴了很多其它网络的设计概念.主要使用3x3卷积并在pooling之后channel加倍(VGG)
- global average pooling替代全连接做预测分类
- 并在3x3卷积之间使用1x1卷积压缩特征表示(Network in Network)
- 使用 batch normalization 来提高稳定性,加速收敛,对模型正则化
4.2 实际预测网络
参考来源:
目标检测网络之 YOLOv3 - 康行天下 - 博客园 (cnblogs.com)
霹雳吧啦Wz:3.1 YOLO系列理论合集(YOLOv1~v3)