YOLO v1

参考   YOLO v1 - 云+社区 - 腾讯云

摘要

我们提出了一种新的目标检测方法YOLO。 先前的目标检测工作重新利用分类器来执行检测。 相反,我们将对象检测作为空间分离的边界框和相关类概率的回归问题。 在一次评估中,一个单一的神经网络直接从完整的图像预测边界框和类别概率。 由于整个检测管线是一个单一的网络,因此可以直接对检测性能进行端到端优化。  

我们的统一架构非常快。 我们的基本YOLO模型以每秒45帧的速度实时处理图像。 该网络的一个更小的版本,Fast YOLO,处理速度达到惊人的155帧/秒,同时仍然达到其他实时检测器的mAP的两倍。 与最先进的检测系统相比,YOLO的定位误差更大,但预测背景误报的可能性更小。 最后,YOLO学习非常通用的对象表示。 当从自然图像到其他领域如艺术品时,它优于其他检测方法,包括DPM和R-CNN。  

1、介绍

人们瞥一眼图像,立即知道图像中有什么物体,它们在哪里,以及它们如何相互作用。 人类的视觉系统快速而准确,使我们能够在几乎没有意识的情况下执行复杂的任务,比如开车。 快速、准确的物体检测算法将使计算机无需专门的传感器就能驾驶汽车,使辅助设备能够向人类用户传递实时场景信息,并释放出通用用途、反应灵敏的机器人系统的潜力。  

目前的检测系统重新使用分类器来执行检测。 为了检测一个目标,这些系统为该目标取一个分类器,并在测试图像的不同位置和比例上评估它。 像可变形部件模型(DPM)这样的系统使用滑动窗口方法,分类器在整个图像[10]上均匀间隔的位置运行。  

                       

更近期的方法,如R-CNN使用区域建议方法,首先在图像中生成潜在的边界框,然后在这些被建议的框上运行分类器。分类后,利用后处理对包围盒进行细化,消除重复检测,并基于场景[13]中的其他对象对包围盒进行重标记。这些复杂的管道是缓慢和难以优化的,因为每个单独的组件必须单独训练。

我们将目标检测重构为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,你只看一张图像一次(YOLO),就可以预测有什么物体存在以及它们在哪里。

 YOLO非常简单:请参见图1。一个卷积网络可以同时预测多个边界框和这些框的类概率。YOLO对完整图像进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一模型有几个优点。

首先,YOLO的速度非常快。由于帧检测是一个回归问题,所以我们不需要复杂的管道。我们只需在测试时间对新图像运行神经网络来预测检测结果。我们的基本网络在Titan X GPU上以每秒45帧的速度运行,没有批处理,而快速版本的运行速度超过150帧。这意味着我们可以实时处理流媒体视频,而延迟不到25毫秒。此外,YOLO达到了其他实时系统平均精度的两倍以上。关于我们的系统在网络摄像头上实时运行的演示,请参阅我们的项目网页:http://pjreddie.com/yolo/。

其次,YOLO在全球范围内进行预测。与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试期间看到整个图像,因此它隐式地编码关于类及其外观的上下文信息。Fast R-CNN是一种顶级的检测方法[14],它会将图像中的背景补丁误认为目标,因为它看不到更大的背景。与Fast R-CNN相比,YOLO的背景错误数量不到一半。

第三,YOLO学习对象的可泛化表示。当在自然图像上进行训练并在艺术品上进行测试时,YOLO的表现远远超过了顶级的检测方法,如DPM和R-CNN。由于YOLO是高度可泛化的,所以当应用到新领域或意外输入时,它不太可能崩溃。

YOLO在精确度上仍落后于最先进的检测系统。虽然它可以快速识别图像中的物体,但它很难精确定位一些物体,尤其是小的物体。我们在实验中进一步研究了这些权衡。

我们所有的训练和测试代码都是开源的。各种预先训练过的模型也可以下载。

2、统一的检测

我们将目标检测的各个部分统一为一个单一的神经网络。我们的网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像中所有类的所有边框。这意味着我们的网络对完整的图像和图像中的所有对象进行全局推理。YOLO设计实现了端到端的培训和实时速度,同时保持了较高的平均精度。


系统将输入分成SxS的格子。如果目标的中心落在这个格子内,这个格子就对这个目标负责。

每个格子预测这些bounding box B 和这些box的置信分数。这些置信度得分反映了一个box包含目标的可信度有多高与box的预测有多准确。

通常置信度定义为:

                                                                            P_r(Object)*IOU^{truth}_{pred}

如果在单元格中不存在目标,置信分数应该置为零。否则置信分数等于预测框和标签之间的IOU。


每个边界框由五部分组成:x,y,w,h和置信度。(x, y)坐标表示box的中心相对于网格单元格的边界。宽度和高度相对于整个图像来预测。最终,置信度预测代表了预测框和任何ground truth框之间的IOU。每个网格也预测C个类的条件概率:

                                                                               Pr(Class_i|Object)

这些概率以网格包含一个目标为条件。我们仅仅预测每个单元格子一类概率的集合,而不考虑box B的数量。

测试的时候,我们把类的条件概率和单一盒子的置信概率乘起来:

                                    

 这个公式给每个框一个类别置信分数。这些使得类别的概率出现在盒子中,并且很好的预测了框是否为目标。

对于PASCAL VOC的YOLO,我们使用S = 7, B = 2。PASCAL VOC有20个等级,所以C = 20。我们最后的预测是一个7 × 7 × 30张量。

2.1、网络设计

首先网络的卷积层从图像中提取特征,全连接层预测输出的概率和坐标。网络模型来源于GoogLeNet图像分类的思想。由24个卷积层外加两个全连接层。和GoogLeNet中使用inception模块有所不同,在3x3卷积层的后面,这个网络仅仅使用1x1来减少卷积层,和NIN网络类似,整个网络结构如下图:

这个模型有24个卷积层后接两个全连接层组成。交替的使用1x1的卷积层从前层减少特征空间。在ImageNet分类任务以一半的分辨率(224x224)上预训练卷积层,然后将检测分辨率提高一倍。网络最终的输出是7x7x30的预测张量。

可对网络进行简化这就是Fast YOLO,除了网络规模,在训练和测试期间,所有参数都是相同的,简化方式为:用9个卷积层代替24个卷积层,这些层上的滤波器更少。

2.2、训练

在ImageNet 1000类数据集上训练网络的卷积层作为预训练,预训练的时候使用上图20个卷积层加一个平均池化层加一个全连接层。训练这个网络需要将近一周时间,与Caffe的模型动物园相比,在ImageNet 2012验证集上top-5精度单独达到了88%。

之后转变这个模型来执行检测。在它们的例子后面,我们加入四个卷积层和两个全连接层,并且任意初始化权重。检测通常需要细粒度的视觉信息因此我们把网络的分辨率从224x224增加到448x448。最终的层预测分类概率和边界框坐标。根据图像的宽度和高度对边界框进行归一化,因此边界框的宽度和高度在0到1之间。我们将边界框x和y坐标参数化为特定网格单元格位置的偏移量,因此它们也在0和1之间有界。

最后一层使用线性激活函数,所有其它层使用泄露校正线性激活函数,如下所示:

                                                             

对模型的输出平方和进行优化。使用和平方误差的原因是它很好优化,这与我们最大化平均精度的目标并不完全一致。它对定位误差等权重,分类误差可能不理想。然而,每个图像中许多单元格不包含目标。这将这些单元格的“置信度”分数推向零,通常会压倒包含目标的单元格的梯度。这可能导致模型不稳定,导致早期的训练出现分歧。

为了解决这个问题,我们增加了bounding box坐标预测损失,减少对不包含物体的盒子的误差预测。我们使用两个参数,\lambda_{coord}\lambda_{noobi}来达到这个目的,并且我们设置

在大box和小box中平方和误差也等于权重误差。我们的误差标准应该能反应大框的小偏差没有小box的小偏差重要。为了部分解决这个问题,我们预测边界box的宽度和高度的平方根,而不是直接预测宽度和高度。YOLO在每个网格上预测多个bounding box。在训练的时候,这个网络的设想是每个bounding box对每一个目标负责。我们指定一个预测器来“负责”预测一个基于该预测器的对象,该目标的当前欠条最高,且具有ground truth。

在大box和小box里,平方和误差同样的权重。我们的误差度量应该反映出大box中的小偏差比小box中的小偏差更重要。为了部分解决这个问题,我们预测bounding box的宽度和高度的平方根,而不是直接预测宽度和高度。

YOLO预测每个网格单元有多个bounding box。在训练时,让一个bounding box预测器负责每个目标。基于该预测器的目标我们指定一个预测器来“负责”预测一个,该目标与ground truth有最高的IOU。这将导致bounding box预测器之间的专门化。在对特定尺寸,宽高比,目标类进行预测的时候,每个预测器的性能更好,类提升整体的召回。

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

                                          

  代表目标是否出现在一个单元格i中, 代表了单元格i中第j个bounding box预测器对那个预测进行负责。如果目标出现在那个单元格中,损失函数仅对分类误差起作用(因此前面讨论的条件分类概率)。如果预测器对标签盒子负责,它仅仅对bounding box坐标误差起作用。在那个单元格子中,与任何预测器都有最高的IOU。

在PASCAL VOC 2007和2012上训练和测试这个网络,大约135轮。当在2012上测试的时候,我们也包括VOC 2007测试数据进行训练。整个训练过程中batch size 为64,momentum为0.9,decay为0.005。学习率的设置为:第一轮缓慢的把学习率从10^{-3}上升到10^{-2}。如果我们从一个较高的学习率开始,我们的模型常常由于不稳定的梯度而发散。开始用10^{-2}训练75轮,然后用10^{-3}训练30轮,最终用10^{-4}训练30轮。

为了避免过拟合,我们使用dropout和广泛的数据增强。在开始的全连接层后面dropout层设置为0.5,以组织层间的协同适配。为了增加数据,引入随机缩放和平移,最大可达原始图像大小的20%。还在HSV颜色空间中随机调整图像的曝光和饱和度,最高达1.5倍。

2.3、推断

像训练一样,预测测试图像的检测只需要一个网络评估。在PASCAL VOC上,网络预测每个图像的98个bounding box和每个box的分类概率。YOLO在测试时间非常快,不像是基于分类器的方法,YOLO仅仅需要单一的网络进行评估。

网格设计加强了bounding box预测中的空间多样性。通常很清楚一个目标落在哪个网格单元格中,并且网络仅为每个目标预测一个方框。然而,一些大型对象或多个单元边界附近的对象可以被多个单元很好地定位。非最大抑制可以用来修复这些多重检测。虽然不像R-CNN或DPM那样对性能至关重要,但非最大抑制在mAP中增加了2-3%。

2.4、YOLO的限制

YOLO对边界框预测施加了很强的空间约束,因为每个网格单元格只能预测两个框,并且只能有一个类。这个空间限制限制了我们的模型可以预测的附近物体的数量。我们的模型处理的是成群出现的小物体,比如鸟群。

由于我们的模型学会了从数据中预测边界框,所以它很难推广到新的或不寻常的高宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构有多个从输入图像向下采样的层。

最后,当我们训练一个近似检测性能的损失函数时,我们的损失函数对小包围盒和大包围盒中的错误处理是一样的。大框中的小错误通常是良性的,但小框中的小错误对借据的影响要大得多。错误的主要来源是错误的本地化。

3、和其他检测系统的比较

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

DPM:

可变形零件模型(DPM)使用滑动窗口方法来检测物体。 DPM使用不相交的管道来提取静态特征,对区域进行分类,预测高分区域的边界框等。 我们的系统用一个卷积神经网络取代了所有这些不同的部分。 该网络同时进行特征提取、包围盒预测、非最大抑制和上下文推理。 网络不是静态的特征,而是在线训练特征,并为检测任务优化它们。 我们统一的体系结构带来了比DPM更快、更准确的模型。  

R-CNN:

R-CNN及其变体使用区域提议代替滑动窗口在图像中寻找物体。 选择性搜索生成潜在的包围框,卷积网络提取特征,支持向量机评分,线性模型调整包围框,非最大抑制消除重复检测。 这个复杂管道的每个阶段都必须独立精确地进行调优,结果系统非常慢,在测试时间时,每张图像花费超过40秒。  

YOLO与R-CNN有一些相似之处。 每个网格单元提出潜在的边界框,并使用卷积特性对这些框进行评分。 然而,我们的系统将空间约束放在网格单元提议上,这有助于减少对同一目标的多次检测。 我们的系统还提出了更少的边界框,每幅图像只有98个,而从选择性搜索约2000个。 最后,我们的系统将这些单独的组件组合成一个单一的、共同优化的模型。  

其他快速检测器:

Fast and Faster R-CNN专注于通过共享计算和使用神经网络提出区域来加速R-CNN框架,而不是选择搜索。 虽然它们在速度和准确性上都比R-CNN有所提高,但它们的实时性能仍然不足。  

许多研究工作集中在加快DPM管道。 它们加速了HOG计算,使用级联,并将计算推送到GPU。 然而,只有30Hz DPM实际上是实时运行的。  

YOLO并没有试图优化大型检测pipeline的单个组件,而是完全抛弃了pipeline,并且设计得非常快。  

像人脸或人这样的单一类的检测器可以高度优化,因为它们必须处理更少的变化。 YOLO是一种通用检测器,可以学习同时检测各种目标。  

深度多框:

与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣的区域,而不是使用选择性搜索。MultiBox还可以通过用单个类预测替换置信度预测来执行单个目标检测。然而,MultiBox不能进行一般的目标检测,只是更大的检测pipeline中的一小部分,需要进一步的图像patch分类。YOLO和MultiBox都使用卷积网络来预测图像中的包围框,但YOLO是一个完整的检测系统。

OverFeat:

Sermanet等人训练卷积神经网络来执行定位,并使该定位器执行检测[32]。OverFeat可以有效地进行滑动窗口检测,但它仍然是一个脱节的系统。OverFeat优化了本地化,而不是检测性能。与DPM一样,本地化程序在进行预测时只看到本地信息。OverFeat不能对全局背景进行推理,因此需要大量的后处理来产生相干检测。

MultiGrasp:

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

4、实验

首先,我们在PASCAL VOC 2007上对YOLO与其他实时检测系统进行了比较。为了理解YOLO和R-CNN变体之间的差异,我们探索了YOLO和Fast R-CNN (R-CNN表现最好的版本之一)对VOC 2007的错误。基于不同的错误配置,我们表明YOLO可以用于对Fast R-CNN检测进行重新评分,并减少来自背景误报的错误,从而显著提高性能。我们还提出了2012年的VOC结果,并将mAP与目前最先进的方法进行了比较。最后,我们证明了YOLO比其他检测器在两个图像数据集上更好地泛化新领域。

4.1、和其他实时系统的比较

许多目标检测的研究工作都集中在使标准检测管道快速。然而,只有Sadeghi等人真正产生了实时运行(每秒30帧或更高)的检测系统。我们比较了YOLO与运行在30Hz或100Hz的DPM的GPU实现。虽然其他的工作没有达到实时的里程碑,我们也比较了它们的相对mAP和速度,以检查在目标检测系统中可用的准确性和性能折衷。

Fast YOLO是PASCAL上最快的目标检测方法;据我们所知,它是现存最快的物体探测器。mAP为52.7%,比之前的实时检测精度提高了一倍多。YOLO将mAP推至63.4%,同时仍然保持实时性能。

我们也用VGG-16训练YOLO。这个模型比YOLO更准确,但也明显慢。这对于与其他依赖VGG-16的检测系统进行比较很有用,但由于它比实时更慢,本文的其余部分将重点放在我们更快的模型上。

最快的DPM在不牺牲太多mAP的情况下有效地提高了DPM的速度,但它仍然会错过2[38]倍的实时性能。与神经网络方法相比,DPM的检测精度相对较低,这也限制了它的应用。

R-CNN minus R用静态边界框建议替换选择性搜索。虽然它比R-CNN快得多,但它仍然缺乏实时性,而且由于没有好的提案,它的准确性受到了很大的打击。

Fast R-CNN加快了R-CNN的分类阶段,但它仍然依赖于选择性搜索,每幅图像大约需要2秒来生成边界框建议。因此,它有高mAP,但0:5 fps,离实时性还很远。

在我们的测试中,他们最精确的模型达到7帧/秒,而更小、更不精确的模型运行在18帧/秒。较快的R-CNN的VGG-16版本比YOLO高10 mAP,但也慢6倍。ZeilerFergus Faster R-CNN只比YOLO慢2.5倍,但也不太准确。

                   

 4.2、VOC 2007误差分析

为了进一步研究YOLO和最先进的探测器之间的差异,我们查看了2007年VOC检测结果的详细分解。 我们将YOLO与Fast RCNN进行比较,因为Fast R-CNN是PASCAL上性能最好的检测器之一,而且它的检测是公开可用的。  

我们使用Hoiem等人的方法和工具。对于每个类别,在测试时间,我们查看该类别的前N个预测。 每个预测要么是正确的,要么是根据错误类型进行分类的:

  • Correct: correct class and IOU > .5
  • Localization: correct class, .1 < IOU < .5
  • Similar: class is similar, IOU > .1
  • Other:class is wrong, IOU > .1
  • Background: IOU < .1 for any object

图4显示了所有20个类中每种错误类型的平均分解。 

YOLO努力正确地本地化对象。 本地化错误占YOLO错误的比例超过了所有其他来源的总和。 Fast R-CNN使更少的本地化错误,但更多的背景错误。 13.6%的顶级检测是不包含任何物体的假阳性。 Fast 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相结合。 这些集合产生了mAP在0.3到0.6%之间的小幅度增长,详见表2。  

YOLO的推动不仅仅是模型集成的副产品,因为将Fast R-CNN的不同版本结合在一起并没有什么好处。 更确切地说,正是因为YOLO在测试期间会犯不同类型的错误,才如此有效地提升了Fast R-CNN的表现。  

不幸的是,这种组合并没有从YOLO的速度中受益,因为我们分别运行每个模型,然后组合结果。 然而,由于YOLO非常快,与fast R-CNN相比,它没有增加任何显著的计算时间。  

4.4、VOC 2012结果

在VOC 2012测试集上,YOLO得分为57.9% mAP。 这低于目前的技术水平,更接近使用VGG-16的原始R-CNN,见表3。 与它最接近的竞争对手相比,我们的系统在处理小物体时遇到了困难。 酒瓶,绵羊,还有  

tv/monitor YOLO评分比R-CNN或Feature Edit低8-10%。 然而,在其他类别,如猫和训练,YOLO取得了更高的表现。  

我们的组合Fast R-CNN + YOLO模型是性能最高的检测方法之一。 Fast R-CNN通过与YOLO的合并提高了2.3%,在公共排行榜上上升了5个名次。  

4.5、概括性:艺术作品中的人检测

用于目标检测的学术数据集从相同的分布中提取训练和测试数据。 在真实的应用程序中,很难预测所有可能的用例,并且测试数据可能与系统在[3]之前看到的不同。 我们将YOLO与毕加索数据集和People-Art数据集上的其他检测系统进行比较,这两个数据集用于测试艺术品上的人的检测。

图5显示了YOLO与其他检测方法的性能比较。 作为参考,我们给出了针对人的VOC 2007检测AP,其中所有模型仅根据VOC 2007数据进行训练。 在毕加索模型上训练VOC 2012,而在人-艺术上训练VOC 2010。  

R-CNN高AP VOC 2007。 然而,R-CNN下降相当大时,应用到艺术品。 R-CNN使用选择性搜索为自然图像调优的边界框建议。 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值