目标检测YOLOv1翻译

摘要

我们提出了YOLO,一种新的目标检测的方法。之前的目标检测工作是重新定义分类器来实现检测。而我们现在把目标检测定义成一个空间可分离边界框和相关类概率的回归问题。用一个单一的神经网络从一张图中进行一次计算直接预测初边界框和分类概率。整个检测管道是一个单一的网络,因此可以针对检测结果直接进行优化。

我们的统一架构是非常快的。基础的YOLO处理速度达到45帧一秒,一个小的版本的网络FastYOLO达到惊人的155帧每秒,而且仍然是其余试试检测模型2倍的mAP。与其余最先进的检测系统相比,YOLO会产生更多的定位错误,但不太可能预测出背景中的假阳性,当从自然场景推广到其它场景例如艺术品,YOLO优于其余的检测网络例如DPM和R-CNN。

1、介绍

人类只要一眼就能看出图片上的目标是什么,在哪儿,以及相互作用。人类视觉系统即快又准,允许我们在几乎无意识情况下执行复杂任务,比如驾驶。快速准确的目标检测算法使得计算机能够在没有特殊传感器下驾驶汽车,使辅助设备能向人类传递实时场景信息,并为通用、反应灵敏的机器人系统释放潜力。

目前的检测系统重新利用分类器进行检测。为了检测目标,这些系统给分类目标采用一个分类器,并在测试图片的不同位置和比例对其进行评估。例如可变形零件模型(DPM)采用滑动窗口方法,分类器在整个图片上以均匀间隔的位置运行。近期的方法比如R-CNN 使用建议区域方首先在整个图片上生成潜在边界框,然后再这些边界框上使用分类器。分类后,后处理会精细化边界框,删除重复边界框,基于场景中的其余目标对边界框进行重新打分。这些复杂的管道通常既慢又难以优化,因为每一个独立的部件都要分开训练。

我们构造目标检测为一个单一的回归问题,直接从图像分辨率到边界框坐标和类概率。使用我们的系统你只需要查看一次(YOLO)图片来预测出现的目标是什么在哪里。

YOLO清爽简单,从Figure1可以看出(图片来自原论文),一个单一的卷积

神经网络同时预测出多个边界框和类别概率。YOLO在完整图片上进行训练,直接对检测结果进行优化。与传统的检测模型相比,这个统一模型又许多的优点。

首先,YOLO是相当快,因为我们把检测构造成一个回归问题,不需要复杂的管道。测试时,只需在一个新图片上运行我们简单的神经网络就能预测出结果。我们的基础网络在TitanX上不进行批处理单张图片速度45fps,快速版本能达到150fps。这意味着我们可以在不到25ms内实时处理视频流。此外,YOLO的平均精度是其它实时系统的两倍。关于我们系统的实时网络摄像头的例子可以浏览我们的项目网页:http://pjreddie.com/yolo/。

其次,YOLO在预测时会做全局性考虑。不像滑动窗口和基于区域建议的方法。YOLO在训练和测试时会观看全图,因此它将类和外观之间的上下文关系做了隐士编码。Fast R-CNN 一个顶部检测方法,由于看不到全部图片,因此会把背景中部分误认为是目标。和Fast R-CNN相比,YOLO把背景误判的错误不到一半。

再次,YOLO对检测目标做了可概括描述。当在自然图片进行训练,艺术类图片进行检测时,YOLO比DPM 和R-CNN 有更大的优势。因为YOLO的高度泛化性,因此在一个新的领域或者意外输入时不容易宕机。

YOLO在准确率上落后于领先的检测系统。虽然可以快速定位一些目标,但对于一些目标无法检测,比如小目标。在我们的实验中做了一些权衡。所有代码开源。

2、统一的检测

我们将目标检测的每个部分统一到一个神经网络。我们的网络利用输入图片的所有特征预测每一个边界框。它还可以同时预测所有的类和边界框。这意味着我们的网络会对整个图片和所有图片对象进行推理。YOLO的设计实现了端到端训练和实时速度,同时保持较高的平均准确率。

我们的系统将输入图片分割成S x S大小网格。如果一个目标的中心落在一个网格内,该网格用来负责检测该目标。

每个网格预测B个边界框和每个框的置信度值。这些置信度值反应了模型中这个框包含目标的置信度和这个框预测的准确性。形式上我们将置信度定义为

Pr(Object)* IOU_pred^truth。如果一个网格中没有目标,则分数=0。否则,我们希望置信度分值等于预测框和真实框的交集(IOU)。

每个边界框包含5个预测结果,x,y,w,h和置信度。(x,y)坐标是相对于网格边界的盒子的中心点。相对于整个图像进行宽度和高度预测。最后置信度预测表示预测框和任一真实框的IOU。

每个网格需要预测C个类概率,Pr(Class_i | Object)。这些概率取决于包含对象的网格单元。我们只考虑每个网格的单元的一组类概率,不考虑框的个数B。

测试时我们将条件概率和框的置信度概率相乘

Pr(Class_i | Object) * Pr(Object) * IOU_pred^truth = Pr(Class_i) * IOU_pred^truth

这为我们提供了每个框特定类别的置信度分数。这些分数对该类出现在框的概率和预测框与目标匹配程度进行编码。

在PASCAL VOC数据集上使用的S = 7,B = 2。PASCAL VOC数据集中有20个类别,因此C=20。最终预测的向量为 7 * 7 *(2*5 + 20)

2.1. 网络设计

我们将模型设计成卷积神经网络,在PASCAL VOC数据集上进行验证和测试。卷积层用来提取图片特征,全连接层用来预测输出概率和置信度。我们的网络构造来源于分类网络中的GoogLeNet模型。24层卷积后加2层全链接。我们在3 x 3卷积层后使用1 x 1降低层,来替代GoogLeNet中的inception模块。整个网络结构如图3。

2.2训练

我们将网络在ImageNet进行预训练,对于预训练,我们使用图3前20层卷积后接一个平均池化层一个全连接层。我们训练了几乎一个星期,最后在2012年的ImageNet验证集上达到top5的准确率88%,与GooLeNet在Caffe的模型库中的结果差不多。我们对所有的训练和推理都是使用Darkent框架(就是图3中的框架)。

将模型转换用来执行检测,Ren在【29】中表明在预训练网络后添加卷积和全链接层会提升性能。根据他们的实验,我们增加四个卷积层和2个全连接层,参数都是随机初始化。检测往往需要图像细粒度的视觉信息,因此我们将224x224的输入提高到448x448。

最后一层预测类概率和框坐标。利用图片的宽高对边界框的宽高进行归一化到0~1之间。我们将边界框的x,y左边参数化成一个特定网格单元地址的偏移量,以便使它们也在0~1之间。

我们在最后一层使用线性激活函数,在其它层采弱调整的线性激活函数。

我们对模型输出的平方和误差进行优化。使用平方和误差是因为容易优化,但不能完全符合我们的目标,最大限度的提高平均精度。它将定位误差和分类误差平均加权,可能不理想。而且,在每个图像中,许多网格不包含目标,这将这些网格单元的置信度分数推向0分。通常会压倒包含了目标的网格单元的梯度。这可能引起模型不稳,导致训练时过早出现分歧。

为了解决这个问题,我们增加了包含目标的边框的置信度损失,降低了不包含目标的边框的置信度损失。我们使用了2个参数namda_coord和namda_noobj,设置namda_coord = 5,namda_noobj = 0.5。

平方和误差在大目标和小目标上进行加权,我们的误差度量应该反映出在大目标上的小偏差比小目标上的小偏差更加重要。为了解决这个问题,我们采用预测边界框宽度和高度的平方根,而不是直接预测宽度和高度值(因为宽度和高度都是0,1之间的数,平方根反而比本身更大)。

YOLO对每个网格单元预测多个边界框。在训练时我们对每个目标只想要一个边界框对其负责。我们基于当前与真实框最大的IOU的预测,作为对预测目标负责的边界框预测器。这导致边界框预测器的专门化。每个预测器都能更好的预测确定大小,宽高比,或者对象类别,从而提高召回率。

训练时我们优化下面的多部分损失函数:

第一行是边框中心点误差(边框有目标),第二行边框的高度和宽度误差(边框有目标),第三行置信度误差(边框有目标),第四行置信度误差(边框无目标),第五行对象分类错误误差(边框有目标)。其中表示网格i中存在对象。表示网格i的第j个边界框存在对象。表示网格i的第j个边框不存在对象。如果一个对象存在一个网格单元中,损失函数只惩罚分类错误。如果预测器只对真实框负责,也只惩罚边界框坐标错误。

我们使用PASCAL VOC 2007和2012的训练集和验证集进行了135批次的训练。在2012上进行测试,我们也使用了VOC 2007的测试数据进行训练。所有的训练我们采用batchsize = 64,梯度中的动量 =0.9,衰减=0.0005。在学习率上我们缓慢从0.001上升到0.01。如果我们一开始采用大的学习率,因为梯度不稳定经常产生分歧。我们对75个批次采用0.01,30个批次采用0.001,30个批次采用0.0001。

为了避免过拟合,我们采用dropout和大量数据增强。在第一个连接层后一个比列=0.5的dropout层用来防止两个层之间的相互适应。在数据增强上,我们做了高达原始图片大小20%的缩放和平移。我们还在图像的HSV色彩空间上做了曝光和饱和度随机调整,最大调整1.5倍。

2.3推理

就像在训练中一样,预测一个测试图片只需要一次网络计算。在PASCAL VOC网络对每个图片预测98个边界框,对每个边界框预测分类概率。不同于其它以分类为基础的方法,YOLO因为只需要一个单一网络的计算,所以在测试时速度是相当快。

网格的设计加强了边界框预测的空间多样性。通常很清楚一个目标属于哪个网格,网格只预测每个目标的一个框。一些大的物体或者目标靠近多个单元格的边界,可能被多个单元格很好的预测出来。非极大值抑制可以用来修正这些多预测结果。虽然对性能不像DPM和R-CNN那么精密,但非极大值抑制(NMS)在mAP上提升了2~3%。

2.4YOLO的局限性

YOLO对边界框的预测加了强大的空间约束,因为每个网格单元只预测2个框,每个框只有一个类。空间约束限制了模型可以预测的附近目标的数量。我们的模型与成群出现的小物体做着斗争,比如成群出现的小鸟。

因为模型学习从数据中预测边界框,因此难以推广到具有新的或不同寻常的长宽比的结构。因为模型从输入图片中采用了下采样,因此模型还是使用了相对粗糙的特征来预测边界框。

最后我们训练用的损失函数近似检测性能,我们的损失函数在小边界框和大边界框上做相同处理,更应该关注小边界框中的小误差,这对IOU的影响更大得多。我们的主要错误来源于错误得定位。

3对比其它的定位系统

目标检测是计算机视觉的一个核心问题。检测管道通常先从输入图像中提取一些鲁棒特征(Haar,SIFT,HOG,卷积特征)然后使用分类器或者定位器在特征空间中识别目标。这些分类器或者定位窗口的器要么以滑动窗口的方式遍历整个图片,要么在图片的某些子集区域上执行。我们比较了YOLO检测系统和一些顶级的检测框架,突出关键的相似性和差异性。

Deformable parts modelsDPM可变部分模型)。采用滑动窗口做目标检测。DPM使用一个不相交的管道来提出静态特征,分类区域,预测高分区域的边界框等。我们的系统利用一个单一的卷积神经网络来代替这些分开的部分。这个网络执行特征提取,边界框预测,非极大值抑制,和上下文推理。不同于静态特征,网络在线训练特征并为检测任务进行优化。我们的统一架构比DPM更快更准。

R-CNN。R-CNN和它的变种使用候选区域代替滑动窗口在图片上寻找目标。Selective Search产生可能的候选框,卷积网络提取特征,SVM为候选框打分,线性模型调整边界框,非极大值抑制消除重复检测。这个复杂管道的每一步都需要精确调整,这个系统相当慢,在测试图片上一张需要超过40s。

YOLO和R-CNN有一些相似之处,每个网格单元产生候选框,利用卷积特征对这些边框进行打分。然而我们的系统对每个网格单元的候选采用空间约束,这有利于减轻同一个目标上的多个检测。我们的系统候选出相当少的边界框,整个图片只选取98个候选框,比起Selective Serach大概2000个。最后我们系统将这些当独组件联合成一个单一的可以优化的模型。

其它快速检测器。Fast 和Faster R-CNN通过共享计算和使用神经网络预测后选区代替Selective Search来重点提升速R-CNN框架的速度。尽管它们对R-CNN的速度和准确性有提升,但仍然在实时性上不行。

一些研究旨在提升DPM管道的速度。加速HOG特征的计算,使用级联,将计算放在GPU上。。,然而DPM的实时性只有30fps。

YOLO没有尝试优化大型检测管道的单个组件,而是完全抛弃了管道而且速度更快。

针对单一类别的检测器,比如人脸,人体,可以进行高度优化,因为她们要处理的变化小很多。YOLO 是一种通用的检测器,可以同时检测多种目标。

Deep MultiBox。不同于R-CNN,Szegedy等人训练一个卷积神经网络来预测兴趣框,代替Selective Search。MuliBox也可以进行单目标检测,用单类预测代替置信度预测。然鹅,MultiBox无法进行一般的目标检测。仍然只是较大检测管道中的一部分。YOLO和MultiBox都使用卷积网络进行边界框预测,但YOLO是一个完整的检测系统。

OverFeat。Sermanet等人,训练卷积网络来进行定位,并调整定位器来进行检测。OverFeat高效使用滑动窗口检测,但仍是一个不相交系统。OverFeat是对定位进行优化,不是对检测性能进行优化。像DPM,做预测时定位器只是使用了局部信息。OverFeat不能推理全部上下文,需要大量后处理来产生一致定位。

MultiGrasp。我们的工作在设计上与Redmon等人在抓紧检测的工作类似。我们的网格在边界框预测上是基于多抓取系统的回归抓取。然而抓取检测任务比目标检测任务简单的多。对于只包含一个对象的图像,多抓只需要一个可抓取区域。不需要估计物体大小,位置或者目标边界,目标类别。只要找到一个合适抓取区域。YOLO在一张图片上进行多个目标的多个类进行边界框和类别的预测。

4、实验

总结:在实时领域mAP很高,在mAP领域实时性很强。图太多了,就看一张吧。

5、在户外的实时检测

YOLO是个又快又准的目标检测器,在计算机视觉领域可以很好应用。我们把YOLO和一个网络摄像头连接,验证它的实时性,包括展示从摄像头读取图片到检测目标的时间。

系统是交互式的并很吸引人。虽然YOLO只是处理单张图像,但当连接到网络摄像头时,它的功能就像一个跟踪系统,在物体移动和变化时检测它们。系统演示和源代码可在我们的项目网站上找到:http://pjreddie.com/yolo/。

6结论

我们介绍了YOLO,一个统一的目标检测模型。模型构造简单,可以直接在整张图像上进行训练。不同于基于分类器的方法,YOLO是直接在检测性能的损失函数上训练的,整个模型是联合训练的。

Fast YOLO是文献中速度最快的通用目标检测器,YOLO推动了实时目标检测的发展。YOLO还可以很好地推广到新的领域。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值