目标检测:YOLOV2 You Only Look Once

参考文献:Redmon J , Farhadi A . [IEEE 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) - Honolulu, HI (2017.7.21-2017.7.26)] 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) - YOLO9000: Better, Faster, Stronger[J]. 2017:6517-6525.
项目主页:https://pjreddie.com/darknet/yolo/
Caffe实现:https://github.com/choasUp/caffe-yolo9000
包括理解!

YOLOV2:You Only Look Once,Better, Faster, Stronger

摘要

YOLO9000是一种先进的实时目标检测系统,可以检测超过9000个对象类别。首先,我们提出了对YOLO检测方法的各种改进,既有新颖的,也有先前的工作。YOLOv2是标准检测任务(如PASCAL VOC和COCO)的最新技术。使用新颖的多尺度训练方法,相同的YOLOv2模型可以以不同的尺寸运行,在速度和准确度之间提供简单的权衡。以67 FPS,YOLOv2在VOC 2007上获得76.8 mAP。以40 FPS,YOLOv2获得78.6 mAP,优于最先进的方法,如使用ResNet和SSD的Faster R-CNN,同时运行速度明显更快。最后,我们提出了一种联合训练目标检测和分类的方法。使用此方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000。我们的联合训练允许YOLO9000对没有标记检测数据的对象类进行检测。我们在ImageNet检测任务上验证了我们的方法。YOLO9000在ImageNet检测验证集上获得19.7 mAP,尽管200个类中只有44个具有检测数据。在不属于COCO的156个类中,YOLO9000获得16.0 mAP。但YOLO可以检测到超过200个类别;它预测超过9000种不同对象类别的检测。它仍然可以实时运行。

1 Introduction

通用目标检测应该快速、准确并且能够识别各种各样的目标。自从引入神经网络以来,检测框架变得越来越快速和准确。但是,大多数检测方法仍然受限于只能检测一小组的目标。

与用于完成分类和标记等其他任务的数据集相比,当前目标检测数据集是有限的。最常见的检测数据集包含数千到数十万个具有数十到数百个标签的图像。分类数据集具有数百万个具有数十或数十万个类别的图像。

我们希望检测能够扩展到目标分类的级别。然而,用于检测的标记图像比用于分类或标记的图像昂贵得多(标记通常是用户免费提供的)。所以,我们很难在近期看到拥有和分类数据集同样量级大小的检测数据集。

我们提出了一种新方法来利用我们已有的大量分类数据,并用它来扩展当前检测系统的范围。我们的方法使用目标分类的分层视图,允许我们将不同的数据集组合在一起。

我们还提出了一种联合训练算法,该算法允许我们在检测和分类数据上训练目标检测器。我们的方法利用标记的检测图像来学习精确定位对象,同时使用分类图像来增加其数据集容量和鲁棒性。

使用这种方法,我们训练YOLO9000,一种可以检测超过9000种不同物体类别的实时目标探测器。首先,我们改进了基础YOLO检测系统得到YOLOv2,这是一种先进的实时检测器。然后我们使用我们的数据集组合方法和联合训练算法来训练一个来自ImageNet的9000多个类数据以及来自COCO的检测数据得到目标检测模型。

2 Better(YOLOV2改进)

与现有最先进的检测系统相比,YOLO存在一些缺点。与Fast R-CNN相比,YOLO的错误分析表明YOLO产生了大量的定位误差。此外,与基于区域提案的方法相比,YOLO具有相对较低的召回率。因此,我们在保持分类准确性的情况下主要关注改善召回率和定位精度

计算机视觉领域趋向于使用更大、更深的网络。更好的性能通常取决于训练更大的网络或将多个模型集合在一起。但是,对于YOLOv2,我们需要更准确的探测器,但速度需要仍然很快。我们不是扩展我们的网络,而是简化网络,然后使表示更容易学习。我们将过去论文中的各种想法与我们自己的新概念结合起来,以提高YOLO的表现。结果摘要见表2。
在这里插入图片描述
(1)Batch Normalization

CNN在训练过程中网络每层输入的分布一直在改变, 会使训练过程难度加大,但可以通过normalize每层的输入解决这个问题。新的YOLO网络在每一个卷积层后添加batch normalization,通过这一方法,mAP获得了2%的提升。batch normalization 也有助于规范化模型,可以在舍弃dropout(随机失活)优化后依然不会过拟合。

(2)高分辨率分类器(高分辨率就是提高输入图像的尺寸)

目前的目标检测方法中,基本上都会使用ImageNet预训练过的分类器来提取特征,从AlexNet网络开始,大多数分类器都对小于256 * 256的输入图像进行操作,导致分辨率不够高,给检测带来困难。为此,新的YOLO网络把分辨率224 * 224直接提升到了448 * 448,这也意味着原有的网络模型必须进行某种调整以适应新的分辨率输入。

对于YOLOv2,我们首先在完整的448×448分辨率下的ImageNet数据集上的分类网络(自定义的darknet-19)进行10个epoch的微调。这使网络有时间调整其滤波器,以便在更高分辨率的输入上更好地工作。然后,我们对检测网络进行微调,这种高分辨率的分类网络使我们的mAP增加了近4%。

(3)结合Anchor Boxes的卷积

YOLO直接使用卷积特征提取器顶部的全连接层预测边界框的坐标,导致丢失较多的空间信息,定位不准,而Faster R-CNN使用手工挑选的先验框预测边界框。Faster R-CNN中的区域提议网络(RPN)仅使用卷积层预测Anchor box的偏移和置信度。由于预测层是卷积的,因此RPN在特征图中的每个位置预测这些偏移。预测偏移而不是坐标简化了问题,使网络更容易学习。(理解:Anchor box是在中心点的周围产生几个固定比例的边框,所以这个“中心点”就把这几个框给锚住了,他们共用一个中心点。)

为了引入anchor boxes来预测边界框,本文从YOLO中删除全连接层。剩下的具体怎么操作呢?首先,我们消除了一个池化层,使输出的卷积map分辨率更高。然后,我们还缩小网络以对416 * 416大小的输入图像进行操作,而不是448×448。这一步的目的是为了让后面产生的卷积特征图宽高都为奇数,这样就可以产生一个center cell。本文观察到,大物体通常占据了图像的中间位置, 就可以只用中心的一个cell来预测这些物体的位置,否则就要用中间的4个cell来进行预测,这个技巧可稍稍提升效率。最后,YOLO的卷积层将图像下采样32倍,因此通过使用416 * 32的输入图像,我们得到13×13的输出特征图。

加入anchor boxes后,可以预料到的结果是召回率上升,准确率下降。我们来计算一下,假设每个cell预测9个建议框,那么总共会预测13 * 13 * 9 = 1521个boxes,而之前的网络仅仅预测7 * 7 * 2 = 98个boxes。具体数据为:没有anchor boxes,模型recall为81%,mAP为69.5%;加入anchor boxes,模型recall为88%,mAP为69.2%。这样看来,准确率只有小幅度的下降,而召回率则提升了7%,说明可以通过进一步的工作来加强准确率,的确有改进空间。

(4)Dimension Clusters(维度聚类)

本文在使用anchor boxes时遇到两个问题,第一个是anchor boxes的宽高度往往是精选的先验框(Faster R-CNN中以3个横纵比、3个尺度得到9个框),虽然在训练过程中网络也会学习调整anchor boxes的宽高度,最终得到准确的bounding boxes,但是如果一开始就选择了更好的、更有代表性的先验anchor boxes维度,那么网络就更容易学到准确的预测位置。

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

d(box,centroid) = 1 - IOU(box,centroid)
centroid是聚类时被选作中心的边框,box就是其它边框,d就是两者间的“距离”。IOU越大,“距离”越近。

我们为各种k值运行k-means,并绘制和中心边框的平均IOU,参见图2。
在这里插入图片描述
从图2可以看到,平衡复杂度和IOU之后,最终得到k值为5,意味着选择了5种大小的anchor box维度来进行定位预测,这与手动精选的anchor box维度不同。结果中扁长的框较少,而瘦高的框更多(这符合行人的特征),这种结论不通过聚类实验恐怕是发现不了的。

当然,本文也做了实验来对比两种策略的优劣,如表1所示,使用聚类方法,仅仅5种anchor boxes的召回率就和Faster R-CNN的9种相当。5个质心的平均IOU为61.0,而Anchor Box为60.9。如果我们使用9个质心,我们会看到更高的平均IOU。这表明使用k-means生成我们的边界框会以更好的表示方式启动模型,使任务更容易学习。
在这里插入图片描述
(5)直接进行位置预测

使用anchor boxes时发现的第二个问题是模型不稳定,尤其是在早期迭代期间,大多数不稳定来自于预测框的(x,y)。在Faster R-CNN的RPN中,执行前向推理能够预测得到anchor box的中心点修正值(偏移量) t x t_x tx t y t_y ty,预测框的(x,y)中心坐标计算如下:

x = ( t x ∗ w a ) + x a x=(t_x*w_a)+x_a x=(txwa)+xa
y = ( t y ∗ h a ) + y a y=(t_y*h_a)+y_a y=(tyha)+ya
其中, x a , y a x_a,y_a xa,ya</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值