YOLO v2详解

1.摘要

        本文对YOLO的各种改进措施中既有新颖之处,也有借鉴其他论文中的方法。改进后的模型YOLOv2在PASCAL VOC和COCO等标准检测数据集中实验效果已达到领先地位。YOLO v2模型可以输入不同尺寸的图片,在速度和精度之间可进行一个简单的折中。在67 FPS时,YOLO v2在VOC 2007数据集上获得了76.8 mAP;在40 FPS时,YOLO v2获得了78.6 mAP,性能超越最先进的方法,同时运行速度更快。最后本文提出YOLO9000,其是一种基于YOLO v2的结构联合训练COCO检测数据集和ImageNet分类数据集,从而可检测9000多种目标类别的方法。这种联合训练的方式使得YOLO9000能够预测未标注检测数据的目标类别。

2.算法思想

        由于当前的目标检测数据集是有限的,而分类数据集则拥有数以百万计的图像。因此,本文提出了一种联合训练方法来利用本文已有的大量分类数据,并将其用于扩大当前检测系统的数据集,实现在检测和分类数据集上训练目标检测器的目的。

        首先,本文改进YOLO v1算法,从而获得最先进的实时检测器YOLO v2;然后,使用联合训练算法训练来自ImageNet的超过9000个类的模型以及来自COCO的检测数据,从而获得可检测多个类别的实时检测器YOLO9000

3.Better

       与最先进的检测系统相比,YOLO v1存在各种各样的缺点。YOLO v1与Fast R-CNN相比的误差分析表明,YOLO v1产生了大量的坐标定位误差。此外,与RPN相比,YOLO召回率相对较低。因此,本文主要关注改善召回和坐标定位,同时保持的分类准确性。

        本文将在以下表格所列出的方面提高YOLO v1的性能。

YOLO v2详解_第1张图片

       从表格可知大多数列出的设计方法都会导致mAP显著增加。但有两个例外情况,使用新网络和带有anchor boxes的全卷积网络。anchor boxes的方法可以增加召回率,但不改变mAP,同时使用新网络可削减33%的计算。

      1.Batch Normalization

      通过在YOLO v1中的所有卷积层上增加批标准化操作,mAP可提高2%。 

      批标准化可以显着改善收敛性,同时不需要其他形式的正则化,即可删除dropout操作而不会产生过拟合。

      2.High Resolution Classifer

      YOLO v1首先以224×224分辨率训练的网络参数预训练网络,然后将输入图像分辨率resize到448x448以进行检测。这意味着网络必须首先学习调整到新的输入分辨率(448),将影响学习效果。

       YOLO v2则首先在分类网络上以224x224的分辨率预训练网络;然后,以448×448的分辨率对ImageNet上训练10个epoches进行微调;最后,使用此训练后的参数进行权重初始化。这给了网络时间去调整其filter以更好地处理更高分辨率的输入,mAP可提高接近4%

       3.Convolutional With Anchor Boxes

        YOLO v1直接使用卷积特征提取器顶部的全连接层来预测边界框的坐标。

        YOLO v2移除全连接层,并引用anchor boxes来预测边界框。首先,删除一个池化层,以使网络卷积层的输出具有更高的分辨率。另外,缩小输入图像为416x416,而不是448×448。此做法可使特征图的size是奇数,保证只有一个中心网格单元。这是因为考虑到图片中的目标往往占据图像的中心,所以最好在中心拥有一个位置来预测这些目标,而不是利用四个位置来预测。YOLO v1的卷积图像下采样步长为32,所以对于416x416的输入图像,可得到13×13的输出特征图。

        YOLO v1,每个网格都预测2个boxes,每个boxes包含5个值,前4个值是预测框相对于网格左上角的偏移量和预测框相对于整个特征图的比例,第5个值是置信度。但是每个网格只预测一套分类概率值,供2个boxes共享。

       YOLO v2利用anchor boxes,使得每个位置的各个anchor box都单独预测一套分类概率值。另外,使用anchor boxes,会使得精确度的小幅下降。如果没有anchor boxes,本文的中间模型将获得69.5 mAP,召回率为81%。使用anchor boxes本文的模型得到69.2 mAP,召回率为88%。尽管mAP下降,但召回率的增加意味着本文的模型有更大的提升空间。

       4.Dimension Clusters

        其它论文中使用anchor boxes的尺寸是人为自定义的。而如果本文选择更好的anchor boxes,可以让网络更容易学习预测好的检测结果。

        YOLO v2不用自定义anchor boxes尺寸,而是在训练集anchor boxes上运行k-means聚类,自动找到良好的anchor boxes尺寸。但是,如果本文使用具有欧氏距离的标准k-means,那么较大的边界框比较小的边界框会产生更多的误差。而本文真正想要的是先验边界框尺寸可获得良好的IOU得分,因此本文所使用的距离度量公式如下:

        左图显示了通过k的不同取值在VOC 2007数据集上获得的平均IOU,发现k = 5为召回与模型的复杂度提供了良好的折中。右图显示了VOC和COCO数据集上的的anchor boxes形状。

YOLO v2详解_第2张图片

YOLO v2详解_第3张图片

       聚类结果比使用人工自定义的先验结果要好得多。

       5.Direct location prediction

       当在YOLO v2中使用anchor boxes时,会遇到第二个问题:模型不稳定,尤其是在早期迭代过程中。其中大部分不稳定来自于预测框的(x,y)位置。在RPN中,网络预测的坐标偏移值tx和ty以及预测框的实际中心坐标(x,y)的计算公式如下:

       例如,若tx=1,则预测会使该框向右移动anchor boxes的宽度,若tx=-1,则预测会使该框向左移动相同的值。

      因为 这个公式是无约束的,所以anchor boxes可预测为图像中的任何一点。 随机初始化模型需要很长时间才能稳定从而预测获得合理的偏移量。

        YOLO v2则沿用YOLO v1的方法预测相对于网格左上角的偏移值,然后使用非线性函数限制预测值在0到1之间。假设网络预测输出特征图中每个cell有5个边界框,网络为每个边界框预测5个坐标tx,ty,tw,th和to。如果单元格从图像的左上角偏移(cx,cy),并且之前的边界框具有宽度和高度pw,ph,则预测框的坐标公式为:

YOLO v2详解_第4张图片

       由于本文YOLO v2限制了位置预测,因此参数更容易学习,使得网络更加稳定。

       6.Fine-Grained Features

        YOLO v2基于13×13特征图预测检测结果,虽然这对于大型物体是足够的,但是对于定位较小物体需要更细粒度的特征。本文通过添加一个以26×26分辨率的早期特征图的passthrough层来获得细粒度的特征。

        passthrough层将浅层特征图(26x26x512)reshape成新的特征图(13x13x2018),之后将其与深层特征图按通道相连接mAP提高1%

        7.Multi-Scale Training

         YOLO v1使用448×448的输入分辨率,随着anchor boxes的加入,本文将分辨率更改为416×416。但是,由于本文的模型仅使用卷积层和池化层,因此可以在不同尺寸的图像上运行。由于本文的模型下采样32倍,可设置最小的图像大小是320×320,最大的是608×608。在训练过程中每10个batches,会随机选择一个新的图像尺寸大小继续训练。这意味着相同的网络可以预测不同分辨率下的检测结果。网络在较小的尺寸下运行速度更快,但mAP不如高分辨率的。因此,YOLO v2可以在速度和准确性之间轻松进行折中。

YOLO v2详解_第5张图片

4.Faster

       本文希望检测结果准确,同时也希望检测速度更快。大多数用于检测的应用程序(如机器人或自动驾驶)都依赖于低延迟预测。

       以224×224分辨率在单个图像上进行单次传递,VGG-16的卷积层需要306.90亿次浮点运算;YOLO v1框架只有85.2亿次浮点运算。但是,它的准确性比VGG-16稍差。

      1.Darknet-19网络结构

       本文提出了一个新的分类模型作为YOLO v2的框架。与VGG模型类似,卷积层使用常用的3×3滤波器,经过池化步骤之后,通道数量加倍;使用global average pooling来预测;并在3×3卷积之间使用1x1卷积压缩通道和减少计算量;每层加入批标准化操作,加速收敛,防止过拟合。

        它有19个卷积层和5个最大池化层。Darknet-19只需要55.8亿次操作来处理图像,但在ImageNet上达到72.9%的top-1精度和91.2%的top-5精度。

YOLO v2详解_第6张图片

preview

     2.训练过程参数

     本文使用标准ImageNet 1000类分类数据集对160个epoches进行训练,使用随机梯度下降,初始学习率为0.1,衰减率10-4次方,衰减权重为0.0005,动量为0.9 ,并且使用Darknet神经网络框架。在训练过程中,对数据集使用数据增强技巧,包括随机裁剪,随机旋转等。

      3.损失函数(平方差损失)

       其中,W,H表示输出特征图(13*13)的宽与高,A表示先验框数目(5),lambda表示各个loss部分的权重系数。

       第一项Loss计算的是背景的置信度误差。首先计算各个网格的各个预测框和所有标注框的IOU,获得最大值Max_IOU,如果该值小于一定的阈值(0.6),那么这个预测框就是背景。

       第二项是计算前12800迭代次数中先验框与预测框的坐标误差,在训练前期使得预测框快速学习到先验框的形状。

       第三大项计算与某个标注框匹配的预测框的各部分Loss值,包括定位误差、置信度误差以及分类误差。对于那些没有与标注框匹配的先验框,不计算任何误差。

       标注框与预测框匹配原则:对于某个标注框,首先要确定其中心点要落在哪个cell上,然后计算这个cell的5个先验框与标注框的IOU值,IOU值最大的那个先验框则与标注框匹配,其对应的预测框则用来预测目标。

5.Stronger

       在训练期间,本文混合来自检测和分类数据集,当网络看到标记为检测的图像时,可以根据完整的YOLO v2损失函数进行反向传播。当网络看到分类图像时,本文只会反向传播分类部分中的损失。

       如果本文想在两个数据集上进行训练,则需要采用一致的方式来合并这些标签。所以,本文使用WordTree组合数据集训练一个非常大型的检测器。

YOLO v2详解_第7张图片

6.测试过程代码

参考资料

1. YOLO v2:https://zhuanlan.zhihu.com/p/35325884

你可能感兴趣的:(计算机视觉)