深度学习系列之YOLOv2 个人总结

YOLO1很渣,但YOLO2却很6,在保证速度的前提下精度还很高。而且基于YOLO2的YOLO9000,可以实时检测不同类别下的不同品种。比如检测dog,YOLO9000可以检测出是哪一种狗:哈士奇、阿拉斯加、拉布拉多等等。
YOLO9000跟我做的联系比较密切。我之前做交通标志的检测是先检测出交通标志这个大类,然后再单独训练一个分类网络,进行类下的具体交通标志的识别。如果利用YOLO9000,会使这样工作更加unified。但最近比较忙,暂时没有时间拿来跑一跑,估计下个月会试一试YOLO9000。

1. Better

Better = mAP更高,在VOC2007上,达到78.6%

1.1 引入了anchor

YOLO1中,是不用anchor的,直接在7X7的image上做检测,而且一个grid只使用2个bbox。但这样recall低、定位精度差,mAP渣,唯一好处就是速度快。

所以YOLO2引入了anchor,在feature map上每个grid(论文中是13X13),有5个尺寸不同、尺度不同的anchor,每个anchor分别预测类别C+位置(5项)。这样一个grid输出(C+5)*5。 YOLO1是(C+5*5),直接是一个grid就进行分类YOLO2则是用anchor做分类。(faster r-cnn是用RPN产生的proposal做分类,ssd是用不同feature map上的anchor做分类)。

这样做的好处是可以有效的提高recall,让模型在预测时不至于总是漏掉object。

1.2如何选择anchor

faster r-cnn是人为地制定9个anchor。ssd也是人为制定不同的宽高比,每个feature map不同scale。

YOLO2则是利用K-means来聚类出5个anchor。利用样本中的GT的box来聚类,选出怎样的anchor更有利于做检测(迭代出聚类中心)。

这个方法在YOLO2中被称为dimension cluster-维度集群

1.3细粒度特性

这是YOLO2的另一个特色了。刚才anchor利用K-means那个也可以算。
论文中input 416x416,下采样32倍,output 13x13.
但是,万一小物体的信息丢失的太严重呢?于是YOLO2决定:
在得到13x13x1024的feature map时,逆向取出26x26x512的feature map,经过reorg(重组)得到13x13x256. 然后与刚才的feature map相融合,得到13x13x1280的feature map。
最终得到13x13x125的张量。
也就是说,YOLO2融合了不同分辨率的feature map的信息。
这里写图片描述

1.4多尺度训练

YOLO2其实不是用固定尺度的图像进行训练,它每隔一段时间,会调整输入图像的尺度。尺度选择为{320,352,…,608}。这可以让YOLO2变得胜任不同分辨率的图像

2.Faster

YOLO2比YOLO1更快的原因是使用了Darknet-19网络,这个网络比YOLO1的基于GoogleNet的网络快。
这里写图片描述

扫描二维码关注公众号,回复: 940378 查看本文章

Tip:YOLO系列以及SSD比faster r-cnn快的原因在于砍掉了RPN。

3.Stronger

Stronger指的是YOLO9000,以后我会跑一跑这个。
它使用检测数据集和分类数据集同时训练,可以实时检测不同类别下的不同品种,确实stronger!

猜你喜欢

转载自blog.csdn.net/leewanzhi/article/details/79688648