YOLO(论文翻译)

Abstract

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

我们的统一架构非常快。我们的基础YOLO模型以45帧/秒的速度实时处理图像。较小版本的网络Fast YOLO每秒可处理155帧,同时实现了其他实时检测器的mAP的两倍。与最先进的检测系统相比,YOLO产生更多的定位误差,但不太可能预测背景误报。最后,YOLO学习目标的泛化表示。它从自然图像到artwork等其他领域的普及,胜过了其他的检测方法,包括DPM和R-CNN。

1. Intorduction

人类瞥一眼图像,立即知道图像中的目标是什么,它们在哪里以及它们如何相互作用。人类的视觉系统是快速和准确的,允许我们执行复杂的任务,比如驾驶时几乎没有什么有意识的想法。快速,准确的目标检测算法可以让计算机在没有特殊传感器的情况下驾驶汽车,使辅助设备能够向用户传送实时的场景信息,并释放用于通用目的的潜力,类似于一个响应式机器人系统。

目前的检测系统重新利用分类器进行检测。为了检测目标,这些系统为该目标提供一个分类器,在测试图片上不同的位置和缩放大小评估它。像DPM这样的系统使用滑动窗口方法,其中分类器在整个图像上均匀间隔的位置分类[10]。

最近的方法,如R-CNN使用区域候选方法首先在图像中生成候选的边界框,然后在这些框上运行分类器。分类后,后处理用于细化边界框,消除重复框,并根据场景中的其他目标重新定位框[13]。这些复杂的pipeline很慢并且难以优化,因为每个单独的步骤都必须单独进行训练。

我们将目标检测重建为单个回归问题,直接从图像像素获得边界框坐标和类概率。使用我们的系统,仅在图像上看一次(YOLO),就可以预测出现目标的位置和类别。

 

用YOLO处理图像简单而直接。我们的系统(1)将输入图像调整为448×448,(2)在图像上运行单个卷积网络,以及(3)通过模型的置信度对由此产生的检测进行阈值。

YOLO很简单:参见图1.一个单线卷积网络同时预测多个边界框和类概率。YOLO训练全图像并直接优化检测性能。这种统一的模型与传统的目标检测方法相比有几个优点。

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

其次,在进行预测时,YOLO reasons globally about image。与基于滑动窗口和区域候选的技术不同,YOLO在训练和测试期间可以看到整个图像,因此它隐含了关于类的概念信息以及它们的外观。Fast R-CNN是一种顶级的检测方法[14],因为无法看到更大的上下文,因此会错误地将图像中的背景复制到目标中。与Fast R-CNN相比,YOLO的背景错误数量少了一半。

第三,YOLO学习目标的泛化表示。在对自然图像进行训练并对艺术作品进行测试时,YOLO大幅优于DPM和R-CNN等顶级检测方法。由于YOLO具有高度的可分解性,因此在应用于新的领域或意外输入时仍可使用

YOLO在准确性方面仍落后于最先进的检测系统。虽然它可以快速识别图像中的目标,但它正在努力精确定位某些目标,特别是小目标。我们在实验中进一步考察了这些权衡。

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

2. Unified Detection

我们将目标检测的单独步骤集成到一个神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还同时预测所有类的所有边界框。这意味着我们的网络会全面地关注图像中的完整图像和所有目标。YOLO设计可实现端到端训练和实时检测,同时保持较高的平均精度。

我们的系统将输入图像划分为S×S网格。如果目标的中心落入网格单元格中,则该网格单元格负责检测该目标。

每个网格单元预测这些框的边界框和置信度分数。这些置信度分数反映了该模型对边界框是否包含目标的可信度,以及预测的边界框的准确度。因为我们把置信度定义为Pr(Object)*IOU。如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度分数等于预测框与ground truth之间的IOU。

每个边界框由5个预测组成:x,y,w,h和置信度。(x,y)坐标表示相对于网格单元边界的框的中心。宽度和高度是相对于整个图像预测的。最后,置信度预测表示预测框与ground truth框之间的IOU。

每个网格单元还预测目标的类条件概率,Pr(Classi|Object)。我们只预测每个网格单元的一组类别概率,而不管边界框的数量是多少。

测试时,我们将类条件概率和单个边界框置信度预测相乘,这给出了每个边界框的类别特定置信度分数。这些分数包含了该类出现在边界框中的概率以及预测边界框匹配该目标的置信度。

为了评估PASCAL VOC上的YOLO,我们使用S = 7,B = 2。PASCAL VOC有20个类别,因此C = 20。我们的最终预测是7×7×30张量。

 

我们的系统将检测模型化为一个回归问题。它将图像划分为S×S网格,并且每个网格单元预测B个边界框,这些框的置信度和C类条件概率。这些预测被编码为S×S×(B * 5 + C)张量。

2.1 Network Design

我们将此模型设计为卷积神经网络,并在PASCAL VOC检测数据集上进行评估[9]。网络的初始卷积层从图像中提取特征,而全连接层预测输出概率和坐标

我们的网络架构受到GoogLeNet图像分类模型的启发[34]。我们的网络有24个卷积层2个全连接层。与GoogLeNet使用的初始模块不同,我们简单地使用1×1的reduction层,然后是3×3的Convoration层,类似于Lin等人的[22]。完整的网络如图3所示。

我们还训练了快速版本的YOLO,旨在推动快速目标检测。Fast YOLO使用较少卷积层(9而不是24)的神经网络,并在这些层中使用较少的滤波器。除了网络规模之外,YOLO和Fast YOLO之间的所有训练和测试参数都相同。

我们网络的最终输出是7×7×30张量。

 

我们的检测网络有24个卷积层和2个全连接层。交替的1×1卷积层减少了来自前面层的特征空间。我们在分辨率(224×224输入图像)上预训练ImageNet分类任务上的卷积层,然后将分辨率resize为448x448以进行检测。

2.2 Training

我们在ImageNet 1000类数据集上预训练我们的卷积层[30]。对于预训练过程,我们使用图3中的前20个卷积层,接着是average-pooling层和全连接层。我们对这个网络进行了大约一周的训练,并且在ImageNet 2012验证集上实现了88%的single crop top-5精度,与Caffe的Model Zoo中的GoogLeNet模型相当[24]。我们使用Darknet框架进行所有训练和inference[26]。

然后,我们将模型转换为perform检测。Ren等人表明,将卷积和全连接层添加到预训练网络可以提高性能[29]。按照他们的例子,我们将预训练的20个卷积层再加了四个卷积层和两个全连接的层,并且随机初始化了权值。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224提高到448×448。

我们的最后一层预测类概率和边界框坐标。我们通过图像的宽度和高度来归一化边界框的宽度和高度,使它们落在0和1之间。我们将边界框的x和y坐标参数化为特定网格单元位置的偏移量,所以它们也被限制在0 和1之间。

我们对最后一层使用线性激活函数,所有其他层使用以下leaky rectified线性激活函数

 

我们优化了模型输出中的均方差。我们使用均方差,因为它很容易操作,但它并不完全符合最大化平均精度的目标。而且,在每个图像中,许多网格单元不包含任何目标。这将这些单元格的“置信度”分数设为零,通常overpowering包含目标的单元格的梯度。这可能导致模型不稳定,从而导致训练早期发生diverge。

为了弥补这一点,我们增加了边界框坐标预测的损失,并减少了不包含目标框的置信度预测的损失。我们使用两个参数λcoord和λnoobj来实现这一点。我们设定λcoord= 5和λnoobj=0.5。

均方差也同样对大边界框和小边界框中的误差进行加权。我们的错误指标应该反映出,大边界框的小偏差比小边界框小很多。为了部分解决这个问题,我们直接预测边界框宽度和高度的平方根,而不是宽度和高度。

YOLO预测每个网格单元的多个边界框。在训练时,我们只需要一个边界框预测器负责每个目标。我们将一个预测器指定为“responsible”,以根据哪个预测具有最高的IOU与ground truth来预测目标。这导致了边界框预测器之间的specialization。每个预测器可以更好地预测某些尺寸,纵横比或目标类别,从而改善整体召回。

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

 

其中1obj i表示目标是否出现在单元格i中,而1obj ij指出单元格i中的第j个边界框预测器对于该预测是“responsible”。

请注意,如果一个目标出现在该网格单元中,损失函数仅惩罚分类错误。如果该预测器对ground truth框“responsible”(即具有该网格单元中任何预测器的最高IOU),它也只惩罚边界框坐标误差。

我们在PASCAL VOC 2007和2012的训练和验证数据集上对网络进行了约135个epoch的训练。在2012年进行测试时,我们还包含VOC 2007测试训练数据。在整个训练过程中,我们使用64的batch size,0.9的momentum和0.0005的decay。

我们的学习率计划如下:对于第一个epoch,我们慢慢地将学习率从10-3提高到10-2。如果我们从高学习率开始,我们的模型通常会由于不稳定的梯度而发散。我们继续以10-2进行75个epoch的训练,然后以10-3进行30个epoch的训练,最后以10-4进行30个epoch的训练。

为避免过度拟合,我们使用dropout和数据增强。在第一个连接层之后,rate=0.5的dropout层防止了层之间的协调[18]。对于数据增强,我们引入随机缩放和转换高达20%的原始图像大小。我们还在HSV色彩空间中随机调整了图像的曝光和饱和度,其因子高达1.5。

2.3 Inference

就像在训练中一样,预测测试图像的检测只需要一个网络评估。在PASCAL VOC上,网络预测每个图像的98个边界框和每个框的类概率。YOLO在测试时速度非常快,因为它只需要一个网络评估,就像分类器的方法一样。

网格设计强化了边界框预测中的空间多样性。通常很清楚一个目标所在的网格单元是什么,网络仅为每个目标预测一个边界框。然而,多个网格边界附近的一些大目标或目标可以很好地通过多网格定位。非极大抑制可用于修复这些多重检测。对于R-CNN或DPM而言,对性能不是至关重要的,非极大抑制在mAP中增加2-3%。

2.4 Limitations of YOLO

YOLO对边界框预测强加空间约束,因为每个网格单元只能预测两个方框,并且只能有一个类。 这个空间约束限制了我们模型可以预测的附近目标的数量。我们的模型与群体中出现的小目标(例如鸟群)发生问题。

由于我们的模型学习从数据中预测边界框,因此它很难将目标推广到新的或不寻常的高宽比或配置。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的体系结构具有来自输入图像的多个下采样层。

最后,当我们训练一个接近检测性能的损失函数时,我们的损失函数将小边界框与大边界框的误差相同。大边界框中的小错误通常是良性的,但小边界框中的小错误对IOU有更大的影响。我们的主要错误来源是不正确的localizations。

6. Conclusion

我们介绍YOLO,一种用于目标检测的统一模型。我们的模型构造简单,可以直接在完整图像上训练。与基于分类器的方法不同,YOLO是通过与检测性能直接对应的损失函数进行训练的,并且整个模型是共同训练的。

Fast YOLO是文献中最快的通用目标检测器,YOLO推动实时目标检测的最新技术。YOLO还很好地推广到新领域,使其成为依赖快速,强大目标检测的应用的理想选择。

猜你喜欢

转载自blog.csdn.net/attitude_yu/article/details/80924044