0. 写在前面
YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv1-CSDN博客
1. YOLOv2-更快更准
2017年,Joseph在YOLOv1的基础上,进行了大量的改进,提出了YOLOv2和YOLO9000,解决v1版本中召回率和定位精度方面的不足。
- 改进的网络适应多种尺寸的图片输入,并且能在检测精度和速度之间进行权衡;
- 引入Anchor机制,利用K-Means聚类的方法在训练集中聚类计算出更好地Anchor模板,提高了算法的召回率,同时结合图像细粒度特征,将浅层特征与深层特征相连接,有助于对小尺寸目标的检测;
- YOLO9000使用WorldTree混合来自不同资源的训练数据,并使用联合优化技术同时在ImageNet和COCO数据集上进行训练,能够实时地检测超过9000种物体。
2. 网络结构
YOLOv2采用DarkNet-19作为特征提取网络,改进后的网络总结:
- 与VGG相似,使用很多3×3卷积核,并且每一次池化后,下一层的卷积核通道数 = 池化输出的通道 × 2;
- 在每一层的卷积后,都增加了批量标准化(Batch Normalization)进行预处理;
- 采用降维的思想,把1×1的卷积置于3×3之间,用来压缩特征;
- 在网络最后的输出增加了一个global average pooling层;
- 整体上使用了19个卷积层,5个池化层。
3. DarkNet-19与YOLOv1和VGG16网络进行对比:
- VGG-16:大多数检测网络框架都是VGG-16作为基础特征提取器,功能强大,准确率高,但是计算复杂度较大,所以速度比较慢,YOLOv2网络结构上做了改进;
- YOLOv1:基于GooLeNet的自定义网络,比VGG-16的速度更快,精度上不弱VGG-16;
- DarkNet-19:速度方面处理一张图片相比于VGG快了6倍,在精度方面,在ImageNe上的测试也不错。
4. 具体改变方法
- Batch Normalization(BN)
- BN对数据进行预处理(统一格式、均衡化、去噪等)能大大提高训练速度,提升训练效果;
- YOLOv2对每一层输入的数据都进行批量标准化,这样网络就不需要每层都去学习数据分布,收敛起来会变更快;
- 一般用在卷积或者池化之后,激活函数之前,Conv+BN+ReLU+Pooling。
- 引入Anchor Box机制
- Yolov1设置了端对端,直接对边界框位置(x,yw,h)进行预测;因为没有R-CNN系列的推荐区域,前期的训练很难收敛;通过Anchors box通过筛选得到的代表性先验框Anchors,使得网络在训练时容易收敛;
- 在Faster R-CNN算法中,通过预测bounding box与ground truth的位置偏移值tx和ty,间接得到bounding box的位置,因为这个公式是无约束的,很容易向任何方向发生偏移,导致模型不稳定,故预测边界框中心点相对于该网格左上角坐标的相对偏移量,同时为了将bounding box的中心点约束在当前网格中,使用sigmoid函数将tx和ty归一化处理,将值约束在0-1之间,使模型训练更稳定。
- Convolution With Anchor Boxes
- YOLOv1有一个致命的缺陷,一张图被分成7×7的网格,一个网格只能预测一个类,当一个网格中同时出现多个类时,就无法检测出所有类;
- YOLOv2将YOLOv1网络中的FC层和最后一个Pooling层去掉,使得最后的卷积层输出可以有更高的分辨率特征;
- 缩减网络,用416×416大小的输入代替原来的448×448,使得网络输出的特征图有奇数大小的宽和高,进而使得每个特征图在划分单元格的时候只有一个中心单元格,通过5个Pooling层进行下采样,得到输出是13×13的像素特征;
- 借鉴Faster R-CNN,YOLOv2通过引入Anchor Boxes,预测Anchor Box的偏移值与置信度,而不是直接预测坐标值;
- 采用Faster R-CNN中的方式,每个Cell可预测出9个Anchor Box,共13×13×9=1521个(YOLOv2确定Anchor Boxes的方法进行维度聚类,每个Cell选择5个Anchor Box)。比YOLOv1预测的98个bounding box要多很多,因此在定位精度方面有较好的改善。
-
Anchors的聚类方法
-
YOLOv1的Anchor Box大小和比例都是按经验设定的,不具有代表性,网络不能自动学习到准确的预测为止;
-
YOLOv2使用K-Means聚类方法得到的Anchor Box大小,选择具有代表性的尺寸,进行一开始的初始化,传统的K-Means聚类方法是使用标准的欧式距离作为距离度量,这意味着大的box会比小的box产生更多的错误;
-
改进距离度量公式,聚类的目的是使Anchor boxes和临近的ground truth boxes 有更大的IOU值,到聚类中心的距离越小越好,但IOU越大越好。
-
-
细粒度特征(Fine-Grained Features)
- 定义:不同层之间的特征融合,YOLOv2通过添加一个PassThrough Layer,把高分辨率的浅层特征连接到低分辨率的深层特征中,再进行融合和检测;
- 先获取浅层26×26的特征图,将其同最后输出的13×13的特征图进行连接,最后输入检测器进行检测;
- PassThrough Layer与ResNet网络中的shortcut类似,将高分辨率的特征图作为输入,将其连接到后面的低分辨率特征图上,经过该层之后,特征图缩小了4倍,channels增加了4倍。
5. 性能表现
在VOC2007数据集上,YOLOv2在速度和精度上都比YOLOv1的效果好很多。