欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

YOLO(You Only Look Once:Unified, Real-Time Object Detection) YOLOv1 论文翻译

程序员文章站 2022-04-22 11:40:01
YOLOv1论文翻译-You Only Look Once:Unified, Real-Time Object Detection摘要 Abstract1.简介 Introduction2.统一检测 Unified Detection2.1 网络设计 Network Design2.2 训练 Training2.3 前向传播 Inference2.4 YOLO的局限性 Limitations of YOLO3.与其他检测系统对比 Comparison to Other Detection Systems4....

摘要 Abstract

我们介绍一种新的物体检测方法YOLO。与先前的物体检测方法是重新设置分类器来执行检测不同,我们将物体检测方法看做一个回归问题,去预测空间分离的边界框和相关类别概率。单个神经网络从整个图片中一次性预测边界框和类别概率。由于整个检测流程是一个单一网络,所以可以进行端到端的直接对检测性能进行优化。我们的这种单一网络结构体系速度非常快。我们的基本YOLO模型实时处理图像速度为每秒45帧。较小的YOLO模型版本,Fast YOLO可以实现每秒155帧的实时检测速度,同时实现mAP是其他物体检测网络的两倍左右。与当前最先进的物体检测方法相比,YOLO会出现较多的定位误差,但是从背景中检测出假阳性目标较少。最后,YOLO可以学习物体非常抽象的特征,所以在自然图像之外的其他检测领域比如艺术品的检测中,YOLO优于包括DPM和R-CNN在内的其他检测方法。

1.简介 Introduction

人们只需瞥一眼图片就知道图片中有什么物体,物体的位置及它们之间的联系。人类的视觉系统是快速而准确的,使我们可以做很复杂的事,比如开车时不用刻意去思考。快速,准确的物体检测算法将允许计算机在没有专用传感器的情况下驾驶汽车,使辅助设备能够向人类用户传达实时场景信息,并释放通用,响应式机器人系统的潜力。

当前的检测系统重新利用分类器来执行检测。 为了检测物体,这些系统为该物体提供一个分类器,并在不同的位置评估它,并在测试图像中进行缩放。 像可变形零件模型(DPM)这样的系统使用滑动窗口方法,其中分类器在整个图像上以均匀间隔的位置运行

最近的方法比如R-CNN使用候选区域的方法,首先在图像中生成候选框,然后在候选框上运行分类器。分类之后,后续的操作是优化边界框、消除重复检测,最后根据图像中其他物体来重新定位边界框。这些复杂的流程很慢而且优化困难,因为每个组件都需要单独训练。

我们将物体检测系统,重新设计为一个回归问题:直接从图像像素输出边界框坐标和分类概率。使用我们的系统,只需运行一次就可以知道图像中有什么物体以及物体的位置。

YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

图1:YOLO检测系统。处理图像用YOLO简单直接。我们的系统调整输入图像大小为448*448,运行单个卷积网络处理图像,用模型的置信度对检测结果进行阈值处理。

YOLO非常简单:参考图片1,单个神经网络可以同时预测多个边界框和类概率 ,YOLO直接在整个图像上训练,并直接优化检测性能。这个统一的模型比传统的物体检测方法有几个优势。

第一,YOLO速度非常快。由于我们的检测是当做一个回归问题,不需要很复杂的流程。在测试的时候我们只需将一个新的图片输入网络来检测物体。在Titan X GPU上我们的基本网络检测速度可以实现45帧每秒,快速版本检测速度可以达到155帧每秒。这意味着我们可以以小于25毫秒的延迟处理流媒体视频。此外YOLO相比其他实时检测系统可以达到两倍的mAP,请参阅我们的项目网页http://pjreddie.com/yolo/,上面有我们项目在网络摄像头上的实时运行演示。

第二,YOLO在预测时可以整体的检测图像。与基于滑动窗口和候选区域的方法不同,在训练和测试期间YOLO可以看到整个图像,所以它隐式的编码相关类的上下文信息及外观。Fast R-CNN,一种*的检测方法,会从背景中检测出错误的物体这是由于它无法看到更大的上下文信息,YOLO出现背景误差的概率是Fast R-CNN的一半。

第三,YOLO学习图像的抽象特征。当在自然图像上进行训练,并在艺术品上测试时,YOLO的效果大幅优于DPM和R-CNN等*检测方法。由于YOLO是高度抽象化的,所以在应用到新的领域或者有意外输入时不太会出现故障。

YOLO 在检测准确率上仍然大幅落后于最好的检测方法。虽然YOLO可以很快的识别出图像中的物体,但是在精准定位物体尤其是较小的物体位置上还需要更多的努力。我们在实验中正进一步测试如何平衡这些方面。我们所有的训练和测试代码都是开源的,还提供一些预训练的模型可供下载。

2.统一检测 Unified Detection

我们集成物体检测的单个组件到单一神经网络中。我们的网络使用整个图像的特征来预测每个边界框,网络还同时预测所有类的所有边界框,这也就意味着我们的网络全面的预测整个图像和图像中的所有的类。YOLO网络的设计保证能够实现端到端的训练和实时检测的速度,同时实现较高的检测平均精度。

我们的系统将输入图像划分成S × S个网格。如果一个物体的中心点在某个网格中,则这个网格负责检测这个物体。

每个网格单元预测B个边界框以及每个边界框的置信度。这些置信度反映了网络模型对该边界框是否含有物体的信心,以及边界框位置预测的准确度。 在形式上我们将置信度定义为:Pr(Object)IOUpredtruthPr (Object)*IOU^{truth}_{pred} 如果网格中不包含物体则置信度为0。否则我们想要使置信度分数等于预测边界框和真实边界框的IOU。

每个边界框有5个预测值:x,y,w,hconfidence。(x,y)代表预测边界框的中心点坐标,w,h是边界框的宽度和高度,confidence是预测边界框和真实边界框的IOU。

每个网格预测C个条件类别概率, Pr(ClassiObject)Pr(Class _i |Object),这是网格中含有物体的条件下属于某个类别的概率。每个网格只预测一组条件类别概率,B个边界框公用。
测试时我们将条件类概率和confidence相乘:
Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(Classi)IOUpredtruthPr(Class_i|Object) ∗ Pr(Object) ∗ IOU^{truth}_{pred} = Pr(Class_i) ∗ IOU^{truth}_{pred}
这为我们提供了每个边界框的类别分值 ,这些得分值代表该类别物体出现在框中的概率和边界框与物体的拟合程度。

YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

图片2:网络模型。我们的模型将检测当做一个回归问题。网络将输入图像划分成 S ×S个网格,每个网格预测B个边界框、B个confidence、一个C位的类别条件概率。这些预测被编码为*S × S × (B * 5 + C)*个张量。

为了在PASCAL VOC数据集上评估YOLO,我们使用S = 7,B = 2,C = 20(因为PASCAL VOC数据集中有20个标记类)。最终预测结果是7 × 7 × 30张量。

2.1 网络设计 Network Design

我们将模型以卷积神经网络来实现,在PASCAL VOC数据集上评估。网络的初始卷积层用来提取图像特征,全连接层用来预测类别概率和坐标。

我们的网络结构受到图像分类网络GoogLeNet的启发,我们的网络包括24层卷积层和2层全连接层,不同于GoogLeNet使用的Inception块,我们使用和Lin等人一样的结构,一个1×1卷积层后面跟一个3×3卷积层。完整的网络结构。

我们同样训练了一个快速版本YOLO来推进检测速度。Fast YOLO 使用较少的卷积层(9层而不是24层),和更小的卷积核。除了网络较小,Fast YOLO和YOLO训练和测试参数是一样的。

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

YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

图3:网络架构。我们的检测网络有24个卷积层,其次是2个全连接层。交替使用的1×1卷积层降低前一层的特征空间。我们用输入图像的一半分辨率(224x224)预来训练卷积层在ImageNet分类任务上,然后在检测时将分辨率加倍。

2.2 训练 Training

我们在ImageNet 1000类数据集上预训练我们的卷积层。预训练时我们使用图3中的前20为向量、一个平均池化层、一个全连接层。我们训练这个网络一周时间, 在ImageNet 2012数据集中获得了88%准确率排名位于前5名,与 Caffe上训练的模型中的GoogLeNet模型相当。

然后我们转化网络去执行检测。Ren等人提出在预训练模型中加入卷积层和全连接层可以提高性能。根据他们的想法,我们添加了随机初始化参数的4个卷积层和2个全连接层。检测需要细粒度的视觉信息,所以我们将网络输入的分辨率从224×224增加到448×448

我们的最后一层同时预测类别概率和边界框坐标。我们通过图像的宽度和高度,来标准化边界框的宽度和高度至0到1之间,我们将边界框x和y坐标参数化为相对特定网格的偏移量,使其值处于0到1之间。我们对最后一层使用线性激活函数,其他层使用以下激活函数:

φ(x)={x,if x>00.1x,otherwise φ(x) = \begin{cases} x, &&{if\ x>0} \\ 0.1x,&&{otherwise} \end{cases}

我们使用平方和误差来优化模型。使用平方和误差较容易优化,但是不能完全符合我们最大化平均精度的目标。它将定位误差和分类误差同等对待是不太合理的,而且在图像中有很多网格不包含任何物体,将这些网格的置信度趋向于零时的梯度将会超过含有物体的网格的梯度,这会导致网络不稳定,从而使网络在训练初期就出现梯度爆炸。

为了弥补这一点,我们增加了边界框坐标预测损失的权重,并减少了不包含物体的边界框的置信度预测损失的权重。我们使用两个参数λcoordλ_{coord}λnoobjλ_{noobj}来完成这个。我们设置λcoordλ_{coord} = 5和λnoobjλ_{noobj} =0 .5。

平方和误差计算损失时将大框和小框同等对待,同样的一个损失值对大框的影响小于对小框的影响。为了解决这个问题,我们计算损失时先对框的宽度和高度求根号再计算平方和。

YOLO为每个网格预测多个边界框。在训练时我们希望每个物体只有一个边界框负责检测这个物体。我们选择和真实物体位置IOU最大的边界框作为负责检测这个物体的边界框。这使得我们的边界框预测变量都负责预测特定物体。所以每个预测变量可以更好地预测边界框尺寸,纵横比或物体类别,从而改善整体召回率。训练期间我们优化下图中的损失函数:
YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译
其中的 Ii jobj\Iota^{obj}_{i\ j}代表的是第i个网格中是否含有物体,以及第i个网格中的第j个边界框负责预测这个物体。

请注意,如果网格中含有物体,损失函数只需考虑分类损失(因此条件类概率在前面讲)。如果这个预测器负责预测真实边界框(和网格中的所有预测器都有最高的IOU),损失函数只考虑预测坐标损失。

我们在PASCAL VOC 2007和2012的训练和验证数据集上对网络进行了大约135个epochs的训练。当在VOC 2012上测试的时候,我们也包含了VOC 2007的测试数据用来训练。训练中我们的batch size为64,momentum为0.9,decay为0.0005。

我们的learning rate(学习率)计划如下:在第一个epoch中我们将learning rate慢慢的从0.001提高到0.01,如果我们从较高的学习率开始训练,由于不稳定的梯度会导致网络发散。我们以0.01训练75个epoch,再以0.001训练30个epoch,以0.0001训练30个epoch。

为了避免过拟合,我们使用了dropout (神经元随机失效)层和数据增强的办法。在第一个连接层之后,速率为0.5的dropout层防止了层之间的联合性。对于数据增强,我们引入达到原始图像大小20%的随机缩放和平移。我们还在HSV色彩空间中随机调整图像的曝光和饱和度达1.5倍。

2.3 前向传播 Inference

和训练时一样,在检测测试图像时只需网络执行一次预测。在PASCAL VOC上为每个图像预测98个边界框,每个边界框预测一个置信度得分。不像基于分类器的检测方法,YOLO因为只需运行一个网络,所以执行速度很快。

网格的设计在边界框预测中强制实现空间多样性。通常我们很清楚物体落入哪个网格中,并且模型为每个物体只预测一个边界框。但是,一些比较大的物体或者是在跨越多个网格边界的物体,可以被多个网格都很好的检测出来(即一个物体被多次检测出来造成多重检测问题)。可以使用NMS(非极大值抑制)来解决这种多重检测的问题。虽然NMS对YOLO性能的影响不像对R-CNN、DPM性能影响那么大,但也能提升2-3%的mAP值。

2.4 YOLO的局限性 Limitations of YOLO

YOLO对边界框预测施加了强烈的空间约束,因为每个网格单元只预测两个框,并且只能有一个类。这种空间约束限制了模型能预测网格附近物体的数量。我们的模型在图像中出现的成群的小物体(比如鸟群)时将会出现物体间的竞争。

由于我们的模型从数据中学习如何预测边界框,因此它遇到新的数据或数据不寻常的高宽比或配置时将较难适应。因为我们的模型在输入图像中有多个下采样层,所以我们的模型是使用相对粗糙的特征来预测边界框。

最后,我们在训练一个损失函数不断提高检测性能时,我们将小边框和大边框的损失同等对待。一个较小损失值对较大的边界框来说影响较小,但是对较小的边界框则意味着会极大地影响IOU。我们的误差主要来自检测定位误差。

3.与其他检测系统对比 Comparison to Other Detection Systems

物体检测是计算机视觉领域的核心问题。检测流程通常是从输入图像中提取一组特征开始的。然后分类器或定位器在特征空间中识别物体。这些分类器或定位器在整个图像上或在图像中某些区域子集上以滑动窗口方式运行。我们将YOLO检测系统与几个*检测框架进行了比较,突出了主要的相似点和不同点。

4.实验 Experiments

首先我们在PASCAL VOC 2007上对比YOLO和其他实时检测系统。为了理解YOLO和多个R-CNN变体的区别,我们探讨了在VOC 2007上YOLO和Fast R-CNN(R-CNN系列变体中性能最高的版本)的损失。基于不同的错误文件,我们展示了YOLO可以重新调整Fast R-CNN的检测并且减少背景误报的错误,从而显著的提高性能。我们还展示了在VOC 2012上的测试性能,并和当前最先进的方法的mAP对比。最后,我们展示了在两个艺术品数据集上,YOLO比其他检测器更容易迁移到其他领域。

4.1 和其他实时系统对比 Comparison to Other Real-Time Systems

对象检测的许多研究工作都集中在快速制作标准检测管道上。然而,只有Sadeghi等人,创造了一个实时检测系统(每秒30帧或更快),我们将YOLO与他们在30Hz或100Hz下运行的DPM的GPU实现进行比较。而其他人的努力没有达到实时检测的要求。我们还比较了它们的相对mAP和速度,以检查物体检测系统的准确性和性能之间的权衡。

Fast YOLO是在PASCAL上最快的物体检测方法,而且据我们所知它也是目前最快的物体检测方法。它达到了52.7%的mAP,这比以前的实时检测系统的准确率高出一倍以上。YOLO在保持实时性能的同时将mAP提高到63.4%。

我们也用VGG-16来训练YOLO。这个模型比YOLO准确率更高但是速度降低很多。它与依赖于VGG-16的其他检测系统相比是更有效的,但由于它达不到实时系统速度要求,所以本文的其他部分将重点放在我们的这个更快的模型上。

最快的DPM可以在不牺牲太多mAP的情况下有效加速DPM,但仍然会将实时性能降低2倍。与神经网络方法相比,它还受到DPM检测精度相对较低的限制。

R-CNN减去R用静态边界框提议取代选择性搜索。虽然它的速度比R-CNN速度快得多,但是它还还达不到实时的要求, 而且因为没有很好的建议框所以精度很受影响。

快速R-CNN加速了R-CNN的分类阶段,但仍然依赖于选择性搜索,每个图像大约需要2秒才能生成建议边界框。所以虽然它的mAP很高,但是速度只有0.5 fps达不到实时速度要求。

目前的Fast R-CNN使用一个神经网络替代选择性搜索来生成建议边界框。比如:Szegedy等人。在我们的测试中,他们最精确的模型速度达到7 fps,而较小的,不太精确的模型以速度达到18 fps。VGG-16版本的Fast R-CNN比YOLO的mAP高10,但是速度比YOLO慢6倍。Zeiler-Fergus Faster R-CNN仅比YOLO慢2.5倍,但是精度还是不及YOLO。

Real-Time Detectors Train mAP FPS
Fast YOLO 2007+2012 52.7 155
YOLO 2007+2012 63.4 45
Less Than Real-Time Train mAP FPS
YOLO VGG-16 2007+2012 66.4 21

4.2.VOC 2007误差分析 VOC 2007 Error Analysis

为了进一步研究YOLO和最先进的检测器之间的差异,我们将详细分析在VOC 2007上的检测结果。我们将YOLO与Fast R-CNN进行比较,因为Fast R-CNN是P ASCAL上性能最高的检测器之一,它的检测是公开的。我们使用Hoiem等人的方法和工具。对于测试时的每个类别,我们查看该类别的前N个预测。 每个预测都是正确的,或者根据错误类型进行如下分类:

4.3. Fast R-CNN和YOLO相结合 Combining Fast R-CNN and YOLO

为了进一步研究YOLO和最先进的检测器之间的差异,我们将详细分析在VOC 2007上的检测结果。我们将YOLO与Fast R-CNN进行比较,因为Fast R-CNN是P ASCAL上性能最高的检测器之一,它的检测是公开的。

我们使用Hoiem等人的方法和工具[19]。对于测试时的每个类别,我们查看该类别的前N个预测。 每个预测都是正确的,或者根据错误类型进行如下分类:

  • 正确:正确类别 并且 IOU>.5
  • 定位:正确类别 并且 .5>IOU>.1
  • 相似:相似的类别 并且 IOU>.1
  • 其他:类别错误 并且IOU>.1
  • 背景:所有类别上IOU<.1

YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

图片4.错误分析 Fast R-CNN vs. YOLO 这些图表反映了在各个类别的得分最高的前N个预测中定位错误和背景错误的比例。(在该类别中N =#个目标)

图4显示了所有20个类中平均每种错误类型的细分。YOLO努力的去准确定位物体。YOLO中的定位错误比其他所有类型错误之和还多。Fast R-CNN的定位错误更少但是背景错误更多,它最好的检测结果中有13.6%是假阳(本来不含有物体误报为有物体)。Fast R-CNN对背景的误报错误是YOLO的三倍。

与Fast R-CNN相比,YOLO的背景误报错误要少得多。 通过使用YOLO减小Fast R-CNN的背景误报错误,我们可以显着提升性能。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了一个类似的框。如果确实如此,我们会根据YOLO预测的概率和两个框之间的重叠来提高该预测得分。

最好的Fast R-CNN模型在VOC 2007测试集上获得了71.8%的mAP。当与YOLO结合使用时,其mAP增加了3.2%达到75.0%。 我们还尝试将最好的Fast R-CNN模型与其他几个版本的Fast R-CNN相结合。 这些结合使mAP小幅增加0.3%和0.6%之间。

YOLO带来的性能提升不是模型集成的结果,因为集成不同版本的Fast R-CNN几乎没有什么性能提升。相反,正是因为YOLO在测试中犯了各种各样的错误,导致它能很有效地提升Fast R-CNN的性能。不幸的是因为我们是分别训练各个模型然后结合结果,所以系统没有从YOLO的快速性上受益,速度没有什么提高。但是,因为YOLO速度很快,所以相对单独的Fast R-CNN,结合YOLO之后不会增加多少计算时间。

mAP Combined Gain
Fast R-CNN 71.8 - -
Fast R-CNN (2007 data) 66.9 72.4 .6
Fast R-CNN (VGG-M) 59.2 72.4 .6
Fast R-CNN (CaffeNet) 57.1 72.1 .3
YOLO 63.4 75.0 3.2

VOC 2007的模型组合实验。我们研究了将各种模型与最佳版本的Fast R-CNN相结合的效果。其他模型和Fast R-CNN结合仅带来了较小的性能提升,而和YOLO结合则带来显著的性能提升。

YOLO带来的性能提升不是模型集成的结果,因为集成不同版本的Fast R-CNN几乎没有什么性能提升。相反,正是因为YOLO在测试中犯了各种各样的错误,导致它能很有效地提升Fast R-CNN的性能。不幸的是因为我们是分别训练各个模型然后结合结果,所以系统没有从YOLO的快速性上受益,速度没有什么提高。但是,因为YOLO速度很快,所以相对单独的Fast R-CNN,结合YOLO之后不会增加多少计算时间。
YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

PASCAL VOC 2012排行榜。 截至2015年11月6日,YOLO与完整comp4(允许外部数据)公共排行榜相比。针对各种检测方法显示了平均精度和每个类平均精度。YOLO是唯一的实时检测器。 快速R-CNN + YOLO得分第四高的方法,比快速R-CNN提高2.3%。

4.4.VOC 2012结果 VOC 2012 Results

在VOC 2012测试集中,YOLO的mAP分数为57.9%。这低于现有技术水平,更接近使用VGG-16的原始R-CNN,参见表3。与最接近的竞争对手相比,我们的系统在小物体检测时有物体间竞争。在瓶子,羊,电视/监视器等类别上,YOLO得分比R-CNN或Feature Edit低8-10%。然而,在其他类别如猫和火车上,YOLO实现了更高的性能。我们的Fast R-CNN + YOLO组合模型是性能最高的检测方法之一。 Fast R-CNN从与YOLO的组合中获得了2.3%的提升,使其在公共排行榜上提升了5位。

4.5. 可推广性:艺术作品中的人物检测Generalizability: Person Detection in Artwork

用于对象检测的学术数据集是从同一分布中提取训练和测试数据。 在实际应用中,很难预测所有可能的用例,测试数据可能与系统之前的情况不同。我们将YOLO与其他检测系统在毕加索数据集和人物艺术数据集上进行了比较,这两个数据集是用来测试艺术品中的人员检测。
YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

VOC 2007 Picasso People-Art
AP AP BestF1 AP
YOLO 59.2 59.3 0.590 45
R-CNN 54.2 10.4 0.226 26

展示了YOLO和其他系统的性能比较。作为参考,我们提供了只在VOC2007上训练的模型的人员检测AP。 Picasso模型在VOC 2012上训练,而People-Art 在VOC2010上训练。

R-CNN在VOC 2007上有较高的AP,但是在艺术品领域性能就急剧下降。R-CNN使用选择性搜索来调整自然图像的建议边界框。 R-CNN中的分类器步骤只能看到小区域,所以需要很好的建议边界框。

DPM在应用于艺术品时可以很好的保持它的AP。之前的工作认为DPM表现良好是因为它具有物体的形状和布局的空间模型。虽然DPM不会像R-CNN那样退化,但是它的起始AP比较低。

5. 实地场景的实时检测 Real-Time Detection In The Wild

YOLO是一款快速而准确的检测器,非常适合应用在计算机视觉领域。我们将YOLO连接到网络摄像头,并验证它是否保持实时性能,计算时间时包括从摄像头获取图像并显示检测结果的时间。由此生成的系统是交互式的。虽然YOLO可以单独处理图像,但是当它和网络摄像头连接起来时就像一个追踪系统,在物体运动或者变化的时候实时检测系统。

YOLO(You Only Look Once:Unified, Real-Time Object Detection)  YOLOv1 论文翻译

YOLO在检测线上的艺术品图片和自然图片的表现。虽然它将一个人识别成飞机但是准确性还是很高的

6. 结论 Conclusion

我们介绍了一款一体化(端到端)的物体检测系统YOLO。我们的模型结构很简单,可以在整个图像上进行训练。与基于分类器的方法不同,YOLO针对与检测性能直接相关的损失函数来训练,而且整个模型是联合训练的。

Fast YOLO是目前文献中最快的通用物体检测系统,YOLO引领目前最先进的实时物体检测技术。YOLO还可以很好的迁移到新的领域,这使它成为需要快速高效的物体检测系统的应用的理想选择。

本文地址:https://blog.csdn.net/puiopp63/article/details/107334839