目标检测中的多尺度问题及优化-SNIP


在目标检测任务中,算法的效果常常会受到多种因素的影响,比如遮挡、目标尺度变化等,在之前的一篇博文中,笔者解释了针对遮挡问题进行优化的几种算法。最近中科院自动化所陈韫韬等人提出了"Trident Network",单模型的mAP刷到了48.4,于是引起了笔者的兴趣,在读这篇文章的过程中发现,目标检测方向已经存在了几篇解决多尺度问题的文章,为了能够对多尺度问题有更加深刻的理解,于是阅读了一系列的目标检测中的多尺度问题及优化的文章。

SNIP,全称为“Scale Normalization for Image Pyramids”,作者在提出解决方案(SNIP)之前,做了大量的实验来发现问题和分析问题的原因,笔者一直做的是分类和检测方向,在读文章的过程中受到很大的启发,故在这里记录,希望对大家也有所帮助。

1 检测任务的困难

图像分类算法,比如ResNeXt-101 32 × 48d网络结构,在Imagenet数据集上的Top5准确率已经98%左右,Top1为85%。对于图像检测算法,最好的模型在coco数据集上的效果AP50AP_{50}为62%,显然,总体上来看,准确率差了20个点左右,那么问题来了,为什么检测算法比识别算法的效果低这么多呢

1.1 尺度差异

作者认为原因在于,检测任务中的目标存在较大的尺度变化(large scale variation)。作者统计了Imagenet和COCO数据集的特点,如下图,
目标检测中的多尺度问题及优化-SNIP
其中,横坐标表示目标相对于原图的比例,纵坐标表示累计分布(cumulation distribution function)。显然,由图中可以看出,COCO数据集中50%的目标相对原图的比例小于0.106,而Imagenet数据集中相对原图的比例小于0.106的目标的比例不足10%,因此,COCO数据集中的目标尺寸明显小于Imagenet数据集中的目标。

而且,COCO数据集中,最小的10%的目标尺寸小于0.024,最大的10%的目标尺寸大于0.472,显然,对于待检测的所有目标,它们的尺寸差异是很大的,那么如何把所有尺寸的目标都召回来呢

1.2 domain-shift

通常,对于目标检测任务,我们会使用imagenet预训练的模型,然后做finetune。但是,上面提到了分类数据集中目标的尺寸比检测数据集中的大,所以直接finetune会引入“domain-shift” 问题,那么如何保证finetune用的数据集中目标尺寸和检测数据集中保持一致呢

2 图像分辨率对分类任务的影响

在分类任务中,我们常常遇到训练集或者测试集中包含了不同分辨率的图片。根据经验这时候会有很多种选择,(1) 把所有的图片缩放到相同尺寸,然后训练和推理;(2) 训练大网络和小网络,分别用来处理大分辨率和小分辨率的图片,笔者之前用过第二种方案。但是在论文中,作者用数据说话,证明了这两种方案都是次优的。

(a)CNN-B方案:训练集将图像下采样到48×48,64×64,80×80,96×96,128×12848\times 48, 64\times 64, 80\times 80, 96\times 96, 128\times 128,模拟出低分辨率图片,然后将低分辨率图像resize到224×224224\times 224作为网络的输入,测试集将所有图像resize到224×224224\times 224

(b)CNN-S方案:训练集将图像下采样到48×48,64×64,80×80,96×96,128×12848\times 48, 64\times 64, 80\times 80, 96\times 96, 128\times 128,模拟出低分辨率图片,作为网络的输入,测试集将所有图像resize到相同分辨率;

(c)CNN-B-FT:先使用224×224224\times224的高分辨率图像对网络做预训练,然后将图像下采样到48×48,64×64,80×80,96×96,128×12848\times 48, 64\times 64, 80\times 80, 96\times 96, 128\times 128,模拟出低分辨率图片,接着将低分辨率图像resize到224×224224\times 224,然后用这些上采样的模糊图片finetune模型参数。

它们的对比结果如下,
目标检测中的多尺度问题及优化-SNIP
结论1:由图(a)可以看出,训练集和测试集的图像分辨率差异越大,测试集的效果越低;

解释:因为先下采样然后resize,相当于训练集图片变模糊了,也即模型学习的是模糊图像的特征,且采样率越高,图片越模型,对应的测试集(非模糊图像)效果就越差。

结论2:从图(b)©可以看出,模型效果 CNN-B-FT > CNN-S > CNN-B;

解释:CNN-B-FT的效果优于CNN-S,作者认为原因是,从高分辨率图像中学习到的知识有助于识别低分辨率的图像。“This result empirically demonstrates that the filters learned on high-resolution images can be useful for recognizing low-resolution images as well.”

3 目标检测的影响因素

3.1 图像分辨率

这里研究了训练集和测试集的分辨率对结果的影响,做了如下对比实验

实验1(简写为800all800_{all}:训练集分辨率设置为800×1400800\times 1400,学习训练集中的所有目标,测试集分辨率设置为1400×20001400\times 2000

实验2(简写为1400all1400_{all}:训练集分辨率设置为1400×20001400\times 2000,学习训练集中的所有目标,测试集分辨率设置为1400×20001400\times 2000

对比结果:实验2的效果略微优于实验1;

解释:(1)为什么实验2的效果更好呢?因为实验2的训练集和测试集图像分辨率相同;(2)为什么效果提升不明显呢?因为实验2训练集图片分辨率大,那么其中的medium-to-large目标会变得太大导致分类出错。也就是说,高分辨率的训练集图片提升了小目标的识别效果,但是降低了medium-to-large目标的识别效果。

思考:怎么在提升小目标的识别效果的同时,也提升medium-to-large目标的识别效果呢?

3.2 图像中目标的尺寸

实验3(简写为1400<80px1400_{<80px}:训练集分辨率设置为1400×20001400\times 2000,只学习训练集中的小目标,忽略掉medium-to-large目标,测试集分辨率设置为1400×20001400\times 2000

对比结果:实验3的效果明显低于实验1;

解释:medium-to-large目标在所有目标中的比例为30%左右,完全忽略掉会导致模型对目标的差异性的学习不够充分,比如形状、姿态的变化。相反地,保留这一部分目标的话,虽然模型学的不好,但还是能学到一些信息的,好处>坏处。

3.3 数据增强

多尺度训练(Multi-Scale Training)的方法,简称为MST,通常使用全卷机网络,然后用不同分辨率的图像batch来优化模型参数,因此网络可以学习到目标在不同分辨率下的特征,但是对于特别小或者特别大的目标效果也不好(比如mtcnn算法就使用了多尺度训练,详见笔者之前的一篇博文)。

3.4 结果与结论

3.4.1 结果

论文中给出了不同实验的结果,如下图,
目标检测中的多尺度问题及优化-SNIP

3.4.2 结论

为了使检测器的效果更好,要满足两点要求,(1)检测器要学习合理尺寸的目标;(2)检测器要学习目标的差异化,比如目标本身形状、姿态的变化。

4 SNIP

4.1 网络结构

SNIP,全称为“Scale Normalization for Image Pyramids”,它的结构和MST很相似,但是算是MST的改进版本。与MST类似,它也是把输入图像缩放到不同的尺寸,论文中取了3个尺寸,480×800,800×1200,1400×2000480\times800, 800\times1200, 1400\times2000,对于尺寸为1400×20001400\times2000的高分辨率图像,作者意识到大目标很难分类,所以只学习small目标(改进点);对于尺寸为480×800480\times800的低分辨率图像,作者意识到小目标很难分类,所以只学习big目标(改进点);对于尺寸为800×1200800\times1200的中等分辨率图像,只学习middle目标(改进点),SNIP整个的网络结构如下图,
目标检测中的多尺度问题及优化-SNIP
从单一分支维度来看,该分支能够学习合理尺度的目标。从目标尺度的维度来看,SNIP框架能够学习所有尺度的目标,因此保证了3.4.2中提到的两点要求。

4.2 Q&A

(1)SNIP结构中的三个分支,是否存在参数共享?

回答:上图中的三个分支的参数是共享的,在训练的时候,每个batch中的数据会缩放到某一个尺寸,比如480×800480\times800,然后学习该分辨率下的big目标。当训练过程完成时,网络能够学习到所有目标(small、middle、big)的特征了。

(2)Invalid GT和Invalid Anchor怎么定义?

回答:仍然以480×800480\times800的训练batch为例,使用阈值[s3,e3][s_{3}, e_{3}]可以筛选出所有的big目标,这些big目标即为valid GT,其余的middle和small目标为Invalid GT。在RPN网络中,若当前Anchor与所有Invalid GT的IoU小于0.3,则被认为valid anchor(positive sample),否则被认为Invalid anchor(negative sample)。

5 总结

论文中研究了输入图像分辨率和目标尺寸对效果的影响,得到的结论有两点,一是训练要使用不同分辨率的图像,使模型能够学习到目标的差异化(比如形状的变化),二是保证模型学习到对应尺度的目标,从而提出了新的目标检测网络结构SNIP,整个行文过程有理有据。缺点是在inference的时候,需要向网络中分别输入三种分辨率的图像,导致推理速度慢,作者后面对速度做了优化,提出了新的算法SNIPER,大家感兴趣也可以去阅读哈????。


6 参考资料

https://arxiv.org/abs/1711.08189

https://zhuanlan.zhihu.com/p/36431183