深度学习论文笔记:YOLO9000

Abstract

  • YOLO9000: a state-of-the-art, real-time 的目标检测系统,可以检测超过9000种的物体分类。
  • 本论文提出两个模型,YOLOv2和YOLO9000
  • YOLOv2:
    • 是对YOLO改进后的提升模型。
    • 利用新颖的,多尺度训练的方法,YOLOv2模型可以在多种尺度上运行,在速度与准确性上更容易去trade off。
  • YOLO9000:
    • 是提出的一种联合在检测和分类数据集上训练的模型,这种联合训练的方法使得YOLO9000能够为没有标签的检测数据目标类预测
    • 可以检测超过9000个类。

Introduction

  • 目前,许多检测方法依旧约束在很小的物体集上。
  • 目前,目标检测数据集相比于用于分类和标注的数据集来说,是有限制的。
    • 最常见的检测数据集包含数十到数十万的图像,具有几十到几百个标签,比如Pascal、CoCo、ImageNet。
    • 分类数据集具有数以百万计的图像,具有数万或数十万种类别,如ImageNet。
  • 目标检测数据集永远不会达到和分类数据集一样的等级。
  • 本论文提出一种方法,利用分类数据集来作为检测数据集,将两种截然不同的数据集结合。
  • 本论文提出一个在目标检测和分类数据集上联合训练的方法。此方法利用标记的检测图像学习精确定位对象,而它使用分类图像增加其词汇和鲁棒性。

Better

  • YOLO产生很多的定位错误。而且YOLO相比于region proposal-based方法有着相对较低的recall(查全率)。所以主要任务是在保持分类准确率的前提下,提高recall和减少定位错误。

  • 我们从过去的工作中融合了我们自己的各种新想法,以提高YOLO的性能。 结果的摘要可以在表中找到:

Batch Normalization

  • 得到2%的mAP的提升,使用Batch Normalization,我们可以从模型中删除dropout,而不会出现过度缺陷。

High Resolution Classifier

  • 对于YOLOv2,我们首先在ImageNet对全部448×448分辨率图像上进行10epochs的微调来调整分类网络。 然后我们在检测时调整resulting network。 这种高分辨率分类网络使我们增加了近4%的mAP。

Convolutional With Anchor Boxes

  • YOLO利用卷积特征提取器最顶端的全连接层来直接预测BB的坐标。而Faster R-CNN是利用首选的priors来预测BB。
  • 预测BB的偏移而不是坐标可以简化问题,并使网络更容易学习。本论文从YOLO中移去了全连接层,并且利用anchor box来预测BB。
  • 我们移去了pooling层,使得网络的卷积层的输出有更高的像素。
  • 同时将网络缩减到在416*416像素的图片上操作。 我们这样做是因为我们想要特征图中具有奇数个位置,因此存在单个中心单元。
  • 当我们移动到anchor boxes时,我们也将class prediction机制与空间位置解耦,而是为每个anchor box预测的类和对象。 同YOLO一样,objectness prediction仍然预测ground truth和所提出的框的IOU,并且class predictions预测该类的条件概率,假定存在对象。(没太懂)

Dimension Clusters

  • 将YOLO与anchor boxes结合有两个问题,第一个是anchor box的长宽是认为选定的。

  • 我们不是手动选择先验(priors),而是在训练集边界框上运行k-means聚类,以自动找到好的先验。

    • 我们真正想要的是导致良好的IOU分数的priors,这是独立于盒子的大小。 因此,对于我们的distance metric,我们使用:

    • 我们选择k = 5作为模型复杂性和高召回率之间的良好权衡。这样非常不同于相比于人工选择的boxes。更多的又高又瘦的boxes。

Direct location prediction

  • 将YOLO与anchor boxes结合有两个问题,第二个模型不稳定,特别是在早期迭代中。

  • 并非预测偏移,我们遵循YOLO的方法并预测相对于网格单元的位置的位置坐标。 这将ground truth限制在0和1之间。我们使用逻辑激活来约束网络的预测落在该范围内。

  • 网络为每一个BB预测5个坐标:$t_x, t_y, t_w, t_h, t_o$.

  • 结合Dimension Clusters和Direct location prediction,YOLO提升5%的mAP。

Fine-Grained Features

  • 修改后的YOLO在1313的feature map上进行检测。 虽然这对于大对象是足够的,但是它可以从用于定位较小对象的*细粒度特征中受益。
  • 添加一个传递层,将分辨率从前面的层变为从26 x 26分辨率。

Multi-Scale Training

  • 我们希望YOLOv2可以足够鲁邦在不同尺寸的images上进行训练。
  • 并非使用固定的输入图像尺寸,我们在每几次迭代后改变网络。每10batches,我们的网络随机选择一个新的图像尺寸。

Faster

  • 大多数检测框架依赖VGG-16作为基本特征提取器。VGG-16是一个强大、准确的分类网络,但是也很复杂。
  • YOLO框架使用的基于Googlenet架构的修改后的网络。比VGG-16快速,但是准确性比VGG-16稍差。

Darknet-19

  • 供YOLOv2使用的新的分类模型。

  • 最终模型叫做darknet-19,有着19个卷积层和5个maxpooling层。

  • Darknet-19处理每张图片只需要5.58 billion的操作。

Training for classification

  • 在标准的ImageNet 1000类的数据集上利用随机梯度下降训练160 epochs。开始学习率为0.1,polynomial rate decay 是4,weight decay是0.0005,动量是0.9。
  • 在训练期间,我们使用标准的数据增加技巧,包括随机裁剪,旋转,以及色调,饱和度和曝光偏移。
  • 在224x224分辨率的图像上进行预训练,然后在448x448分辨率的图像上进行微调。

Training for detection

  • 我们通过去除最后的卷积层来修改这个网络,并且替代地增加具有1024个滤波器的三个3×3卷积层,每个跟随着具有我们需要检测所需的输出数量的最后的1×1卷积层。
  • passthrough层的添加:使网络能够使用fine grain feature。

Stronger

  • 本论文提出一种机制,用来将分类和检测数据结合起来再一起训练。
    • 在训练过程中,当看到用于检测的被标注的图片,我们会使用基于YOLOv2的代价函数进行反向传播。
    • 在训练过程中,当看到分类图片,我们只从框架中用来分类部分来传递损失。
  • 这种方法的challenge:
    • 检测数据集中的标签是大分类,而分类数据集的标签是小分类,所以我们需要找一个方法来融合这些标签
    • 用来分类的许多方法都是使用softmax层来计算最后的概率分布,使用softmax层会假设类之间是互斥的,但是如何用本方法融合数据集,类之间本身不是互斥的。
  • 我们所以使用multi-label模型来结合数据集,不假设类之间互斥。这种方法忽略了我们已知的数据的结构。

Hierarchical classification

  • ImageNet标签是从WordNet中得来,一种结构化概念和标签之间如何联系的语言数据库
  • WordNet是连接图结构,而非树。我们相反并不实用整个图结构,我们将问题简化成从ImageNet的概念中构建有结构的树。
  • WordTree

Dataset combination with WordTree

  • 我们可以使用WordTree来介个数据集。

  • 将数据集中分类映射成树中的下义词。

  • 举例:将ImageNet和COCO数据集结合:

  • WordNet十分多样化,所以我们可以利用这种技术到大多数数据集。

Joint classification and detection

  • 将COCO数据集和ImageNet数据集结合,训练处一个特别大规模的检测器。
  • 对应的WordTree有9418个类。
  • ImageNet是一个更大的数据集,因此我们通过对COCO进行过采样来平衡数据集,使ImageNet只以4:1的倍数来增大。
  • 当我们的网络看见一张用来检测的图片,我们正常反向传播loss。对于分类loss,我们只在该label对应层次之上反向传播loss。比如:如果标签是“dog”,我们会在树中的“German Shepherd”和“Golden Retriever”中进一步预测错误,因为我们没有这些信息。
  • 当我们的网络看见一张用来分来的照片,我们只反向传递分类loss。
  • 使用这种联合训练,YOLO 9000使用COCO中的检测数据学习找到图像中的对象,并使用ImageNet中的数据学习分类各种各样的对象。
  • 在ImageNet上利用YOLO9000来做detection,从而进行评估。ImageNet和COCO只有44个相同的类分类,意味着YOLO9000在利用部分监督来进行检测。

Conclusion

  • 本论文提出两个模型,YOLOv2和YOLO9000
    • YOLOv2:是对YOLO改进后的提升模型。更快更先进。此外,它可以以各种图像大小运行,以提供速度和精度之间的权衡。
    • YOLO9000:是提出的一种联合在检测和分类数据集上训练的模型,可以为没有任何标注检测标签的数据进行检测。可以检测超过9000个类。使用WordTree技术来组合不同来源的数据。
  • 我们创造出许多目标检测之外的技术:
    • WordTree representation.
    • Dataset combination.
    • Multi-scale training.
  • 下一步工作:我们希望利用相似的技术来进行weakly supervised image segmentation.