失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > YOLO9000: Better Faster Stronger

YOLO9000: Better Faster Stronger

时间:2023-06-30 22:04:42

相关推荐

YOLO9000: Better  Faster  Stronger

摘要

YOLO9000也就是YOLOv2,是在v1版本的基础上的改进。作者使用了一系列的方法对原来的YOLO多目标检测框架进行了改进,在保持原有速度的优势之下,精度上得以提升。作者也提出了一种目标分类与检测的联合训练方法,通过这种方法,YOLO9000可以同时在COCO和ImageNet数据集中进行训练,训练后的模型可以实现多达9000种物体的实时检测。

论文地址:YOLO9000: Better, Faster, Stronger

方法

总览图如图1:

图1 从YOLO到YOLOv2的路径

Batch Normalization

CNN在训练过程中网络每层输入的分布一直在改变, 会使训练过程难度加大,但可以通过normalize每层的输入解决这个问题。

YOLOv2网络在每一个卷积层后添加batch normalization,有助于规范化模型,可以在舍弃dropout优化后依然不会过拟合。

High Resolution Classifier

若图像的分辨率不够高,会给检测带来困难。新的YOLO网络把分辨率直接提升到了448* 448,这也意味之原有的网络模型必须进行某种调整以适应新的分辨率输入。

对于YOLOv2,作者首先对分类网络(自定义的darknet)进行了fine tune,分辨率改成448 * 448,在ImageNet数据集上训练10轮(10 epochs),训练后的网络就可以适应高分辨率的输入了。然后,作者对检测网络部分(也就是后半部分)也进行fine tune。

Convolutional With Anchor Boxes

作者借用了Faster R-CNN中的anchor思想(RPN网络中在在卷积特征图上进行滑窗操作,每一个中心可以预测9种不同大小的anchor)。

作者去掉了后面的一个池化层以确保输出的卷积特征图有更高的分辨率。通过缩减网络,让图片输入分辨率为416416,这一步的目的是为了让后面产生的卷积特征图宽高都为奇数,这样就可以产生一个center cell。作者观察到,大物体通常占据了图像的中间位置, 就可以只用中心的一个cell来预测这些物体的位置,否则就要用中间的4个cell来进行预测,这个技巧可稍稍提升效率。最后,YOLOv2使用了卷积层降采样(factor为32),使得输入卷积网络的416416图片最终得到1313的卷积特征图(416/32=13)。

假设每个cell预测9个建议框,那么总共会预测1313* 9 = 1521个boxes,而之前的网络仅仅预测7 * 7 * 2 = 98个boxes。具体数据为:没有anchor boxes,模型recall为81%,mAP为69.5%;加入anchor boxes,模型recall为88%,mAP为69.2%。这样看来,准确率只有小幅度的下降,而召回率则提升了7%。

Dimension Clusters

作者使用了K-means聚类方法类训练bounding boxes,可以自动找到更好的boxes宽高维度。传统的K-means聚类方法使用的是欧氏距离函数,也就意味着较大的boxes会比较小的boxes产生更多的error,聚类结果可能会偏离。为此,作者采用的评判标准是IOU得分(也就是boxes之间的交集除以并集),这样的话,error就和box的尺度无关了,最终的距离函数为图2:

图2

Direct location prediction

借鉴于Faster RCNN的先验框方法,在训练的早期阶段,其位置预测容易不稳定。其位置预测公式为图3:

图3

其中, x,yx,yx,y是预测边框的中心,xa,yax_a,y_axa​,ya​是先验框(anchor)的中心点坐标, wa,haw_a,h_awa​,ha​是先验框(anchor)的宽和高,tx,tyt_x,t_ytx​,ty​是要学习的参数。 注意,YOLO论文中写的是x=(tx∗wa)−xax=(t_x*w_a)-x_ax=(tx​∗wa​)−xa​,根据Faster RCNN,应该是"+"。

由于 tx,tyt_x,t_ytx​,ty​ 的取值没有任何约束,因此预测边框的中心可能出现在任何位置,训练早期阶段不容易稳定。YOLO调整了预测公式,将预测边框的中心约束在特定gird网格内。如图4

图4

其中,bx,by,bw,bhb_x,b_y,b_w,b_hbx​,by​,bw​,bh​是预测边框的中心和宽高。 Pr(object)∗IOU(b,object)Pr(object)*IOU(b,object)Pr(object)∗IOU(b,object)是预测边框的置信度,YOLO1是直接预测置信度的值,这里对预测参数 t0t_0t0​ 进行σ变换后作为置信度的值。 cx,cyc_x,c_ycx​,cy​是当前网格左上角到图像左上角的距离,要先将网格大小归一化,即令一个网格的宽=1,高=1。pw,php_w,p_hpw​,ph​是先验框的宽和高。 σ是sigmoid函数。 tx,ty,tw,th,tot_x,t_y,t_w,t_h,t_otx​,ty​,tw​,th​,to​是要学习的参数,分别用于预测边框的中心和宽高,以及置信度。

定位预测值被归一化后,参数就更容易得到学习,模型就更稳定。

图5

Fine-Grained Features

passthrough层检测细粒度特征使mAP提升1。

对象检测面临的一个问题是图像中对象会有大有小,输入图像经过多层网络提取特征,最后输出的特征图中(比如YOLO2中输入416416经过卷积网络下采样最后输出是1313),较小的对象可能特征已经不明显甚至被忽略掉了。为了更好的检测出一些比较小的对象,最后输出的特征图需要保留一些更细节的信息。

YOLO2引入一种称为passthrough层的方法在特征图中保留一些细节信息。具体来说,就是在最后一个pooling之前,特征图的大小是2626512,将其1拆4,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。如图6.

图6

Multi-Scale Training

为去掉了全连接层,YOLO2可以输入任何尺寸的图像。因为整个网络下采样倍数是32,作者采用了{320,352,…,608}等10种输入图像的尺寸,这些尺寸的输入图像对应输出的特征图宽和高是{10,11,…19}。训练时每10个batch就随机更换一种尺寸,使网络能够适应各种大小的对象检测。

实验

作者在VOC上对YOLOv2进行训练,下图是和其他方法的对比。YOLOv2精度达到了73.4%,并且速度更快。同时YOLOV2也在COCO上做了测试(IOU=0.5),也和Faster R-CNN、SSD作了成绩对比。结果如图7和图8。

图7 PASCAL VOC测试检测结果。

图8 COCO-dev试验结果

如果觉得《YOLO9000: Better Faster Stronger》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。