(43)[CVPR16] YOLO(You Only Look Once): Unified, Real-Time Object Detection

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37993251/article/details/89148020

计划完成深度学习入门的126篇论文第四十三篇,微软的Ross Girshick及UW的学者研究Obeject Detection的模型。(本篇算是YOLO v1,截止目前出到了v3版本)[官网]


Abstract

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

我们的统一架构非常快。我们的基本YOLO模型以每秒45帧的速度实时处理图像。一个更小版本的网络,Fast YOLO,每秒处理惊人的155帧,同时仍然达到了其他实时探测器地图的两倍。与最先进的检测系统相比,YOLO会产生更多的定位错误,但不太可能在背景上预测假阳性。最后,YOLO学习对象的一般表示。当从自然图像扩展到其他领域(如artwork)时,它的性能优于其他检测方法,包括DPM和R-CNN


1. Introduction

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

当前的检测系统重新使用分类器来执行检测。为了检测一个对象,这些系统使用该对象的分类器,并在测试图像中的不同位置和尺度对其进行评估。像deformable parts model(DPM)这样的系统使用滑动窗口方法,在整个图像[10]上以均匀的间隔运行分类器。

最近的方法,如R-CNN使用region proposal方法首先生成图像中的潜在边界框,然后在这些框上运行分类器。分类后,利用后处理对边界框进行细化,消除重复检测,并根据场景[13]中的其他对象对边界框进行重核。这些复杂的管道很慢,而且很难优化,因为每个单独的组件必须单独训练。

我们将目标检测重构为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,只需要看一次图像(YOLO),就可以预测当前的对象和它们的位置。

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

  • 首先,YOLO非常快。由于我们将检测作为一个回归问题进行框架,所以我们不需要复杂的管道。我们只是在测试时对一幅新图像运行神经网络来预测检测结果。我们的基本网络以每秒45帧的速度运行,在Titan X GPU上没有批处理,而一个快速版本的速度超过150帧每秒。这意味着我们可以用不到25毫秒的延迟实时处理流视频。此外,YOLO的平均精度是其他实时系统平均精度的两倍以上。有关我们的系统在网络摄像头上实时运行的演示,参考项目网页YOLOv3
  • 其次,YOLO在进行预测时,会从全局范围内对这幅图像进行推理。与滑动窗口和基于region proposal的技术不同,YOLO在训练和测试期间可以看到整个图像,因此它隐式地编码关于类及其外观的上下文信息。Fast R-CNN,一种顶级的检测方法,[14],错误的背景匹配在图像中的对象,因为它不能看到更大的背景。与Fast R-CNN相比,YOLO产生的背景错误还不到一半。
  • 第三,YOLO学习对象的可概括表示。通过对自然图像的训练和对artwork的测试,YOLO在很大程度上超过了DPM和R-CNN等顶级检测方法。由于YOLO是高度一般化的,所以在应用于新域或意外输入时,它不太可能崩溃。YOLO在准确度方面仍然落后于最先进的检测系统。虽然它可以快速识别图像中的对象,但它很难精确定位某些对象,尤其是小对象。我们在实验中进一步研究了这些权衡。

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


2. Unified Detection

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

我们的系统将输入图像划分为S x S网格。如果一个物体的中心落在一个网格单元中,该网格单元负责检测该物体。

每个网格单元格预测B边界框和这些框的置信度得分。这些置信度评分反映了模型对框中包含对象的置信度,以及它认为框中所预测的内容有多准确。在形式上,我们把信心定义为对象。如果该单元格中不存在对象,则置信度得分应为零。否则,我们希望置信度得分等于预测框与ground truth之间的联合(IOU)的交集。

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

每个网格单元还预测C条件类概率\operatorname{Pr}\left(\text { Class }_{i} | \text { Object }\right)。这些概率取决于包含对象的网格单元。我们只预测每个网格单元格的一组类概率,而不考虑框的数量b。

在测试时,我们将条件类概率和单个框的置信度预测相乘

\operatorname{Pr}\left(\text { Class }_{i} | \text { Object }\right) * \operatorname{Pr}(\text { Object }) * \operatorname{IOU}_{\text { pred }}^{\text { truth }}=\operatorname{Pr}\left(\text { Class }_{i}\right) * 10 \mathrm{U}_{\text { pred }}^{\text { truth }}

这给了我们每个盒子的特定类别的信心分数。这些分数既编码了类出现在框中的概率,也编码了预测框与对象的匹配程度。

用S = 7,B = 2,来评价YOLO对PASCAL VOC的影响。PASCAL VOC有20个标签类,所以C = 20。我们最后的预测是一个7×7×30张量。

2.1. Network Design

将该模型实现为卷积神经网络,并在PASCAL VOC检测数据集[9]上进行了评价。网络的初始卷积层从图像中提取特征,完全连通层预测输出概率和坐标。

我们的网络架构受到GoogLeNet图像分类[33]模型的启发。我们的网络有24个卷积层,然后是两个完全连接的层。与GoogLeNet使用的inception模块不同,我们只是使用了1 x 1 reduction层和3 x 3卷积层,类似于Lin等人的[22]。整个网络如图3所示。

我们还训练了一个Fast YOLO,旨在推动快速目标检测的边界。Fast YOLO使用的神经网络具有更少的卷积层(9层而不是24层)和更少的过滤器。除了网络的大小,YOLO和Fast YOLO之间的所有训练和测试参数都是相同的。

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

2.2. Training

我们在ImageNet 1000级竞争数据集[29]上对卷积层进行了预训练。在训练前,我们使用图3中的前20个卷积层,然后是平均池化层和完全连接层。我们对这个网络进行了大约一周的训练,并在ImageNet 2012验证集上获得了88%的单一crop top5准确率,与Caffe Model Zoo[24]中的GoogLeNet模型相当。

然后我们将模型转换为执行检测。Ren等人的研究表明,在预训练网络中同时添加卷积层和连接层可以提高性能[28]。按照他们的示例,我们添加了四个卷积层和两个完全连接的层,它们的权值都是随机初始化的。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224 x 224提高到448 x 448。

最后一层预测类概率和边界框坐标。我们通过图像的宽度和高度对边界框的宽度和高度进行标准化,使它们位于0和1之间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移量,因此它们的边界也在0和1之间。

我们对最后一层使用线性激活函数,所有其他层都使用下面的leaky rectified linear activation:

\phi(x)=\left\{\begin{array}{ll}{x,} & {\text { if } x>0} \\ {0.1 x,} & {\text { otherwise }}\end{array}\right.

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

为了解决这个问题,我们增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。我们使用两个参数,设置\lambda_{\text { coord }}=5 \text { and } \lambda_{\text { noobj }}=.5

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

YOLO预测每个网格单元格有多个边界框。在训练时,我们只希望一个边界框预测器负责每个对象。我们指定一个预测器来负责预测一个对象,该对象的预测是基于该预测具有最高的电流欠条和ground truth度。这将导致边界框谓词之间的专门化。每个预测器都能更好地预测特定的大小、纵横比或对象的类,从而提高整体回忆能力。

在训练过程中,我们优化了以下多部件损失函数:

\mathbb{I}_{i}^{\text { obj }}表示对象是否出现在单元格i中,\mathbb{I}_{i}^{\text { obj }}表示单元格i中的第j个边界框预测器负责该预测。

注意,loss函数只在网格单元中存在对象时才惩罚分类错误(因此前面讨论的条件类概率)。它也只惩罚边界框坐标误差,如果该预测器负责ground truth框(即有最高的IOU的任何预测器在该网格单元)。

我们用PASCAL VOC 2007年和2012年的训练和验证数据集对网络进行了135个epochs的训练。在2012年的测试中,我们还包含了VOC 2007年的测试数据用于训练。在整个训练过程中,我们使用批大小为64,动量为0:9,衰减为0:0005。

我们的学习进度是这样的:在第一个阶段,我们慢慢地把学习速度从10^{-3}提高到10^{-2}。如果我们从一个高学习率开始,我们的模型往往由于不稳定的梯度而发散。我们继续训练75个epochs的10^{-2},然后是30个epochs的10^{-3},最后是30个epochs的10^{-4}

为了避免过度拟合,我们使用了dropout和广泛的数据增强。在第一个连接层之后,速率为.5的dropout层阻止层之间的相互适应。为了增加数据,我们引入了随机缩放和高达原始图像大小20%的平移。我们还随机调整曝光和饱和度的图像高达1.5的因素,在HSV颜色空间。

2.3. Inference

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

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

2.4. Limitations of YOLO

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

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

最后,当我们训练一个近似于检测性能的损失函数时,我们的损失函数在小边界框和大边界框中处理错误的方法是一样的。大盒子里的小错误通常是良性的,但小盒子里的小错误对借据的影响要大得多。我们的主要错误来源是不正确的定位。


3. Comparison to Other Detection Systems

目标检测是计算机视觉中的一个核心问题。检测管道一般从输入图像(Haar[25]、SIFT[23]、HOG[4]、convolutional features[6])中提取一组鲁棒特征开始。然后,使用分类器[35,21,13,10]或定位器[1,31]来识别特征空间中的对象。这些分类器或定位要么以滑动窗口的方式在整个图像上运行,要么在图像中的某个区域子集上运行[34,15,38]。我们将YOLO检测系统与几个顶级检测框架进行了比较,突出了关键的相似性和不同点。

Deformable parts models. (DPM)使用滑动窗口方法来检测对象[10]。DPM使用一个不相交的管道来提取静态特征、对区域进行分类、预测高得分区域的边界框等。我们的系统用一个卷积神经网络替换了所有这些不同的部分。该网络同时进行特征提取、边界框预测、非最大抑制和上下文推理。网络不再使用静态特性,而是在线训练这些特性,并针对检测任务对它们进行优化。我们的统一架构比DPM更快、更精确。

R-CNN. R-CNN及其变体使用区域建议而不是滑动窗口来查找图像中的对象。选择性研究[34]生成潜在的边界框,卷积网络提取特征,SVM对框进行评分,线性模型调整边界框,非最大抑制消除重复检测。这个复杂管道的每个阶段都必须独立地精确地进行调优,因此生成的系统非常慢,在测试[14]时,每张图像要花费超过40秒的时间。

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

Other Fast Detectors Faster R-CNN专注于通过共享计算和使用神经网络提出区域来加速R-CNN框架,而不是选择性搜索[14][27]。虽然与R-CNN相比,它们在速度和精度上都有了提高,但仍然无法达到实时性能。

许多研究工作的重点是加快DPM管道[30][37][5]。它们加速了HOG计算,使用级联,并将计算推给gpu。然而,只有30Hz的DPM[30]是实时运行的。

YOLO并没有试图优化大型检测管道的各个组件,而是完全抛弃了管道,而且设计速度很快。

针对人脸或人等单一类的检测器可以进行高度优化,因为它们必须处理更少的[36]变化。YOLO是一种通用的检测器,它可以同时检测多种对象。​​​​​​​

Deep MultiBox. 与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣的区域[8],而不是使用选择性搜索。MultiBox还可以用一个类预测代替置信度预测来进行单目标检测。但是,MultiBox不能进行一般的目标检测,只是一个较大的检测管道中的一小部分,需要进一步的图像patch分类。YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。​​​​​​​

OverFeat. Sermanet等人训练卷积神经网络进行定位,并采用该定位器进行检测[31]。OverFeat能够有效地进行滑动窗口检测,但仍然是一个不相交的系统。OverFeat优化定位,而不是检测性能。与DPM一样,定位器在进行预测时只看到本地信息。OverFeat不能推断全局上下文,因此需要大量的后处理来产生一致的检测。​​​​​​​

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


4. Experiments

首先对YOLO与PASCAL VOC 2007上的其他实时检测系统进行了比较。为了了解YOLO和R-CNN变体之间的差异,我们探究了YOLO和Fast R-CNN在VOC 2007上的错误,Fast R-CNN是R-CNN[14]中表现最好的版本之一。基于不同的误差分布,我们表明YOLO可以用来重新给Fast R-CNN打分检测减,然后少False positives,让性能显著提高。我们还介绍了VOC 2012的结果,并将mAP与目前最先进的方法进行了比较。最后,我们证明了YOLO比其他两个art数据集上的检测器更好地推广到新的领域。

4.1. Comparison to Other Real-Time Systems

在目标检测方面的许多研究工作都集中在快速实现标准检测管道。[5][37][30][14][17][27]然而,只有Sadeghi等人实际生产了一个实时运行的检测系统(每秒30帧以上)[30]。我们比较了YOLO和他们的GPU实现的DPM运行在30Hz或100Hz。虽然其他努力没有达到实时里程碑,我们也比较了他们的相对地图和速度,以检查在目标检测系统中可用的精度和性能权衡。

Fast YOLO是PASCAL上最快的对象检测方法;据我们所知,它是现存最快的目标探测器。它的准确率为52.7%,是之前实时检测工作的两倍多。YOLO将mAP提升到63:4%,同时仍然保持实时性能。

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

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

R- CNN用静态边界框建议[20]替换选择性搜索。虽然它比R-CNN,它仍然缺乏实时性,由于没有好的建议,它的准确性受到了很大的打击。

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

最近Faster R-CNN用神经网络代替了选择性搜索,提出了边界框,类似于Szegedy等人的[8]在我们的测试中,他们最精确的模型达到了7帧每秒,而一个更小、更不精确的模型运行速度为18帧每秒。Faster R-CNN的VGG-16版本速度比mAP高10倍,但也比YOLO慢6倍。Zeiler-Fergus Faster R-CNN只比YOLO慢2.5倍,但也不够精确。

4.2. VOC 2007 Error Analysis

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

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

  • 正确:正确的类和,OU > .5
  • 定位:正确的类,:1 < IOU <. 5
  • 相似:相似,IOU > .1

图4显示了所有20个类中每种错误类型的平均分类。YOLO很难正确地定位对象。定位错误占YOLO错误的比例超过了所有其他源的总和。FastR-CNN产生更少的定位错误,但更多的背景错误。13.6%的顶级检测是不包含任何物体的误报。FastR-CNN预测背景检测的可能性几乎是YOLO的三倍。

4.3. Combining Fast R-CNN and YOLO

YOLO犯的背景错误比Fast R-CNN少得多。通过使用YOLO来消除Fast R-CNN的背景检测,我们得到了一个显著的提高性能。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了类似的框。如果答案是肯定的,我们将根据YOLO预测的概率和两个框之间的重叠程度来提高预测。

最好的FastR-CNN模型在VOC 2007测试集上获得了71.8%的mAP增加3.2%至75.0%。我们还尝试将顶级的Fast R-CNN模型与其他几个版本的Fast R-CNN相结合。这些组合在mAP中产生了0.03%到0.06%的小幅度增长,详见表2。

YOLO的提升不仅仅是模型集成的副产品,因为组合不同版本的Fast R-CNN几乎没有什么好处。相反,正是因为YOLO在测试时犯了不同种类的错误,所以它在快速提升R-CNN性能方面非常有效。

不幸的是,这种组合不能从YOLO的速度中获益,因为我们分别运行每个模型,然后将结果组合在一起。然而,由于YOLO非常快,与快速的R-CNN相比,它不会增加任何重要的计算时间。

4.4. VOC 2012 Results

在VOC 2012年测试集中,YOLO得分57.9% mAP。这低于目前的技术水平,更接近使用VGG-16的原始R-CNN,见表3。与最接近的竞争对手相比,我们的系统在处理小对象时比较困难。在瓶子、绵羊和电视/显示器等分类中,YOLO得分比R-CNN或特写编辑低8-10%。然而,在cat和train YOLO等其他类别中,YOLO的性能更高。

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

4.5. Generalizability: Person Detection in Artwork

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

图5显示了YOLO与其他检测方法的性能对比。为了便于参考,我们给出了VOC 2007检测AP,其中所有的模型都只针对VOC 2007数据进行训练。毕加索的模型是在VOC 2012上训练的,而在人工图像上,他们是在VOC 2010上的训练。

R-CNN对VOC 2007的AP值较高。然而,当R-CNN应用于时,其下降幅度相当大。R-CNN使用选择性搜索框的建议,这是调整为自然图像。R-CNN的分类器步骤只看到小区域,需要好的建议。

当应用于工业任务时,DPM能很好地维护其AP。先前的研究认为,DPM之所以表现出色,是因为它具有很强的对象形状和布局的空间模型。虽然DPM的降解程度不如R-CNN,但是它的AP开始较低。

YOLO在VOC 2007上表现良好,其AP在artwork上的降解程度低于其他方法。与DPM一样,YOLO建模对象的大小和形状,以及对象之间的关系和对象通常出现的位置。artwork和自然图像在像素水平上有很大的不同,但在物体的大小和形状上是相似的,因此YOLO仍然可以预测出好的边界框和检测。


5. Real-Time Detection In The Wild

YOLO是一种快速、准确的目标探测器,非常适合计算机视觉应用。我们将YOLO连接到一个网络摄像头,并验证它保持了实时性能包括从相机获取图像和显示检测结果的时间。最终的系统是交互式的、引人入胜的。而YOLO单独处理图像,当它连接到网络摄像头时,它就像一个跟踪系统,在物体移动和外观变化时检测它们。系统演示及源代码可在我们的项目网站上找到:YOLOv3

6. Conclusion

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

Fast YOLO是目前文献中最快的通用目标检测器,YOLO推动了实时目标检测的发展。YOLO还可以很好地推广到新的领域,使其非常适合依赖于快速、健壮的对象检测的应用程序。

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/89148020
今日推荐