突破极限:YOLO9000 论文解读 - 构建更好、更快、更强大的实时检测系统

YOLOv2 论文全篇完整翻译

在这里插入图片描述


摘要

我们介绍了YOLO9000,这是一种先进的、实时的目标检测系统,可以检测超过9000个物体类别。首先,我们对YOLO检测方法进行了各种改进,包括新颖的方法和借鉴自先前工作的方法。改进后的模型YOLOv2在标准的检测任务(如PASCAL VOCCOCO)上达到了最先进的水平。使用一种新颖的多尺度训练方法,同一个YOLOv2模型可以在不同的尺寸下运行,提供了速度和准确性之间的简便权衡。以67帧每秒的速度,YOLOv2VOC 2007上获得了76.8mAP。以40帧每秒的速度,YOLOv2获得了78.6mAP,性能超过了Faster RCNNResNetSSD等最先进的方法,同时仍然运行速度显著更快。最后,我们提出了一种同时进行目标检测和分类训练的方法。使用这种方法,我们同时在COCO检测数据集和ImageNet分类数据集上训练YOLO9000。我们的联合训练使得YOLO9000能够对没有标注检测数据的物体类别进行检测预测。我们在ImageNet检测任务上验证了我们的方法。尽管只有44个类别有检测数据,但YOLO9000ImageNet检测验证集上获得了19.7mAP。在COCO中没有的156个类别上,YOLO9000获得了16.0mAP。但YOLO不仅可以检测超过200个类别,还可以预测超过9000个不同的物体类别,并且仍然能够实时运行。


在这里插入图片描述

图1:YOLO9000。YOLO9000能够实时检测多种物体类别。


1. 介绍

通用目标检测应该具备快速、准确和能够识别各种物体的能力。自神经网络引入以来,检测框架变得越来越快速和准确。然而,大多数检测方法仍然局限于一小组物体。当前的目标检测数据集与用于分类和标记等其他任务的数据集相比较有限。最常见的检测数据集包含数千到数十万张图像,具有几十到几百个标签[3] [10] [2]。而分类数据集则包含数百万张图像,涵盖数万到数十万个类别[20] [2]。我们希望目标检测能够达到物体分类的水平。然而,与分类数据集相比,标注用于检测的图像要昂贵得多(而标记通常是用户免费提供的)。因此,在可预见的将来,我们不太可能看到与分类数据集规模相当的检测数据集。我们提出了一种新的方法,利用我们已有的大量分类数据,扩展当前检测系统的范围。我们的方法使用层次化的物体分类视图,可以将不同的数据集组合在一起。我们还提出了一种联合训练算法,可以在检测和分类数据上训练目标检测器。我们的方法利用标记的检测图像来学习精确定位物体,同时利用分类图像来增加其词汇量和鲁棒性。使用这种方法,我们训练了YOLO9000,一个可以检测超过9000个不同物体类别的实时目标检测器。首先,我们改进了基础的YOLO检测系统,提出了YOLOv2,一个先进的实时检测器。然后,我们使用数据集组合方法和联合训练算法,从ImageNet中训练了一个涵盖9000多个类别的模型,并使用了来自COCO的检测数据。我们的所有代码和预训练模型都可以在 http://pjreddie.com/yolo9000/上在线获取。

2. Better

相对于最先进的检测系统,YOLO存在各种缺点。与Fast R-CNN相比,对YOLO的错误分析显示出它在定位上出现了大量的错误。此外,与基于区域提议的方法相比,YOLO的召回率相对较低。因此,我们主要关注提高召回率和定位准确性,同时保持分类准确性。计算机视觉通常趋向于更大、更深的网络 [6] [18] [17]。更好的性能通常依赖于训练更大的网络或将多个模型集成在一起。然而,对于YOLOv2,我们希望得到一个更准确的检测器,同时保持速度快。我们并没有扩大网络规模,而是简化网络,并使表示更容易学习。我们汇集了过去的研究中的各种想法,并结合了我们自己的创新概念,来改进YOLO的性能。结果摘要可以在表2中找到。


在这里插入图片描述

表2:从YOLO到YOLOv2的路径。大多数列出的设计决策都显著提高了mAP。有两个例外,即采用全卷积网络与锚框的方法以及使用新网络。采用锚框方法增加了召回率而不改变mAP,而使用新网络降低了计算量33%。


批标准化(Batch Normalization)。批标准化在收敛性方面带来了显著的改进,同时消除了对其他形式的正则化的需求[7]。通过在YOLO的所有卷积层中添加批标准化,我们在mAP上获得了超过2%的改进。批标准化还有助于对模型进行正则化。通过批标准化,我们可以在不过拟合的情况下将模型中的dropout去除。

高分辨率分类器(High Resolution Classifier)。所有最先进的检测方法都使用在ImageNet上进行预训练的分类器[16]。从AlexNet开始,大多数分类器都在小于 256 × 256 256×256 256×256 的输入图像上运行[8]。原始的YOLO 224 × 224 224×224 224×224 的分辨率下训练分类器网络,并将分辨率增加到 448 448 448 用于目标检测。这意味着网络必须同时切换到学习目标检测并适应新的输入分辨率。对于YOLOv2,我们首先在ImageNet上将分类网络以完整的 448 × 448 448×448 448×448 分辨率进行微调训练10epochs。这使得网络有时间调整其滤波器,以在更高分辨率的输入上表现更好。然后,我们在目标检测上对所得到的网络进行微调训练。这个高分辨率分类网络使得我们的mAP增加了将近4%

使用锚框的卷积网络(Convolutional With Anchor Boxes)。YOLO通过在卷积特征提取器之上的全连接层直接预测边界框的坐标。而Faster R-CNN则使用手动选择的先验框来预测边界框[15]。在Faster R-CNN中,只使用卷积层的区域建议网络(RPN)预测先验框的偏移量和置信度。由于预测层是卷积层,在特征图的每个位置上,RPN都会预测这些偏移量。通过预测偏移量而不是坐标,简化了问题,并使网络更容易学习。我们从YOLO中移除了全连接层,并使用锚框来预测边界框。首先,我们去掉一个池化层,使网络的卷积层输出更高的分辨率。我们还将网络缩小,使其在 416 × 416 416×416 416×416 的输入图像上操作,而不是 448 × 448 448×448 448×448。我们这样做是因为我们希望在特征图中有奇数个位置,这样就有一个单独的中心单元格。物体,特别是大物体,倾向于占据图像的中心位置,因此在中心位置预测这些物体比在附近的四个位置预测更好。YOLO的卷积层通过32倍下采样图像,因此通过使用 416 416 416 的输入图像,我们得到一个 13 × 13 13×13 13×13 的输出特征图。当我们转向锚框时,我们还将类别预测机制与空间位置分离,而是为每个锚框预测类别和物体概率。与YOLO类似,物体概率预测仍然预测了真实框与提议框之间的IOU,而类别预测则预测了给定存在物体的情况下该类别的条件概率。使用锚框,我们的模型的准确率略有下降。YOLO每个图像只预测98个框,但使用锚框后,我们的模型预测超过一千个框。在没有锚框的情况下,我们的中间模型在69.5 mAP的情况下具有81%的召回率。而使用锚框后,我们的模型在69.2 mAP的情况下具有88%的召回率。尽管mAP减小了,但召回率的增加意味着我们的模型有更大的改进空间。

维度聚类(Dimension Clusters)。使用YOLO时,我们在使用锚框时遇到了两个问题。第一个问题是框的尺寸是手动选择的。网络可以学习适当地调整框的大小,但如果我们为网络选择更好的先验条件,那么可以使网络更容易学习预测良好的检测结果。

为了解决在YOLO中手动选择锚框尺寸的问题,我们可以使用维度聚类。我们不再手动选择锚框的尺寸,而是通过在训练集的边界框上运行k-means聚类算法来自动找到合适的先验框。如果我们使用传统的k-means算法和欧氏距离,较大的框会产生比较小的框更多的误差。然而,我们真正希望得到的是能够产生良好IOU分数的先验框,而这与框的尺寸无关。因此,我们使用以下距离度量作为我们的指标:

d (  box, centroid  ) = 1 − IOU ⁡ (  box  ,  centroid  ) d(\text { box, centroid })=1-\operatorname{IOU}(\text { box }, \text { centroid }) d( box, centroid )=1IOU( box , centroid )

我们对不同的k值运行k-means聚类,并绘制最接近质心的平均IOU,见图2。我们选择k = 5作为模型复杂度和高召回率之间的良好权衡。聚类质心与手动选择的锚框明显不同。短而宽的框较少,而高而窄的框较多。我们将聚类策略生成的平均IOU与最接近的先验框和手动选择的锚框进行比较,见表1。仅使用5个先验框时,聚类质心的平均IOU9个锚框相似,为61.0,而锚框的平均IOU60.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。聚类方法相比手动选择的先验能够获得更好的结果。


直接位置预测(Direct location prediction)。在使用锚框(anchor boxes)时,我们遇到了第二个问题:模型的不稳定性,特别是在早期迭代中。大部分的不稳定性来自于对框的 ( x , y ) (x,y) xy位置的预测。在区域提议网络中,网络预测了值 t x t_x tx t y t_y ty,并且通过以下方式计算 ( x , y ) (x,y) xy中心坐标:

x = ( t x ∗ w a ) − x a y = ( t y ∗ h a ) − y a \begin{array}{l} x=\left(t_{x} * w_{a}\right)-x_{a} \\ y=\left(t_{y} * h_{a}\right)-y_{a} \end{array} x=(txwa)xay=(tyha)ya

例如,如果预测的 t x = 1 t_x = 1 tx=1,则会将框向右移动一个锚框的宽度,如果预测的 t x = − 1 t_x = -1 tx=1,则会将框向左移动相同的距离。这种公式没有限制,因此任何锚框都可以出现在图像中的任何位置,而不管哪个位置预测了框。使用随机初始化时,模型需要很长时间才能稳定下来,以预测合理的偏移量。为了解决这个问题,我们采用了YOLO的方法,即预测相对于网格单元位置的坐标。这将限制真实值在 0 0 0 1 1 1 之间。我们使用逻辑激活函数将网络的预测限制在这个范围内。网络在输出特征图的每个单元格中预测 5 5 5 个边界框。网络为每个边界框预测 5 5 5 个坐标, t x t_x tx t y t_y ty t w t_w tw t h t_h th t o t_o to。如果单元格相对于图像的左上角偏移了( c x c_x cx, c y c_y cy),并且边界框先验具有宽度和高度 p w p_w pw p h p_h ph,则预测对应如下:

在这里插入图片描述

由于我们限制了位置预测,参数化更容易学习,使网络更加稳定。结合使用尺寸聚类和直接预测边界框中心位置,相比使用锚框的版本,改进了近5%YOLO性能。

这个修改后的YOLO在一个 13 × 13 13×13 13×13 的特征图上进行目标检测。虽然对于大型对象来说这已经足够,但对于定位较小对象来说,使用更精细的特征可能会有所好处。Faster R-CNNSSD在网络中的不同特征图上运行它们的提议网络以获得一系列分辨率。我们采用了不同的方法,只是简单地添加了一个经过层,将 26 × 26 26×26 26×26 分辨率的较早层的特征带入。经过层通过将相邻特征堆叠到不同通道而不是空间位置,将高分辨率特征与低分辨率特征连接起来,类似于ResNet中的恒等映射。这将 26 × 26 × 512 26×26×512 26×26×512 的特征图转换为 13 × 13 × 2048 13×13×2048 13×13×2048 的特征图,并可以与原始特征进行连接。我们的检测器在这个扩展的特征图上运行,以便可以获得细粒度的特征。这会带来1%的性能提升。

多尺度训练(Multi-Scale Training)。原始的YOLO模型使用 448 × 448 448×448 448×448 的输入分辨率。随着锚框的引入,我们将分辨率改为 416 × 416 416×416 416×416。然而,由于我们的模型仅使用卷积和池化层,因此可以动态调整大小。我们希望YOLOv2能够适应不同大小的图像运行,因此我们将这一特性训练到模型中。与固定输入图像大小不同,我们每隔几个迭代就改变网络。每经过10个批次,我们的网络会随机选择一个新的图像尺寸。由于我们的模型通过32的倍数进行下采样,我们选择以下32的倍数:{320, 352, ..., 608}。因此,最小的选项是 320 × 320 320×320 320×320,最大的选项是 608 × 608 608×608 608×608。我们将网络调整为该尺寸并继续训练。这种方式迫使网络在各种输入尺寸下学习良好的预测。这意味着同一网络可以在不同的分辨率下进行目标检测。网络在较小的尺寸下运行速度更快,因此YOLOv2在速度和准确性之间提供了一种简单的权衡。在低分辨率下,YOLOv2作为一种廉价且相对准确的检测器。在 288 × 288 288×288 288×288 的分辨率下,它以超过90 FPS的速度运行,mAP几乎与Fast R-CNN相当。这使其非常适合较小的GPU、高帧率视频或多个视频流。在高分辨率下,YOLOv2是一种具有78.6 mAP的最先进检测器,同时仍保持实时速度。请参阅表3以比较YOLOv2VOC 2007上的其他框架。见图4。


在这里插入图片描述

图3:具有尺寸先验和位置预测的边界框。我们使用聚类中心作为基准,预测边界框的宽度和高度偏移量。我们使用Sigmoid函数预测边界框的中心坐标相对于滤波器应用位置的相对位置。


在这里插入图片描述

图4:在VOC 2007上的准确率和速度。


进一步的实验(Further Experiments)。我们在VOC 2012数据集上训练了YOLOv2进行目标检测。表4展示了YOLOv2与其他最先进的检测系统的性能对比。YOLOv2在达到73.4mAP的同时,运行速度远远超过了竞争方法。我们还在COCO数据集上进行训练,并在表5中与其他方法进行比较。在VOC指标(IOU = 0.5)上,YOLOv2获得了44.0mAP,与SSDFaster R-CNN相当。


在这里插入图片描述

表3:在PASCAL VOC 2007上的检测框架。YOLOv2比之前的检测方法更快速和准确。它还可以在不同的分辨率下运行,以便在速度和准确性之间进行简单的权衡。每个YOLOv2条目实际上是相同的训练模型,具有相同的权重,只是在不同的尺寸下进行评估。所有的时间信息都是在一台Geforce GTX Titan X上(原始版本,不是Pascal模型)测得的。


在这里插入图片描述

表4:PASCAL VOC2012测试检测结果。YOLOv2与Faster R-CNN与ResNet和SSD512等最先进的检测器表现相当,并且速度快2至10倍。


在这里插入图片描述

表5:在COCO test-dev2015上的结果。表格改编自[11]。


3. Faster

我们希望检测结果既准确又快速。大多数检测应用,如机器人或自动驾驶汽车,都依赖于低延迟的预测。为了最大化性能,我们从头开始设计了快速的YOLOv2。大多数检测框架都依赖于VGG-16作为基础特征提取器[17]。VGG-16是一个功能强大、准确的分类网络,但它过于复杂。VGG-16的卷积层在 224 × 224 224 × 224 224×224 分辨率下对单个图像进行一次处理就需要306.9亿次浮点运算。YOLO框架使用了基于Googlenet架构的自定义网络[19]。这个网络比VGG-16更快,仅需要85.2亿次运算来进行前向传递。然而,它的准确性略低于VGG-16。在 224 × 224 224 × 224 224×224 的单一裁剪情况下,YOLO的自定义模型在ImageNet数据集上的前五准确率为88.0%,而VGG-1690.0%

Darknet-19. 我们提出了一个新的分类模型,作为YOLOv2的基础。我们的模型基于之前在网络设计方面的研究成果以及领域内的共识。与VGG模型类似,我们主要使用 3 × 3 3 × 3 3×3 的滤波器,并在每个池化步骤后将通道数翻倍[17]。在网络内网络(Network in Network,NIN)的研究基础上,我们使用全局平均池化进行预测,并使用 1 × 1 1 × 1 1×1 的滤波器在 3 × 3 3 × 3 3×3 卷积之间压缩特征表示[9]。我们使用批量归一化(batch normalization)来稳定训练、加快收敛速度并对模型进行正则化[7]。

我们的最终模型称为Darknet-19,它由19个卷积层和5个最大池化层组成。详细描述请参见表6。Darknet-19只需要5.58亿次运算就能处理一张图像,但在ImageNet数据集上实现了72.9%Top-1准确率和91.2%Top-5准确率。

在这里插入图片描述


进行分类任务时。我们使用Darknet神经网络框架 [13],在标准的ImageNet 1000类分类数据集上进行训练,共进行160epoch。训练过程中使用随机梯度下降法(stochastic gradient descent),初始学习率为0.1,采用4次幂的多项式学习率衰减,权重衰减率为0.0005,动量为0.9。我们在训练过程中使用标准的数据增强技巧,包括随机裁剪、旋转、色调、饱和度和曝光度的调整。正如上面所讨论的,初始训练使用 224 × 224 224×224 224×224 大小的图像,然后在更大的尺寸 448 448 448 上对网络进行微调。在微调阶段,我们使用相同的参数进行训练,但仅进行10epoch,并将初始学习率设为10的负3次方。在这种更高的分辨率下,我们的网络实现了76.5%Top-1准确率和93.3%Top-5准确率。

进行目标检测任务时。我们对该网络进行了修改。我们移除了最后一层卷积层,取而代之的是添加了三个 3 × 3 3×3 3×3 的卷积层,每个卷积层有 1024 1024 1024 个滤波器,接着是最后一个 1 × 1 1×1 1×1 的卷积层,输出通道数根据检测任务的需要而定。在VOC数据集上,我们预测每个框内的 5 5 5 个边界框,每个边界框有 5 5 5 个坐标,以及每个框的 20 20 20 个类别,因此总共有 125 125 125 个滤波器。此外,我们还添加了一个从最后一个 3 × 3 × 512 3×3×512 3×3×512 层到倒数第二个卷积层的传递层,以便模型可以利用细粒度的特征。

在分类训练中,我们使用了初始学习率为 1 0 − 3 10^{-3} 103,并在第6090epoch时将其除以10的策略进行了160epochs的训练。我们采用了权重衰减0.0005和动量0.9的设置。与YOLOSSD类似,我们也采用了随机裁剪、颜色变换等数据增强方法。我们在COCOVOC数据集上采用相同的训练策略。

4. Stronger

我们提出了一种在分类和检测数据上进行联合训练的机制。我们的方法利用用于检测的图像标记来学习检测特定的信息,如边界框坐标预测和物体性质,以及如何对常见物体进行分类。它还利用只具有类别标签的图像来扩展其能够检测的类别数量。在训练过程中,我们混合使用来自检测和分类数据集的图像。当我们的网络看到一个标记为检测的图像时,我们可以根据完整的YOLOv2损失函数进行反向传播。当它看到一个分类图像时,我们只从架构的分类特定部分进行损失的反向传播。

这种方法存在一些挑战。检测数据集只包含常见物体和通用标签,比如“狗”或“船”。而分类数据集则具有更广泛和更深入的标签范围。ImageNet拥有100多个狗品种,包括“诺福克梗”、“约克夏梗”和“贝灵顿梗”。如果我们想在这两个数据集上进行训练,我们需要一种合理的方法来合并这些标签。大多数分类方法使用softmax层来计算最终的概率分布,将所有可能的类别都考虑在内。使用softmax假设类别之间是相互独立的。这在合并数据集时会产生问题,例如您不希望使用这种模型来合并ImageNetCOCO,因为“诺福克梗”和“狗”这两个类别并不是相互独立的。相反,我们可以使用多标签模型来合并数据集,它不假设相互独立性。但这种方法忽略了我们对数据的了解,例如COCO数据集中的所有类别是相互独立的结构。

层次分类ImageNet的标签是从WordNet中获取的,它是一个结构化概念及其关系的语言数据库。在WordNet中,“诺福克梗”和“约克夏梗”都是“梗犬”的下义词,而“梗犬”是“猎犬”的一种,而“猎犬”又是“狗”的一种,而“狗”则是“犬科动物”等等。大多数分类方法假设标签之间是扁平的结构,然而在合并数据集时,我们需要的恰恰是结构化信息。WordNet以有向图的形式组织,而不是树状结构,因为语言是复杂的。例如,“狗”既是“犬科动物”的一种,也是“家养动物”的一种,它们在WordNet中都是同义词集合。我们简化问题,通过从ImageNet中的概念中构建一个分层树来建立这棵树。我们检查ImageNet中的视觉名词,并查看它们在WordNet图中到根节点的路径,这里是“物体”。许多同义词集合只有一条路径通过图,因此首先将所有这些路径添加到我们的树中。然后,我们迭代地检查剩下的概念,并添加能使树生长最少的路径。因此,如果一个概念有两条路径到根节点,其中一条路径将为我们的树添加三条边,而另一条路径只添加一条边,我们选择较短的路径。最终的结果是WordTree,一个视觉概念的分层模型。使用WordTree进行分类,我们在每个节点上预测条件概率,即给定该同义词集合的情况下,每个下义词的概率。例如,在“梗犬”节点上,我们预测的是:

在这里插入图片描述

如果我们想计算特定节点的绝对概率,我们只需沿着树状结构的路径到达根节点,并将条件概率相乘。因此,如果我们想知道一张图片是否是诺福克梗,我们可以计算:

在这里插入图片描述

为了分类目的,我们假设图像中包含一个物体: P r ( p h y s i c a l o b j e c t ) = 1 Pr(physical \quad object) = 1 Pr(physicalobject)=1。为了验证这种方法,我们使用1000类的ImageNet构建了Darknet-19模型的WordTree。为了构建WordTree1k,我们添加了所有中间节点,将标签空间从1000扩展到1369。在训练过程中,我们将真实标签向上传播到树上,因此如果一张图像被标记为"Norfolk terrier",它也被标记为"dog""mammal"等。为了计算条件概率,我们的模型预测一个包含1369个值的向量,并对所有属于同一概念的下位词进行softmax计算,参见图5。使用与之前相同的训练参数,我们的层次化Darknet-19实现了71.9%top-1准确率和90.4%top-5准确率。尽管添加了369个额外的概念并使网络预测树结构,但我们的准确率仅略有下降。以这种方式进行分类也具有一些优势。对于新的或未知的物体类别,性能会平稳下降。例如,如果网络看到一张狗的图片,但不确定是什么类型的狗,它仍会高度自信地预测"dog",但在下位词中的置信度会较低。这种表述方式也适用于检测。现在,不再假设每张图像都有一个物体,而是使用YOLOv2的物体性质预测器来给出 P r ( p h y s i c a l o b j e c t ) Pr(physical \quad object) Pr(physicalobject) 的值。检测器预测一个边界框和概率树。我们沿着树向下遍历,在每个分支处选择最高置信度的路径,直到达到某个阈值,并预测该物体类别。


在这里插入图片描述

图5:在ImageNet和WordTree上的预测。大多数ImageNet模型使用一个大的softmax来预测概率分布。而使用WordTree,我们对共同下位词进行多个softmax操作。


使用WordTree可以将多个数据集以合理的方式进行组合。我们只需将数据集中的类别映射到树中的同义词集。图6展示了使用WordTreeImageNetCOCO的标签进行组合的示例。WordNet非常多样化,因此我们可以将这种技术应用于大多数数据集。


在这里插入图片描述

图6:使用WordTree层次结构合并数据集。利用WordNet概念图,我们构建了视觉概念的层次树。然后,我们可以通过将数据集中的类别映射到树中的同义词集来合并数据集。这是一个简化的WordTree视图,用于说明目的。


现在我们可以使用 WordTree 将数据集进行组合,从而在分类和检测上训练我们的联合模型。我们想要训练一个非常大规模的检测器,因此我们使用了COCO检测数据集和来自完整ImageNet发布的前9000个类别来创建我们的组合数据集。我们还需要评估我们的方法,因此我们添加了ImageNet检测挑战中尚未包含的任何类别。该数据集对应的WordTree9418个类别。ImageNet是一个更大的数据集,因此我们通过过采样COCO数据集来平衡数据集,使ImageNet的大小只比COCO4倍。使用这个数据集,我们训练YOLO9000。我们使用基本的YOLOv2架构,但只使用3个先验框而不是5个以限制输出大小。当我们的网络看到一个检测图像时,我们按照正常方式进行损失的反向传播。对于分类损失,我们只在或以上的层级上进行反向传播损失。例如,如果标签是"dog",我们不会将任何错误分配给树中更深层次的预测,比如"German Shepherd""Golden Retriever"之间的区别,因为我们没有这方面的信息。


在这里插入图片描述

表7:YOLO9000在ImageNet上的最佳和最差类别。这是从156个弱监督类别中选择出具有最高和最低平均准确率的类别。YOLO9000在各种动物类别上学习到了较好的模型,但在像服装或设备这样的新类别上表现较差。


当模型看到一个分类图像时,我们只进行分类损失的反向传播。为了实现这一点,我们只需找到预测该类别概率最高的边界框,并计算其预测树上的损失。我们还假设预测的边界框与实际标签之间的重叠度(IOU)至少为0.3,并基于此假设进行目标性损失的反向传播。通过这种联合训练,YOLO9000COCO的检测数据中学会了在图像中找到对象,并使用ImageNet的数据学会了对各种对象进行广泛的分类。我们在ImageNet检测任务上评估了YOLO9000ImageNet的检测任务与COCO共享了44个对象类别,这意味着YOLO9000只在大部分测试图像上看到了分类数据,而没有看到检测数据。YOLO9000在整体上获得了19.7的平均精度(mAP),其中对于它从未看到任何标记的检测数据的156个不相交的对象类别,mAP16.0。这个mAP高于DPM的结果,但YOLO9000是在不同的数据集上进行训练,只有部分监督信息[4]。它还同时实时检测着其他9000个对象类别。当我们分析YOLO9000ImageNet上的表现时,我们发现它能够很好地学习新物种的动物,但在学习服装和设备等类别方面存在困难。新的动物更容易学习,因为对象性预测在COCO中的动物上具有很好的泛化能力。相反,COCO没有任何类型的服装的边界框标签,只有人的标签,因此YOLO9000在建模"太阳镜"或"泳裤"等类别时会遇到困难。

5.结论

我们介绍了YOLOv2YOLO9000,这是实时目标检测系统。YOLOv2是目前最先进的系统,在各种目标检测数据集上比其他系统更快。此外,它可以在多种图像尺寸上运行,以在速度和准确性之间提供平衡。YOLO9000是一个实时的检测框架,可以同时优化检测和分类,用于检测超过9000个物体类别。我们使用WordTree将来自不同来源的数据进行组合,并使用联合优化技术同时在ImageNetCOCO上进行训练。YOLO9000是在检测和分类之间缩小数据集大小差距的重要一步。我们的许多技术在目标检测之外也具有普适性。我们对ImageNet使用的WordTree表示为图像分类提供了更丰富、更详细的输出空间。使用层次分类的数据集组合方法在分类和分割领域中将会很有用。多尺度训练等训练技术可以在各种视觉任务中提供益处。在未来的工作中,我们希望使用类似的技术进行弱监督图像分割。我们还计划通过使用更强大的匹配策略来改进检测结果,以便在训练过程中为分类数据分配弱标签。计算机视觉拥有大量的标注数据,我们将继续寻找将不同的数据来源和结构融合在一起以构建更强大的视觉模型的方法。


相关推荐

  1. 目标检测蓝皮书
  2. YOLOv5/v7🚀 改进实战
  3. YOLOv5/v7🚀 进阶实战
  4. YOLOv8🌟🍀 改进实战

请添加图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22403.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实验四 车辆定位导航

有想自己动手的同学可在末尾看教程 【实验目的】 1、了解全球定位导航系统的定位原理和电子地图技术,掌握电子地图API使用方法。 2、了解导航数据报文数据格式,解析导航数据并在电子地图上进行导航应用。 【实验性质】 验证性实验。 【实验要求】 1、相…

自抗扰PID(梯形图源代码)

有关ADRC的详细算法和源代码,请参看专栏的系列文章,这里不再赘述,常用链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所…

数据仓库漫谈-前世今生

数据仓库的内容非常多,每一个子模块拎出来都能讲很久。这里没法讲太多细节,大致思考了三个备选议题: 数据仓库的前世今生 数据仓库体系知识介绍 数仓开发者的路在何方? 既然是第一次分享,感觉还是跟大家普及下数仓的…

浏览器数据存储方式

浏览器数据存储方式 常用的前端数据存储方法笼统来说有 3 种: local/session storagecookiesindexeddb 3 种方法各有各的优点和使用范围。 local/session storage local/session storage 保存的格式都为键值对,并且用法都是差不多,如下&…

『树莓派云台机器人』02. 电脑连接树莓派 配置开发环境

目录 1. 下载ssh交互工具 Xshell 与XFTP(有过相关使用经历的朋友可以跳过这一节内容)2. 下载VNC远程控制工具软件3. 连接过程4. Xshell 命令工具5. XFTP 文件传送工具6. 关于联网总结 欢迎关注 『树莓派云台机器人』 博客,持续更新中 欢迎关注…

基于Zynq的雷达10Gbps高速PCIE数据采集卡方案(三)软件设计

4.1 引言 本章基于第二章的分析结论,进行系统软件设计。软件设计包括逻辑设计、嵌入 式软件设计和上位机软件设计。在逻辑设计中,对 ADC 模块、 Aurora 模块、 DDR3 SDRAM 模块和 PCIE 模块进行分析和设计,在 Vivado 软件提供的 …

在 Linux 上使用 yuzu 模拟 Nintendo Switch 试玩王国之泪

王国之泪5月12日发售,DLC 玩家已经造出各种脑洞大开的东西了,但是买的卡带迟迟没有收到,因此,打算使用 yuzu 模拟器先体验一下 yuzu 是一款开源的 Ninetendo Switch 模拟器,支持在 Linux 或者 Windows 平台运行&#…

vue动态class的写法

本文会详细介绍 vue动态 class的写法,并且提供一些我个人的理解,希望对你有所帮助。 如果你是一个新手,或者想了解 vue的源码,那么首先应该学习 vue的基础知识,比如:什么是静态语言,有什么作用等…

JQuery原理剖析——自己手写简易版JQuery

知其一后知其二; 目录 为什么需要JQuery jQuery的概念: 在此之前回顾JavaScript对象知识: 自己手写的简易JQuery: 为什么需要JQuery 在我们之前写的JS代码中经常会遇见document.getElementById等等获取元素的对象&#xff0c…

Apache Kafka - 重识Kafka生产者

文章目录 概述Kafka 生产者Kafka 生产者工作原理如何使用 Kafka 生产者 生产者配置项(核心)导图总结 概述 Kafka 生产者是 Apache Kafka 中的一个重要组件,它负责将数据发送到 Kafka 集群中。在实时数据处理和流式处理应用程序中&#xff0c…

OKR是什么意思啊

一、OKR是什么意思? OKR是"Objective and Key Results"的缩写,即目标和关键结果。它是一种目标管理框架,旨在帮助组织和团队设定明确的目标,并通过关键结果来衡量和追踪目标的实现情况。 为了让大家快速了解什么是OKR…

Doxygen 源码分析: QCString类

2023-05-20 23:41:56 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. QCString 类概览3. QCString 特殊成员函数3.1 default 方式的构造函数3.2 单个参数和两个参数的构造函数 4. inline方式实现的成员函数4.1 operator 函数4.…

SQL执行过程

1. select 语句执行过程 一条 select 语句的执行过程如上图所示 1、建立连接 连接器会校验你输入的用户名和密码是否正确,如果错误会返回提示,如果正确,连接器会查询当前用户对于的权限。连接器的作用就是校验用户权限 2、查询缓存 MySQL…

面试字节,过关斩将直接干到 3 面,结果被吊打了?

人人都有大厂梦,对于软件测试员来说,BAT 为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金,让…

【自然语言处理】 - 作业1: Word2Vec及TransE实现

课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…

[CTF/网络安全] 攻防世界 view_source 解题详析

[CTF/网络安全] 攻防世界 view_source 解题详析 查看页面源代码方式归类总结 题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 查看页面源代码方式归类 单击鼠标右键,点击查看页面源代码: …

国外顶尖高校、企业分享人工智能自学课程英文原课程分享

人工智能无疑已经是当下最火热的方向,在很多领域已经融入我们生活,ChatGPT,Midjourney只是其中一个细分热点。目前这个领域,虽说国内也有不少课程,但是大部分源头还得从英文资料中找。如何学到最新最强得人工智能技能,…

MybatisPlus--基础入门!真滴方便

目录 一、简介 2.特性 二、入门 1.创建springboot 项目(点击查看如何创建 ) 注意&#xff1a;引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring&#xff0c;以避免因版本差异导致的问题 2.数据准备 3.配置application.yml 4.代码 BaseMapper<>…

nacos注册中心源码分析一之服务注册、服务心跳

源码分析 nacos客户端注册分析 依赖包 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>Nacos的客户端是基于SpringBoot的自动装配实现的 看下依…

Java多线程基础

目录 一、线程的基本使用 &#xff08;一&#xff09;创建线程的两种方式 &#xff08;二&#xff09;线程简单案例&#xff08;Thread&#xff09; 问题&#xff1a;main函数与开启的线程是否是阻塞的&#xff0c;即线程运行时&#xff0c;main函数等待线程运行结束&#…