Abstract
- 我们提出了一种新的物体检测方法YOLO。 关于物体检测的先前工作重新使用分类器来执行检测。 相反,我们将对象检测作为回归问题构建到空间上分离的边界框和相关的类概率。 单个神经网络在一次评估中直接从完整图像预测边界框和类概率。 由于整个检测流水线是单个网络,因此可以直接在检测性能上进行端到端优化。
- 我们的统一架构非常快。 我们的基础YOLO模型以每秒45帧的速度实时处理图像。 较小版本的网络Fast YOLO每秒处理惊人的155帧,同时仍然实现其他实时检测器的mAP的两倍。 与最先进的检测系统相比,YOLO产生更多的定位误差,但不太可能预测背景上的误报。 最后,YOLO学习了对象的非常一般的表示。 当从自然图像推广到其他领域(如艺术品)时,它优于其他检测方法,包括DPM和R-CNN。
Introduction
- 人类瞥了一眼图像,立即知道图像中的物体,它们在哪里,以及它们如何相互作用。 人类视觉系统快速而准确,使我们能够执行复杂的任务,例如在很少有意识的情况下驾驶。 用于物体检测的快速,准确的算法将允许计算机在没有专用传感器的情况下驾驶汽车,使辅助设备能够向人类用户传达实时场景信息,并释放用于通用响应机器人系统的潜力。
- 当前的检测系统重新利用分类器进行检测。 为了检测对象,这些系统为该对象采用分类器并在不同位置对其进行评估并在测试图像中进行缩放。 像可变形零件模型(DPM)这样的系统使用滑动窗口方法,其中分类器在整个图像上以均匀间隔的位置运行[10]。
- 像R-CNN这样的最新方法使用区域建议方法首先在图像中生成潜在的边界框,然后在这些提议的框上运行分类器。 分类后,后处理用于重新定义边界框,消除重复检测,并根据场景中的其他对象重新排列框[13]。 这些复杂的管道很慢且难以优化,因为每个单独的组件必须单独进行培训。
- 我们将对象检测重构为单个回归问题,直接从图像像素到边界框坐标和类概率。 使用我们的系统,您只需在图像上查看一次(YOLO)即可预测出现的对象和位置。YOLO简洁明了:参见图1.单个卷积网络同时预测这些盒子的多个边界框和类概率。 YOLO训练全图像并直接优化检测性能。 这种统一模型与传统的物体检测方法相比有几个好处。
- 首先,YOLO非常快。 由于我们将检测框架作为回归问题,因此我们不需要复杂的管道。 我们只是在测试时在新图像上运行我们的神经网络来预测检测。 我们的基础网络以每秒45帧的速度运行,Titan X GPU上没有批处理,快速版本的运行速度超过150 fps。这意味着我们可以实时处理流式视频,延迟时间少于25毫秒。 YOLO的平均精度是其他实时系统的两倍多。
- 其次,YOLO在做出预测时全局了解图像。 与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试时间内查看整个图像,因此它隐式编码有关类及其外观的上下文信息。 快速R-CNN是一种顶级检测方法[14],它错误地描述了对象中的背景补丁,因为它无法看到更大的上下文。 与Fast R-CNN相比,YOLO的背景错误数量不到一半。
- 第三,YOLO学习对象的一般化表示。 在对自然图像进行训练并对艺术作品进行测试时,YOLO大大优于DPM和R-CNN等顶级检测方法。 由于YOLO具有很高的通用性,因此在应用于新域或意外输入时不太可能发生故障。
- YOLO在准确性方面仍然落后于最先进的检测系统。 虽然它可以快速识别图像中的对象,但它很难精确定位某些对象,特别是小对象。 我们在实验中进一步研究了这些权衡。
Unified Detection
- 我们将对象检测的单独组件统一到单个神经网络中。 我们的网络使用整个图像中的特征来预测每个边界框。 它还同时预测所有类的所有边界框。 这意味着我们的网络全局了解整个图像和图像中的所有对象。 YOLO设计支持端到端训练和实时速度,同时保持较高的平均精度。我们的系统将输入图像分成S×S网格。 如果对象的中心落入网格单元格中,则该网格单元格负责检测该对象。
- 每个网格单元预测这些框的B边界框和置信分数。 这些信息得分反映了模型是如何保证盒子包含一个物体,以及它对盒子预测的准确程度。 正式地,我们定义为。 如果该单元格中不存在对象,则置信分数应为零。 否则,我们希望置信分数等于预测框和地面实况之间的联合交叉(IOU)。
- 每个边界框由5个预测组成:x,y,w,h和confidence。 (x,y)坐标表示相对于网格单元边界的框的中心。 相对于整个图像预测宽度和高度。 最后,信心预测代表预测框和任何地面实况框之间的IOU。
- 每个网格单元还预测C条件类概率。 这些概率以包含对象的网格单元为条件。我们只预测每个网格单元的一组类概率,而不管方框B的数量。在测试时,我们将条件类概率与单个框的置信预测相乘:
- 这给了我们每个盒子的特定类别的信心分数。 这些分数编码该类出现在框中的概率以及预测框出现在对象中的程度。
- 我们将此模型实现为卷积神经网络,并在PASCAL VOC检测数据集上进行评估[9]。 网络的初始卷积层从图像中提取特征,而完全连接的层预测输出概率和坐标。
- 我们的网络架构受到用于图像分类的GoogLeNet模型的启发[34]。 我们的网络有24个卷积层,后面是2个完全连接的层。 而不是GoogLeNet使用的初始模块,我们简单地使用1×1减少层,然后使用3×3卷积层。 完整的网络如图3所示:
- 我们还训练了一个快速版的YOLO,旨在突破快速物体检测的界限。 快速YOLO使用具有较少卷积层(9而不是24)的神经网络,并且在这些层中使用较少的过滤器。 除了网络的大小,YOLO和Fast YOLO之间的所有训练和测试参数都是相同的。
- 我们在ImageNet 1000级竞赛数据集[30]上预先训练我们的卷积层。 对于预训练,我们使用图3中的前20个卷积层,然后是平均池和完全连接层。 我们训练这个网络大约一周,并在ImageNet 2012验证集上实现88%的单一作物前5精度,与Caffe模型动物园中的GoogLeNet模型相当[24]。 我们使用Darknet框架进行所有训练和推理[26]。
- 然后我们转换模型以执行检测。表明将卷积和连接层添加到预训练网络可以提高性能。 按照他们的例子,我们添加四个卷积层和两个完全连接的层,随机初始化权重。 检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224增加到448×448。
- 我们的最终层预测了类概率和边界框坐标。 我们将边界框宽度和高度标准化为图像宽度和高度,使它们落在0和1之间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移量,因此它们也在0到1之间。
- 我们对最终层使用线性激活函数,所有其他层使用以下泄漏的重新线性激活:
- 我们优化模型输出中的求和平方误差。 我们使用求和平方误差,因为它很容易优化,但它与我们最大化平均精度的目标并不完全一致。 它将定位误差与分类误差相等地加权,这可能并不理想。 此外,在每个图像中,许多网格单元不包含任何对象。 这将这些单元格的“信心”分数推向零,通常会压制包含对象的单元格的渐变。 这可能导致模型不稳定,导致培训在早期出现分歧。为了解决这个问题,我们增加了边界框坐标预测的损失,并减少了不包含对象的框的信心预测损失。 我们使用两个参数和来实现这一目的。 我们设置=5和=5。
- 求和误差也同样可以加大大盒子和小盒子中的误差。 我们的误差度量应该反映出大盒子中的小偏差小于小盒子中的小偏差。 为了部分解决这个问题,我们直接预测边界框宽度和高度的平方根,而不是宽度和高度。YOLO预测每个网格单元有多个边界框。 在训练时,我们只希望一个边界框预测器负责每个对象。 我们根据哪个预测具有最高当前IOU和基础事实,将一个预测器指定为“负责”以预测对象。 这导致边界框预测变量之间的特化。 每个预测变量都能更好地预测某些大小,宽高比或对象类别,从而提高整体回忆率。
- 在训练期间,我们优化了以下多部分损失函数:
- 注意,如果对象存在于该网格单元中(因此前面讨论的条件类概率),则损失函数仅惩罚分类错误。 如果该预测器对地面实况框“负责”(即,该网格单元中具有任何预测器的最高IOU),它也仅惩罚边界框坐标误差。我们在PASCAL VOC 2007和2012的培训和验证数据集上训练了大约135个时期的网络。在2012年测试时,我们还包括用于培训的VOC2007测试数据。 在整个培训过程中,我们使用的批量为64,动量为0.9,衰减为0.0005。我们的学习率表如下:对于第一个时期,我们慢慢将学习率从10-3提高到10-2。 如果我们从高学习速度开始,我们的模型通常会因梯度不稳定而发散。 我们继续训练以10-2为75个时期,然后10-3为30个时期,最后10-4为30个时期。
- 就像在训练中一样,预测测试图像的检测只需要一次网络评估。 在PASCAL VOC上,网络预测每个图像的98个边界框和每个框的类概率。 YOLO在测试时非常快,因为它不需要单一的网络评估,这与基于分类器的方法不同。网格设计在边界框预测中强制实施空间多样性。 通常很清楚一个对象落入哪个网格单元,并且网络仅为每个对象预测一个框。 然而,多个单元边界附近的一些大对象或对象可以通过多个单元很好地定位。 可以使用非最大抑制来确定这些多个检测。 虽然对于R-CNN或DPM的性能并不重要,但非最大抑制在mAP中增加了23%。
- YOLO对边界框预测施加了强大的空间约束,因为每个网格单元只预测两个框,并且只能有一个类。 此空间约束限制了我们的模型可以预测的附近对象的数量。 我们的模型与群体中出现的小物体斗争,例如鸟群。
- 由于我们的模型学习从数据中预测边界框,因此它难以在新的或不寻常的宽高比或配置中推广到对象。 我们的模型还使用相对粗略的特征来预测边界框,因为我们的体系结构具有来自输入图像的多个下采样层。
- 最后,当我们训练一个近似于检测性能的损失函数时,我们的损失函数在小边界框中与大边界框相比处理错误。 大盒子中的小错误通常是良性的,但小盒子中的小错误对IOU的影响要大得多。 我们的主要错误来源是错误的本地化。
Comparison to Other Detection Systems
- 可变形零件模型。 可变形零件模型(DPM)使用滑动窗口方法进行物体检测[10]。 DPM使用不相交的管道来提取静态特征,对区域进行分类,预测高分区域的边界框等。 我们的系统用一个卷积神经网络替换所有这些不同的部分。 网络同时执行特征提取,边界框预测,非最大抑制和上下文推理。 网络不是静态功能,而是在线训练功能并针对检测任务对其进行优化。 我们的统一架构使得模型比DPM更快,更准确。
- R-CNN及其变体使用区域提议而不是滑动窗口来找到图像中的对象。 选择性搜索[35]生成潜在的边界框,卷积网络提取特征,SVM对框进行评分,线性模型调整边界框,非最大抑制消除重复检测。 这个复杂管道的每个阶段必须独立精确调整,结果系统非常慢,在测试时每个图像需要超过40秒[14]。
- YOLO与R-CNN有一些相似之处。 每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分。 但是,我们的系统对网格单元提议设置了空间限制,这有助于减轻同一对象的多次检测。 我们的系统还提出了更少的边界框,每个图像只有98个,而选择性搜索只有2000个。 最后,我们的系统将这些单独的组件组合成一个联合优化的模型。
- 快速而快速的R-CNN专注于加速R-CNN框架,通过共享计算和使用神经网络来提出区域而不是选择性搜索[14] [28]。 虽然它们提供了比R-CNN更快的速度和准确度,但两者仍然没有达到实时性能。许多研究工作都集中在加速DPM管道[31] [38] [5]。 它们加速HOG计算,使用级联,并将计算推送到GPU。 但是,只有30Hz的DPM [31]实际上是实时运行的。YOLO没有尝试优化大型检测管道的各个组件,而是完全抛出管道并且设计快速。
- 与R-CNN不同,Szegedy等人。 训练卷积神经网络来预测感兴趣的区域[8]而不是使用选择性搜索。 MultiBox还可以通过使用单个类预测替换置信预测来执行单个对象检测。 但是,MultiBox无法执行常规对象检测,并且仍然只是更大的检测管道中的一部分,需要进一步的图像补丁分类。 YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。
- Sermanet等。 训练卷积神经网络以执行定位并调整定位器以执行检测[32]。 OverFeat可以有效地执行滑动窗口检测,但它仍然是一个不相交的系统。 OverFeat优化了本地化,而不是检测性能。 与DPM一样,本地化程序在进行预测时仅查看本地信息。 OverFeat无法推理全局背景,因此需要进行大量的后处理才能产生连贯的检测。
- 我们的设计在设计上类似于Redmon等[27]的抓握检测。 我们对边界框预测的网格方法基于MultiGrasp系统进行回归到掌握。 然而,抓取检测是比对象检测简单得多的任务。 MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域。 它不必估计对象的大小,位置或边界或预测它的类,只能找到适合抓取的区域。 YOLO预测图像中多个类的多个对象的边界框和类概率。
Conclusion
- 我们介绍YOLO,一种用于物体检测的统一模型。 我们的模型构造简单,可以直接在完整图像上进行训练。 与基于分类器的方法不同,YOLO接受了与检测性能直接对应的损失函数的训练,并且整个模型被联合训练。
- Fast YOLO是文献中最快的通用物体探测器,YOLO在实时物体探测中推动了最先进的技术。 YOLO还可以很好地推广到新域,使其成为依赖快速,强大的对象检测的应用程序的理想选择。