深度学习目标检测论文1(YOLOv1论文的翻译)

前言

因为一些项目需要使用到yolov3,为了能深刻的理解yolov3算法,因而翻译了yolo系列论文。

You Only Look Once:Unified, Real-Time Object Detection

摘要

       我们提出了一种新的目标检测算法:YOLO。先前通过重用分类器实现目标识别,而本文则把目标识别问题看作回归问题,直接解决目标是什么以及目标在哪里的问题。神经网络通过浏览整张图片,可以直接在识别中预测目标是什么并同时给出目标的位置。由于整个检测过程只有一个神经网络,因而可以通过端到端的方法直接优化识别性能。

       这种结构的模型速度非常快。本文基础的YOLO模型可以每秒处理45张图片。一个结构上缩水版本的神经网络: fast yolo,则能够达到每秒处理155帧的惊人速度,同时其mAP检测精度也能够达到其他实时检测算法的两倍。与其他顶级的检测系统相比较,YOLO有较多的定位误差,不过在背景上检测到假阳性的目标次数却并不多。最后,YOLO能够学到目标抽象和泛化的特征,因而当把一张自然图片泛化到其他领域(如艺术)时,YOLO比其他的一些检测方法(包括DPM和R-CNN)更优秀。

1 介绍

        人类只需要扫一眼图片立马就知道了图片中的物体是什么,它们在哪里以及它们在干什么。人类的视觉系统非常快而且非常准确,因而允许我们完成一些比较复杂的工作(比如自动驾驶)。快速准确的目标识别算法能够允许计算机不需要一些专用传感器而实现自动驾驶,能够确保辅助装置把实时的场景信息传递给人类使用者,同时也打开了实现通用快速响应的机器人操作系统的这种可能。

       当前的目标检测算法重用分类器用于目标识别。当进行识别时,这些系统会给对象提供一个分类器,然后对图像不同位置和区域进行分类。像DPM系统,使用了滑动窗口法选择图像的不同位置和区域,然后提供给分类器进行目标识别。

当前大部分的方法如R-CNN,首先使用region proposal 生成可能存在目标的边界框区域,然后对这些精心挑选出来的区域进行分类,精修边界框以消除重复检测区域,并根据场景中的其它目标重新定位边界框。因而基于上述的这些复杂处理流程,目标识别起来特别的慢;而且因为每一个独立的环节都需要进行单独的训练,因而很难优化。

       我们把目标识别问题视作一个回归问题,因而直接根据图片的像素预测出目标的bounding box坐标以及目标类别。基于本文的识别系统,我们只需要看一次图片就能解决目标是什么以及它们在哪里的问题。

        YOLO的结构非常简单,如图1。一个单独的卷积神经网络即能够同时预测多个bounding boxes以及这些boxes的类别概率。YOLO以整张图片进行训练,所以能够直接优化检测的性能。这种统一的模型相比较传统的目标检测方法具有很多的优点。

深度学习目标检测论文1(YOLOv1论文的翻译)_第1张图片

                          Figure 1: The YOLO Detection System. Processing images with YOLO is simple and straightforward.

       1.检测系统把输入图片reshape为448*448;

       2.使用单独的一个卷积神经网络处理图片;

       3.由模型的置信度对所得到的检测进行阈值处理;

       第一,YOLO非常的快。由于本文把目标识别视作回归问题,不需要很复杂的处理流程,所以速度比较快。在测试目标识别时,我们只需要给我们的神经网络一张图片即可。我们的基础神经网络在Tian X GPU 能够达到每秒处理45帧,而快速版本的可以每秒处理150帧。这意味着我们能够以低于25毫秒的延迟实时处理视频流。此外,YOLO的mean average precision大概是其他实时检测精度的两倍。关于我们的系统在网络摄像头上实时运行的演示,请参阅我们的项目网页:http://pjreddie.com/yolo/。
       第二, YOLO使用整张图片进行识别。不同于滑窗法或者是基于region proposal 技术,YOLO无论是在训练还是测试的时候看到的都是一整张照片,因而它隐式地编码了关于类的上下文信息以及它们的外观。 Fast R-CNN, 另外一种顶级的目标检测方法,有时会把背景块误判为目标就是因为它看不到较大的这种上下文关系。与Fast R-CNN相比较,YOLO的背景误检数量少了一半。
       第三,YOLO可以学到目标的抽象特征。当使用一般自然图像进行训练并在艺术作品上进行测试时,YOLO比其他的一些顶级目标检测方法比如DPM和R-CNN表现的更为优异。由于YOLO具有高度泛化能力,因此在应用于新领域或碰到意外的输入时出问题的可能性比较小。
       不过YOLO在精度上还是比一些顶级的目标检测系统还是差一点。尽管YOLO能够快速的识别图像中的物体,但是YOLO还需要努力改善目标的定位精度问题,特别是一些小目标。我们正在实验并努力找到速度和精度的平衡。此外,所有训练和测试程序都是开源的,各种经预训练的模型也都可以使用和下载。

2 统一检测

       我们把目标识别之前所使用的各个独立部分统一为一个单独的神经网络。我们的神经网络以一整张图片作为特征预测所有的目标边界框及目标的类别。这意味着我们的网络全面地推理整张图像和图像中的所有目标。YOLO设计可实现端到端的训练和实时的速度,同时保持较高的平均精度。我们的识别系统把输入图片划分为S*S的网格. 如果某个对象的中心落入到某个网格内,那么这个网格就负责预测这个目标。

       每个网格负责预测B个边界框以及它们的置信度分数。这些置信度分数反映了该模型对边界框是否包含目标的信心,以及模型预测边界框位置的准确程度。这里我们定义置信度为:

如果网格中没有物体,那么置信度为零。否则,我们希望置信度分数等于预测框与真实值之间联合部分的交集(IOU)。

      每个边界框包含了5个预测值:x,y,w, h和置信度。(x,y)坐标表示边界框相对于网格单元边界框的中心。宽度和高度是相对于整张图像预测的。最后,置信度预测表示预测框与实际边界框之间的IOU。

      每个网格还预测了C个条件概率Pr(Class|Object). 这些概率以包含目标的网格单元为条件。每一个网格只预测一组条件概率值,而不管有多少个边界框。

在测试的时候,使用条件概率分别乘以每个boxes的confidence,则得到了每个box在每个类别上的得分。

这些得分代表了每个类别出现在边界框中的概率,以及预测的边界框同目标对象的契合程度。

深度学习目标检测论文1(YOLOv1论文的翻译)_第2张图片

图2:模型。我们的模型把目标识别视作回归问题。它把输入图像分为 S ×S 方格,并且每个方格预测B个边界框,这些边界框的置信度,以及C个类别的概率。这些预测值被编码为S × S × (B ∗ 5 + C) 张量。

      为了在PASCAL VOC上评估YOLO时,我们令S=7,B=2。PASCAL VOC有20个类别的对象,所以C=20。因此,我们最终的预测输出是一个 7 × 7 × 30 张量。

2.1 网络设计

       我们使用卷积神经网络实现我们的模型,并且在PASCAL VOC数据集上进行评估。前面的卷积层提取图像中的特征,而全连接层则预测输出的概率和坐标。

       我们神经网络的结构受到了GoogleNet的启发。本文的神经网络有24个卷积层以及2个全连接层,不过并没有使用GoogleNet的inception 模块,我们的神经网络仅仅在3×3的卷积层后面使用了 1×1 卷积层进行降维。。整个神经网络如图3所示。

深度学习目标检测论文1(YOLOv1论文的翻译)_第3张图片

图3: 结构. 我们的神经网络含有24个卷积层,2个全连接层。选择使用1 × 1的卷积层降低特征空间的维度。我们在ImageNet 上首先进行预训练,并令输入图片的分辨率为(224 × 224);不过当进行识别时,再将恢复分辨率为448 × 448。

       我们还训练了快速版本的YOLO,旨在推动快速目标检测的界限。快速YOLO使用具有较少卷积层(9层而不是24层)的神经网络,在这些层中使用较少的滤波器。除了网络规模之外,YOLO和快速YOLO的所有训练和测试参数都是相同的。
我们网络的最终输出是7×7×30的预测张量。

2.2 训练

       我们在ImageNet 1000类竞赛数据集上对卷积层进行预训练。预训练时,我们使用图3中的前20个卷积层,接着是平均池化层和全连接层(评论:ImageNet是一个分类训练集,所以预训练的时候模型结构与识别的时候不相同)。我们对这个网络进行了大约一周的训练,并且在ImageNet 2012验证集上获得了单一裁剪图像88%的top-5准确率,与Caffe模型池中的GoogLeNet模型相当。我们使用Darknet框架进行所有的训练和推断。

       然后我们转换模型来执行检测。Ren等人表明,预训练网络中增加卷积层和连接层可以提高性能[29]。按照他们的例子,我们添加了四个卷积层和两个全连接层,并且具有随机初始化的权重。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224变为448×448。
       我们的最后一层预测类概率和边界框坐标。我们通过图像宽度和高度来规范边界框的宽度和高度,使它们落在0和1之间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移量,所以它们边界也在0和1之间。

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

深度学习目标检测论文1(YOLOv1论文的翻译)_第4张图片


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

       为了纠正这些问题,我们提高了来自边界框坐标预测的损失,并减小了来自不包含目标边界框的置信度预测损失。我们使用两个参数λcoord和λnoobj来完成这个工作。我们设置λcoord=5和λnoobj=.5。

     平方和误差把大边界框和小边界框的误差等同。而我们的代价函数应该反映出,大边界框小偏差的重要性不如小边界框小偏差的重要性。为了部分解决这个问题,我们直接预测边界框宽度和高度的平方根,而不是宽度和高度。。

       YOLO每个网格单元预测多个边界框。在训练时,每个目标我们只需要一个边界框预测器来负责。我们指定一个预测器“负责”根据哪个预测与真实值之间具有当前最高的IOU来预测目标。这导致边界框预测器之间的专业化。每个预测器可以更好地预测特定大小,方向角,或目标的类别,从而改善整体召回率。

       在训练的时候,我们优化如下的由多个部分构成的代价函数:

深度学习目标检测论文1(YOLOv1论文的翻译)_第5张图片

代表了第i个cell中存在物体;

代表了第j个bounding boxes对该次预测负责。

       注意,如果目标存在于该网格单元中(前面讨论的条件类别概率),则损失函数仅惩罚分类错误。如果预测器“负责”实际边界框(即该网格单元中具有最高IOU的预测器),则它也仅惩罚边界框坐标错误。

       我们对Pascal VOC 2007和2012的训练和验证数据集进行了大约135个迭代周期的网络训练。在Pascal VOC 2012上进行测试时,我们的训练包含了Pascal VOC 2007的测试数据。在整个训练过程中,我们使用了64的批大小,0.9的动量和0.0005的衰减(评论:注意训练参数)。

       我们的学习率方案如下:对于第一个迭代周期,我们慢慢地将学习率从10−3提高到10−2。如果我们从高学习率开始,我们的模型往往会由于不稳定的梯度而发散。我们继续以10−2的学习率训练75个迭代周期,然后用10−3的学习率训练30个迭代周期,最后用10−4的学习率训练30个迭代周期。

      为了避免过度拟合,我们使用丢弃和大量的数据增强。在第一个连接层之后,丢弃层使用=.5的比例,防止层之间的互相适应。对于数据增强,我们引入高达原始图像20%大小的随机缩放和转换。我们还在HSV色彩空间中使用高达1.5的因子来随机调整图像的曝光和饱和度。

2.3 前向传播

      和训练时一样,在检测图像时则之需要神经网络进行一次计算。 在Pascal VOC上,每张图像上网络预测98个边界框和每个框的类别概率。不像基于分类器的检测方法,由于YOLO只需运行一个网络进行计算,所以运行速度很快。
       网格设计强化了边界框预测中的空间多样性。通常我们很清楚物体落入哪个网格中,并且模型为每个物体只预测一个边界框。因而,一些比较大的物体或者是在跨越多个网格边界的物体,可能会被多个网格都很好的检测出来。可以使用NMS(非极大值抑制)来解决这种多重检测的问题。虽然NMS对YOLO性能的影响不像对R-CNN、DPM性能影响那么大,但也能提升2-3%的mAP值。

2.4 YOLO的局限性

      YOLO给与边界框施加了强制的空间约束,也就是一个网格预测两个边界框且只能预测一个类别。这种强制的空间约束限制了我们的模型检测周围物体的数量。因而我们的模型正在努力解决识别出一些成群出现小物体(比如成群飞行的鸟类)的问题。

      由于我们的模型学习从数据中预测边界框,因此它很难泛化到新的、不常见的方向比或配置的目标。我们的模型也使用相对较粗糙的特征来预测边界框,因为我们的架构具有来自输入图像的多个下采样层。

      最后,当我们训练一个近似检测性能的损失函数时,我们的损失函数会同样的对待小边界框与大边界框的误差。大边界框的小误差通常影响较小,但小边界框的小误差对IOU的影响要大得多。我们的主要错误来源是不正确的定位。

3 与其他检测系统对比

4 实验

4.1和其他实时系统对比

4.2. VOC 2007误差分析

4.3 Fast R-CNN和YOLO相结合

4.4 VOC 2012结果

4.5 抽象性 艺术作品中的人物检测

5 实地场景的实时检测

6 结论

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

       快速YOLO是文献中最快的通用目的的目标检测器,YOLO推动了实时目标检测的最新技术。YOLO还很好地泛化到新领域,使其成为依赖快速,强大的目标检测应用的理想选择。

补充:

深度学习目标检测论文1(YOLOv1论文的翻译)_第6张图片

你可能感兴趣的:(论文阅读)