YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记

摘要:

1.提出YOLO9000,可以检测超过9000个对象类别。对YOLO进行了各种改进,这两种方法都是新的从以前的工作中提取。
2. 使用一种新的、多尺度的训练方法,相同的YOLOv2模型可以运行在不同的大小,提供了一个简单的权衡之间的速度和准确性。
3.YOLOv2获得67mAP和76.8mAP在VOC2007。 在40FPS时,YOLOv2获得78.6mAP,超过了Fa这样的最先进的方法空间RCNN与ResNet和SSD,同时仍然运行得更快。
4.提出了一种目标检测与分类联合训练的方法。 允许YOLO9000预测没有标记检测数据的对象类的检测。

介绍:

1.通用目标检测应该要快、准确而且能够检测广泛类别的目标
2.目前的目标检测数据集数量有限,而且标注数据会比较费时
3.提出一种新的方法来利用我们已经拥有的大量分类数据,并利用它来扩大当前检测系统的范围。 即使用hierachiacal view of object classification,允许我们将不同的数据集组合在一起
4.提出联合训练算法可以让检测和分类同时训练,使用标定的检测图像来学习精确的定位目标,同时用分类图像来增强语义和鲁棒性
5.可以检测9000类别,是实时且SOTA的检测器

Better:

1.YOLOv1一个非常大的缺点在于其定位失误率高,比Fast R-CNN要多,同时其召回率和准确率也比较低,因此这些都是需要提升的地方
2.总结的来讲,相比v1,v2的更新的地方在于下表YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记_第1张图片
3.BatchNorm。加了BN层,使得训练收敛得到了显著的改善,同时也限制了不必要的正则化,同时也避免使用了dropout来防止过拟合,这样就提高了2%mAP
4.高分辨率分类器。以前的v1版本还有其他的一些版本,都是256x256及其以下的,v2则采用了448x448的尺寸输入,首先前10epoch对分类网络进行微调,最后对结果网络进行微调,这样会提高4%的mAP
4.带有锚盒的卷积。YOLOv2移除了YOLOv1中的全连接层,采用了卷积和anchor boxes来预测边界框。首先,移除了一个pool,使得分辨率更高。采用了416x416作为图片输入。YOLOv2最终得到的特征图大小为13x13,维度是奇数,这样特征图恰好只有一个中心位置。对于一些大物体,它们中心点往往落入图片中心位置,此时使用特征图的一个中心点去预测这些物体的边界框相对容易些。所以在YOLOv2设计中要保证最终的特征图有奇数个位置。对于YOLOv1,每个cell都预测2个boxes,每个boxes包含5个值:(x,y,w,h,c),前4个值是边界框位置与大小,最后一个值是置信度(confidence scores,包含两部分:含有物体的概率以及预测框与ground truth的IOU)。但是每个cell只预测一套分类概率值(class predictions,其实是置信度下的条件概率值),供2个boxes共享。YOLOv2使用了anchor boxes之后,每个位置的各个anchor box都单独预测一套分类概率值,这和SSD比较类似。使用了基于锚框的方法,可以预测上千个预测框,mAP稍微有所下降,但是召回率大大提升,81%到了88%
5.维度集群。在Faster R-CNN和SSD中,先验框的维度(长和宽)都是手动设定的,带有一定的主观性。如果选取的先验框维度比较合适,那么模型更容易学习,从而做出更好的预测。因此,YOLOv2采用k-means聚类方法对训练集中的边界框做了聚类分析。因为设置先验框的主要目的是为了使得预测框与ground truth的IOU更好,所以聚类分析时选用box与聚类中心box之间的IOU值作为距离指标:
在这里插入图片描述
6.直接位置预测。RPN网络的预测公式如下,【实际中心(x,y),坐标偏移(tx,ty),先验框尺度(wa,ha),中心坐标(xa,ya)】然而这种方法有问题在于,偏移很容易向任意方向进行,这就会导致先验框可能在图像的任何位置,从而使得预测的位置不准确。
在这里插入图片描述

YOLOv2的预测方案延续v1的方法,基于网格的方案,将偏移值以sigmoid的激活函数限制在(0,1)之间,其中(cx,cy)是网格左上角的位置坐标,sigmoid的限制,预测框中心坐标位置会限制在网格的内部,如下公式所示,【实际坐标信息(bx,by,bw,bh),偏移坐标(tx,ty,tw,th),先验框长宽(pw,ph),这个长宽是相对于最后的特征图大小的】,最后的坐标信息相对于整个图像的信息是要除以W,H的,是为了限制在(0,1)之间在代码中进行计算,然后将其乘以W,H解码就是预测框的信息。约束了边界框的位置预测值使得模型更容易稳定训练,结合聚类分析得到先验框与这种预测方法,YOLOv2的mAP值提升了约5%
在这里插入图片描述

7.Fine-Grained Features。YOLO最后得到的特征图大小是13x13,原图416x416,这对于大目标物体而言是比较方便进行提取的,但是对于小物体就不那么方便了,SSD采用的方法是多尺度方法。而YOLOv2提出使用passthrough层,其利用的fine-grained features是26x26x512大小的特征图,比原来的大小多一倍,经过passthrough层处理后变成了13x13x2048,通道变成了4倍,passthrough层与ResNet网络的shortcut类似,以前面更高分辨率的特征图为输入,然后将其连接到后面的低分辨率特征图上。前面的特征图维度是后面的特征图的2倍,passthrough层抽取前面层的每个2x2局部维度,将其转为通道维度,这样然后将其对后面的13x13x1024维度结合一起变成13x13x3072维度,在此基础上下一步计算。使用fine-grainded features会增加1mAP
8.多尺度训练。基于多尺度输入训练方法,每隔一定的iterations,改变图片的输入大小,尺寸越大,速度越慢,但是mAP越高。

YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记_第2张图片

训练

这部分有点难理解,参考的知乎学习(参考https://zhuanlan.zhihu.com/p/35325884)
YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记_第3张图片
损失函数:
YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记_第4张图片
网络结构(darknet19):
YOLO9000: Better, Faster, Stronger(YOLOv2)学习笔记_第5张图片
参考资料:
1.论文链接
2.https://zhuanlan.zhihu.com/p/35325884

你可能感兴趣的:(论文学习总结,目标检测)