文献阅读记录2-YOLO9000: Better, Faster, Stronger

我只是翻译或转载文献,截屏论文图片,记录下阅读记录。如有侵权,请联系删帖。

原标题: YOLO9000: Better, Faster, Stronger
原作者: Joseph Redmon, Ali Farhadi

YOLO官网:YOLO: Real-Time Object DetectionYou only look once (YOLO) is a state-of-the-art, real-time object detection system.http://pjreddie.com/yolo9000/
论文链接(arxiv地址在后面):

https://arxiv.org/abs/1612.08242https://arxiv.org/abs/1612.08242
---------------------------------------------------------正文开始------------------------------------------------------------

 Abstract

       我们介绍了YOLO9000,一个先进的实时目标检测系统,可以检测超过9000个对象类别。首先,我们提出了对YOLO检测方法的各种改进,既新颖又借鉴了以前的工作。改进后的模型YOLOv2在pascalvoc和COCO等标准检测任务上是最先进的。使用一种新颖的多尺度训练方法,相同的YOLOv2模型可以在不同的尺寸下运行,在速度和准确性之间提供了一个简单的折衷。在67 FPS下,YOLOv2在VOC 2007上得到76.8 mAP。在40帧的FPS下,YOLOv2获得78.6 mAP,比使用ResNet和SSD的Faster RCNN等最先进的方法表现得更好,同时仍然运行得更快。最后,我们提出了一种联合训练目标检测和分类的方法。利用该方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000。我们的联合训练允许YOLO9000预测没有标记检测数据的对象类的检测。我们在ImageNet检测任务上验证我们的方法。YOLO9000在ImageNet检测验证集上获得19.7 mAP,尽管它只有200个类中的44个类的检测数据。在156个不在COCO中的类中,YOLO9000得到16.0 mAP。YOLO9000可以实时预测9000多种不同对象类别的检测结果。

1. Introduction

一般用途的物体检测应快速、准确,并能识别各种各样的物体。自从引入神经网络以来,检测框架变得越来越快和准确。然而,大多数检测方法仍然局限于一小部分对象。

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

我们希望检测规模到目标分类的水平。然而,为检测而标记图像比为分类或标签而标记要昂贵得多(标签通常是用户免费提供的)。因此,我们不太可能看到与分类规模相同的检测数据集在不久的将来。

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

我们还提出了一个联合训练算法,允许我们训练目标检测器的检测和分类数据。我们的方法利用标记检测图像来学习精确定位目标,同时使用分类图像来增加其词汇量和鲁棒性。

利用这种方法,我们训练了YOLO9000,一个实时的目标检测器,可以检测9000多种不同的对象类别。首先,我们对基本的YOLO检测系统进行改进,生产出最先进的实时探测器YOLOv2。然后我们使用我们的数据集组合方法和联合训练算法,在ImageNet和COCO的检测数据上对9000多个类训练一个模型。我们所有的代码和预先训练的模型都可以在线访问YOLO: Real-Time Object Detection

2. Better 

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

计算机视觉通常倾向于更大、更深的网络。更好的表现往往取决于训练更大的网络或将多个模型组合在一起。然而,对于YOLOv2,我们想要一个更精确且速度更快的探测器。我们没有扩大我们的网络,而是简化网络,然后使表示更容易学习。我们将过去工作中的各种想法与我们自己的新概念结合起来,以提高YOLO的性能。在表2中可以找到结果的摘要。

批归一化处理(Batch Normalization)。批处理规范化导致了收敛性的显著改善,同时消除了对其他形式的正则化[7]的需要。通过在YOLO的所有卷积层上添加批处理归一化,我们在mAP上得到了超过2%的改进。批处理规范化还有助于规范化模型。通过批量归一化,我们可以在不过度拟合的情况下从模型中去除dropout。 

高分辨率的分类器(High Resolution Classifier)。所有最先进的检测方法使用分类器预先训练在ImageNet[16]。从AlexNet开始,大多数分类器都对输入的图像进行操作,图像较小than256×256[8]。原始的YOLO训练分类器网络at224×224and将检测分辨率提高到448。这意味着网络必须同时切换到学习对象检测和广告只是新的输入分辨率。

对于YOLOv2,我们首先在ImageNet上对full448×448resolution上的分类网络进行了10次微调。这给了网络时间来调整它的过滤器,以便更好地处理更高分辨率的输入。然后,我们在检测时对产生的网络进行微调。这种高分辨率的分类网络使我们的mAP增加了近4%。

卷积锚框(Convolutional With Anchor Boxes)。YOLO利用卷积特征提取器上的全连接层直接预测边界盒的坐标。与直接预测坐标不同,Faster R-CNN使用精挑的先验[15]预测边界盒。在Faster R-CNN中,仅使用卷积层的区域提议网络(RPN)预测锚盒的偏移量和置信度。由于预测层是卷积的,RPN在特征图的每个位置预测这些偏移量。预测偏移量而不是坐标简化了问题,使网络更容易学习。

我们从YOLO中删除了完全连接的层,并使用锚盒来预测边界盒。首先,我们消除了一个池化层,使网络的卷积层输出的分辨率更高。我们还缩小了网络,以操作416输入图像,而不是448×448。我们这样做是因为我们希望在特征图中有奇数个位置,所以只有一个中心单元格。物体,尤其是大的物体,倾向于占据图像的中心,所以最好在中心有一个单独的位置来预测这些物体,而不是附近的四个位置。YOLO的卷积层对图像进行了32倍的下采样,因此通过使用输入图像416,我们得到了输出特征映射of13×13。

当我们移动到锚盒时,我们还将类预测机制与空间位置解耦,而是为每个锚盒预测类和对象性。在YOLO之后,目标性预测仍然预测基础真理的欠条和提议的方框,而类预测预测在存在对象的情况下该类的条件概率。

使用锚盒,我们得到一个小的准确性下降。YOLO仅预测每幅图片有98个盒子,但我们的模型预测每幅图片有超过1000个盒子。如果没有锚盒,我们的中间型号得到69.5 map,召回率为81%。加上锚盒,我们的型号获得69.2 map,召回88%。虽然mAP降低了,但召回率的增加意味着我们的模型有更多的改进空间。

维集群(Dimension Clusters)。在YOLO中使用锚盒时,我们遇到了两个问题。首先,盒子的尺寸是手工挑选的。网络可以学会适当地调整盒子,但如果我们为网络选择更好的先验开始,我们可以让网络更容易地学会预测好的检测。

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

 我们对k和plot的各种值运行k-means,绘制出与质心最近的平均IOU,见图2。我们选择k= 5作为模型复杂度和高召回率之间的权衡。聚类质心与精挑细选的锚盒有显著不同。有更少的短,宽的盒子和更多的高,薄的盒子。我们将平均欠条与我们的集群策略和表1中精选的锚点盒的最接近的优先级进行比较。在只有5个先验时,质心的表现类似于9个锚盒,平均欠条为61.0,而不是60.9。如果我们使用9个质心,我们会看到更高的平均欠条。这表明使用k-means来生成我们的边界框以一个更好的表示开始模型,并使任务更容易学习。

 直接定位预测(Direct location prediction)。当使用锚盒与YOLO时,我们遇到了第二个问题:模型不稳定性,特别是在早期的迭代中。大多数的不稳定性来自于预测盒子的(x, y)位置。在区域提议网络中,网络预测值为tx和 ty, (x, y)中心坐标计算为:

 例如,一个tx= 1的预测将使盒子向右移动锚盒的宽度,一个tx=−1的预测将使它向左移动同样的量。这个公式是没有约束的,所以任何锚盒都可以在图像中的任何一点结束,而不管盒子预测的位置是什么。在随机初始化的情况下,模型需要较长时间稳定才能预测出合理的偏移量。我们使用YOLO的方法来预测相对于网格单元位置的位置坐标,而不是预测偏移量。这将地面真理限制在0和1之间。我们使用逻辑激活将网络的预测限制在这个范围内。网络预测输出特征图中每个单元格处有5个边界框。网络预测每个边界框的5个坐标,tx,ty,tw,th和to。如果单元格从图像的左上角偏移(cx,cy),并且之前的边界框有宽度和高度pw,ph,那么预测对应于:

 由于我们对位置预测进行了约束,使得参数化更容易学习,使网络更加稳定。使用维度簇并直接预测边界盒中心位置,比使用锚盒的版本提高了近5%的YOLO。

细粒度特性(Fine-Grained Features)。修改后的YOLO预测一个13×13feature地图上的检测结果。虽然这对于大型对象已经足够了,但它可能会受益于用于本地化较小对象的更细粒度特性。更快的R-CNN和SSD都在网络的不同特征映射上运行他们的提案网络,以获得一系列的分辨率。我们采用不同的方法,简单地添加一个透传层,该透传层带来了以前层26×26resolution的特性。

直通层通过将相邻特征叠加到不同的通道而不是空间位置,将高分辨率特征与低分辨率特征串联起来,类似于ResNet中的身份映射。这会将26×26×512feature地图转换为13×13×2048功能图,可以与原始功能连接。我们的检测器运行在这个扩展的特性映射之上,这样它就可以访问细粒度的特性。这将带来1%的性能提升。

多尺度的训练(Multi-Scale Training.)。原始的YOLO使用输入分辨率为448×448。随着锚盒的添加,我们改变了分辨率to416×416。然而,由于我们的模型只使用卷积和池层,所以可以动态调整大小。我们希望YOLOv2能够在不同大小的图像上运行,所以我们将其训练到模型中。

而不是固定的输入图像大小,我们改变网络每几次迭代。我们的网络每10批随机选择新的图像尺寸。由于我们的模型将样本降低了32倍,我们从以下32的倍数中提取:{320,352,…,608}。因此,最小的选项is320×320and最大的选项is608×608。我们调整了网络的规模,并继续训练。

这种机制迫使网络学会在各种输入维度上进行预测。这意味着同一网络可以预测不同分辨率的检测结果。网络在较小的尺寸下运行得更快,因此YOLOv2提供了速度和准确性之间的轻松权衡。

在低分辨率下,YOLOv2是一种廉价、相当精确的探测器。在288×288在mAP的情况下以超过90 FPS的速度运行,几乎和Fast R-CNN一样好。这使得它成为小gpu,高帧率视频,或多个视频流的理想选择。

 在高分辨率下,YOLOv2是一种先进的检测器,在VOC 2007上具有78.6 mAP,但仍高于实时速度。YOLOv2与其他框架关于VOC 2007的比较见表3。

进一步的实验(Further Experiments)。我们训练YOLOv2进行检测在2012年VOC。表4显示了YOLOv2与其他先进检测系统的性能比较。YOLOv2实现了73.4 mAP,同时比其他方法运行速度快得多。我们也训练COCO,见表5。在VOC指标(IOU = .5)上,YOLOv2得到44.0 mAP,与SSD和更快的R-CNN相当。

3. Faster

我们希望检测是准确的,但我们也希望它是快速的。大多数检测应用,比如机器人或自动驾驶汽车,都依赖于低延迟预测。为了最大限度地提高性能,我们设计YOLOv2从头开始的速度非常快。

大多数检测框架依赖于VGG-16作为基本特征提取器[17]。VGG-16是一个功能强大、精确的分类网络,但它却不必要地复杂。VGG-16的卷积层需要306.9亿个浮点运算来对224×224resolution上的一张图像进行一次单次传递。

YOLO框架使用一个基于Googlenet架构[19]的自定义网络。该网络比VGG-16更快,一次转发只使用了85.2亿次操作。然而,它的准确性略低于VGG16。对于单茬,前5位精度at224×224, YOLO的定制模型得到88.0%的ImageNet,相比之下,VGG-16得到90.0%。

Darknet-19。我们提出了一种新的分类模型作为YOLOv2的基础。我们的模型建立在先前的网络设计工作以及该领域的常识基础上。与VGG模型类似,我们主要使用3×3filters,并在每个池化步骤[17]后将通道数量加倍。在网络中的网络(NIN)的工作之后,我们使用全局平均池来进行预测,并使用1×1filters来压缩特性表示在3×3卷积层[9]。我们使用批归一化来稳定训练,加快收敛速度,并将模型规范化。

我们最后的模型叫做Darknet-19,它有19个卷积层和5个最大池层。完整的描述见表6。Darknet-19只需要55.8亿次操作就可以处理一张图像,但在ImageNet上,top-1准确率达到72.9%,top-5准确率达到91.2%。


训练分类。使用Darknet神经网络框架[13],我们在标准ImageNet 1000分类数据集上训练网络160个时代,使用初始学习率为0.1的随机梯度下降,多项式率衰减为4次幂,权值衰减为0.0005,动量为0.9。在训练期间,我们使用标准的数据增强技巧,包括随机作物、旋转、色调、饱和度和曝光位移。

如上所述,在我们对图像进行初始训练之后,在224×224我们微调我们的网络在一个更大的规模,448。为了进行这种微调,我们使用上述参数进行训练,但只针对10个时期,并以10−3的学习速率开始。由于这一更高的分辨率,我们的网络实现了最高1精度为76.5%,最高前5精度为93.3%。

训练检测(Training for detection.)。我们通过删除最后一个卷积层来修改这个网络以进行检测,取而代之的是在three3×3convolutional层上添加1024个过滤器,每个过滤器后跟一个final1×1convolutional层,该层包含检测所需的输出数量。对于VOC,我们预测有5个盒子,每个盒子有5个坐标,每个盒子有20类,所以有125个过滤器。我们还从final3×3×512layer添加一个直通层到第二个到最后一个卷积层,以便我们的模型可以使用细粒度特性。我们以10−3的起始学习率训练160个时代的网络,并在60和90时代将其除以10。我们使用重量衰减为0.0005,动量为0.9。我们对YOLO和SSD使用了类似的数据增强,包括随机作物、颜色漂移等。我们对COCO和VOC使用相同的培训策略。

4. Stronger

我们提出了一种联合训练分类和检测数据的机制。我们的方法使用标记的图像进行检测,学习检测特定的信息,如边界框坐标预测和目标性,以及如何对常见的对象进行分类。它使用只有类别标签的图像来扩展它可以检测的类别数量。

在训练过程中,我们混合来自检测和分类数据集的图像。当我们的网络看到一个标记为检测的图像时,我们可以基于完整的YOLOv2损失函数反向传播。当它看到一个分类图像时,我们只从架构的特定分类部分反向传播损失。

这种方法提出了一些挑战。检测数据集只有普通的对象和一般的标签,比如“狗”或“船”。分类数据集具有更广泛和更深入的标签范围。ImageNet拥有100多个品种的狗,包括“诺福克梗”、“约克梗”和“贝灵顿梗”。如果我们想在两个数据集上训练,我们需要一个一致的方法来合并这些标签。

大多数分类方法在所有可能的类别中使用软最大值层来计算最终的概率分布。使用softmax假设这两个类是互斥的。这就带来了组合数据集的问题,例如您不想组合的数据集ImageNet和COCO使用这个模型,因为类“诺福克梗”和“狗”并不是互斥的。

相反,我们可以使用多标签模型来合并数据集不假设互斥。这种方法忽略了我们所知道的关于数据的所有结构,例如所有COCO类都是互斥的。

 分级分类(Hierarchical classification)。ImageNet标签是从WordNet中提取出来的,WordNet是一个语言数据库,用于构造概念以及它们如何与[12]相关联。在WordNet中,“Norfolk terrier”和“Y orshire terrier”都是“terrier”的下位词,后者是“hunting dog”的一种,后者是“dog”的一种,后者是“canine”等。大多数分类方法都假设标签是一个平面结构,然而对于组合数据集,结构正是我们所需要的。

WordNet的结构是有向图,而不是树,因为语言是复杂的。例如,“dog”既是“dog”的一种类型,也是“家畜”的一种类型,它们在WordNet中都是同义词集。我们不使用完整的图结构,而是通过从ImageNet中的概念构建一个层次树来简化问题。

为了构建这棵树,我们检查ImageNet中的可视名词,并查看它们通过WordNet图形到根节点(在本例中是“物理对象”)的路径。许多synset只有一条路径通过图,所以首先我们将所有这些路径添加到树中。然后,我们迭代地检查剩下的概念,并添加尽可能少地增长树的路径。所以如果一个概念有两条到根的路径其中一条会给树增加三条边而另一条只会增加一条边,我们选择一条较短的路径。

最后的结果是WordTree,一个可视化概念的层次模型。为了使用WordTree进行分类,我们在每个节点预测问题的条件概率给出该synset的每个下位词的能力。例如,在“梗”节点,我们预测:

如果我们想要计算一个特定节点的绝对概率,我们只需沿着树的路径找到根节点,然后乘以条件概率。所以如果我们想知道一张图片是不是诺福克梗,我们就计算

为了分类,我们假设图像包含一个对象:Pr(物理对象)= 1。

为了验证这种方法,我们在使用1000类ImageNet构建的WordTree上训练Darknet-19模型。为了构建WordTree1k,我们添加了将标签空间从1000扩展到1369的所有中间节点。在训练过程中,我们将地面真相标签贴在树上,这样,如果一幅图像被贴上“诺福克梗”,它也会被贴上“狗”和“哺乳动物”,等等。为了计算条件概率,我们的模型预测了1369个值的向量,我们计算了相同概念的下位词的所有sysnset上的softmax,见图5。

  

使用与之前相同的训练参数,我们的分级Darknet-19达到了71.9%的top-1精度和90.4%的top-5精度。尽管添加了369个额外的概念,并让我们的网络预测树结构,我们的准确性只是略微下降。以这种方式执行分类也有一些好处。对于新的或未知的对象类别,性能会优雅地下降。例如,如果网络看到了一张狗的图片,但不确定它是哪种狗,它仍然会高度自信地预测“狗”,但在下位词中,它的自信程度会降低。

 这种配方也适用于检测。现在,我们不再假设每个图像都有一个对象,而是使用YOLOv2的对象性预测器给我们提供Pr(物理对象)的值。检测器预测一个边界框和概率树。我们沿着树向下遍历,在每次拆分时都采用最高置信路径,直到达到某个阈值并预测该对象类。

Dataset组合与WordTree。我们可以使用WordTree将多个数据集以合理的方式组合在一起。我们只需将数据集中的类别映射到树中的synset。图6显示了使用WordTree组合来自ImageNet和COCO的标签的示例。WordNet是非常多样化的,所以我们可以在大多数数据集上使用这种技术。

 联合分类检测。既然我们可以使用WordTree组合数据集,我们就可以训练我们的联合模型进行分类和检测。我们想要训练一个超大规模的检测器,所以我们使用COCO检测数据集和完整ImageNet发布的前9000个类创建我们的组合数据集。我们还需要评估我们的方法,以便添加来自ImageNet检测挑战的任何类,这些类还没有包括在内。该数据集对应的WordTree有9418个类。ImageNet是一个更大的数据集,所以我们通过过度采样COCO来平衡数据集,这样ImageNet只比原来大4:1。

使用这个数据集,我们训练YOLO9000。我们使用基本的YOLOv2架构,但是只有3个先验而不是5个先验来限制输出大小。当我们的网络看到一个检测图像时,我们将损耗恢复正常。对于分类损失,我们只在标签的相应级别或以上反向传播损失。例如,如果标签是“狗”,我们会将任何错误分配给树下的预测,“德国牧羊犬”和“金毛寻回犬”,因为我们没有这些信息。

当它看到一个分类图像时,我们只反向传播分类损失。为了做到这一点,我们隐含找到了预测该类的最高概率的边界框我们只在预测树上计算损失。我们还假设预测的盒子与地面真相标签至少有重叠。3IOU和我们在此假设的基础上反向传播的对象损失。

通过这种联合训练,YOLO9000学会了使用COCO中的检测数据在图像中找到目标,并学会了使用ImageNet中的数据对各种各样的目标进行分类。

我们在ImageNet检测任务上评估YOLO9000。ImageNet的检测任务与COCO共享44个对象类别,这意味着YOLO9000只看到了大多数测试类别的分类数据。YOLO9000在156个不相连的对象类上得到了19.7 mAP和16.0 mAP,它从来没有看到任何标记的检测数据。这个mAP比DPM得到的结果要高,但是YOLO9000是在不同的数据集上训练的,只有部分监督[4]。它还同时检测9000个其他类别,所有都是实时的。

YOLO9000能很好地学习新物种,但在学习衣服和装备等类别时却很吃力。新的动物更容易学习,因为对对象性的预测很好地概括了《COCO》中的动物。相反,COCO没有任何类型的衣服的包围盒标签,只对人,所以YOLO9000努力模特类别,如“太阳镜”或“泳裤”。

 5. Conclusion

我们介绍了YOLOv2和YOLO9000实时检测系统。在各种检测数据集上,YOLOv2是最先进的,比其他检测系统更快。此外,它可以运行在各种图像大小,以提供速度和准确性之间的平衡。

YOLO9000是通过联合优化检测和分类,实时检测9000多种对象类别的框架。我们使用WordTree将来自不同来源的数据进行组合,并使用我们的联合优化技术在ImageNet和COCO上同时进行训练。YOLO9000是缩小检测和分类之间的数据集大小差距的强有力的一步。

我们的许多技术推广到对象检测之外。ImageNet的WordTree表示为图像分类提供了更丰富、更详细的输出空间。使用分层分类的数据集组合将在分类和分割领域非常有用。像多尺度训练这样的训练技术可以在各种视觉任务中提供好处。

在未来的工作中,我们希望使用类似的技术来进行弱监督图像分割。我们还计划改进我们的检测结果,使用更强大的匹配策略,在训练期间为分类数据分配弱标签。计算机视觉有幸拥有大量的标记数据。我们将继续寻找方法,将不同的数据源和数据结构结合在一起,以制作更强大的视觉世界模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangty1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值