摘要:
我们提出了一种新的目标检测方法YOLO。以前的目标检测工作重新利用分类器来执行检测。相反,我们将对象检测框架定为一个回归问题,即空间分离的边界框和相关的类概率。单个神经网络在一次评估中直接从完整图像预测边界框和类概率。由于整个检测管道是一个单一的网络,可以直接对检测性能进行端到端优化。
我们统一的架构非常快。我们的基本YOLO模型以每秒45帧的速度实时处理图像。该网络的一个小版本,Fast YOLO,每秒处理155帧,同时仍然达到其他实时探测器的两倍 mAP。与最先进的检测系统相比,YOLO会产生更多的定位错误,但不太可能预测背景假阳性。最后,YOLO学习非常一般的对象表示。当从自然图像推广到艺术品等其他领域时,它优于其他检测方法,包括DPM和R-CNN。
1. 简介
人们瞥一眼图像就能立即知道图像中的物体、它们在哪里以及它们如何相互作用。人类的视觉系统是快速准确的,允许我们在很少有意识的情况下执行复杂的任务,比如开车。快速、准确的目标检测算法可以让计算机在没有专门传感器的情况下驾驶汽车,使辅助设备能够向人类用户传递实时场景信息,并释放出用于通用、响应式机器人系统的潜力。
目前的检测系统利用分类器来进行检测。为了检测一个目标,这些系统对该目标进行分类,并在测试图像的不同位置和尺度上对其进行评估。像可变形部件模型(DPM)这样的系统使用滑动窗口方法,分类器在整个图像[10]上均匀间隔的位置运行。
最近的一些方法,如R-CNN使用区域建议方法,首先在图像中生成潜在的边界框,然后在这些建议的框上运行分类器。分类后通过后处理细化边框,消除重复检测,并基于场景[13]中的其他对象对边框进行重新标记。这些复杂的管道速度很慢,很难优化,因为每个单独的组件必须单独训练。
我们将对象检测重新定义为单个回归问题,从图像像素到边界框坐标和类概率。使用我们的系统,你只需要看一次(YOLO)的图像,就可以预测什么物体存在以及它们在哪里。
YOLO非常简单:请参见图1。单个卷积网络同时预测多个边界框和这些框的类概率。YOLO对完整图像进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一的模型有几个优点。
首先,YOLO速度极快。由于我们将检测框定为回归问题,因此不需要复杂的管道。我们只需在测试时在新图像上运行神经网络来预测检测结果。我们的基本网络以每秒45帧的速度运行,在Titan X GPU上没有批处理,而快速版本的运行速度超过150 fps。这意味着我们可以在不到25毫秒的延迟内实时处理流视频。此外,YOLO的平均精度是其他实时系统的两倍以上。有关我们的系统在网络摄像头上实时运行的演示,请参阅我们的项目网页:http://pjreddie.com/yolo/.
第二,YOLO在进行预测时对图像进行全局分析。与基于滑动窗口和区域建议的技术不同,YOLO在训练和测试期间看到整个图像,因此它隐式地编码了关于类及其外观的上下文信息。快速R-CNN是一种顶级检测方法[14],它将图像中的背景块误认为是对象,因为它看不到更大的上下文。与Fast R-CNN相比,YOLO产生的背景错误不到一半。
第三,YOLO学习对象的可概括表示。当在自然图像上进行训练并在艺术品上进行测试时,YOLO大大优于DPM和R-CNN等顶级检测方法。由于YOLO具有高度的通用性,因此在应用于新领域或意外输入时,它不太可能崩溃。
YOLO在精度方面仍落后于最先进的检测系统。虽然它可以快速识别图像中的对象,但它很难精确定位某些对象,尤其是小对象。我们在实验中进一步研究了这些权衡。
我们所有的培训和测试代码都是开源的。还可以下载各种预训练模型。
2.统一检测
我们将目标检测的各个组成部分统一到单个神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还同时预测图像所有类的所有边界框。这意味着我们的网络在全球范围内对整个图像和图像中的所有对象进行分析。YOLO设计实现端到端训练和实时速度,同时保持高平均精度。
我们的系统将输入图像划分为S×S网格。如果对象的中心落在网格单元中,则该网格单元负责检测该对象。
每个网格单元预测边界框和这些框的置信度分数。这些置信度分数反映了模型对盒子包含对象的置信度,以及它认为盒子预测的准确度。形式上,我们将置信度定义为
。如果该单元格中不存在对象,则置信度得分应为零。否则,我们希望置信度分数等于预测框和地面真相之间的交集除以联合(IOU)。
每个边界框由5个预测组成:和置信度。
坐标表示相对于网格单元边界的框的中心。相对于整个图像预测宽度和高度。最后,置信度预测表示预测框和任何地面真实框之间的IOU。
每个网格单元还预测个条件类概率
。 这些概率取决于包含对象的网格单元。我们只预测每个网格单元的一组类概率,而不考虑框
的数量。
在测试时,我们将条件类概率和单个盒子置信度预测相乘,
这为我们提供了每个盒子的特定类别的置信度分数。这些分数编码了该类出现在框中的概率以及预测框与对象的匹配程度。
图2:模型。我们的系统将检测建模为回归问题。它将图像划分为
网格,每个网格单元预测
边界框、这些框的置信度和
类概率。这些预测被编码为
张量。
为了评估上的
,我们使用
。
有20个标记类,因此
。我们的最终预测是
张量。
2.1网络设计
我们将该模型实现为卷积神经网络,并在检测数据集上对其进行评估[9]。网络的初始卷积层从图像中提取特征,而完全连接的层预测输出概率和坐标。
我们的网络架构受到图像分类的GoogLeNet模型的启发[33]。我们的网络有24个卷积层,然后是2个完全连接的层。与Lin等人[22]类似,我们只使用1×1缩减层,然后使用3×3卷积层,而不是GoogLeNet使用的初始模块。整个网络如图3所示。
我们还训练了YOLO的快速版本,旨在突破快速目标检测的界限。快速YOLO使用具有较少卷积层(9而不是24)和较少滤波器的神经网络。除了网络的大小,YOLO和快速YOLO之间的所有训练和测试参数都是相同的。
图3:体系结构。我们的检测网络有24个卷积层,然后是2个完全连接的层。交替的1×1卷积层减少了前一层的特征空间。我们在ImageNet分类任务中以一半分辨率(224×224输入图像)对卷积层进行预处理,然后将分辨率提高一倍进行检测。
我们网络的最终输出是7×7×30的预测张量。
2.2.训练
我们在ImageNet 1000类竞争数据集上预处理卷积层[29]。对于预训练,我们使用图3中的前20个卷积层,然后是平均池化层和完全连接层。我们对该网络进行了大约一周的培训,并在ImageNet 2012验证集上实现了88%的单作物前5名准确率,与Caffe模型动物园中的GoogLeNet模型相当[24]。
然后我们转换模型以执行检测。Ren等人表明,在预训练的网络中添加卷积层和连接层可以提高性能[28]。根据他们的示例,我们添加了四个卷积层和两个具有随机初始化权重的完全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224提高到448×448。
我们的最后一层预测类概率和边界框坐标。我们通过图像宽度和高度标准化边界框的宽度和高度,使其介于0和1之间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移,因此它们也在0和1之间。
我们对最终层使用线性激活函数,所有其他层使用以下泄漏校正线性激活:
我们优化了模型输出中的平方和误差。我们使用平方和误差,因为它很容易优化,但它并不能完全符合我们最大化平均精度的目标。它将定位误差与可能不理想的分类误差同等加权。此外,在每个图像中,许多网格单元都不包含任何对象。这将这些单元格的“置信度”分数推向零,通常会超过包含对象的单元格的梯度。这可能会导致模型不稳定,导致训练早期出现分歧。
为了解决这个问题,我们增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。我们使用两个参数和
来实现这一点。我们将
, 。
平方和误差也对大小框中的误差进行加权。我们的误差度量应该反映出大框中的小偏差比小框中的重要。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO预测每个网格单元有多个边界框。在训练时,我们只希望一个边界框预测器负责每个对象。我们指定一个预测器“负责”预测一个对象,基于该对象的预测具有最高的当前IOU和地面真相。这会导致边界框预测器之间的特殊化。每个预测器都能更好地预测物体的特定大小、纵横比或类别,从而提高整体回忆。
在训练期间,我们优化了以下多方损失函数:
其中表示对象是否出现在单元格
中,
表示单元格
中的第
个边界框预测器“负责”该预测。
注意,如果网格单元中存在对象(因此前面讨论的条件类概率),则损失函数仅惩罚分类错误。 如果该预测器对地面真值框“负责”(即具有该网格单元中任何预测器的最高IOU),它也仅惩罚边界框坐标误差。
我们根据和
的训练和验证数据集对网络进行了约135个
的训练。2012年测试时,我们还将
测试数据纳入训练。在整个训练过程中,我们使用的批量大小为64,动量为0.9,衰减为0.0005。
我们的学习率计划如下:在第一个阶段,我们将学习率从至
。如果我们以高学习率开始,我们的模型往往会因不稳定的梯度而偏离。我们继续训练
个75个
,然后
个30个
,最后
个30个
。
为了避免过度拟合,我们使用丢弃和大量数据扩充。在第一个连接层之后,速率为0.5的漏失层防止了层之间的共适配[18]。对于数据扩充,我们引入了高达原始图像大小20%的随机缩放和平移。我们还在颜色空间中随机调整图像的曝光和饱和度,最多调整1.5倍。
2.3.推论
就像在训练中一样,预测测试图像的检测只需要一次网络评估。在上,网络预测每个图像的98个边界框和每个框的类概率。YOLO在测试时非常快速,因为它只需要单个网络评估,而不是基于分类器的方法。
网格设计在边界框预测中加强了空间多样性。通常很清楚对象属于哪个网格单元,并且网络只预测每个对象的一个框。然而,一些大型对象或多个单元格边界附近的对象可以被多个单元格很好地定位。可以使用非最大抑制来修复这些多次检测。虽然不像R-CNN或DPM那样对性能至关重要,但非最大抑制增加了2-3%的mAP。
2.4.YOLO的局限性
YOLO对边界框预测施加了强烈的空间约束,因为每个网格单元只能预测两个框,并且只能有一个类。这种空间约束限制了我们的模型可以预测的附近物体的数量。我们的模型与成群出现的小物体(如成群的鸟)作斗争。
由于我们的模型学会了从数据中预测边界框,它很难将其推广到具有新的或不寻常的纵横比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构具有来自输入图像的多个下采样层。
最后,当我们训练一个接近检测性能的损失函数时,我们的损失函数对待小边界框和大边界框中的错误是相同的。大盒子里的一个小错误通常是良性的,但小盒子里的小错误对的影响要大得多。我们的主要错误来源是不正确的本地化。
3.与其他检测系统的比较
目标检测是计算机视觉的核心问题。检测流水线通常通过从输入图像中提取一组鲁棒特征(Haar[25]、SIFT[23]、HOG[4]、卷积特征[6])开始。然后,使用分类器[35,21,13,10]或定位器[1,31]来识别特征空间中的对象。这些分类器或定位器以滑动窗口方式在整个图像上或在图像中的一些区域子集上运行[34,15,38]。我们将YOLO检测系统与几个顶级检测框架进行了比较,强调了关键的相似性和差异。
可变形零件模型。可变形零件模型(DPM)使用滑动窗口方法进行对象检测[10]。DPM使用不相交的管道来提取静态特征、对区域进行分类、预测高分区域的边界框等。我们的系统用一个卷积神经网络代替了所有这些不同的部分。该网络同时执行特征提取、边界框预测、非最大值抑制和上下文推理。代替静态特征,网络在线训练特征,并针对检测任务对其进行优化。我们的统一架构带来了比DPM更快、更准确的模型。
R-CNN。R-CNN及其变体使用区域建议而不是滑动窗口来查找图像中的对象。选择性搜索[34]生成潜在的边界框,卷积网络提取特征,SVM对框进行评分,线性模型调整边界框,非最大值抑制消除重复检测。这一复杂管道的每个阶段都必须独立进行精确调整,因此产生的系统非常慢,测试时每张图像需要40秒以上的时间[14]。
YOLO与R-CNN有一些相似之处。每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分。然而,我们的系统对网格单元方案施加了空间约束,这有助于减轻对同一对象的多次检测。我们的系统还提出了更少的边界框,与选择性搜索的大约2000个相比,每个图像只有98个。最后,我们的系统将这些单独的组件组合成一个单独的、联合优化的模型。
其他快速探测器。快速和快速R-CNN专注于通过共享计算和使用神经网络提出区域而不是选择性搜索来加快R-CNN框架[14][27]。尽管它们比R-CNN提供了速度和准确性的改进,但两者仍不能达到实时性能。
许多研究工作集中于加快DPM管道[30][37][5]。它们加速HOG计算,使用级联,并将计算推送到GPU。然而,只有30Hz的DPM[30]能够实时运行。
YOLO没有试图优化大型检测管道的各个组件,而是完全抛弃了管道,而且设计上很快。
人脸或人等单一类别的检测器可以高度优化,因为它们必须处理更少的变化[36]。YOLO是一种通用探测器,它学习同时检测各种物体。
Deep MultiBox。与R-CNN不同,Szegdy等人训练卷积神经网络来预测感兴趣的区域[8],而不是使用选择性搜索。MultiBox 还可以通过用单个类预测代替置信度预测来执行单个对象检测。然而,MultiBox无法执行一般的对象检测,仍然只是更大检测流水线中的一部分,需要进一步的图像块分类。YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。
OverFeat。Sermanet等人训练卷积神经网络以执行定位,并调整定位器以执行检测[31]。OverFeat有效地执行滑动窗口检测,但它仍然是一个不相交的系统。OverFeat优化了定位,而不是检测性能。与DPM一样,本地化程序在进行预测时只看到本地信息。OverFeat无法推理全局上下文,因此需要大量的后处理才能产生一致的检测。
MultiGrasp。我们的工作在设计上与Redmon等人的抓握检测工作类似[26]。我们的边界框预测网格方法基于用于回归到抓取的多抓取系统。然而,抓取检测比对象检测简单得多。多抓取只需要为包含一个对象的图像预测单个可抓取区域。它不必估计物体的大小、位置或边界,也不必预测它的类别,只需要找到一个适合抓取的区域。YOLO预测图像中多个类的多个对象的边界框和类概率。
4.实验
首先,我们将与
上的其他实时检测系统进行比较。为了了解
和
变体之间的差异,我们探讨了
和
(R-CNN的最高性能版本之一)在
上的错误[14]。基于不同的错误分布,我们表明
可用于重新存储快速
检测,并减少背景误报的错误,从而显著提高性能。我们还介绍了
的结果,并将
与当前最先进的方法进行了比较。最后,我们表明
在两个艺术品数据集上比其他检测器更好地推广到新的领域。
4.1.与其他实时系统的比较
目标检测领域的许多研究工作都集中在快速构建标准检测管道上。[5] [37][30][14][17][27]然而,只有Sadeghi等人实际生产了实时运行的检测系统(每秒30帧或更高)[30]。我们将YOLO与运行在30Hz或100Hz的DPM的GPU实现进行了比较。虽然其他努力没有达到实时里程碑,但我们还比较了它们的相对mAP和速度,以检查对象检测系统中可用的精度性能权衡。
是
上最快的目标检测方法;据我们所知,它是现存最快的物体探测器。具有52.7%的mAP,其准确度是先前实时检测工作的两倍以上。YOLO将mAP推至63.4%,同时仍保持实时性能。
我们还使用VGG-16训练YOLO。该模型比YOLO更准确,但速度也明显慢。与依赖VGG-16的其他检测系统相比,它很有用,但由于它比实时速度慢,因此本文的其余部分将重点放在我们更快的模型上。
最快的DPM有效地加快了DPM的速度,而不会牺牲太多mAP,但它仍然以2倍的速度错过了实时性能[37]。与神经网络方法相比,DPM的检测精度相对较低,这也限制了它。
R-CNN减去R后,用静态边界框建议替代选择性搜索[20]。虽然它比R-CNN快得多,但它仍然不能实时,而且由于没有好的建议,它的准确性受到了很大的打击。
Fast R-CNN 加快了 R-CNN 的分类阶段,但它仍然依赖于选择性搜索,每张图像可能需要大约 2 秒来生成边界框建议。因此,它具有很高的mAP,但在0.5 fps时,它仍然远远不够实时。
最近的Faster R-CNN用神经网络代替了选择性搜索来提出边界框,类似于Szegedy等人。[8] 在我们的测试中,他们最精确的模型达到了7帧/秒,而一个较小的、不太精确的模型以18帧/秒运行。VGG-16版本的Faster R-CNN比YOLO高10mAP,但速度也慢6倍。ZeilerFergus Faster R-CNN 仅比 YOLO 慢 2.5 倍,但准确性也较低。
4.2. VOC 2007错误分析
为了进一步研究YOLO和最先进的检测器之间的差异,我们将查看VOC2007的详细结果。我们将YOLO与Fast RCNN进行比较,因为Fast R-CNN是Pascal上性能最高的检测器之一,而且它的检测是公开的。
我们使用Hoiem等人的方法和工具。[19]对于每一个类别,在测试时,我们查看该类别的前N个预测。每个预测要么正确,要么根据错误类型进行分类:
1、正确:正确的类别和
2、本地化:正确的类,
3、相似:类相似,
4、其他:类错误,
5、背景:任何对象的
图4显示了所有20个类中每种错误类型的平均值。
图4:错误分析:Fast R-CNN vs.YOLO这些图表显示了不同类别(N=该类别中的对象)的前N个检测中定位和背景错误的百分比。
Yolo很难正确地本地化对象。 定位错误比所有其他来源的错误总和还要多。快速R-CNN的定位错误要少得多,但背景错误要多得多。13.6%的顶级检测是不包含任何对象的假阳性。快速R-CNN预测背景检测的可能性几乎是YOLO的3倍。
4.3. 结合快速R-CNN和YOLO
Yolo犯的背景错误比快速R-CNN少得多。通过使用YOLO来消除快速R-CNN中的背景检测,我们得到了性能的显著提高。对于R-CNN预测的每个边界框,我们检查Yolo是否预测了类似的框。如果是这样,我们会根据Yolo预测的概率和两个盒子之间的重叠来增强预测。
最好的快速R-CNN模型在VOC2007测试集上mAP达到了71.8%。与YOLO结合后,其mAP提高了3.2%达到75.0%。我们还尝试将顶级快速R-CNN模型与其他几个版本的快速R-CNN结合起来。这些集合使mAP的增长幅度在.3%到.6%之间,详见表2。
表2:VOC2007模型组合实验。 我们检查各种模型与最佳版本的快速R-CNN相结合的效果。 Fast R-CNN的其他版本只提供了很小的好处,而Yolo提供了显著的性能提升。
Yolo的提升不仅仅是模型集成的副产品,因为结合不同版本的快速R-CNN没有什么好处。相反,正是因为Yolo在测试时犯了不同类型的错误,它才如此有效地提高了快速R-CNN的性能。
不幸的是,这种组合并没有从Yolo的速度中受益,因为我们分别运行每个模型,然后组合结果。然而,由于YOLO速度如此之快,与快速R-CNN相比,它并没有增加任何显著的计算时间。
4.4. VOC 2012 Results
在VOC 2012测试集上,Yolo的得分为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.通用性:艺术品中的人物检测
用于对象检测的学术数据集从同一分布中提取训练和测试数据。在现实世界的应用程序中,很难预测所有可能的用例,并且测试数据可能与系统之前看到的不同 [3]。 我们将 YOLO 与 Picasso 数据集 [12] 和 People-Art 数据集 [3] 上的其他检测系统进行比较,这两个数据集用于测试艺术品上的人物检测。
图 5 显示了 YOLO 和其他检测方法之间的比较性能。作为参考,我们为人提供 VOC 2007 检测 AP,其中所有模型仅在 VOC 2007 数据上进行训练。在 Picasso 模型上接受 VOC 2012 训练,而在 People-Art 上他们接受 VOC 2010 训练。
R-CNN 在 VOC 2007 上有很高的 AP。然而,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还能很好地推广到新领域,使其成为依赖快速、健壮的对象检测的应用程序的理想选择。
- 文章2305
- 用户1336
- 访客11456119
没有努力,天份不代表什么。
MySQL 数据库优化
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de
免ROOT实现模拟点击任意位置
Mobaxterm终端神器
CreateProcessW要注意的细节问题
Autonomous NAT Traversal
【教程】win10 彻底卸载edge浏览器
eclipse工程基于Xposed的一个简单Hook
排名前5的开源在线机器学习
Mac OS最简单及(Karabiner)快捷键设置
发一款C++编写的麻将
VMware NAT端口映射外网访问虚拟机linux
独家发布最新可用My-AutoPost——wordpress 采集器