yolo全文翻译


本文为YOLO的翻译。这是YOLO系列的第一篇文章,发表在2015年的CVPR上。
原文可在网络免费下载。
也可在https://pan.baidu.com/s/1Yda-mPL4cbyN5FVbS8KPzQ下载,提取码请关注公众号:熹熹爱编程,回复[yolo]免费获取。

你只需要看一次:
统一,实时的目标检测

Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

摘要:我们提出了YOLO,这是一种新的目标检测算法。以往的目标检测算法都是重复利用分类器来进行检测。相反,我们把目标检测定义为一种回归问题,它从空间上分离边界框及其类别的条件概率。一个单一的神经网络在一次前向推断时直接对一整张图片的边界框和类概论进行预测。因为整个检测流程仅有一个网络,它可以直接对检测性能进行端到端的优化。

我们这个统一的架构速度非常快。我们的基本YOLO模型可以以实时的每秒45帧的速度处理图像。另一个小版本,Fast YOLO,速度达到了令人震惊的155帧每秒,同时达到了其他检测方法的mAP的两倍。和最先进的检测系统相比,YOLO在定位上的错误会多一些,但在背景上预测假阳性的可能性较小。最后,YOLO是一种通用的物体检测方法。当从自然图像泛化到其他领域如艺术品时,它超过包括DPM和R-CNN在内的检测方法。

1.引言

人类看一眼图像就能立刻知道图像中有什么物体,它们的位置在哪儿,它们之间如何联系。人类的视觉系统是快且准的,允许我们几乎不用思考就可以完成比如驾驶这样较复杂的任务。快速、准确的物体检测算法将使计算机能够在没有特殊传感器的情况下驾驶汽车,使辅助设备能够向人类用户传达实时场景信息,并解锁通用、响应灵敏的机器人系统的潜力。
当前的目标检测系统重复利用分类器来进行检测。为了检测对象,在测试图片中,这些系统用一个分类器在图像的不同位置和尺度上对其进行评估。像DPM这样的系统使用滑动窗口方法,在整张图片上以均匀间隔的位置运行分类器。
很多最近的方法比如R-CNN采用在图片中提取候选区域来先生成边界框,然后再这些边界框的基础上运行分类器的方法。经过分类后,使用后处理来优化边界框,消除重复检测,并根据场景中的其他物体对边界框进行重新打分。这种复杂的工作流程很慢,并且因为每个单独的组件都必须分开来训练而很难优化。
我们将物体检测重新定义为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,你只需要看一次图像,就可以预测其中的物体及其位置。
YOLO非常简单:看图1. 一个单一的卷积网络可以同时预测边界框及这些边界框的类别概率。YOLO在整张图片上进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一的模型有几个优点。

首先,YOLO非常快。因为我们将检测看作一个回归问题,就不再需要复杂的工作流。在测试预测物体时,只需要在新的图片上运行我们的神经网络。我们的基本网络在Titan X GPU上以45帧每秒的速度处理图片,没有批量处理,另一个更快的版本以超过150帧的速度运行。这意味着我们可以以低于25毫秒延迟的速度实时处理视频流。同时,YOLO达到了其他实时系统平均精度的两倍以上。关于我们的系统在摄像头上实时运行的演示,请查看我们的项目网页:http://pjreddie.com/yolo/。
第二,YOLO是对完整的图片进行预测的。不像滑动窗口和提取候选框技术,YOLO在训练和预测时是能看到整张图片的,因此它对类及其外观进行隐式地编码上下文信息。Fast R-CNN 是一种顶级的检测方法,但会将图像中的背景块误认为是物体,因为它看不到更大的上下文。与Fast R-CNN相比,YOLO的背景错误数量不到一半。
第三,YOLO学习物体的通用特征。当在自然图像上或者在艺术品上进行训练时,YOLO的性能远超像DPM以及R-CNN这样的顶极检测算法。因为YOLO是高度通用的,当应用在新的领域或意外输入时,它也不太会失灵。
YOLO的准确性仍低于当前先进的检测系统。虽然它可以快速地识别图像中的物体,但是很难精确定位一些物体,尤其是小物体。我们将在实验中进一步研究这些缺点。
我们所有的训练和测试代码都是开源的。各种预训练的模型也可以下载。
2.统一的检测

我们将目标检测这些分离的组件整合成了一个单一的神经网络。我们的网络从完整的图片中获取特征来预测每一个边界框。它也可以同时预测图像中所有类别的所有边界框。这意味着我们的网络全局推理整张图像和图像中的所有对象。YOLO设计可实现端到端训练和实时速度,同时保持较高的准确率。

我们的系统将输入图像分为S*S的网格。如果某个物体的中心点落在一个网格单元中,那么这个网格单元就负责检测该物体。
每一个网格单元预测B个边界框以及这些边界框的置信度分数。这些置信度分数反映了模型对框包含目标的置信度,也反映了模型认为它预测的框有多准确。形式上,我们定义置信度为:Pr(Object)*IOUtruthpred。如果网格单元中不存在物体,置信度分数应该为0。否则,我们希望置信度分数等于预测框和真实框之间的交并比。
每一个边界框包含5个预测值:x, y, w, h和置信度。(x,y)坐标代表框的中心相对于网络单元的边界。宽和度是相对于整张图像的预测。最后,置信度代表预测框和真实框之间的交并比。
每一个网格单元同样预测C个类别的条件概率,Pr(Classi|Object)。这些概率是以包含物体的网格单元为条件的。我们仅仅为每个网格单元预测一组类别概率,而不考虑框的数量B。
在测试时,我们将条件类概率和独立框的置信度相乘,
图片
这给我们提供了每个框的特定类别的置信度分数。这些分数既是对该类出现在盒子里的概率的编码,也是对预测框与物体的匹配程度的编码。
为了在PASCAL VOC上评估YOLO,我们使用S=7,B=2。PASCAL VOC有20个标记类,所以C=20。我们最终预测的是一个7×7×30的张量。
2.1 网络设计

我们以一个卷积神经网络实现这个模型,并在PASCAL VOC检测数据集上对其进行评估。网络前面的卷积层负责从图像中提取特征,全连接层负责预测输出概率和坐标。
我们的网络体系结构受到了图像分类的GooLeNet模型的启发。我们的网络有24个卷积层,后跟2个全连接层。和GoogLeNet用inception块不同,我们仅简单的使用11层后跟 33的卷积层,和Lin等人使用的相似。完整的网络模型如图3所示。
我们同样训练了一个YOLO设计的快速版本,突破了快速物体检测的界线。Fast YOLO使用更少卷积层(9层而不是24层)的神经网络,在这些层中也使用了更少的滤波器。除了网络的大小,YOLO和Fast YOLO所有的训练和测试参数都是一样的。
最终我们网络的输出了一个7730的张量。
2.2 训练

我们在具有1000个类的竞赛数据集ImageNet上预训练我们的卷积层。对于预训练,我们使用了图3中的前20个卷积层,然后是一个平均池化层和一个全连接层。我们对这个网络进行了大约一周的训练,并在ImageNet 2012验证集上,单次裁剪top-5准确率达到88%,与Caffe的Model Zoo中的GoogLeNet模型相当。我们使用Darknet框架进行所有的训练和推理。
然后,我们转换模型进行检测。Rent等人的研究表明,在预训练的网络中添加卷积层和全连接层可以提升性能。根据他们的例子,我们添加了4个卷积层和2个全连接层,并随机初始化权重。检测通常需要精准的视觉信息,所以我们将输入从224224提高到了448448。
我们最后一层预测类概率和边界框坐标。我们用图像的宽和高来归一化边界框的宽和高使它们都在0-1之间。我们参数化边界框x和y的坐标为特定网格单元位置的偏移量,使它们也介于0-1之间。
我们对最后一层和所有层使用以下的线性激活函数,
我们对模型输出的平方和误差进行优化。我们使用平方和误差,因为它很容易优化,然而它并不符合我们最大化平均精度的目标。它对定位误差和分类误差的权重相同,这可能并不理想。此外,在每张图像中,许多网格单元并不包含任何目标。这就把这些单元的置信度分数变为了0,往往压倒了含有物体的单元的梯度,这可能会导致模型不稳定,使训练早期发散。
为了解决这个问题,我们增加了边界框的坐标预测损失,并降低不含有目标对象的边界框的置信度损失。我们引入了两个参数来实现这个目标。设置。
平方和误差对大框和小框的权重是一样的。我们的误差度量应该反映出大框里的小偏差没有小框里的小偏差那么重要。为了部分解决这个问题,我们预测边界框的宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO为每个网格单元预测多尺度的边界框。在训练时,我们仅希望一个边界预测框对应负责一个物体。我们根据哪个边界框与真实框有最大的交交比,就由那个边界框来预测物体。这导致边界框预测器之间的特殊化。每一个预测器都能更好地预测某些尺寸、长宽比、或物体的类别,从而提高整体召回率。
在训练过程中,我们对以下多部分的损失函数进行优化:

其中,表示对象出现在单元格i中,表示单元格i中的第j个边界框预测器对该预测”有响应”。
注意,损失函数仅在对象存在于该网格单元中的情况下惩罚分类错误(前面讨论的条件类概率)。它也只有在预测器“负责”真实框(即在该网格单元中具有任何预测器中最高的IOU)的情况下,才允许边界框坐标误差。
我们在PASCAL VOC 2007和2012的训练和验证数据集上对网络进行了大约135次的训练。在进行2012的测试时,我们还将VOC 2007测试数据纳入训练。在整个训练过程中,我们使用64的批量大小、0.9的动量和0.0005的衰退。
我们的学习率计划如下:在第一个阶段,我们将学习率从10−3慢慢提高到10−2。如果我们以高学习率开始,我们的模型往往会由于不稳定的梯度而出现偏差。然后,我们用10−2训练75轮,然后用10−3训练30轮,最后用10−4训练30轮。
为避免过拟合,我们使用了丢弃法,并对数据进行了增强。在第一个连接层之后,使用rate=0.5的丢弃层防止了层之间的联合领带性。对于数据增强,我们引入了高达原始图像大小20%的随机缩放和平移。我们还在HSV颜色空间中随机调整图像的曝光和饱和度,最高可达1.5倍。
2.3 预测

和训练一样,在一张测试图像中预测目标也只需要一次网络评估。在PASCAL VOC中,网络为每张图像预测98个边界框,并为每个边界框预测一组类别概率。YOLO在测试时非常快,因为它只需要一个单一的网络进行评估,而不像其他基于分类器的方法。
网络的设计在边界框预测时强制空间多样性。通常,一个物体落在哪个网格单元是非常清楚的,网络只需要为每个物体预测一个边界框。然而,一些大型物体或者靠近多个单元边界的物体会被多个单元格定位。非极大值抑制被用来解决这些多个检测。它不像在R-CNN或DPM那样关键,非极大值抑制提升了2-3%mAP。
2.4 YOLO的局限性

YOLO在边界框预测时加上了强烈的空间约束,因为每个网格单元仅预测两个框且仅有一个类别。这种空间约束限制了我们的模型预测附近物体的数量。我们的模型在处理成群出现的小物体时很吃力,如鸟群。
由于我们的模型从数据中学习预测边界框,它很难推广到具有新的或不寻常的长宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构有多个来自输入图像的下采样层。
最后,虽然我们在一个近似于检测性能的损失函数上进行训练,但我们损失函数对小边界框与大边界框中的错误处理是一样的。大框中的小错误通常是良性的,但小框中的小错误对IOU的影响要大得多。
3.对比其他目标检测系统

目标检测是计算机视觉中的一个核心问题。检测流程通常从输入图像中提取一系列鲁棒性的特征。然后,分类器或回归器被用来识别特征空间中的物体。这些分类器或回归器在整个图像上要么以滑动窗口的方式运行,要么在图像中的一些区域子集上运行。我们将YOLO检测系统的与几个顶级检测框架进行了比较,突出强调了相似性与差异性。
DPM。DPM使用滑动窗口方法进行物体检测。DPM使用一个不连贯的工作流提取静态特征,对区域进行分类,进而预测边界框的坐标。我们的系统用一个单一的卷积神经网络取代了所有这些不同的部分。该网络同时执行特征提取、边界框预测、非极大值抑制和上下文推理等工作。该网络不使用静态特征,而是在线训练特征并为检测任务优化它们。我们的统一架构带来了比DPM更快、更准确的模型。

R-CNN。R-CNN及其变种使用候选区域提取而不是滑动窗口来寻找图像中的物体。Selective Search产生潜在的边界框,用卷积网络提取特征,SVM对这些框进行分类,线性模型调整边界框,非极大值抑制消除重复检测。这个复杂流程的每个阶段都必须独立进行精确地调整,检测系统非常缓慢,在测试时每张图像需要40多秒。

YOLO与R-CNN有一些相似性。每个网络单元产生潜在的边界框,并使用卷积特征对这些框进行分类。然而,我们的系统对网格单元进行了空间限制,这有助于减少对同一物体的多次检测。我们的系统还提出了少得多的边界框,每张图像只有98个,而选择性搜索则有大约2000个。最后,我们的系统将这些单独的部件组合成一个单一的模型。
其他快速检测器。Fast R-CNN和Faster R-CNN专注于通过共享计算和使用神经网络产生候选框而不是Selective Search来加速R-CNN框架。虽然它们比R-CNN提供了速度和准确性的改进,但它们的实时性能仍然不足。

许多研究工作致力于是加快DPM的速度。他们加快了HOG的计算,使用级联,并用GPU来计算。然而,只有30Hz DPM实际上是实时运行的。
YOLO没有试图优化一个大型检测流程的各个组成部分,而是完全丢弃了,通过重新设计实现了快速。
像人脸或人这样的单一类别的检测器可以被高度优化,因为它们需要处理的变化要少得多。YOLO是一个通用的目标检测器,可以学习同时检测各种物体。
Deep MultiBox。与R-CNN不同,Szegedy等人训练一个卷积神经网络来预测感兴趣的区域,而不是使用Selective Search。MultiBox也可以通过用单类预测代替置信度预测来进行单一物体检测。然而,MultiBox不能进行一般的物体检测,仍然只是更大的检测流中的一个部分,需要进一步的图像分类。YOLO和MultiBox都使用卷积神经网络来预测图像中的边界框,但YOLO是一个完整的检测系统。

OverFeat。Sermanet等人训练卷积神经网络来执行回归,并调整该定位器来执行检测。OverFeat有效地执行滑动窗口检测,但它仍然是一个各部分分离的系统。OverFeat优化了回归问题,而不是检测性能。与DPM一样,定位器在进行预测时只查看局部信息。OverFeat无法对全局上下文进行推理,因此需要大量的后处理来产生合乎逻辑的检测。

MultiGrasp。我们的工作在设计上与Redmon等人的抓取检测工作类似。的我们的边界框预测网格方法基于MultiGrasp系统来进行回归抓取。然而,抓取检测比目标检测简单得多。MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域。它不需要估计对象的大小、位置或边界,也不需要预测对象的类别,只需要找到一个适合抓取的区域。YOLO既要预测图像中多个类的多个对象的边界框,也要预测类概率。

4.实验

首先,我们在PASCAL VOC 2007上将YOLO与其他实时检测系统进行比较。为了了解YOLO和R-CNN变种之间的不同,我们探讨了YOLO和Fast R-CNN(R-CNN的最高性能版本之一)在VOC 2007上的错误。基于不同的误差分布,我们表明,YOLO可以用于重写Fast R-CNN检测,并减少背景误报引起的误差,从而显著提高性能。我们还介绍了VOC 2012 的结果,并与当前最先进的方法进行mAP的比较。最后,我们展示了YOLO比其他检测器更好地推广到两个新的艺术品数据集上。
4.1与其他实时系统的对比

在目标检测方面的许多研究工作集中在的使标准检测流程快速化。然而,只有Sadeghi等人实际生产了实时运行的检测系统(每秒30帧或更好)。我们将YOLO与它们的DPM GPU实现进行了比较,DPM运行频率为30Hz或100Hz。虽然其他工作没有达到实时的里程碑,但我们也比较它们的mAP和速度,以检查目标检测系统中可用的精度性能。
Fast YOLO是PASCAL上最快的目标检测方法:就我们所知,它是现存最快的目标检测器。它的mAP为52.7%,比之前的实时检测工作要准确两倍以上。YOLO将mAP提升至63.4%,同时仍保持实时性能。
我们还使用VGG-16训练YOLO。这个模型更精确,但也比YOLO慢得多。与依赖VGG-16的其他检测系统相比的,它是有用的,但由于它比实时系统慢,本文的其余部分将重点放在我们更快的模型上。

最快的DPM在不牺牲太多mAP的情况下有效提高了DPM的精度,但它还是差实时性能的2倍。与神经网络方法相比,DPM的检查精度相对较低,这也限制了它的应用。
R-CNN minus R将Selective Search替换为静态候选框。虽然它比R-CNN快得多,但它仍然不具备实时性,而且由于没有好的候选框提取方法,它的准确性受到了很大的影响。
Fast R-CNN加速了R-CNN的分类阶段,但它仍然依赖于Selective Search,每个图像大约需要2秒来生成边界框。因此,它具有较高的mAP,但在0.5FPS的速度下,它仍然离实时性很远。
最近的Faster R-CNN用神经网络代替了selective search来提出边界框,与Szegedy等人的做法类似。在我们的测试中,他们最准确的模型达到了7 FPS,而一个较小的、不太准确的模型运行速度为18FPS。VGG-16版本的Faster R-CNN高出10mAP,但也比YOLO慢了6倍。ZeilerFergus的Faster R-CNN只比YOLO慢2.5倍,但也没有那么准确。
4.2 VOC 2007错误分析

为了进一步研究YOLO和最先进的检测器之间的差异,我们关注VOC 2007上的结果的详细分类。我们将YOLO与Fast R-CNN进行比较,因为Fast R-CNN是PASCAL上性能最高的检测器之一,并且它的检测结果是公开的。
我们使用Hoiem等人的方法和工具。在测试时,我们对每个类别的前N个预测进行研究。每个预测要么是正确的,要么根据错误的类型进行分类。
正确:正确的类别,IOU > 0.5
定位:正确的类别,0.1 < IOU < 0.5
相似:类是相似的,IOU > 0.1
其他:类是错误的,IOU > 0.1
背景:对于任何对象,IOU < 0.1

图4显示了在所有20个类中平均每个错误类型的分类。
YOLO致力于正确定位对象。定位错误在YOLO的错误中占的比例超过了所有其他的总和。Fast R-CNN的定位错误要少得多,但背景错误却多得多。13.6%的顶级检测结果是不包含任何物体的假阳性。快速R-CNN预测背景的可能性几乎是YOLO的3倍。
4.3将YOLO与Fast R-CNN结合

YOLO所犯的背景错误比Fast R-CNN少得多。通过使用YOLO来消除Fast R-CNN的背景检测,我们在性能上得到了很大的提升。对于R-CNN预测的每一个边界框,我们检查YOLO是否预测了一个类似的框。如果有,我们根据YOLO预测的概率和两个框之间的重叠,给预测一个提升。
最好的Fast R-CNN模型在VOC 2007测试集上的mAP达到了71.8%。在与YOLO结合时,其mAP增加了3.2%,达到75.0%。我们还尝试将顶级的Fast R-CNN模型与其他几个版本的Fast R-CNN相结合。这些组合产生了0.3%~0.6%的mAP小幅增长,详见表2。

YOLO的提升并不是简单的模型集合的副产品,因为结合不同版本的Fast R-CNN并没有什么好处。相反,正是因为YOLO在测试时犯了不同类型的错误,所以它在提高Fast R-CNN的性能方面如此有效。
不幸的是,这种组合并没有从YOLO的速度中受益,因为我们单独运行每个模型,然后将结果结合起来。然而,由于YOLO是如此之快,与Fast R-CNN相比,它并没有增加任何重要的计算时间。
4.4 VOC 2012结果

在VOC 2012测试集上,YOLO的mAP为57.9%。这比目前的技术水平低,更接近于使用VGG-16的原始R-CNN,见表3。与其最接近的竞争对手相比,我们的系统在处理小物体时很吃力。在瓶子、羊和电视/显示器等类别上,YOLO的比R-CNN或Feature Edit低8-10%。然而,在其他类别如猫和火车上,YOLO取得了最高的性能。
我们的Fast R-CNN+YOLO混合模型是性能最高的检测方法之一。Fast R-CNN与YOLO结合获得了2.3%的改进,使其在公共排行榜上提升了5位。
4.5 泛化:艺术品中的人物检测

物体检测的学术数据集从相同的分布中提取训练数据和测试数据。在现实世界的应用中,很难预测所有可能的用例,而且测试数据可能与系统之前看到的数据有出入。我们在Picasso数据集和People-Art数据集上将YOLO与其他检测系统进行比较,这两个数据集用于测试艺术品上的人物检测。

图5显示了YOLO和其他检测方法之间的比较性能。作为参考,我们给出了VOC 2007的个人检测AP,其中所有模型仅针对VOC 2007数据进行训练。在Picasso数据集上,模型接受VOC 2012训练,但在People-Art数据集上,模型接受VOC 2010培训。
R-CNN在2007年VOC上有很高的AP。然而,当R-CNN应用于艺术品时,它会大幅下降。R-CNN对边界框使用selective search,对自然图像进行了调整。R-CNN中的分类器只看到小区域,需要好的方法。
DPM在应用于艺术品时能很好地保持其AP。之前的工作认为,DPM表现良好,因为它有强大的物体形状和布局的空间模型。尽管DPM没有像R-CNN那样退化,但它的AP值本就较低。
YOLO在VOC 2007上有很好的性能,当应用于艺术品时,其AP的减少比其他方法要小。像DPM一样,YOLO对物体的大小和形状以及物体之间的关系和物体通常出现的位置进行建模。艺术品和自然图像在像素层面上有很大的不同,但它们在物体的大小和形状方面是相似的,因此YOLO仍然可以预测良好的边界框和检测。
图片

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、付费专栏及课程。

余额充值