论文:An Analysis of Scale Invariance in Object Detection – SNIP
论文链接:https://arxiv.org/abs/1711.08189
代码链接:http://bit.ly/2yXVg4c
这篇是CVPR2018的文章,引用文献非常到位,同时实验结果非常惊艳,总体来看比同是CVPR2018上的cascade RCNN效果还要好一些。概括而言,这篇文章从COCO数据集开始分析,认为目前目标检测算法的难点在于数据集中object的尺寸分布较大,尤其对于小目标的检测效果也有待提高,因此提出Scale Normalization for Image Pyramids (SNIP)算法来解决这个问题。
先来看看这篇文章的出发点。这篇文章的出发点可以简单概括为:数据集。作者发现如果将数据集按照图像中object的尺寸(scale)除以图像尺寸的倍数来排序,那么在ImageNet数据集中,这个倍数的中位数差不多是0.554倍,而在COCO数据集中,这个倍数是0.106倍,如Figure1中两条线标出的Median点所示。Figure1是关于ImageNet和COCO数据集中object尺寸和图像尺寸的倍数关系曲线,横坐标表示object的尺寸/图像尺寸的值,纵坐标表示占比。也就是说在COCO数据集中,大部分的object面积只有图像面积的1%以下,这说明在COCO数据集中小目标占比要比ImageNet数据集大。另外,从Figure1中的COCO曲线可以看出,第90%的倍数(0.472)差不多是第10%的倍数(0.106)的20倍!这说明在COCO数据集中的object尺寸变化范围非常大。
那么这种差异会带来什么影响呢?因为在目标检测算法中常用基于ImageNet数据集预训练的模型来提取特征,也就是常说的迁移学习,但是从Figure1的两条曲线可以看出ImageNet和COCO数据集在object的尺寸分布上差异比较大,这样在做迁移学习时可能会存在一些问题,文章中将这个问题概括为domain-shift,可以简单理解为训练集和测试集分布存在较大差异,后面会有实验来证明这种差异对效果的影响。其实去年的YOLO v2也研究了类似的问题,YOLO v2考虑到在ImageNet数据集上预训练模型时输入图像大小是224*224,和检测网络用的尺寸差别较大(YOLO v2中常用416*416),所以就将预训练模型在416*416的ImageNet数据集上继续预训练,然后再用到检测模型提特征,这样就实现了预训练模型和检测模型的良好过渡。