YOLO:统一的,实时的目标检测外文翻译资料
2021-12-15 22:29:06
英语原文共 10 页
YOLO:统一的,实时的目标检测
摘要
我们提出了YOLO,一个新的目标检测算法。之前目标检测的思路是改变分类器来实现目标检测。然而,我们构建的新框架将目标检测当成一个回归问题,在空间上分离边界框和对应的类别概率。一个神经网络通过一次评估就能从整幅图像中直接检测出边界框和类别概率。因为一个神经网络就包含了目标检测的所有流程,所以YOLO可以直接通过端到端的训练来优化其目标检测性能。
1. 简介
人们看一眼图像就能立即知道图像中的物体是什么,它们在哪里,以及它们是如何相互作用的。人类视觉系统是快速和准确的,这使得我们能够执行复杂的任务,比如边驾驶边开点小差。快速、准确的目标检测算法能使得计算机在没有专用传感器的情况下驾驶汽车,使辅助设备能够实时地将场景信息传达给人类,并发掘通用的,交互式机器人系统的潜力。
现在的检测模型都是通过改造分类网络来实现目标检测。为了检测一个物体,这些目标检测模型要在一张测试图的不同位置和不同尺寸的预测框上使用分类器去评估框内是否有该物体。比如DPM(deformable parts models)系统使用滑动窗口的方法在整张图片上匀速滑动,并用分类器检测滑动窗口所在位置是否有目标。
最近提出的R-CNN类方法使用区域建议的策略首先在整张待检测图片中生成候选框,然后用分类器检测这些候选框,最后用后处理方法修正这些候选框得到目标边界框,删除重复的检测目标,并基于整个场景中的其他物体重新对进行目标的边界框打分。整个流程执行下来很慢,而且因为这些环节都是分开训练的,很难优化其检测性能。
因此,我们将目标检测重新构建为一个单一的回归问题,直接从原始图像到目标边界框坐标和目标类别概率。使用我们的系统,你只需要看一次图像(YOLO,you only look once)就能预测一张图片中目标的位置和目标的类别。
YOLO非常简单,如图一所示,一个卷积网络同时预测多个边界框和这些框中的目标类别概率。YOLO能在各种大小的图片上训练,并且直接优化网络模型的检测性能。与以往的目标检测方法相比,该网络模型具有许多优点。
图1:YOLO检测系统。
用YOLO处理图像简单直接。我们的网络模型(1)将输入图像大小调整为448times;448,(2)在图像上运行单个卷积网络,以及(3)由模型的置信度对所得到的检测进行阈值处理。
首先,YOLO特别地快。自从我们将检测问题重新构建成一个回归问题,我们就不需要复杂的检测流程了。我们仅需在待检测图片上运行网络模型就能得到模型检测的结果。在泰坦X显卡上,不经过批量处理,标准的YOLO网络的检测速度可以达到45帧每秒,而一个Fast YOLO网络的检测速度超过150帧每秒。这意味着我们可以在不到25毫秒的延迟内实时地处理流媒体视频。此外,YOLO的检测精度(mAP)是其他实时检测方法的两倍以上。关于我们的YOLO网络模型在网络摄像头上实时运行的演示实验,请参阅我们的项目网页:http://pjreddie.com/yolo/。
其次,YOLO在进行预测时,会对整幅图像进行运算。不同于基于滑动窗口和区域的方法,YOLO在训练和测试时会拥有整个图像的感受野,因此它隐式地编码了目标类别和特征的上下信息。Fast R-CNN是一种高层的目标检测方法,因为它的上下层特征间联系不紧密,很容易将图像中的背景误检为目标。与Fast R-CNN相比,YOLO将背景误检成目标的错误少了一半以上。
第三,YOLO具有较好的泛化能力。当在自然图像上以艺术作品为目标进行训练并测试时,由于具有较宽的感受野,YOLO的表现大幅优于DPM和R-CNN等高层检测方法。由于YOLO具有较好的泛化能力,因此在应用于新领域或碰到陌生的输入时,检测效果并不会很差。
YOLO在精度方面仍然落后于目前最好的检测网络模型。虽然它可以快速识别图像中的目标,但它很难精确定位某些目标,尤其是小目标。我们将会在实验中进一步研究速度和精度间的权衡。
我们所有训练和测试的代码都是开源的。各种预训练模型也都可以下载。
2. 统一检测
我们将目标检测的各个单独结构集成到一个卷积神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还可以同时预测一张图像中的所有边界框以及边界框中目标的类别概率。这意味着我们的神经网络模型是对整张图像和图像中的所有目标进行预测。YOLO在保持了较高的检测精度(mAP)的同时,还能实现端到端的网络训练和具有实时性的检测速度。
YOLO网络模型将输入图像分成SxS的网格。如果一个目标的中心落入一个网格的单元中,则由该网格单元负责检测该目标。
每个网格单元预测B个边界框和及边界框的置信度分数。这些置信度分数反映了网络模型对边界框是否包含目标的信心,以及它预测的边界框的准确程度。在形式上,我们将置信度定义为Pr(Object) lowast; ,如果该单元格内没有目标,则置信度分数应该为零。否则,我们希望置信度分数等于预测框与真值的交并比。
每个边界框包括5个预测值:x、y、w、h和置信度。(x,y)坐标代表边界框的中心在网格单元中的位置。宽度w和高度h是相对于整张图像而言的。最后一个置信度代表边界框和真值之间的交并比。
每个网格单元还预测C个类别及其概率,Pr(Classi|Object)。这些概率以包含目标的网格单元为条件。不管边界框的的数量B多大,每个网格单元我们只预测一组类别概率。在测试时,我们将类别概率和边界框置信度相乘,得到每个框特定类别的置信度分数。这些分数既编码了相应类别出现在边界框中的概率,也编码了边界框与目标真实边界框的匹配程度。
图2:YOLO网络模型。
YOLO模型将目标检测问题看成是一个回归问题。它将图像分成一个Stimes;S网格,每个网格单元预测B个边界框,以及边界框的置信度和C个类别概率。这些预测结果被编码成一个Stimes;Stimes;(B*5 C)的张量。
在PASCAL VOC数据集上测试评估YOLO时,我们定义超参数S=7,B=2,因为 PASCAL VOC数据集中有20个类别,所以超参数C=20。网络模型最后输出的检测结果时一个7 x 7 x 30 的张量。
2.1 网络设计
我们将此模型作为卷积神经网络来实现,并在Pascal VOC数据集上进行评估。网络的初始层通过卷积从图像中提取特征,最终层是全连接层,输出目标位置坐标以及目标概率。
我们的网络架构受到GoogLeNet图像分类网络模型的启发。网络模型一共有24个卷积层,最后是两个全连接层。不同于GoogLeNet网络模型采用的Inception结构,YOLO网络模型在3 x 3卷积层之后仅使用一个1 x 1的下采样层,这与lin等人提出的结构类似。完整的YOLO网络模型结构如图3所示。
图3:YOLO网络结构。
检测网络一共有24层卷积层,最后两层是全连接层。交替1 x 1卷积层减少了先前层的特征空间。在ImageNet分类任务中,我们以一半的分辨率(224times;224输入图像)对卷积层进行预训练,然后将分辨率提高一倍进行检测。
我们还训练了一个快速版本的YOLO,旨在推动快速目标检测的速度界限。快速版本的YOLO使用了比较少的卷积层(只有9层而不是24层),并在这些卷积层中减少了卷积和池化的操作。除了网络规模之外,标准版本的YOLO和快速版本的YOLO的所有训练和测试参数都是相同的。
网络最终的输出都是7 x 7 x 30 的张量。
2.2 训练
我们在ImageNet 1000类竞赛数据集上预训练我们的卷积神经网络。在预训练中,我们使用了图3中的前20个卷积层,以及20个卷积层后的一个平均池化层和一个全连接层。在Caffe平台上,我们对这个网络进行了大约一周的训练,在ImageNet 2012验证集上得到了前五类别88%的准确率,这与GoogLeNet网路模型的精度相当。
然后我们调整模型进行目标检测。Ren等人证明了在网络中增加卷积层和全连接层可以提高网络的性能。遵循他们的意见,我们在网络中添加了四个卷积层和两个全连接层以及随机初始化的网络参数。目标检测通常需要更加具有细粒度的视觉信息,因此我们将网络模型输入图像的分辨率从224 x 224变为448 x 448。
最后一层不仅输出目标的边界框,还要输出目标的类别信息。我们通过图像宽度和高度来统一边界框的宽度比例和高度比例,将它们转化成0到1之间的数。我们将边界框的x、y坐标参数化为特定网格单元的位置偏移量,所以它们也能转化成0到1之间数。
我们对最后一层使用线性激活函数,其他的所有层使用以下漏整流线性激活函数:
我们优化了模型输出中的平方和误差。我们使用平方和误差作为误差函数,因为它很容易进行优化,但是它并不完全符合我们最大化平均精度(mAP)的目标。它给予分类误差与定位误差相同的权重,但这可能并不是最理想的。另外,在每张图像中,许多网格单元并不包含任何对象。这将使得这些单元格的置信度分数变为零,但是通常会压低周围包含目标的单元格的梯度。最终使得模型不稳定,在训练过程中很早就发散。
为了解决这个问题,我们在损失函数中增加了边界框坐标预测损失,并减少了不包含目标的边界框的置信度预测损失。我们使用两个超参数lambda;coord和lambda;noobj来实现。我们设置lambda;coord=5,lambda;noobj=5。
平方和误差也给予大边界框和小边界框同样的权重。YOLO的误差度量应该要反映大边界框中的小误差比小边界框中的小误差更重要这一概念。因此,YOLO模型预测边界框的宽度和高度的平方根,而不是直接预测宽度和高度,从而初步地解决了上述问题。
YOLO中每个网格单元能预测多个边界框。在训练时,我们希望一个边界框预测器只负责一个目标。YOLO会指定一个预测框来“负责”预测一个目标,该目标的预测是基于与目标真值具有最高交并比的预测框。这样就提高了每个预测框的专业性。每个预测框都能更好地预测特定大小、方向角或类别的目标,从而提高整体的召回率。
在训练期间,我们优化了损失函数的以下多个部分:
其中,表示第i个网格单元中的目标,表示第i个网格单元中的第j个目标。
注意,如果目标存在于该网格单元中,则损失函数仅惩罚分类错误(前面讨论的目标类别概率)。如果网格单元负责预测目标边界框(即该网格单元中具有最高IOU的预测边界框),则它也要惩罚边界框坐标错误。
我们在Pascal VOC 2007和2012的训练和验证数据集上对YOLO网络进行了大约135个迭代周期的网络训练。在Pascal VOC 2012上进行测试时,YOLO的训练包含了Pascal VOC 2007的测试数据。在训练过程中,我们设置64个样本为一个批次,使用动量法,动量参数为0.9,衰减系数为0.0005。
我们的学习率方案如下:在第一个迭代周期里,我们缓慢地将学习率从10-3提升到10-2(如果我们一开始就使用较高的学习率,我们的模型往往会由于不稳定的梯度而发散),然后继续以10-2的学习率训练75个周期,然后以10-3的学习率训练30个周期,最后以10-4的学习率训练30个周期。
为了防止过拟合现象的发生,我们使用了dropout技术和大量的数据增强技术。第一个全连接层后的节点丢弃率设为0.5,以防止网络层与层之间的耦合。对于数据增加技术,我们使用了随机的图片尺寸缩放和翻转,变换的比例不超过原始图片的20%。我们还在图像的HSV色彩空间中使用不超过1.5的参数来随机调整图像的曝光和饱和度。
2.3 预测
就像在训练中一样,预测待测图像中的目标只需要一次网络计算评估。在Pascal VOC上,YOLO网络平均每张图片预测98个边界框以及边界框内的目标类别概率。不同于基于分类改进的目标检测网络,YOLO在测试时非常快,预测目标只需要一次网络计算评估。
YOLO中网格的设计强化了边界框预测中的空间多样性。很明显一个目标落在某一个网格单元中,网络网络只能为每个目标预测一个边界框。通常一个目标只落在一个网格单元中,而网络只能为每个目标预测一个边界框。然而,一些大的目标或靠近多个网格单元边界的目标可以被多个网格单元很好地定位。非极大值抑制可以用来修正这些多重检测。对于R-CNN和DPM而言,非极大值抑制对性能的影响并不大,仅提高了2%-3%的精度(mAP)。
2.4 YOLO的不足
YOLO对边界框预测强加空间约束,因为每个网格单元只预测两个边界框,只能有一个目标类别。这个空间约束限制了YOLO模型能够预测的邻近目标的数量。模型很难预测相邻的一群小目标,比如图片中的鸟群。
由于YOLO模型是从训练样本集中学习预测边界框的,因此它很难将边界框的预测能力泛化到具有新的、罕见的方向角的目标。我们的模型使用相对较粗糙的特征来预测目标边界框,因为我们的网络架构接受多个下采样层从原始图像中得到的特征图。
最后,当我们训练优化一个近似代表检测性能的损失函数时,损失函数会同等地对待小边界框与大边界框的误差。大边界框的小误差通常是影响并不大,但小边界框的小误差对IOU的影响要大得多。YOLO网络的主要损失在于定位损失。
3. 与其他目标检测方法的比较
目标检测是计算机视觉的核心问题。检测流程通常从在输入图像上提取具有鲁棒性的特征(Haar、SIFT、HOG、卷积特征)开始,然后用分类器或定位器识别特征空间中的目标。这些分类器或者定位器在整张图片上以滑动窗口或者子窗口的形式运行。我们将YOLO与几种高层的目标检测方法进行比较,突出了它们关键的相同点和不同点。
可变形部件模型(DPM)。DPM使用滑动窗口
资料编号:[5026]