论文:An Analysis of Scale Invariance in Object Detection – SNIP(CVPR 2018)
针对问题
- 数据集目标尺寸分布范围大
- 小目标的检测效果不佳
数据集分析
如果将object的尺寸除以图像尺寸得到的倍数来排序,如下图:
- 在ImageNet数据集中,中位数为0.554倍,COCO数据集中则为0.106
- COCO中小于0.024有10%大于0.472的也有10%,尺度差了约20倍,尺度跨度极大
由上面分析可知:ImageNet和COCO数据集在object的尺寸分布上差异比较大,而目标检测算法又常用ImageNet数据集的预训练模型提取特征(迁移学习),这可以认为是训练和测试数据不匹配问题,即文中的domain-shift
Scale Normalization for Image Pyramids (SNIP):
对于不同尺度目标和小目标问题有不少解决方法提出:
- 浅层特征与深层特征融合
- 扩张卷积和变形卷积增加感受野以检测大目标
- 多个预测层预测不同尺度目标
- 上下文信息消除歧义
- 多尺度训练(测试)
- 图像金字塔
RPN中两种情况下会给anchor分配正标签:
- anchor和某个ground truth的IOU超过阈值(0.7)
- 假如某个ground truth和所有anchor的IOU都没超过阈值,则取IOU最大的anchor为正样本
但是在COCO数据集上(800×1200)
- 只有30%的ground truth满足第一种情况,即便将阈值调整为0.5,也只有58%的ground truth满足第一种情况,这样有大量的正样本质量并不高,多尺度的方法一定程度上缓解了此现象
为缓解domain-shift问题,以及尽可能匹配多个尺度的目标,提出 SNIP 的训练方法:
- 在梯度回传时只将和预训练模型的训练数据尺寸相对应ROI的梯度进行回传(缓解domain-shift)
- 引入图像金字塔来处理数据集中不同尺寸的数据(匹配不同尺度目标)
实验分析
ImageNet数据集相关实验分析
-
CNN-B:采用尺寸为224×224的ImageNet数据集训练的分类模型,验证时先将224×224大小的原始图片缩小到48×48、64×64、80×80、96×96和128×128几个尺度,然后再放大到224×224作为验证数据,以便比较分辨率对检测效果的影响。
-
CNN-S:训练和验证时的分辨率保持一致,针对48×48和96×96两种分辨率,对模型第一层进行修改,分辨率为48×48时,将7×7卷积核换成3×3,stride为1。分辨率为96×96时,将7×7卷积核换成5×5,stride为2,以便对比训练和验证分辨率一致和不一致时的影响
-
CNN-B-FT:将CNN-B在放大的低分辨率图像上fine tune后的模型,同时也采用放大的低分辨率图像验证,观察高分辨率图片训练的模型是否能有效提取低分辨率图像的特征
下图为CNN-B、CNN-S和CNN-B-FT的实验结果:
- 由(a)可知:验证时图片的分辨率与训练数据差别越大,效果越差
- 由(b)(c)可知:
- 当训练和验证时的分辨率保持一致,检测效果明显更好
- 高分辨率图片训练的模型是能有效提取低分辨率图像特征
COCO数据集相关实验分析
采用1400×2000大小图片训练,相关实验结果如下表所示:
- 140 0 < 80 p x 1400_{<80px} 1400<80px表示训练时忽略中等和大尺寸目标(目标高大于80像素),显然效果不佳
- 80 0 a l l 800_{all} 800all表示采用800×1400大小图片验证
- 140 0 a l l 1400_{all} 1400all表示采用1400×2000大小图片验证,与训练时一样,效果比 80 0 a l l 800_{all} 800all好
- Multi-Scale Training(MST)表示采用多尺度训练,效果不升反降,甚至比 80 0 a l l 800_{all} 800all更差
- Scale Normalization for Image Pyramids(SNIP):表示训练时只对尺寸在指定范围内的目标回传损失,效果显著提升