目录
Abstract
1. Introduction
2. Better
3. Faster
4. Stronger
5. Conclusion
Abstract
我们将介绍一个先进的,实时目标检测的网络YOLO9000,它可以检测超过9000个类别的物体。首先,我们针对YOLO检测网络提出了许多从以前的工作中得出的,新颖的改进。改进后的网络称为YOLOv2,在标准的检测任务中,比如PASCAL VOC和COCO,它也是一个先进的目标检测网络。使用新颖的多尺度训练方法,相同的YOLOv2模型可以在不同的图像大小下运行,并在速度和准确度之间提供简单的权衡。
在VOC 2007数据集上,YOLOv2实现了67 FPS和76.8 mAP。在40 FPS时,YOLOv2获得78.6 mAP,优于最先进的方法,如使用ResNet和SSD的Faster R-CNN,同时运行速度明显更快。
最后,我们提出了一个联合训练目标检测和分类任务的方法。使用这个方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000网络。我们的联合训练使得YOLO9000可以预测没有标签的检测数据的对象类别。我们在ImageNet的检测任务中验证了网络的有效性。YOLO9000在ImageNet检测验证集上获得了19.7 mAP,尽管在200个类中只有44个类具有检测数据。在COCO不包含的156个类别中,YOLO9000获得了16.0 mAP。 但YOLO可以检测到超过200个类别; 它预测了超过9000种不同对象类别的检测。并且它仍然可以实时运行。
1. Introduction
通用目标检测应该是快速的,准确的并且能够识别各种各样的物体。由于神经网络的发展,检测网络已经变得越来越快速和准确。然而,大多数检测网络仍然受限于很少的物体范围内。
与用于分类和标记等其他任务的数据集相比,当前目标检测数据集是有限的。最常见的检测数据集包含数千到数十万个具有数十到数百个标签的图像。而分类数据集具有数百万个具有数十或数十万个类别的图像。
我们希望检测能扩展到物体分类的级别。然而,用于检测的标签图像比用于分类或标记的标签要昂贵得多(标记通常是用户免费提供的)。因此,我们不太可能在不久的将来看到与分类数据集相同规模的检测数据集。
我们提出了一种新方法来利用我们已有的大量的分类数据,并用它来扩展当前检测系统的范围。我们的方法使用物体分类的分层视图,允许我们将不同的数据集组合在一起。
我们还提出了一种联合训练算法,该算法允许我们在检测和分类数据上训练目标检测网络。我们的方法利用标记的检测图像来学习精确定位物体,同时使用分类图像来增加其词汇量和鲁棒性。
使用这种方法,我们训练YOLO9000,一个可以检测超过9000种不同物体类别的实时目标检测网络。首先,我们改进了基础YOLO检测网络,以得到YOLOv2,这是一种先进的实时检测网络。然后我们使用数据集组合方法和联合训练算法来训练来自ImageNet以及COCO检测数据的超过9000个类的模型。
All of our code and pre-trained models are available online at:http://pjreddie.com/yolo9000/
2. Better
与先进的检测系统相比,YOLO存在各种缺点。与Fast R-CNN相比,YOLO的错误分析表明YOLO产生了大量的定位误差。 此外,与基于region proposal的方法相比,YOLO具有相对较低的召回率。 因此,我们主要关注改善召回率和定位,同时保持分类准确性。
计算机视觉通常趋向于更大,更深的网络。更好的性能通常取决于训练更大的网络或集合多个模型。但是,对于YOLOv2,我们需要更准确的检测,但速度仍然很快。我们没有扩展网络,而是简化网络,然后使特征表示更容易学习。我们将过去工作中的各种想法与我们自己的新思想结合起来,以提高YOLO的性能。A summary of results can be found in Table 2.
Batch Normalization. 批量归一化导致收敛的显着改善,同时消除了对其他形式的正则化的需要。通过在YOLO中的所有卷积层上添加批量标准化,我们可以使mAP提高2%以上。批量标准化也有助于模型正则化。通过批量标准化,我们可以从模型中删除dropout而不会过度拟合。
High Resolution Classifier. 所有最先进的检测方法都使用在ImageNet上预先训练的分类器。从AlexNet开始,大多数分类器在小于256 * 256的输入图像上运行。原始的YOLO训练分类器网络为224 * 224并增加分辨率为448 * 448进行检测。这意味着网络必须同时切换到学习目标检测并调整到新的输入分辨率。
对于YOLOv2,我们首先在ImageNet上以完整的448 * 448分辨率微调分类网络10个epoch。这使网络有时间调整其卷积核,以便在更高分辨率的输入上更好地工作。然后我们在检测时对生成的网络进行微调。高分辨率分类网络使我们的mAP增加了近4%。
Convolutional With Anchor Boxes. YOLO直接使用卷积特征提取器顶部的全连接层预测边界框的坐标。而不是直接预测坐标的Faster R-CNN使用手工挑选的先验预测边界框。仅使用卷积层,Faster R-CNN中的区域提议网络(RPN)预测anchor boxes的偏移和置信度。由于预测层是卷积的,因此RPN在特征图中的每个位置预测这些偏移。预测偏移而不是坐标简化了问题,使网络更容易学习。
我们移除了YOLO网络中的全连接层并使用anchor boxes来预测边界框。首先,我们移除一个pooling层,使网络卷积层的输出分辨率更高。我们还缩小网络以在416 * 416输入图像而不是448 * 448上操作。我们这样做是因为我们想要在我们的特征图中有奇数个位置,所以只有一个中心单元格。物体,特别是大物体,往往占据图像的中心,因此最好在中心有一个位置来预测这些物体而不是附近的四个位置。YOLO的卷积层将图像缩小了32倍,因此通过使用416 * 416的输入图像,我们得到13 * 13的输出特征图。
当我们使用anchor boxes时,我们还将类预测机制与空间位置预测分离,而是预测每个anchor box的类和objectness(指anchor boxes中是否有物体)。同YOLO网络一样,objectness预测仍然预测真实框与预测框之间的IOU(Pr(Object) * IOU),并且类别预测在给定存在对象的情况下预测该类的条件概率(Pr(Class[i] | Object))。(计算过程如下图所示)
使用anchor boxes我们的准确性会略有下降。 YOLO仅预测每张图片98个boxes,但是使用anchor boxes我们的模型预测超过1000个boxes。没有anchor boxes,我们的中间模型获得69.5 mAP,召回率为81%。使用anchor boxes,我们的模型获得69.2 mAP,召回率为88%。虽然mAP减少,召回的增加也意味着我们的模型有更大的改进空间。
Dimension Clusters. 在YOLO网络中使用anchor boxes时,我们遇到了两个问题。首先是box维度是手工挑选的。网络可以学会适当地调整框,如果我们从网络中选择更好的先验,我们可以让网络更容易学习预测好的检测。
我们不是手动选择先验,而是在训练集边界框上运行k-means聚类,以自动找到好的先验。 如果我们使用具有欧几里德距离的标准k-means,那么较大的框会产生比较小的框更多的误差。然而,我们真正想要的是能够获得良好IOU分数的先验,这与盒子boxes的大小无关。 因此,对于我们的距离度量,我们使用:
我们为各种k值运行k-means并绘制具有最接近聚类中心的平均IOU,参见Figure 2。我们选择k = 5作为模型复杂度和高召回率之间的良好权衡。聚类中心与与手工挑选的anchor boxes明显不同。宽,短的boxes更少,相反高,瘦的boxes更多。
我们比较聚类策略和手工挑选anchor boxes的平均IOU,如Table 1所示。只有5个聚类中心时的性能与9个anchor boxes性能类似,即平均IOU为61.0 VS. 60.9。如果我们使用9个聚类中心,我们会看到更高的平均IOU (67.2)。这表明使用k-means生成我们的边界框会以更好的表示方式启动模型,使任务更容易学习。
Direct Location Prediction. 在YOLO网络中使用anchor boxes时,我们遇到了第二个问题:模型不稳定,特别是在早期迭代期间。大多数不稳定性来自于预测box的(x, y)位置。在区域提议网络RPN中,网络预测值 tx 和 ty,并且(x, y)中心坐标计算为:
例如,tx = 1的预测会将框box向右移动anchor box的宽度,tx = -1的预测会将其向左移动相同的量。(上边公式没搞懂啊!!!)
这个公式是不受约束的,因此任何anchor box都可以在图像中的任何位置结束,无论预测box的位置如何。随机初始化,模型需要很长时间才能稳定以预测合理的偏移。
我们不是预测偏移offset,而是遵循YOLO的方法,预测相对于网格单元的位置坐标。 这将真实框限制在0和1之间。我们使用逻辑激活logistics activation来约束网络预测落在此范围内。
网络在输出的feature map中预测每个单元格的5个边界框。网络预测每个边界框的 5 个坐标,tx,ty,tw,th和to。如果单元格从图像的左上角偏移(cx, cy)并且前面的边界框具有宽度和高度pw,ph,则预测对应于:
由于我们约束位置进行预测,因此参数化更容易学习,使网络更稳定。使用维度聚类以及直接预测边界框中心位置可使YOLO比使用anchor boxes的版本提高近5%。
Fine-Grained Features. 改进后的YOLO在13 * 13特征图上预测检测。虽然这对于大型物体来说已足够,但它可能会受益于用于定位较小对象的更细粒度的特征。Faster R-CNN和SSD都在网络中的各种特征图上运行其提议网络RPN,以获得一系列分辨率。我们采用不同的方法,只需添加一个直通层passthrough layer,以26 * 26的分辨率从较早的层中获取特征。
直通层通过将相邻特征堆叠到不同的通道而不是空间位置,将较高分辨率的特征与低分辨率特征连接起来,类似于ResNet中的identity mappings。这将 26 * 26 * 512 特征图转换为 13 * 13 * 2048 特征图,可以与原始特征连接。我们的检测器运行在这个扩展的特征图之上,因此它可以访问细粒度的特征。这使得性能提高1%。
Multi-Scale Training. 最初的YOLO使用输入分辨率为448 * 448。通过添加锚定框,我们将分辨率更改为416 * 416。但是,由于我们的模型仅使用卷积和池化层,因此可以动态调整大小。我们希望YOLOv2能够在不同尺寸的图像上运行,因此我们将其训练到模型中。
这种方式迫使网络学习如何在各种输入维度上做好预测。这意味着同一网络可以预测不同分辨率的检测。网络在较小的图像尺寸运行得更快,因此YOLOv2可在速度和精度之间轻松权衡。
在低分辨率下,YOLOv2作为相当精确的检测器运行。在288 * 288分辨率时,它的运行速度超过90 FPS,mAP几乎与Fast R-CNN一样好。这使其成为较小GPU,高帧率视频或多视频流的理想选择。
在高分辨率下,YOLOv2是最先进的检测器,在VOC 2007上具有78.6 mAP,同时仍然高于实时速度。有关YOLOv2与VOC 2007其他框架的比较,请参阅Table 3,Figure 4.
Further Experiment. 我们训练YOLOv2用于检测VOC 2012数据集。Table 4 展示了YOLOv2与其他最先进的检测系统的性能比较。YOLOv2达到73.4 mAP,同时检测速度比其它方法快得多。我们还在COCO数据集上进行训练并在Table 5 中的其他方法进行比较。在VOC指标(IOU = 0.5)上,YOLOv2达到44.0 mAP,与SSD和更快的R-CNN相当。
3. Faster
我们希望检测准确,但我们也希望检测速度快。大多数检测应用程序(如机器人或自动驾驶汽车)都依赖于低延迟预测。为了最大限度地提高性能,我们将YOLOv2设计为从头开始加速。
大多数检测框架依赖于VGG-16作为基本特征提取器。VGG-16是一个功能强大,准确的分类网络,但它非常复杂。VGG-16的卷积层需要306.9亿浮点运算,在224 * 224分辨率的单个图像上进行单次检测。
YOLO框架使用基于Googlenet 架构的自定义网络。该网络比VGG-16更快,在前向计算时仅使用85.2亿次浮点运算。 然而,它的准确性略差于VGG-16 对于224 * 224 single-crop的top-5 accuracy,YOLO定制型在ImageNet上为88.0%,而VGG-16为90.0%。
Darknet-19. 我们提出了一种新的分类模型作为YOLOv2的基础。我们的模型建立在网络设计的先前工作以及该领域的常识之上。与VGG型号类似,我们大多使用 3 * 3 卷积核,并且在进行池化步骤后将通道数量增加一倍。效仿Network in Network (NIN),我们使用全局平均池化来进行预测以及1*1卷积核来压缩3 * 3卷积之间的特征表示。我们使用批量归一化 (BN) 来稳定训练,加速收敛,并使模型正则化。
我们的最终模型名为Darknet-19,有19个卷积层和5个最大池化层。有关完整说明,请参阅Table 6。Darknet-19仅需要55.8亿次浮点运算来处理图像,但在ImageNet上实现了 72.9% 的top-1精度和 91.2% top-5精度。
4. Stronger
Hierarchical Clsssification.
Dataset Combination with WordTree.
Joint Classification and detection.
5. Conclusion
我们介绍实时检测系统YOLOv2和YOLO9000。YOLOv2是先进的检测网络,在各种检测数据集中比其他检测系统更快。此外,它可以在各种图像尺寸下运行,以在速度和精度之间提供平滑的折衷。
YOLO9000是一个实时框架,通过联合优化检测和分类来检测9000多个物体类别。我们使用WordTree组合来自各种来源的数据,以及我们的联合优化技术以同时在ImageNet和COCO上进行训练。YOLO9000是缩小检测和分类之间数据集大小差距的重要一步。
我们的许多技术都在目标检测之外进行推广。 ImageNet的WordTree表示为图像分类提供了更丰富,更详细的输出空间。使用分层分类的数据集组合在分类和分割中将是有用的。多尺度训练等训练技术可以为各种视觉任务带来好处。
对于未来的工作,我们希望使用类似的技术进行弱监督图像分割。我们还计划使用更强大的匹配策略来改进我们的检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉受到大量标记数据带来的好处。我们将继续寻找将不同来源和结构数据结合在一起的方法,以制作更强大的视觉世界模型。
Reference paper:YOLO9000: Better, Faster, Stronger