YOLO9000能够检测超过9000类物体,它联合训练了COCO数据集和ImageNet数据集。是在YOLO和YOLOv2基础上的进一步改进。

论文学习记录:YOLO9000: Better, Faster, Stronger

一、更好

YOLO与Fast-RCNN相比,其bounding box的定位精度差。与Region Proposal的方法相比,其recall低。YOLOv2并没有增加网络的深度, 相反还简化了网络使其容易学习。

  • Batch Normalization。YOLOv2在其每一卷积层的后面添加了Batch Normalization,这一措施将mAP提升了2%。Batch Normalization还有助于模型正则化,去掉dropout也不会使模型overfitting。
  • High Resolution Classifier。当前大部分目标检测都使用ImageNet进行预训练分类器。YOLO先是用224x224分辨率的图像进行分类训练,然后将分辨率提高到448x448进行检测。而YOLOv2则直接在448x448的分辨率上用ImageNet进行10个epochs的fine tune,High Resolution Classifier能提升4%的mAP。
  • Convolutional With Anchor Boxes。YOLO直接使用全连接层进行bounding box的坐标预测。YOLOv2则移除了全连接层,使用Anchor boxes来预测bounding box。首先去掉一个池化层,是卷积神经网络输出更高的分辨率特征,然后将输入图像的尺寸从448x448调整到416x416,这样的话cell个数为奇数便于确定中心点。以32倍率下采样得到的feature map大小是13x13。使用anchor boxes会使mAP有一定的降低,但是recall从81%提升到88%。
  • Dimension Clusters。YOLO使用anchor boxes进行检测的时候会有两个问题:一是box的尺寸是手动选择的,二是模型不稳定。YOLOv2则是在训练集bounding box上使用k-means聚类的方法自动寻找好的先验。对于距离度量采用:论文学习记录:YOLO9000: Better, Faster, Stronger

论文学习记录:YOLO9000: Better, Faster, Stronger

论文学习记录:YOLO9000: Better, Faster, Stronger

  • Direct location prediction。YOLOv2延续了YOLO的思想,预测相对于网格单元位置的位置坐标。每个cell预测5个bounding box,每个bounding box5个坐标。

​​​​​​​论文学习记录:YOLO9000: Better, Faster, Stronger

论文学习记录:YOLO9000: Better, Faster, Stronger

  • Fine-Grained Features。YOLOv2在13x13的feature map上预测检测结果。YOLOv2通过简单的增加一个passthrough layer来在更早的层获得26x26分辨率的feature map。Passthrough layer将高分辨率特征和低分辨率特征的相邻特征堆叠到不同的通道,类似于ResNet的identity mapping。最终26*26*512的feature map变成13*13*2048的feature map。
  • Multi-Scale Training。每迭代几次就更改网络输入图像的尺寸。因为采样倍率为32,所以尺寸在{320, 352, ..., 608}之中,最小320x320,最大608x608。

二、更快

大部分特征检测框架基于VGG-16来提取基础特征,准确但复杂。YOLO则使用GoogleLeNet,虽然准确率低一点但是更快。

  • Darknet-19。YOLOv2使用了一种新的分类模型,Darknet-19大部分使用3x3的滤波器,并且在每次池化后将通道数加倍。Darknet-19使用全局平均池化做预测以及1x1滤波器来压缩3x3卷积之间的特征表示。Darknet-19拥有19个卷积层和5个最大池化层。

论文学习记录:YOLO9000: Better, Faster, Stronger

  • Training for classification。在ImageNet 1000个分类数据集上训练160个epochs,使用随机梯度下降,learning rate=0.1,polynomial rate decay=4,weight decay=0.0005,momentum=0.9,神经网络框架是Darknet。把分辨率扩大到448x448,进行fine tune的时候初始learning rate=0.001,10个epochs。
  • Training for detection。去掉最后一个卷积层,加上一个3x3的卷积层,通道数1024,紧接着一个1x1的卷积层,通道数为我们需要检测的种类数量。还添加了从最后的3x3x512层到倒数第二层的passthrough layer,来使用细粒度的特征。训练160个epochs,初始learning rate=0.001,在第60和90epochs的时候分别除以10,weight decay=0.0005,momentum=0.9。数据增强的方式与YOLO相同。

三、更强

如果想同时在检测数据集和分类数据集上进行训练的话,就要找到一种一致性的方法来融合这些label信息。在训练过程中,当网络遇到一个来自检测数据集的图片与标记信息,那么就把这些数据用完整的YOLOv2 loss功能反向传播这个图片。当网络遇到一个来自分类数据集的图片和分类标记信息,只用整个结构中分类部分的loss功能反向传播这个图片。

  • Hierarchical classification。借鉴了ImageNet中的WordNet组合数据集思想来WordTree。首先检查ImageNet出现的名词,再到WordNet找到这些名词,再找到他们到达根节点的路径。如此迭代将路径添加到WordTree中。计算某一节点的概率只需将该节点到根节点上所以的概率相乘。

论文学习记录:YOLO9000: Better, Faster, Stronger

论文学习记录:YOLO9000: Better, Faster, Stronger

  • Dataset combination with WordTree。使用WordTree将不同数据集的同义词联合起来。

论文学习记录:YOLO9000: Better, Faster, Stronger

  • Joint classification and detection。训练的时候使用WordTree混合了COCO检测数据集与ImageNet中的Top9000类,混合后的数据集对应的WordTree有9418个类。但是ImageNet的数据集太大了,为了平衡一下两个数据集,通过oversampling COCO数据集,ImageNet数据集与COCO数据集之间的数据量比例达到4:1。 使用这个数据集训练了YOLO9000,基于YOLOv2框架,但是先验使用的是3而不是5,主要是为了现在输出的大小。

相关文章: