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

YOLOv2的创新点

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

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

在这里插入图片描述

YOLOv2详解介绍

1.Batch Normalization

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

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

2.High Resolution Classifier

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

3.Convolutional With Anchor Boxes

YOLOv1利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLOv2去掉了YOLOv1中的全连接层,使用Anchor Boxes预测边界框,同时为了得到更高分辨率的特征图,YOLOv2还去掉了一个池化层。由于图片中的物体都倾向于出现在图片的中心位置,若特征图恰好有一个中心位置,利用这个中心位置预测中心点落入该位置的物体,对这些物体的检测会更容易。所以总希望得到的特征图的宽高都为奇数。YOLOv2通过缩减网络,使用416×416416\times 416的输入,模型下采样的总步长为32,最后得到13×1313\times 13的特征图的每个像素预测5个anchor boxes,对每个anchor box预测边界框的位置信息、置信度和一套分类概率值。使用anchor boxes之后,YOLOv2可以预测13×13×5=84513\times 13\times 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×33\times 3卷积和1×11\times 1卷积,这里1×11\times 1卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用BN层以加快模型收敛同时防止过拟合。最终采用global avg pool做预测。采用darknet-19模型,mAP值没有显著提升,但计算量减少了。

在这里插入图片描述

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

7.Fine-Grained Features

YOLOv2借鉴SSD使用了多尺度的特征图做检测,提出pass through层将高分辨率的特征图与低分辨率的特征图联系在一起,从而实现多尺度检测。YOLOv2提取Darknet-19最后一个max pool层的输入,得到26×26×51226\times 26\times 512的特征图。经过1×1×641\times 1\times 64的卷积以降低特征图的维度,得到26×26×6426\times 26\times 64,然后经过pass through层的处理变成13×13×25613\times 13\times 256的特征图(抽取愿特征图每个2×22\times 2的局部区域组成新的channel,即原特征图大小降低4倍,channel增加4倍),再与13×13×102413\times 13\times 1024大小的特征图连接,变成13×13×128013\times 13\times 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×224224\times 224的尺寸,共训练160个epochs。
  2. 将网络的输入调整为448×448448\times 448,继续在ImageNet数据集上finetune分类模型,训练10个epochs,此时分类模型的top-1准确率为76.5%,而top-5准确率为93.3%。
  3. 修改Darknet-19分类模型为检测模型,并在检测数据集上继续finetune网络。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章