文章目录
YOLO9000: Better, Faster, Stronger
1. 论文主要内容
1.1. Abstract 摘要
YOLOv2 训练和测试都是在VOC和COCO的检测数据集。
YOLO9000训练时使用:
- COCO detection dataset
- ImageNet classification dataset,应该是9000多类。
YOLO9000测试时使用:
- ImageNet detection task。共有200类,只有44类COCO数据集中有,156类COCO数据集中没有。
作者提出了两种新的算法,YOLOv2 和 YOLO9000。YOLOv2在YOLOv1的基础上添加了很多其他论文中的训练方法,可以检测不同尺寸的图片,平衡了速度和精度。在VOC2007数据集上测试达到了67FPS和76.8mAP,在40FPS速度下测试时,得分78.6mAP,这个得分比Faster R-CNN、ResNet、SSD更快更好。
YOLO9000:作者提出了能同时训练(joint training)检测数据集和分类数据集的算法。同时使用COCO检测数据集和ImageNet分类数据集训练,这样就可以检测到COCO数据集之外的物体了。在ImageNet检测数据集上验证结果,检测训练时COCO数据集中有的44类时,得分 19.7 mAP;检测训练时COCO数据集中没有的156类时,得分 16.0 mAP。YOLO9000不仅能检测这200类的物体,还能检测所有的 ImageNet classification dataset 中的物体(9000多类)。
1.2. Introduction 简介
通用的检测方法应该是又快又好的,还能检测大量类别的物体,但算法总是会被少量目标所牵制。
检测任务只有几百的种类,最多几十万张图片。但分类任务却有几十万的种类,几百万的图片。
我们希望检测任务的种类和数量和跟上分类任务,近期来看这是不可能的任务。
所以作者提出了一种将不同数据集的图片合起来(dataset combination method),使用一种叫分级图层(hierarchical view)处理方法来利用分类数据集完成检测任务。
作者提出了一种联合训练(joint training algorithm)方法在训练检测任务时,可以同时利用检测数据集和分类数据集。这种方法利用训练图片来提高定位精度,利用分类图片来提高种类数量和鲁棒性。
使用这种方法,YOLO9000能检测超过9000类的物体。
1.3. Better 更好
YOLOv1 与当前的算法相比有很多缺点。与Fast R-CNN 相比,YOLOv1 有更多的定位偏差错误。与使用 region proposal 的方法相比,召回率(recall)更低。所以作者在保持分类精度的前提下,提高了算法的召回率和定位准确度。
通常使用更大的网络,组合更多的方法,可以提高检测效果。然而YOLOv2简化了网络,使特征更容易习得,精度提高,速度依然很快。作者尝试了很多其他论文的方法,实验结果见表格2。
Batch Normalization 批处理
BN 可以显著提高收敛性。作者在所有的全连接层后面添加了BN,不再使用YOLOv1中的 dropout 了。使用BN效果提升2%mAP。
High Resolution Classifier 使用高分辨率图片训练分类网络
大家的检测算法都会在ImageNet上预训练分类器(如检测?分类?如何预训练)。最开始是 AlexNet 使用224 * 224的图片分类。YOLO的分类网络也先后在224*224, 448*448的图片上预训练的,网络先后学习的图像大小不同。
YOLOv2 先使用ImageNet数据集输出448*448的图片来训练分类网络(epochs = 10),不在使用224*224的低分辨率图片来训练分类网络了,这样可以让网络的过滤器更加适应高分辨率的图片,最后在检测数据集上微调。使用高分辨率图片效果提升4%。
Convolutional With Anchor Boxes 卷积层使用锚框
YOLOv1 是通过在所有卷积层之后添加全连接层来预测 bounding boxes 的坐标。Faster R-CNN 是通过 hand-picked priors 而不是坐标来预测 bounding boxes 的,Faster R-CNN 中的 RPN(region proposal network)只使用了卷积层来预测 Anchor Boxes 的偏移和置信度(offsets and confidence)。卷积网络可以让RPN在特征图上的每个位置预测出偏移。网络预测偏移要比预测坐标容易。
RPN 如何提取的不懂,偏移指的是什么?为什么预测偏移比预测坐标容易?
作者去掉了所有的全连接层,使用 anchor boxes 来预测 bounding boxes 。作者去掉了一个卷积层后面的池化层,让卷积层的输