深度学习_目标检测_YOLOv2论文详解

YOLOv2的创新点

YOLOv1虽然检测速度块,但在定位方面不够准确,并且召回率低。为了提升定位准确率,改善召回率,YOLOv2在YOLOv1的基础上提出了几种改进策略,如下图所示,可以看到,一些改进方法能有效提高模型的mAP。

  1. 大尺度预训练分类。
  2. 使用新的网络:DarkNet-19。
  3. 加入anchor。

深度学习_目标检测_YOLOv2论文详解_第1张图片

YOLOv2详解介绍

1.Batch Normalization

YOLOv2中在每个卷积层后加Batch Normalization层,去掉dropout。

BN层可以起到一定的正则化效果,能提升模型收敛速度,防止模型过拟合。YOLOv2通过使用BN层使得mAP提高了2%。

2.High Resolution Classifier

目前的大部分检测模型都会使用主流分类网络(如VGG、ResNet等)在ImageNet上的预训练模型作为特征提取器,而这些分类网络大部分都是以小于 256 × 256 256\times 256 256×256的图片作为输入进行训练的,低分辨率会影响模型检测能力。YOLOv2将输入图片的分辨率提升至 448 × 448 448\times 448 448×448,为了使网络适应新的分辨率,YOLOv2先在ImageNet上以 448 × 448 448\times 448 448×448的分辨率对网络进行10个epoch的微调,让网络适应高分辨率的输入。通过使用高分辨率的输入,YOLOv2的mAP提升了约4%。

3.Convolutional With Anchor Boxes

YOLOv1利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLOv2去掉了YOLOv1中的全连接层,使用Anchor Boxes预测边界框,同时为了得到更高分辨率的特征图,YOLOv2还去掉了一个池化层。由于图片中的物体都倾向于出现在图片的中心位置,若特征图恰好有一个中心位置,利用这个中心位置预测中心点落入该位置的物体,对这些物体的检测会更容易。所以总希望得到的特征图的宽高都为奇数。YOLOv2通过缩减网络,使用 416 × 416 416\times 416 416×416的输入,模型下采样的总步长为32,最后得到 13 × 13 13\times 13 13×13的特征图的每个像素预测5个anchor boxes,对每个anchor box预测边界框的位置信息、置信度和一套分类概率值。使用anchor boxes之后,YOLOv2可以预测 13 × 13 × 5 = 845 13\times 13\times 5 = 845 13×13×5=845个边界框,模型的召回率由原来的81%提升到88%,mAP由原来的69.5%降低到69.2%。也就是说召回率提升了7%,准确率下降了0.3%。

4.Dimension Clusters

在Faster R-CNN和SSD中,先验框都是手动设定的,带有一定的主观性。YOLOv2采用k-means聚类算法对训练集中的边界框做了聚类分析,选用boxes之间的IOU值作为聚类指标。综合考虑模型复杂度和召回率,最终选择5个聚类中心,得到5个先验框,发现其中中扁长的框较少,而瘦高的框更多,更符合行人特征。通过对比实验,发现用聚类分析得到的先验框比手动选择的先验框有更高的平均IOU值,这使得模型更容易训练学习。

5.New Network:Darknet-19

YOLOv2采用Darknet-19,其网络结构如下图所示,包括19个卷积层和5个max pooling层,主要采用 3 × 3 3\times 3 3×3卷积和 1 × 1 1\times 1 1×1卷积,这里 1 × 1 1\times 1 1×1卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用BN层以加快模型收敛同时防止过拟合。最终采用global avg pool做预测。采用darknet-19模型,mAP值没有显著提升,但计算量减少了。

深度学习_目标检测_YOLOv2论文详解_第2张图片

6.Direct location prediction

Faster R-CNN使用anchor boxes预测边界框相对先验框的偏移量,由于没有对偏移量进行约束,每个位置预测的边界框可以落在图片任何位置,会导致模型不稳定,加长训练时间。YOLOv2沿用YOLOv1的方法,根据所在网格单元的位置来预测坐标,则Ground Truth的值介于0到1之间。网络中将得到的网格预测结果再输入sigmoid函数中,让输出结果介于0到1之间。设一个网格相对于图片左上角的偏移量是cx,cy。先验框的宽度和高度分别是pw和ph,则预测的边界框相对于特征图的中心坐标(bx,by)和宽高bw、bh的计算公式如下图所示。

深度学习_目标检测_YOLOv2论文详解_第3张图片

YOLOv2结合Dimention Clusters,通过对比边界框的位置预测进行约束,使模型更容易稳定训练,这种方式使得模型的mAP值提升了约5%。

7.Fine-Grained Features

YOLOv2借鉴SSD使用了多尺度的特征图做检测,提出pass through层将高分辨率的特征图与低分辨率的特征图联系在一起,从而实现多尺度检测。YOLOv2提取Darknet-19最后一个max pool层的输入,得到 26 × 26 × 512 26\times 26\times 512 26×26×512的特征图。经过 1 × 1 × 64 1\times 1\times 64 1×1×64的卷积以降低特征图的维度,得到 26 × 26 × 64 26\times 26\times 64 26×26×64,然后经过pass through层的处理变成 13 × 13 × 256 13\times 13\times 256 13×13×256的特征图(抽取愿特征图每个 2 × 2 2\times 2 2×2的局部区域组成新的channel,即原特征图大小降低4倍,channel增加4倍),再与 13 × 13 × 1024 13\times 13\times 1024 13×13×1024大小的特征图连接,变成 13 × 13 × 1280 13\times 13\times 1280 13×13×1280的特征图,最后在这些特征图上做预测。使用Fine-Grained Features,YOLOv2的性能提升了1%。

8.Multi-Scale Training

YOLOv2中使用的Darknet-19网络结构中只有卷积层和池化层,所以对输入图片的大小没有限制。YOLOv2采用多尺度输入的方式训练,在训练过程中每隔10个batches,重新随机选择输入图片的尺寸,由于Darknet-19下采样总步长为32,输入图片的尺寸一般选择32的倍数{320, 352, …,608}。采用Multi-Scale Training,可以适应不同大小的图片输入,当采用低分辨率的图片输入时,mAP值略有下降,但速度更快,当采用高分辨率的图片输入时,能得到较高mAP值,但速度有所下降。

YOLOv2借鉴了很多其他目标检测模型的一些技巧,如Faster R-CNN的anchor boxes,SSD中的多尺度检测。除此之外,YOLOv2在网络设计上做了很多tricks,使它能在保证速度的同时提高检测准确率,Multi-Scale Training更使得同一个模型适应不同大小的输入,从而可以在速度和精度上进行自由权衡。

YOLOv2的训练过程

  1. 先在ImageNet分类数据集上预训练Darknet-19,此时模型输入为 224 × 224 224\times 224 224×224的尺寸,共训练160个epochs。
  2. 将网络的输入调整为 448 × 448 448\times 448 448×448,继续在ImageNet数据集上finetune分类模型,训练10个epochs,此时分类模型的top-1准确率为76.5%,而top-5准确率为93.3%。
  3. 修改Darknet-19分类模型为检测模型,并在检测数据集上继续finetune网络。

你可能感兴趣的:(#,目标检测)