You Only Look Once:
Unified, Real-Time Object Detection
(读原英文版YOLOv1 ,让我更深刻理解YOLO内容,保留部分原英文译文)
Abstract
摘要
2015年YOLO团队提出了一种名为YOLO的新目标检测方法。以往的目标检测工作大多将分类器转用于执行检测任务。相比之下,YOLO团队将目标检测构建成一个回归问题,旨在从空间上分离的边界框及其相关的类别概率入手。YOLO采用单一神经网络,在一次评估中直接从完整图像预测边界框和类别概率。由于整个检测流程是一个单一的网络结构,因此能够直接针对检测性能进行端到端的优化。
该统一架构拥有极其出色的运行速度。基础版YOLO模型能够实时处理图像,每秒处理速度达45帧。网络的一个更小巧版本——Fast YOLO,其处理速度令人惊叹,每秒可达155帧,同时还能实现比其他实时检测器高出一倍的平均精度(mAP)。相较于最先进的检测系统,YOLO在定位误差上可能稍多,但在背景上预测假阳性的情况较少。最后,YOLO能够学习到非常通用的对象表征,在从自然图像推广到其他领域如艺术品等领域时,其性能超越了包括DPM(Deformable Parts Models)和R-CNN在内的其他检测方法。
1. Resize image.
2. Run convolutional network.
3. Non-max suppression.
- 调整图像大小。
- 执行卷积神经网络。
- 非极大值抑制。
Figure 1: The YOLO Detection System. Processing images with YOLO is simple and straightforward. Our system (1) resizes the input image to 448 × 448, (2) runs a single convolutional network on the image, and (3) thresholds the resulting detections by the model’s confidence.
(总结:YOLO检测系统流程。使用YOLO处理图像的过程简单直接。首先(1)将输入图像调整为448×448像素尺寸,然后(2)在图像上运行单一卷积神经网络,最后(3)根据模型的置信度对产生的检测结果进行阈值筛选。)
1. Introduction
引言
人类在瞥见一张图像时,能瞬间识别出图像中的物体、它们的位置以及它们之间的相互作用。人类视觉系统既快速又准确,使我们能够无意识地完成像驾驶这样的复杂任务。如果拥有快速而精确的物体检测算法,计算机将能够在没有特殊传感器的情况下实现自动驾驶,有助于助残设备实时向用户传达场景信息,并释放通用型、响应灵敏的机器人系统的潜力。
当前的检测系统通过重新调整分类器以执行检测任务。为了检测一个物体,这些系统会针对某一物体获取相应的分类器,并在测试图像的不同位置和尺度上对其进行评估。诸如可变形部件模型(Deformable Parts Models, DPM)等系统采用滑动窗口方法,在整个图像上均匀分布的位置运行该分类器。
最近的一些方法如R-CNN则采用区域提议方法,首先生成可能包含物体的候选区域。
这些方法首先在图像中生成潜在的目标框,随后在这些目标框上运行分类器。分类之后,通过后处理步骤来优化边界框,消除重复检测,并基于场景中的其他物体对边界框进行重新评分。由于每个独立组件都需要单独训练,这种复杂的流水线过程不仅慢且难以优化。
我们将目标检测问题重构为一个单一的回归问题,即从图像像素直接回归到边界框坐标及类别概率。使用我们的系统,只需对图像“看”一次(YOLO),就能预测图像中存在的物体及其位置。
YOLO的设计简洁明了,如图1所示。单个卷积神经网络同时预测多个边界框及其对应类别的概率。YOLO在整个图像上进行训练并直接优化检测性能。与传统目标检测方法相比,这种统一的模型具有多项优势。
首先,YOLO极其快速。由于我们将检测作为回归问题处理,因此无需复杂的流水线。在测试阶段,我们只需在新图像上运行我们的神经网络来预测检测结果。我们的基础网络在Titan X GPU上运行时速率达到每秒45帧,即使不采用批量处理;而快速版本的运行速度更是超过每秒150帧。这意味着我们可以实时处理流媒体视频,延迟时间少于25毫秒。此外,YOLO所达到的平均精度均值比其他实时系统高出两倍以上。
其次,YOLO在做出预测时能够全局考虑整个图像。不同于滑动窗口和基于区域提议的技术,YOLO在训练和测试阶段都观察整个图像,因此它能隐式地编码关于类别及其外观的上下文信息。例如,顶级检测方法之一的Fast R-CNN,在识别图像中背景块时可能会误判为对象,因为它无法看到更大的上下文环境。相比之下,YOLO在背景误报方面的错误数量仅为Fast R-CNN的一半左右。
第三,YOLO学习的是物体的泛化表示。当在自然图像上训练并在艺术品上测试时,YOLO的表现远超诸如DPM和R-CNN等顶级检测方法。由于YOLO高度泛化,因此在应用于新的领域或面对意外输入时,它不太可能发生失效的情况。
尽管如此,YOLO在准确性方面仍然落后于最先进的检测系统。虽然它可以快速识别图像中的物体,但在精确定位某些物体特别是小物体时存在困难。我们在实验中进一步探讨了这些权衡因素。
我们所有的训练和测试代码都是开源的,并且提供了多种预训练模型供下载使用。
2. Unified Detection
统一检测
我们将目标检测的各个独立组件整合进一个单一的神经网络中。我们的网络利用整个图像的特征来预测每一个边界框,并且同时预测图像中所有类别下的所有边界框。这意味着我们的网络能全局推理整个图像及其包含的所有对象。
YOLO设计使得端到端训练得以实现,并能在保持高平均精度的同时达到实时处理速度。我们的系统将输入图像划分为S×S的网格结构。如果某个对象的中心位于某网格单元内,则该网格单元负责检测这个对象。
每个网格单元预测B个边界框及其对应的置信度分数。这些置信度分数反映了模型对于边界框包含物体的信心程度以及模型认为预测的边界框准确性的评估。形式上,我们将置信度定义为Pr(物体) * IOU真实框/预测框。如果该网格单元内不存在物体,则置信度分数应为零。反之,我们希望置信度分数等于预测框与实际框之间的交并比(Intersection Over Union, IOU)。
每个边界框由5个预测值组成:x, y, w, h 和置信度。其中(x, y)坐标代表边界框中心相对于所在网格单元边界的相对位置,宽度和高度则是相对于整个图像的预测值。最后,置信度预测值表示预测框与任何真实框之间的交并比。
每个网格单元还会预测C个条件类别概率,即Pr(类别i|物体)。这些概率是基于网格单元包含物体的条件进行预测的。我们只对存在物体的网格单元预测相应类别的概率。
在每个网格单元中,无论边界框的数量B是多少,我们都只预测一组类别概率。
在测试阶段,我们将条件类别概率与每个边界框的个体置信度预测相乘,即:
Pr(类别i|物体) * Pr(物体) * IOUpred_truth = Pr(类别i) * IOUpred_truth
这样得到的每个边界框的得分就是类别特定的置信度分数。这些分数同时编码了该类别出现在边界框内的概率以及预测框与物体匹配的程度。简而言之,每个边界框的最终得分综合反映了它所属类别的可能性以及边界框与实际物体匹配的精确度。
Figure 2: The Model. Our system models detection as a regres- sion problem. It divides the image into an S × S grid and for each grid cell predicts B bounding boxes, confidence for those boxes, and C class probabilities. These predictions are encoded as an S × S × (B ∗ 5 + C) tensor. For evaluating YOLO on PASCAL VOC, we use S = 7, B = 2. PASCAL VOC has 20 labelled classes so C = 20. Our final prediction is a 7 × 7 × 30 tensor.
(总结:就是将检测模型转换为回归问题,后面PASCAL VOC数据集上评估YOLO,设置S=7,B=2。由于PASCAL VOC有20个标注类别,最终得到的预测结果是一个7×7×30的张量。)
2.1. Network Design
网络设计
我们将这一模型实现为一个卷积神经网络,并在PASCAL VOC检测数据集[9]上对其进行了评估。网络的初始卷积层从图像中提取特征,而全连接层则用于预测输出的概率和坐标。
我们的网络架构受到了GoogLeNet图像分类模型[33]的启发。我们的网络包含24个卷积层,之后接2个全连接层。与GoogLeNet使用的 inception 模块不同,我们采用了简单的1×1降维层后接3×3卷积层的设计,类似于Lin等人[22]的做法。完整网络结构展示在图3中。
此外,我们也训练了一个YOLO的快速版本,旨在探索快速目标检测的极限。快速YOLO采用了一个卷积层数量更少(9层而非24层)、且在这些层中滤波器数量也较少的神经网络。除了网络规模之外,YOLO和快速YOLO在训练和测试参数上完全相同。
Figure 3: The Architecture. Our detection network has 24 convolutional layers followed by 2 fully connected layers. Alternating 1 × 1
convolutional layers reduce the features space from preceding layers. We pretrain the convolutional layers on the ImageNet classification
task at half the resolution (224 × 224 input image) and then double the resolution for detection.
(总结:该网络架构。包含24个卷积层后接2个全连接层。交替的1×1卷积层用于从前一层减少特征空间维度。首先在分辨率为原始一半(即输入图像尺寸为224×224)的情况下,以ImageNet分类任务对卷积层进行预训练,然后将分辨率翻倍以进行目标检测。)
The final output of our network is the 7 × 7 × 30 tensor of predictions.
2.2. Training
我们首先在ImageNet 1000类竞赛数据集[29]上预训练卷积层。在预训练阶段,我们使用图3中的前20个卷积层,之后接一个平均池化层和一个全连接层。我们对该网络训练大约一周,最终在ImageNet 2012验证集上取得了单裁剪前5名准确率88%的成绩,这一成绩与Caffe模型库中的GoogLeNet模型相当[24]。
接着,我们将模型转换为执行检测任务。Ren等人证明,在预训练网络中添加卷积层和全连接层可以提升性能[28]。按照他们的例子,我们在预训练模型的基础上增加了四个卷积层和两个随机初始化权重的全连接层。考虑到检测通常需要精细的视觉信息,我们将网络的输入分辨率从224 × 224提高到了448 × 448。
我们的最后一层同时预测类别概率和边界框坐标。我们将边界框的宽度和高度归一化为图像宽度和高度的比例,使其取值范围在0到1之间。我们将边界框的x轴和y轴坐标参数化为特定网格单元位置的偏移量,因此它们的取值同样限定在0到1之间。
我们为最后一层使用线性激活函数,而对于所有其他层则采用以下带有following leaky 的ReLU激活函数:
我们在模型输出上优化平方误差和。之所以选择平方误差和,是因为它易于优化,然而它并未完美契合我们最大化平均精度的目标。这种方法平等地对待定位误差和分类误差,这可能并非最佳方案。另外,在每张图像中,许多网格单元并不包含任何物体,这就促使那些不含物体的网格单元的“置信度”得分趋向于零,而且往往会对含有物体的网格单元的梯度产生过强的影响。这种情况可能导致模型不稳定,进而导致训练在早期阶段就出现发散现象。
2.3. Inference
与训练阶段类似,对测试图像进行物体检测只需要一次网络评估。在PASCAL VOC数据集上,网络为每张图像预测出98个边界框以及每个框的类别概率。由于YOLO仅需一次网络评估,不像基于分类器的方法那样需要多次计算,所以在测试时YOLO的速度非常快。
网格设计确保了边界框预测的空间多样性。通常情况下,很容易判断一个物体属于哪个网格单元,网络只为每个物体预测一个边界框。然而,一些大型物体或靠近多个单元格边界的物体可能由多个单元格都能较好地定位。在这种情况下,可以使用非极大值抑制(Non-maximal Suppression)来解决这些多重检测问题。虽然对于R-CNN或DPM这类方法来说非极大值抑制至关重要,但对于YOLO而言,它仅能增加约2-3%的mAP(平均精度均值)。
2.4. Limitations of YOLO
(YOLO局限性)
YOLO对边界框预测施加了严格的空间约束,因为每个网格单元仅预测两个边界框,并且只能对应一个类别。这种空间约束限制了模型能够预测邻近物体的数量。因此,当面临成群出现的小型物体时,比如一群鸟,我们的模型表现得较为吃力。
由于我们的模型是从数据中学习预测边界框的,所以当遇到新型态或非常规配置的物体时,模型的泛化能力较弱。此外,由于我们的架构从输入图像到预测边界框的过程中有多次下采样操作,因此模型在预测边界框时使用的特征相对较粗糙。
最后,尽管我们在接近检测性能的损失函数上进行训练,但我们的损失函数对大边界框和小边界框的误差处理方式是一样的。在一个大的边界框中,较小的误差通常是无关紧要的,但在一个小的边界框中,同样的小误差却会对IOU指标造成更大的影响。我们的主要错误来源是定位不准确。
3. Comparison to Other Detection Systems
目标检测是计算机视觉领域中的一个核心问题。检测流程通常首先从输入图像中抽取一组鲁棒性特征,如Haar特征[25]、SIFT特征[23]、HOG特征[4]或卷积特征[6]。接下来,会利用分类器[35, 21, 13, 10]或定位器[1, 31]在特征空间中识别出物体。这些分类器或定位器通常以滑动窗口的方式在整个图像上运行,或者在图像的某一子集区域上运行[34, 15, 38]。
我们将YOLO检测系统与多个顶级检测框架进行比较,着重强调它们之间的主要相似性和差异之处。
Deformable Parts Models(DPM)采用滑动窗口方法进行目标检测[10]。DPM采用一套分离的流水线来提取静态特征、对区域进行分类、预测得分较高的区域的边界框等。而我们的系统将所有这些分散的部分替换为一个单一的卷积神经网络。该网络能够同时执行特征提取、边界框预测、非最大值抑制以及上下文推理。不同于传统的静态特征,我们的网络在线训练特征,并针对检测任务对其进行优化。这种统一的架构使得我们的模型相比于DPM更快、更准确。
4. Experiments
(实验)
首先,我们在PASCAL VOC 2007数据集上将YOLO与其他实时检测系统进行比较。为了理解YOLO与R-CNN变体之间的差异,我们深入研究了YOLO和Fast R-CNN(R-CNN家族中性能最优版本之一)在VOC 2007数据集上的错误情况[14]。基于不同的错误特性分析,我们展示了YOLO可以用于重新评估Fast R-CNN的检测结果,并减少背景误报导致的错误,从而显著提升性能表现。此外,我们也展示了在VOC 2012数据集上的实验结果,并将其平均精度(mAP)与当前最先进的方法进行了对比。最后,通过两个艺术品数据集实验表明,YOLO在新领域的泛化能力优于其他检测器。
4.1. Comparison to Other Real-Time Systems
Table 1: Real-Time Systems on PASCAL VOC 2007. Comparing the performance and speed of fast detectors. Fast YOLO is the fastest detector on record for PASCAL VOC detection and is still twice as accurate as any other real-time detector. YOLO is 10 mAP more accurate than the fast version while still well above real-time in speed.
(表格1:PASCAL VOC 2007上的实时系统检测性能比较。该表展示了快速检测器的速度与性能表现。快速版YOLO是目前PASCAL VOC检测任务中记录速度最快的检测器,并且其准确性仍比其他任何实时检测器高出两倍。全版YOLO相较于快速版本在保持远超实时处理速度的同时,准确性提高了10个百分点mAP(平均精度均值))
4.2. VOC 2007 Error Analysis
为了进一步探究YOLO与其他前沿检测器之间的差异,我们详细分析了VOC 2007数据集上的结果。我们选择YOLO与Fast R-CNN进行对比,因为Fast R-CNN在PASCAL数据集上表现出色,并且其检测结果可供公众获取。
我们采用的是Hoiem等人[19]的方法和技术。在测试阶段,针对每个类别,我们会查看该类别前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
• 正确:类别正确且交并比(IOU)大于0.5 • 定位错误:类别正确,0.1 < IOU < 0.5 • 相似错误:类别相似,IOU > 0.1 • 其他错误:类别错误,IOU > 0.1 • 背景误报:对于任何物体,IOU < 0.1
Figure 4 shows the breakdown of each error type averaged across all 20 classes.
YOLO struggles to localize objects correctly. Localization errors account for more of YOLO’s errors than all other sources combined. Fast R-CNN makes much fewer localization errors but far more background errors. 13.6% of it’s top detections are false positives that don’t contain any
objects. Fast R-CNN is almost 3x more likely to predict background detections than YOLO.
(图4展示了在所有20个类别中各类错误类型的平均分布情况。 YOLO在正确定位对象方面存在困难。定位错误占据了YOLO错误的大部分比例,甚至超过了所有其他来源错误之和。相比之下,Fast R-CNN产生的定位错误要少得多,但却产生了更多的背景误报。在其最顶部的检测结果中,有13.6%为false positives,即并未包含任何对象。Fast R-CNN预测背景的可能性几乎是YOLO的三倍。)
通过这种方式,我们依据预测结果的精确度及其所属类别是否正确,对YOLO与Fast R-CNN在不同错误类型下的表现进行了深入剖析。
4.3. Combining Fast R-CNN and YOLO
Table 2: Model combination experiments on VOC 2007. We examine the effect of combining various models with the best version of Fast R-CNN. Other versions of Fast R-CNN provide only
a small benefit while YOLO provides a significant performance boost.
(表2:在VOC 2007数据集上的模型组合实验。我们研究了将各种模型与最好的Fast R-CNN版本相结合的效果。其他版本的Fast R-CNN带来的增益较小,而YOLO则显著提高了性能表现。)
Table 3: PASCAL VOC 2012 Leaderboard. YOLO compared with the full comp4 (outside data allowed) public leaderboard as of
November 6th, 2015. Mean average precision and per-class average precision are shown for a variety of detection methods. YOLO is the
only real-time detector. Fast R-CNN + YOLO is the forth highest scoring method, with a 2.3% boost over Fast R-CNN.
(表3:PASCAL VOC 2012排行榜。截止至2015年11月6日,YOLO与允许使用外部数据的完整comp4组别的公共排行榜进行了对比。展示了多种检测方法的平均精度均值(mean average precision, mAP)和各类别的平均精度。YOLO是唯一实时检测器。Fast R-CNN与YOLO结合的方法排名第四,相较于Fast R-CNN本身提高了2.3%的得分。)
5. Real-Time Detection In The Wild
(室外实时检测)
YOLO是一种快速且精确的物体检测器,使之成为计算机视觉应用的理想选择。我们将YOLO与网络摄像头相连,并验证其能够在实时环境下保持良好的性能表现。通过这一连接,YOLO能够在接收到摄像头实时画面输入时迅速识别并定位图像中的物体,从而实现高效的实时物体检测功能。无论是安全监控、自动驾驶还是智能交互等领域,YOLO都能够展现出强大的实用性。
6. Conclusion
We introduce YOLO, a unified model for object detection. Our model is simple to construct and can be trained directly on full images. Unlike classifier-based approaches,
YOLO is trained on a loss function that directly corresponds to detection performance and the entire model is trained jointly.
Fast YOLO is the fastest general-purpose object detector in the literature and YOLO pushes the state-of-the-art in real-time object detection. YOLO also generalizes well to new domains making it ideal for applications that rely on fast, robust object detection.
(本文介绍了YOLO,这是一种用于物体检测的统一模型。YOLO模型构造简单,可以直接在全尺寸图像上进行训练。与基于分类器的方法不同,YOLO基于直接对应检测性能的损失函数进行训练,整个模型联合优化。
Fast YOLO是文献中最快的通用目标检测器,而YOLO在实时目标检测领域推动了最先进的技术水平。YOLO还能很好地推广到新的领域,因此非常适合依赖快速、robust 物体检测的应用场景。)
未完后面会更新自己训练YOLO模型的总结。。。