您现在的位置是:首页 >技术教程 >突破极限:YOLO9000 论文解读 - 构建更好、更快、更强大的实时检测系统网站首页技术教程
突破极限:YOLO9000 论文解读 - 构建更好、更快、更强大的实时检测系统
YOLOv2 论文全篇完整翻译
摘要
我们介绍了YOLO9000
,这是一种先进的、实时的目标检测系统,可以检测超过9000
个物体类别。首先,我们对YOLO
检测方法进行了各种改进,包括新颖的方法和借鉴自先前工作的方法。改进后的模型YOLOv2
在标准的检测任务(如PASCAL VOC
和COCO
)上达到了最先进的水平。使用一种新颖的多尺度训练方法,同一个YOLOv2
模型可以在不同的尺寸下运行,提供了速度和准确性之间的简便权衡。以67
帧每秒的速度,YOLOv2
在VOC 2007
上获得了76.8
的mAP
。以40
帧每秒的速度,YOLOv2
获得了78.6
的mAP
,性能超过了Faster RCNN
与ResNet
和SSD
等最先进的方法,同时仍然运行速度显著更快。最后,我们提出了一种同时进行目标检测和分类训练的方法。使用这种方法,我们同时在COCO
检测数据集和ImageNet
分类数据集上训练YOLO9000
。我们的联合训练使得YOLO9000
能够对没有标注检测数据的物体类别进行检测预测。我们在ImageNet检测任务上验证了我们的方法。尽管只有44
个类别有检测数据,但YOLO9000
在ImageNet
检测验证集上获得了19.7
的mAP
。在COCO
中没有的156
个类别上,YOLO9000
获得了16.0
的mAP
。但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 分辨率进行微调训练10
个epochs
。这使得网络有时间调整其滤波器,以在更高分辨率的输入上表现更好。然后,我们在目标检测上对所得到的网络进行微调训练。这个高分辨率分类网络使得我们的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( ext { box, centroid })=1-operatorname{IOU}( ext { box }, ext { centroid }) d( box, centroid )=1−IOU( box , centroid )
我们对不同的k
值运行k-means
聚类,并绘制最接近质心的平均IOU
,见图2。我们选择k = 5
作为模型复杂度和高召回率之间的良好权衡。聚类质心与手动选择的锚框明显不同。短而宽的框较少,而高而窄的框较多。我们将聚类策略生成的平均IOU
与最接近的先验框和手动选择的锚框进行比较,见表1。仅使用5
个先验框时,聚类质心的平均IOU
与9
个锚框相似,为61.0
,而锚框的平均IOU
为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。聚类方法相比手动选择的先验能够获得更好的结果。
直接位置预测(Direct location prediction)。在使用锚框(anchor boxes)时,我们遇到了第二个问题:模型的不稳定性,特别是在早期迭代中。大部分的不稳定性来自于对框的 ( x , y ) (x,y) (x,y)位置的预测。在区域提议网络中,网络预测了值 t x t_x tx 和 t y t_y ty,并且通过以下方式计算 ( x , y ) (x,y) (x,y)中心坐标:
x = ( t x ∗ w a ) − x a y = ( t y ∗ h a ) − y a egin{array}{l} x=left(t_{x} * w_{a} ight)-x_{a} \ y=left(t_{y} * h_{a} ight)-y_{a} end{array} x=(tx∗wa)−xay=(ty∗ha)−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-CNN
和SSD
在网络中的不同特征图上运行它们的提议网络以获得一系列分辨率。我们采用了不同的方法,只是简单地添加了一个经过层,将
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以比较YOLOv2
与VOC 2007
上的其他框架。见图4。
图3:具有尺寸先验和位置预测的边界框。我们使用聚类中心作为基准,预测边界框的宽度和高度偏移量。我们使用Sigmoid函数预测边界框的中心坐标相对于滤波器应用位置的相对位置。
图4:在VOC 2007上的准确率和速度。
进一步的实验(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
相当。
表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-16
为90.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
类分类数据集上进行训练,共进行160
个epoch
。训练过程中使用随机梯度下降法(stochastic gradient descent),初始学习率为0.1
,采用4
次幂的多项式学习率衰减,权重衰减率为0.0005
,动量为0.9
。我们在训练过程中使用标准的数据增强技巧,包括随机裁剪、旋转、色调、饱和度和曝光度的调整。正如上面所讨论的,初始训练使用
224
×
224
224×224
224×224 大小的图像,然后在更大的尺寸
448
448
448 上对网络进行微调。在微调阶段,我们使用相同的参数进行训练,但仅进行10
个epoch
,并将初始学习率设为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}
10−3,并在第60
和90
个epoch
时将其除以10
的策略进行了160
个epochs
的训练。我们采用了权重衰减0.0005
和动量0.9
的设置。与YOLO
和SSD
类似,我们也采用了随机裁剪、颜色变换等数据增强方法。我们在COCO
和VOC
数据集上采用相同的训练策略。
4. Stronger
我们提出了一种在分类和检测数据上进行联合训练的机制。我们的方法利用用于检测的图像标记来学习检测特定的信息,如边界框坐标预测和物体性质,以及如何对常见物体进行分类。它还利用只具有类别标签的图像来扩展其能够检测的类别数量。在训练过程中,我们混合使用来自检测和分类数据集的图像。当我们的网络看到一个标记为检测的图像时,我们可以根据完整的YOLOv2
损失函数进行反向传播。当它看到一个分类图像时,我们只从架构的分类特定部分进行损失的反向传播。
这种方法存在一些挑战。检测数据集只包含常见物体和通用标签,比如“狗”或“船”。而分类数据集则具有更广泛和更深入的标签范围。ImageNet
拥有100
多个狗品种,包括“诺福克梗”、“约克夏梗”和“贝灵顿梗”。如果我们想在这两个数据集上进行训练,我们需要一种合理的方法来合并这些标签。大多数分类方法使用softmax
层来计算最终的概率分布,将所有可能的类别都考虑在内。使用softmax
假设类别之间是相互独立的。这在合并数据集时会产生问题,例如您不希望使用这种模型来合并ImageNet
和COCO
,因为“诺福克梗”和“狗”这两个类别并不是相互独立的。相反,我们可以使用多标签模型来合并数据集,它不假设相互独立性。但这种方法忽略了我们对数据的了解,例如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展示了使用WordTree
将ImageNet
和COCO
的标签进行组合的示例。WordNet
非常多样化,因此我们可以将这种技术应用于大多数数据集。
图6:使用WordTree层次结构合并数据集。利用WordNet概念图,我们构建了视觉概念的层次树。然后,我们可以通过将数据集中的类别映射到树中的同义词集来合并数据集。这是一个简化的WordTree视图,用于说明目的。
现在我们可以使用 WordTree
将数据集进行组合,从而在分类和检测上训练我们的联合模型。我们想要训练一个非常大规模的检测器,因此我们使用了COCO
检测数据集和来自完整ImageNet
发布的前9000
个类别来创建我们的组合数据集。我们还需要评估我们的方法,因此我们添加了ImageNet检测挑战中尚未包含的任何类别。该数据集对应的WordTree
有9418
个类别。ImageNet
是一个更大的数据集,因此我们通过过采样COCO
数据集来平衡数据集,使ImageNet的大小只比COCO
大4
倍。使用这个数据集,我们训练YOLO9000
。我们使用基本的YOLOv2
架构,但只使用3
个先验框而不是5
个以限制输出大小。当我们的网络看到一个检测图像时,我们按照正常方式进行损失的反向传播。对于分类损失,我们只在或以上的层级上进行反向传播损失。例如,如果标签是"dog"
,我们不会将任何错误分配给树中更深层次的预测,比如"German Shepherd"
与"Golden Retriever"
之间的区别,因为我们没有这方面的信息。
表7:YOLO9000在ImageNet上的最佳和最差类别。这是从156个弱监督类别中选择出具有最高和最低平均准确率的类别。YOLO9000在各种动物类别上学习到了较好的模型,但在像服装或设备这样的新类别上表现较差。
当模型看到一个分类图像时,我们只进行分类损失的反向传播。为了实现这一点,我们只需找到预测该类别概率最高的边界框,并计算其预测树上的损失。我们还假设预测的边界框与实际标签之间的重叠度(IOU
)至少为0.3
,并基于此假设进行目标性损失的反向传播。通过这种联合训练,YOLO9000
在COCO
的检测数据中学会了在图像中找到对象,并使用ImageNet
的数据学会了对各种对象进行广泛的分类。我们在ImageNet
检测任务上评估了YOLO9000
。ImageNet
的检测任务与COCO
共享了44
个对象类别,这意味着YOLO9000只在大部分测试图像上看到了分类数据,而没有看到检测数据。YOLO9000
在整体上获得了19.7
的平均精度(mAP
),其中对于它从未看到任何标记的检测数据的156
个不相交的对象类别,mAP
为16.0
。这个mAP
高于DPM
的结果,但YOLO9000
是在不同的数据集上进行训练,只有部分监督信息[4]。它还同时实时检测着其他9000
个对象类别。当我们分析YOLO9000
在ImageNet
上的表现时,我们发现它能够很好地学习新物种的动物,但在学习服装和设备等类别方面存在困难。新的动物更容易学习,因为对象性预测在COCO
中的动物上具有很好的泛化能力。相反,COCO
没有任何类型的服装的边界框标签,只有人的标签,因此YOLO9000
在建模"太阳镜"或"泳裤"等类别时会遇到困难。
5.结论
我们介绍了YOLOv2
和YOLO9000
,这是实时目标检测系统。YOLOv2
是目前最先进的系统,在各种目标检测数据集上比其他系统更快。此外,它可以在多种图像尺寸上运行,以在速度和准确性之间提供平衡。YOLO9000
是一个实时的检测框架,可以同时优化检测和分类,用于检测超过9000
个物体类别。我们使用WordTree
将来自不同来源的数据进行组合,并使用联合优化技术同时在ImageNet
和COCO
上进行训练。YOLO9000
是在检测和分类之间缩小数据集大小差距的重要一步。我们的许多技术在目标检测之外也具有普适性。我们对ImageNet
使用的WordTree
表示为图像分类提供了更丰富、更详细的输出空间。使用层次分类的数据集组合方法在分类和分割领域中将会很有用。多尺度训练等训练技术可以在各种视觉任务中提供益处。在未来的工作中,我们希望使用类似的技术进行弱监督图像分割。我们还计划通过使用更强大的匹配策略来改进检测结果,以便在训练过程中为分类数据分配弱标签。计算机视觉拥有大量的标注数据,我们将继续寻找将不同的数据来源和结构融合在一起以构建更强大的视觉模型的方法。