【深度学习论文翻译】YOLO9000: 更好, 更快, 更强(YOLO9000: Better, Faster, Stronger)01

版权声明:本文由 水亦心 出品,转载请注明出处。 https://blog.csdn.net/shuiyixin/article/details/89428417

目录

前言

一、Abstract(摘要)

二、Introduction(引言)

三、Better(更好)

1、Batch Normalization(批标准化)

2、High Resolution Classifier(高分辨率分类器)

3、Convolutional With Anchor Boxes(具有锚盒的卷积)

4、Dimension Clusters(维度聚类)

5、Direct location prediction(直接位置预测)

6、Fine-Grained Features(细粒度功能)

7、Multi-Scale Training(多尺度训练)

8、Further Experiments(进一步实验)


前言

好久没有看YOLO了,有朋友希望我能写一篇关于YOLO v2 的论文翻译。

如果你是第一次看我的博客,可以点击以下链接去看更多有关于YOLO的内容。

【YOLO系列】

1.YOLO v1 论文笔记1:https://blog.csdn.net/shuiyixin/article/details/82533849

2.YOLO v1 论文笔记2:https://blog.csdn.net/shuiyixin/article/details/82560920

3.YOLO v1 代码实战 :https://blog.csdn.net/shuiyixin/article/details/82468870

4.YOLO数据集制作1(含LabelImg工具讲解):https://blog.csdn.net/shuiyixin/article/details/82623613

5.YOLO数据集制作2:https://blog.csdn.net/shuiyixin/article/details/82915105

6.YOLO配置文件解析:https://blog.csdn.net/shuiyixin/article/details/82470128

7.什么是mAP:https://blog.csdn.net/shuiyixin/article/details/86349643

8.“分类” 与 “回归”详解:https://blog.csdn.net/shuiyixin/article/details/88816416

如果你有什么问题,希望跟我能够一起交流,除了通过博客交流外,欢迎你加入我的QQ群,一起交流有关于机器学习、深度学习、计算机视觉有关内容。目前我并未确定具体的研究方向,所以现在 处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:

由于论文本身内容比较多这篇论文我分两次翻译完,这次从摘要开始一直到名为“更好”的章节。

接下来就让我们继续学习这篇论文,跟随这篇论文一起走进YOLO 9000的世界吧!

一、Abstract(摘要)

我们引入了一个先进的实时目标检测系统YOLO9000,可以检测超过9000个目标类别。首先我们计划对yolo的检查方法,以及前期新颖的成果进行大量的改进。改进后的模型YOLO v2在PASCAL VOC和COCO等标准检测任务上是最先进的。我们使用了一种新颖的,多尺度训练方法,同一个YOLOv2模型可以以不同的尺寸中运行,从而在速度和准确性之间提供了一个简单的折衷。在67FPS时,YOLOv2在VOC 2007上获得了76.8 mAP。在40FPS时,YOLOv2获得了78.6 mAP,比使用ResNet的Faster R-CNN和SSD等先进方法表现更出色,同时,运行速度依然很明显地更快。最后我们提出了一种联合训练目标检测与分类的方法。使用这种方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000。我们的联合训练允许YOLO9000预测未标注的检测数据目标类别的检测结果。我们在ImageNet检测任务上验证了我们的方法。YOLO9000在ImageNet检测验证集上获得19.7 mAP,尽管200个类别中只有44个具有检测数据。在没有COCO的156个类别上,YOLO9000获得16.0 mAP。但YOLO可以检测到200多个类别;它预测超过9000个不同目标类别的检测结果。并且它仍然能实时运行。

二、Introduction(引言)

通用目的的目标检测应该快速,准确,并且能够识别各种各样的目标。自从引入神经网络以来,检测框架变得越来越快速和准确。但是,大多数检测方法仍然受限于一小部分目标。

与分类和标记等其他任务的数据集相比,目前目标检测数据集是有限的。最常见的检测数据集包含成千上万到数十万张具有成百上千个标签的图像。分类数据集有数以百万计的图像,数十或数十万个类别。

图1:YOLO9000。YOLO9000可以实时检测许多目标类别( 原图请查看原论文

我们希望检测能够扩展到目标分类的级别。但是,标注检测图像要比标注分类或贴标签要昂贵得多(标签通常是用户免费提供的)。因此,我们不太可能在近期内看到与分类数据集相同规模的检测数据集。

我们提出了一种新的方法来利用我们已经拥有的大量分类数据,并用它来扩大当前检测系统的范围。我们的方法使用目标分类的分层视图,允许我们将不同的数据集组合在一起。

我们还提出了一种联合训练算法,使我们能够在检测和分类数据上训练目标检测器。我们的方法利用标记的检测图像来学习精确定位物体,同时使用分类图像来增加词表和鲁棒性。

使用这种方法我们训练YOLO9000,一个实时的目标检测器,可以检测超过9000种不同的目标类别。首先,我们改进YOLO基础检测系统,产生最先进的实时检测器YOLOv2。然后利用我们的数据集组合方法和联合训练算法对来自ImageNet的9000多个类别以及COCO的检测数据训练了一个模型。

我们的所有代码和预训练模型都可在线获得:http://pjreddie.com/yolo9000/。(这个网址现在已经没有了,它会自动跳转到最新网址)。

三、Better(更好)

与最先进的检测系统相比,YOLO有许多缺点。YOLO与Fast R-CNN相比的误差分析表明,YOLO造成了大量的定位误差。此外,与基于区域提出的方法相比,YOLO召回率相对较低。因此,我们主要侧重于提高召回率和改进定位,同时保持分类准确性。

计算机视觉一般趋向于更大,更深的网络。更好的性能通常取决于训练更大的网络或将多个模型组合在一起。但是,在YOLOv2中,我们需要一个更精确的检测器,它仍然很快。我们不是扩大我们的网络,而是简化网络,然后让表示更容易学习。我们将过去的工作与我们自己的新概念汇集起来,以提高YOLO的性能。表2列出了结果总结。

表2:从YOLO到YOLOv2的历程

 表注:列出的大部分设计决定都会导致mAP的显著增加。有两个例外是切换到具有锚盒的一个全卷积网络和使用新网络。切换到锚盒风格的方法增加了召回,而不改变mAP,而使用新网络会削减33%的计算量

1、Batch Normalization(批标准化

批标准化使得收敛性显著改善,同时消除了对其他形式正则化的需求。通过在YOLO的所有卷积层上添加批标准化,我们在mAP中获得了超过2%的改进。批标准化也有助于模型正则化。通过批标准化,我们可以从模型中删除丢弃而不会过拟合。

2、High Resolution Classifier(高分辨率分类器

所有最先进的检测方法都使用在ImageNet上预训练的分类器。从AlexNet开始,大多数分类器对小于256×256的输入图像进行操作。原来的YOLO以224×224的分辨率训练分类器网络,并将分辨率提高到448进行检测。这意味着网络必须同时切换到学习目标检测和调整到新的输入分辨率。

对于YOLOv2,我们首先ImageNet上以448×448的分辨率对分类网络进行10个迭代周期的微调。这给了网络时间来调整其滤波器以便更好地处理更高分辨率的输入。然后,我们在检测上微调得到的网络。这个高分辨率分类网络使我们增加了近4%的mAP。

3、Convolutional With Anchor Boxes(具有锚盒的卷积

YOLO直接使用卷积特征提取器顶部的全连接层来预测边界框的坐标。Faster R-CNN使用手动选择的先验来预测边界框而不是直接预测坐标。Faster R-CNN中的区域提出网络(RPN)仅使用卷积层来预测锚盒的偏移和置信度。由于预测层是卷积的,所以RPN在特征映射的每个位置上预测这些偏移。预测偏移而不是坐标简化了问题,并且使网络更容易学习。

我们从YOLO中移除全连接层,并使用锚盒来预测边界框。首先,我们消除了一个池化层,使网络卷积层输出具有更高的分辨率。我们还缩小了网络,操作416×416的输入图像而不是448×448。我们这样做是因为我们要在我们的特征映射中有奇数个位置,所以只有一个中心单元。目标,特别是大目标,往往占据图像的中心,所以在中心有一个单独的位置来预测这些目标,而不是四个都在附近的位置是很好的。YOLO的卷积层将图像下采样32倍,所以通过使用416的输入图像,我们得到了13×13的输出特征映射。

当我们移动到锚盒时,我们也将类预测机制与空间位置分离,预测每个锚盒的类别和目标。在YOLO之后,目标预测仍然预测了实际值和提出的边界框的IOU,并且类别预测预测了当存在目标时该类别的条件概率。

使用锚盒,我们在精度上得到了一个小下降。YOLO每张图像只预测98个边界框,但是使用锚盒我们的模型预测超过一千。如果没有锚盒,我们的中间模型将获得69.5的mAP,召回率为81%。具有锚盒我们的模型得到了69.2 mAP,召回率为88%。尽管mAP下降,但召回率的上升意味着我们的模型有更大的提升空间。

4、Dimension Clusters(维度聚类

当锚盒与YOLO一起使用时,我们遇到了两个问题。首先是边界框的大小是手工挑选的。网络可以学习适当调整边界框,但如果我们为网络选择更好的先有经验,我们可以使网络更容易学习它以便预测好的检测。

我们不用手工选择先验,而是在训练集边界框上运行k-means聚类,自动找到好的先验。如果我们使用具有欧几里得距离的标准k-means,那么较大的边界框比较小的边界框产生更多的误差。然而,我们真正想要的是导致好的IOU分数的先验,这是独立于边界框大小的。因此,对于我们的距离度量,我们使用:

我们运行各种k值的k-means,并画出平均IOU与最接近的几何中心,见图2。我们选择k=5作为模型复杂性和高召回率之间的良好折衷。聚类中心与手工挑选的锚盒明显不同。有更短更宽的边界框和更高更细的边界框。

在表1中我们将平均IOU与我们聚类策略中最接近的先验以及手工选取的锚盒进行了比较。仅有5个先验中心的平均IOU为61.0,其性能类似于9个锚盒的60.9。如果我们使用9个中心,我们会看到更高的平均IOU。这表明使用k-means来生成我们的边界框会以更好的表示开始训练模型,并使得任务更容易学习。

图2:VOC和COCO的聚类边界框尺寸

图注:我们对边界框的维度进行k-means聚类,以获得我们模型的良好先验。左图显示了我们通过对$k$的各种选择得到的平均IOU。我们发现$k = 5$给出了一个很好的召回率与模型复杂度的权衡。右图显示了VOC和COCO的相对中心。这两种先验都赞成更薄更高的边界框,而COCO比VOC在尺寸上有更大的变化

表1:VOC 2007上最接近先验的边界框平均IOU

表注:VOC 2007上目标的平均IOU与其最接近的,使用不同生成方法之前未经修改的平均值。聚类结果比使用手工选择的先验结果要更好

5、Direct location prediction(直接位置预测

当YOLO使用锚盒时,我们会遇到第二个问题:模型不稳定,特别是在早期的迭代过程中。大部分的不稳定来自预测边界框的(x,y)位置。在区域提出网络中,网络预测值t_x和t_y,(x,y)中心坐标计算如下:

例如,tx=1 的预测会根据锚定框的宽度将框向右移动,tx=1 的预测会将框向左移动相同的量。

这个公式是不受限制的,所以任何锚盒都可以在图像任一点结束,而不管在哪个位置预测该边界框。随机初始化模型需要很长时间才能稳定以预测合理的偏移量。

我们没有预测偏移量,而是按照YOLO的方法预测相对于网格单元位置的位置坐标。这限制了落到 0 和 1之间的真实值。我们使用逻辑激活来限制网络的预测落在这个范围内。

网络预测输出特征映射中每个单元的5个边界框。网络预测每个边界框的5个坐标,tx ,ty,tw,th 和 to 。如果单元从图像的左上角偏移了 (cx,cy) ,并且边界框先验的宽度和高度为 pw ,ph ,那么预测对应:

由于我们限制位置预测参数化更容易学习,使网络更稳定。使用维度聚类以及直接预测边界框中心位置的方式比使用锚盒的版本将YOLO提高了近 5% 。

6、Fine-Grained Features(细粒度功能

这个修改后的YOLO在13×13特征映射上预测检测结果。虽然这对于大型目标来说已经足够了,但它可以从用于定位较小目标的更细粒度的特征中受益。Faster R-CNN和SSD都在网络的各种特征映射上运行他们提出的网络,以获得一系列的分辨率。我们采用不同的方法,仅仅添加一个通道层,从26x26分辨率的更早层中提取特征。

传递层将高分辨率特征与低分辨率特征连接起来,将相邻特征叠加到不同的通道中,而不是空间位置,类似于ResNet中的标识映射。这将26×26×512功能图转换为13×13×2048功能图,可以与原始功能连接。我们的检测器运行在这个扩展特性图的顶部,这样它就可以访问细粒度特性。这使性能适度提高了1%。

7、Multi-Scale Training(多尺度训练

原来的YOLO使用448×448的输入分辨率。通过添加锚盒,我们将分辨率更改为416×416。但是,由于我们的模型只使用卷积层和池化层,因此它可以实时调整大小。我们希望YOLOv2能够健壮地运行在不同大小的图像上,因此我们可以将其训练到模型中。

我们没有固定的输入图像大小,每隔几次迭代就改变网络。每隔10个批次我们的网络会随机选择一个新的图像尺寸大小。由于我们的模型缩减了32倍,我们从下面的32的倍数中选择:{320,352,...,608}。因此最小的选项是320×320,最大的是608×608。我们调整网络的尺寸并继续训练。

这个制度强制网络去学习如何在各种输入维度上做好预测。这意味着相同的网络可以预测不同分辨率下的检测结果。在更小尺寸上网络运行速度更快,因此YOLOv2在速度和准确性之间提供了一个简单的折衷。

在低分辨率情况下,YOLOv2作为一个简单,并且相当准确的检测器。在288×288时,其运行速度超过90FPS,mAP与Fast R-CNN差不多。这使其成为小型GPU,高帧率视频或多视频流的理想选择。

在高分辨率下,YOLOv2是VOC 2007上最先进的检测器,达到了78.6 mAP,同时仍保持运行在实时速度之上。请参阅表3,了解YOLOv2与VOC 2007其他框架的比较。图4

表3:PASCAL VOC 2007的检测框架

表注:YOLOv2比先前的检测方法更快,更准确。它也可以以不同的分辨率中运行,以便在速度和准确性之间进行简单折衷。每个YOLOv2条目实际上是具有相同权重的相同训练模型,只是以不同的大小进行评估。所有的时间信息都是在Geforce GTX Titan X(原始的,而不是Pascal模型)上测得的。 

图4:VOC 2007上的准确性与速度

8、Further Experiments(进一步实验)

我们在VOC 2012上训练YOLOv2进行检测。表4显示了YOLOv2与其他最先进的检测系统的比较性能。YOLOv2取得了73.4 mAP同时运行速度比竞争方法快的多。我们在COCO上进行了训练,并在表5中与其他方法进行比较。在VOC度量(IOU = 0.5)上,YOLOv2得到44.0 mAP,与SSD和Faster R-CNN相当。

表4:PASCAL VOC2012 test上的检测结果

表注:YOLOv2与最先进的检测器如具有ResNet的Faster R-CNN、SSD512在标准数据集上运行,YOLOv2比它们快2-10倍。 

表5:在COCO test-dev2015上的结果。表参考[11]

 

猜你喜欢

转载自blog.csdn.net/shuiyixin/article/details/89428417