论文学习:YOLO9000: Better, Faster, Stronger

原文链接:点击打开链接

摘要:作者引入了YOLO9000,一种最先进的、可以检测超过9000种物体类别的实时的目标检测系统。首先我们提出了许多YOLO检测的提升方式,与之前的工作类似也有不同(both novel and drown from prior work)。改进的模型YOLO v2在标准的检测任务集如PASCAL VOC和COCO上是很先进的。运用新奇的、多规模的例如YOLOv2的训练方法可以在各种大小的训练集上面运行,并且在速度和准确性方面也有不错的均衡。YOLO v2在保证运行速度的同时效果也比Faster R-CNN和SSD要好。最后,作者提出了联合训练算法(joint training algorithm)来做目标检测和分类。运用这种方法同时在COCO和ImageNet数据集上训练了YOLO9000。

一、简介
通常,目标检测的目的要快、准确、识别性高。当前的目标检测的数据集与分类和tagging的数据集相比是有限的。作者的目的是检测和分类的规模水平是相似的。然而检测数据集赋予标签代价要比分类和tagging赋予标签代价要高。因此在不久的将来检测数据集和分类数据集的规模水平相近是不太可能的。

作者提出了一种新的方式以扩展现有的检测系统并将其与分类数据相结合:物体分类的分层观点,可以把不同的数据集结合在一起。作者也提出了联合训练算法。联合训练算法的基本思路是:同时在检测数据集和分类数据集上训练物体检测器,用检测数据集上的数据学习准确定位物体的位置;用分类数据集提升准确性和鲁棒性。在这种方法的基础上改进了原有的YOLO,提升版本为YOLO v2 ,后来在9000种类别的物体上训练新的模型:YOLO9000。

二、 Better

与现有的先进的检测系统相比,YOLO的缺点是显而易见的。与Fast R-CNN相比,YOLO有很多定位错误,而且YOLO低recall。要改善性能,作者的关注点是保证分类的准确性的同时提高recall和定位的准确度。计算机视觉的趋势是更大更深的网络。要想得到比较好的性能,通常是合并大的神经网络或者是把多个模型合并在一起。YOLO v2的目的是快速、准确性高。作者没有扩大网络的规模而是进行了简化,很多提高性能的想法如表2:


Batch Normalization:主要是改善网络的收敛性。在YOLO中所有的卷积层增加batch normalization的数目,可以使mAP增加2%。而且Batch normalization也是模型正则化。在避免过拟合的情况下除去了dropout。
High Resolution Classifier:所有的先进的检测方法都在ImageNet上使用分类预训练。从AlexNet开始,大多数的分类器都是在小于256x256的输入图片上操作。YOLO输入图片的规模是224x224,检测提高分辨率为448x448。这就意味着网络需要适应新的输入分辨率。
YOLO v2作者在ImageNet调整分类网络为448x448进行fine tune,并且fine tune10个epoch。这给了网络时间调整迭代器(filters)可以在高分辨率的输入效果很好。High resolution classifier增加mAP4%的性能。
Convolutional With Anchor Boxes: YOLO 在每一个特征图上使用FC layers直接给出bounding boxes的坐标。Faster R-CNN则只用卷积层和region proposal network(RPN)预测anchor box的偏置值和置信度。预测偏置值而不是坐标值可以简化问题,也使得网络学习起来更简单。
作者除去了YOLO中的FC layers,使用anchor boxes预测bounding box。首先除去了一个pooling layer从而使网络卷积层输出高分辨率。作者收缩网络使其在运行在416x416而不是448x448的输入图片上,因为检测的目标,尤其是一些大的目标多是占据在图片的中心位置,因此在feature map上有奇数个定位方便找到中心点。YOLO的卷积层采用32这个值进行下采样因而作者使用416x416的输入图片这样就能得到一个13x13的输出feature map。
在使用anchor boxes的同时作者去掉了空间坐标类别预测的机制而是对每个anchor box预测类别和物体。在YOLO的基础上,目标检测依然预测IOU、proposed box以及已知目标预测其类别的条件概率。
使用anchor boxes让准确率稍微下降了些。每个图片,YOLO只能预测98个box,而使用anchor box就能超过1000个。之前的模型效果是69.5Map,81%的recall,而改进的模型69.2mAP,88%的recall,说明模型还有提升的空间。
Dimension Clusters:在YOLO中采用anchor box的时候作者遇见了两个问题。第一个是box的维度值需要手动决定。网络可以自己学习调整box的值但是一个较好的先验值可以使得网络学习更简单,结果也更好。

作者没有手动选择box的先验值,而是在训练集上运行k均值聚类算法。如果使用标准的k均值算法的话采用的是欧几里得距离,但是较大的box比较小的box会有更多的错误。(大概是因为大的box各个点之间的欧几里得距离较大,采用开方运算容易有更多的误差吧)为了有更好的IOU得分的结果,作者采用如下公式计算距离:


作者做了很多实验画了一个平均IOU得分和k值之间关系的图。最终在模型复杂度和高recall之间权衡下令k=5。作者还比较了自己的聚类策略的最接近先验值的平均IOU和手选的anchor boxes(表1),说明效果还是可以的。

  

Direct location prediction:第二个问题就是模型的稳定性尤其是在迭代的过程中的稳定性。模型中的大多数不稳定性都来自给box预测(x,y)坐标值的时候。在RPN中网络是自己预测tx和ty的,然后用下述公式计算(x,y)的值。


这个公式是没有限制的,因此任何一个anchor box都可能在图片中的任何一个位置,而跟box的预测值没有关系。参数随机初始化就会导致模型花费很长一段时间稳定预测的偏置值。
作者没有让模型自己预测偏置值而是继续采用YOLO中的方法:预测单元格(cell)相关的位置的坐标。这就限制了ground truth的范围到0-1,并且使用一个logistic activation把网络的预测值限制到这个范围。

网络对每个cell在feature map中预测5个bounding boxes的值。每个bounding box给出5个坐标值tx,ty,tw,th,和to。如果cell相对于图片左上角的偏移量值cx和cy,bounding box先验值的宽和高分别是pw,ph,预测结果就是:

        

使用dimension clusters、directly predicting the bounding box center location提高了YOLO 5%的性能。
Fine-Grained Features:修改后的YOLO是在13x13的feature map上预测结果。尽管这对大目标来说已经够用了,但是模型还可以在更精细的粒度上进行优化,主要是为了定位一些更小的物体。Faster R-CNN和SSD都是在各样的feature map上运行他们的proposal networks以得到分辨率的一个范围。作者没有采取这种方式而是增加了一个passthrough layer。Passthrough layer的作用就是通过把相邻的特征叠加到不同的通道上而让高分辨率的特征和低分辨率的特征相关联,和Res Net中的identity mappings相似。这样,26x26x512的feature map就变成了13x13x2048。检测器在这个expanded feature map上运行,座椅可以得到细粒度的特征信息,这样性能提高了1%。
Multi-Scale Training:原始YOLO输入是448x448。经过anchor boxes之后分辨率改为了416x416。作者希望YOLO v2保持鲁棒性,能在不同大小的图片上运行,就把这一想法训练在模型中。
作者没有固定输入的图片大小,作者每次迭代都改变次网络。每10个batches网络随机选择一个图片维度的大小。因为下采样的值是32,作者选的都是32的倍数{320,352…..608}。最小的是320*320,最大的是608*608。网络自动改变尺寸大小并继续进行训练过程。
这个策略让网络在不同的输入尺寸上都能有很好的结果。这就意味着同样的网络可以在不同的分辨率上预测结果。网络也可以在更小的尺寸上跑得更快。YOLO v2在速度和精确度上给出更好的平衡。
低分辨率时YOLO v2代价低,精确度可靠。

高分辨率YOLO v2是最先进的检测器,在VOC2007上保证实时性的同时有78.6mAP。


Further Experiments:在VOC 2012上训练YOLO v2。


三、 Faeter
大多数检测框架是基于VGG-16的。VGG-16十分强大,分类精确度高但十分复杂。YOLO基于GoogleNet的框架,比VGG-16快,但是精度不如VGG-16。
Darknet-19:基于YOLO v2作者提出了一个新的分类模型。跟VGG-16相似,作者使用3*3的filters,每次pooling之后都增加一倍channel的数目。Pooling的方式是全局平均(global average pooling)。使用batch normalization稳定训练,加速收敛,规范化模型。

最终的模型是Darknet-19,19个卷积层,5个maxpooling层。


四、 Stronger
作者提出了分类数据和检测数据上联合训练的机制,他们的方法是使用已经做好标签的检测图片来学习检测专用的信息,比如bounding box坐标预测以及如何分类相似物体。
在训练过程中作者把检测和分类的数据集混合在一起。当网络遇到了一个检测数据集的图片和标签信息,作者基于YOLO v2损失函数计算反向传播过程。当网络遇到一个分类数据集的图片的时候,作者就只使用架构中分类部分计算反向损失。
这个方法带来了一些改变。检测数据集只有一些公共的物体和标签,比如“猫”、“狗”之类的。分类数据集的标签更多,层次更深。ImageNet有超过1000种狗的类别。如果要在两种数据集上训练的话就要把这些标签融合在一起。
大多数分类方法都采用softmax layer计算每个类别的最终概率分布。而使用softmax就意味着各个类别之间是相互独立的。也可以使用multi-label的模型把不相互独立的数据集结合起来,这样就忽视了已知数据的所有结构。
Hierarchical classification:ImageNet的标签是从WordNet得到的。WordNet是一种构成了概念和他们相关联的语言数据集。WordNet是一种直接图表(direct graph),而不是树形结构,因为语言十分复杂。比如狗同时属于“犬科”和“家畜”两个类别,但是在WordNet中这两个词是同义词,所以不能用树形结构。作者简化了问题,从ImageNet的概念中建立了一个分级树(hierarchical tree)。
为了建立这个树作者检查了ImageNet中的视觉名词并且找到他们在WordNet图中到达根节点的路径,在这里设所有的根节点为实体对象(physical object)。许多同义词集在图中仅有一条路径,因此首先作者把这些路径加到树中。然后迭代地检查剩下的概念并把这些路径加到树中,但是要保证树尽可能地小。所以如果有一个概念有两条到达根节点的路径,一条路径在树上加3条边,另一条只加一条边,那么选择最短的路径。(就是如果有多条路径,选最短的,保证树最小)
最终得到了WordTree,是视觉概念的分层模型。要计算一个节点的绝对概率,就从这个节点一直到根节点把整条路径的概率相乘。要想得到分类的目的,就假设图片包含一个实体对象,Pr(physical object)=1.

为了验证这个方法,作者在WordTree训练Darknet-19模型,使用1000个类的ImageNet进行训练。为了建立WordTree 1k,作者从1000个标签空间扩展到了1369。要计算条件概率模型预测了一个1369个值的向量,计算所有同义词集的softmax值。


如果和之前的训练参数一样,分层模型Darknet-19 top-1有71.9%的准确率,top-5达到90.4%。虽然加了369个额外的概念,预测树形结构准确率略微下降。这种方法的好处是对未知的物体类别进行预测时,性能下降地很优雅(gracefully)。比如,网络看见了一个狗的图片但是不知道是什么类型的狗,网络会给出高置信度是狗,种类的同义词给低置信度。
公式在检测方面也有不错的效果。

Dataset combination with WordTree:利用WordTree把多个数据集结合起来,把数据集中类别映射到树中的同义词。Figure 6是WordTree把ImageNet和COCO结合起来。


Joint classification and detection:既然可以用WordTree把数据集结合起来,就可以在分类和检测上训练联合模型。作者想要训练一个极其大的scale detector,就用COCO检测集和ImageNet的top 9000个类结合成新的数据集。对应的WordTree中有9418个类。ImageNet数据集很大,作者通过采样COCO数据集中的数据使COCO和ImageNet中数据集比例是4:1。
在这个数据集上训练了YOLO9000,使用YOLO v2架构,但是用的先验值是3不是5,主要是限制输出的大小。网络看到一个检测图片的时候,就正常地反向传播。遇见分类的数据集图片时,只使用分类的loss功能反向传播。作者假设IOU最少是3,基于这些假设反向传播。
使用联合训练法,YOLO9000使用COCO数据集学习检测图片中的物体,用ImageNet数据学习在大数据集中分类。作者在ImageNet detection task进行验证。
YOLO9000取得了19.7mAP
在未学习过的156物体类别上进行分类,取得了16mAP
YOLO9000 Map比DPM高,YOLO9000能同时检测9000个物体类别,保证实时

虽然YOLO9000对于动物的识别效果很好,但对于“sunglasses”或者“swimming trunks”这些物体识别效果不是很好。


五、 总结
作者提出YOLO v2和YOLO9000,实时的检测系统。YOLO v2是最先进的、比其他检测系统快,而且可以在速度和精确度上相均衡。
YOLO9000是一个实时框架,允许可以实时检测9000种物体分类。使用WordTree结合来自不同资源的训练数据,并用联合优化技术同时在ImageNet和COCO上进行训练。YOLO9000缩小了检测数据集和分类数据集之间的差距。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值