上一篇介绍了YOLO v1,这篇文章介绍一下它升级之后的版本。YOLO v2.它在保持较高检测速度的同时,提高了检测的准确率。
一.网络结构的改进:
使用 Darknet-19:YOLOv2 采用了新的骨干网络 Darknet-19,它包含 19 个卷积层和 5 个最大池化层。与之前的网络结构相比,Darknet-19 的计算量更小,准确率更高,能够在保证检测速度的同时提高模型的性能。Darknet-19 中的大部分卷积层由 3x3 卷积和 1x1 卷积组成,这种结构可以有效地提取图像的特征。
二.训练策略的优化:
高分辨率分类器:在 YOLOv1 中,先使用 224×224 的输入分辨率训练卷积层进行图像分类,再用 448×448 的分辨率训练模型进行目标检测,这种分辨率的切换对模型性能有一定影响。而 YOLOv2 在采用 224×224 的图像进行分类模型预训练后,会再用 448×448 的高分辨率样本对分类模型进行微调(10 个 epoch),使网络特征逐渐适应 448×448 的分辨率,然后再使用 448×448 的检测样本进行训练,缓解了分辨率突然切换造成的影响。
批标准化(Batch Normalization):在 YOLOv2 的每一个卷积层后都添加了批标准化(BN)层。批标准化有助于解决反向传播过程中梯度消失和梯度爆炸的问题,降低了对一些超参数的敏感性,并且对每一个 batch 分别进行归一化,起到了一定的正则化效果,从而使模型获得更高的收敛速度,最终使平均精度均值(mAP)提高了约 2%。
多尺度训练:由于去掉了全连接层,YOLOv2 可以适应不同尺寸的输入。为了让模型对于不同的输入图片尺寸具有更好的鲁棒性,作者采用了多尺度训练方案。下采样的因子是 32,所以选择的输入图片尺寸被定为 {320, 352,..., 608},即最小的输入分辨率为 320×320,最大为 608×608。训练时,每 10 个 batch 就随机更换一种尺寸,使网络能够适应各种大小的对象检测。
三.检测方法的改进:
引入锚框(Anchor Boxes):YOLOv1 直接用网络预测得到边界框的坐标,没有使用锚框。而 YOLOv2 引入了锚框机制,每个网格的预测窗口个数提升到了 5 个,并通过 K-means 聚类方法自动选择锚框的尺寸和比例,而非像 Faster R-CNN 一样手动选择。使用锚框后,预测时就是预测边界框相对于锚框的偏移量,这对于网络来说更容易学习,在一定程度上提高了检测的准确率和召回率。
直接位置预测:在引入锚框后,YOLOv2 对预测边框的位置进行了改进。通过预测得到的偏移量来计算边界框的中心位置,这种直接预测位置的方式使得模型在训练过程中更加稳定。
细粒度特征(Fine-Grained Features):YOLOv1 对于小物体的检测效果不佳,因为经过多次池化后小目标的信息基本已经丢失。YOLOv2 添加了一个 passthrough 层,将前一层的特征图和最后一层的特征图进行组合,把高分辨率的特征图信息引入到低分辨率的特征图中,从而获得更多的细粒度特征,提高了对小物体的检测能力。
四.相比于YOLO v1,它的优点:(性能方面)
准确率提升:综合以上的改进,YOLOv2 在保持较高检测速度的同时,大大提高了检测的准确率,尤其是在定位准确度和召回率方面有了显著的提升。
模型更灵活:YOLOv2 在训练和推理过程中可以更加灵活地处理不同的数据集和输入图像尺寸,适用范围更广,能够满足更多的实际应用需求。