YOLOv2学习笔记

论文题目:YOLO9000:Better, Faster, Stronger
论文链接:https://arxiv.org/abs/1612.08242
YOLO官网:https://pjreddie.com/darknet/yolo/
相关笔记:目标检测学习笔记

一、YOLOv2的特点与性能

1.论文题目是YOLO9000:Better, Faster, Stronger,作者主要是对YOLOv1经过一系列优化,使它Better, Faster, Stronger。
2.作者同时提出了YOLOv2和YOLO9000.
3.在67FPS时,YOLOv2在VOC 2007上获得了76.8 mAP。在40FPS时,YOLOv2获得了78.6 mAP,比使用ResNet的Faster R-CNN和SSD等先进方法表现更出色,同时仍然运行速度显著更快。

二、Better

1.Batch Normalization

 作者通过在每层卷积层后添加Batch Normalization层,去掉dropout层,提高了2%的mAP。

2.High Resolution Classifier(高分辨率分类器)

 目前的目标检测方法中,基本上都会在ImageNet数据集上预训练模型,如果用的是AlexNet网络,那么输入图片会被resize到不足256 * 256,这会导致分辨率过低,给检测带来困难。
(1)YOLOv1对分辨率不高的解决方法:
 ①预训练的时候用的是224×224的输入。
 ②检测时将分辨率增大到448×448。
问题:
  这会导致从分类模型切换到检测模型的时候,模型不适应图像分辨率的改变。
(2)YOLOv2对分辨率不高的解决方法:
 ①预训练先用224×224的输入从头开始训练网络,大概训练160个epoch。
 ②预训练模型再用448×448的输入训练10个epoch.
 ③检测时将分辨率增大到448×448。
结果:
  mAP增大4%。

3.Convolutional With Anchor Boxes.

 YOLOv1在卷积提取特征后的全连接层直接预测边界框,Faster RCNN用带有先验知识的手工设计的anchor预测边界框,Faster RCNN中的RPN网络仅仅使用卷积层就能预测anchor的偏置和概率。由于预测层是卷积,RPN会预测特征图中每个位置的偏移量。 预测偏移量而不是坐标可简化问题,使网络更容易学习。
(1)改进方法如下:
 ①从YOLOv1中移除全连接层,并使用anchor预测边界框。
 ②去掉一个池化层,使网络卷积层输出具有更高的分辨率。
 ③缩小了网络,输入416×416的图像而不是448×448。这样做是因为要在特征映射中有奇数个位置,只有一个中心单元。特别是大目标,往往占据图像的中心,所以在中心有一个单独的位置来预测这些目标。YOLOv2的卷积层将图像下采样32倍,所以通过使用416的输入图像,得到了13×13的输出特征映射。
(2)结果:
 YOLOv1每张图像只预测98个边界框,但是使用anchor模型预测边界框超过一千。使用anchor后,模型的mAP从69.5%下降到了69.2%,但recall从81%增大到了88%。尽管mAP略有下降,但召回率的大幅度上升意味着模型性能的提升。

4.Dimension Clusters

 将anchor引入YOLO之后作者遇到了两个问题,第一个问题就是如何设计一组非常好的带有先验知识的anchors,Faster RCNN中手工设计了anchor的大小和比例,YOLOv2中用K均值算法在训练集上自动生成一组anchors,K均值生成的anchor带有更好的先验知识,使网络更容易学习,更容易预测目标。
 如果使用欧式距离的k-means,那么大的边界框比小的边界框产生更多的误差。因此,有必要设计一个与box大小无关的距离度量,作者在K均值中的距离度量用下式:
在这里插入图片描述
在这里插入图片描述

图1 VOC和COCO的聚类边界框尺寸

 图1左图显示了通过对k的各种选择得到的平均IOU。k=5给出了一个很好的召回率与模型复杂度的权衡。右图显示了K=5时VOC和COCO的相对中心。这两种先验都有更窄更高的边界框,而COCO比VOC在尺寸上有更大的变化。在YOLOv2中使用5个anchor.

5.Direct location prediction.

 作者在引入anchor box的时候遇到的第二个问题是模型不稳定,尤其是在训练刚开始的时候。作者认为这种不稳定主要来自预测box的中心坐标(x,y)值。
(1)在Faster RCNN中的定位预测
 在Faster RCNN中是通过预测tx和ty来得到(x,y)值,也就是预测的是offsets。Faster RCNN中的定位预测公式是:
在这里插入图片描述
式中x是坐标预测值,xa是anchor坐标(预设固定值),x∗ 是坐标真实值(标注信息),t 是预测的偏移量。那么预测中心点坐标如下(YOLOv2论文中写错了,应该是加号不是减号):
在这里插入图片描述
 这个公式是无约束的,预测的边界框很容易向任何方向偏移。
 当tx=1时,box将向右偏移一个anchor box的宽度;
 当tx=-1时,box将向左偏移一个anchor box的宽度;
 因此,每个位置预测的边界框可以落在图片任何位置,这导致模型的不稳定性,在训练时需要很长时间来预测出正确的offsets。
(2)YOLOv2中的定位预测
 YOLOv2沿用了YOLOv1的方法,就是预测边界框中心点相对于对应cell左上角位置的相对偏移值。带有anchor 和位置预测的边界框及预测计算如图2所示,为了将bounding box的中心点约束在当前cell中,使用sigmoid函数将tx、ty归一化处理,将值约束在0~1,也就是图2的σ(tx),σ(ty)这使得模型训练更稳定。
在这里插入图片描述

图2 具有维度先验和位置预测的边界框。

 网络在最后一个卷积层输出13×13的feature map,有13×13个cell,每个cell有5个anchor box来预测5个bounding box,每个bounding box预测得到5个定位值。分别为:tx、ty、tw、th和to(类似YOLOv1的confidence)。YOLOv2定位预测公式如下:
在这里插入图片描述

6.Fine-Grained Features(细粒度的特征)

 在网络中添加了一个直通层(passthrough layer),将输出前面一层的26×26的特征图和最后一层13×13的特征图进行连接,与ResNet网络的shortcut类似,以前面更高分辨率的特征图为输入,然后将其连接到后面的低分辨率特征图上。在13*13的特征图上做预测,虽然对于大目标已经足够了,但对小目标不一定足够好,这里合并前面大一点的特征图可以有效的检测小目标。
 具体操作:对于26×26×512的特征图,经passthrough层处理之后就变成了13×13×2048的新特征图(特征图大小变为1/4,而通道数变为以前的4倍),然后与后面的13×13×1024特征图连接在一起形成13×13×3072的特征图,最后在该特征图上做预测。
 注:passthrough layer,具体来说就是特征重排(不涉及到参数学习),前面26 ×26 × 512的特征图使用按行和按列隔行采样的方法,就可以得到4个新的特征图,维度都是13 × 13 × 512,然后做concat操作,得到13 × 13 × 2048的特征图。

7.Multi-Scale Training(多尺度训练)

 YOLOv2中没有全连接层,因此不需要固定的输入图片的大小。为了让模型有更好的鲁棒性,作者引入了多尺度训练。就是在训练过程中,每迭代一定的次数,改变模型的输入图片大小。因为YOLOv2一共有5次下采样,每次下采样2倍,所以一共32倍下采样。作者选择32的倍数作为输入图像尺寸。
 具体操作:每训练10个batch,随机从{320; 352; …; 608}中选一个输入尺寸,将图像resize成随机选的尺寸大小后输入网络训练。

三、Faster

在这里插入图片描述

图3 Darknet-19网络结构

 YOLOv2用Darknet-19作为基础网络,Darknet-19网络结构如图3所示,Darknet主要由19个卷积层和5个最大池化构成,Darknet-19只需要55.8亿次运算来处理图像,但在ImageNet上却达到了72.9%的top-1准确率和91.2%的top-5准确率。VGG-16需要306.90亿次浮点运算。Darknet-19更快。

四、stronger

 提出了一个联合训练分类和检测数据的机制。

五、输出张量中的一个向量

在这里插入图片描述

六、总结

 作者通过引入BN层去掉dropout层提高了2%的mAP,通过高分辨率分类器的方法提高了4%的mAP,通过引入anchor去掉全连接层提升了网络的recall,通过K均值聚类的方法获得了带有更好先验知识的anchor,通过改进anchor定位预测提升了模型的稳定性,通过细粒度特征方法提升了对小目标的检测,通过引入多尺度训练提升了网络的鲁棒性,这些都使网络更好。作者设计的基础网络Darknet-19性能好,运算量小,使网络更快。作者通过提出联合训练分类和检测数据机制的方法是网络更强。

参考

YOLOv2学习笔记
YOLO9000, Better, Faster, Stronger论文翻译——中文版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值