SNIP - An Analysis of Scale Invariance in Object Detection

0.总结

SNIP提出了一种适用于2-stage检测器的Image Pyramid训练方法。该训练方法能够做到:

  1. 提供多尺度的物体信息,丰富语义信息,也是为了弥补2中筛选造成的信息缺失
  2. 限制检测器在每个Scale上的训练(筛选Anchor、GT等),让输入图像中物体的尺寸与pretrain的尺寸一致,改进学习效果。

为此,作者首先做了两个实验来验证

  1. fintune需要训练、测试的尺度一致性。
  2. 简单筛选(只在小物体上训练)会造成语义缺失(大物体没有了),简单的MST会造成语义混淆(大小物体的尺寸差别太大了,网络学不进去)。

之后提出了SNIP,结合Image Pyramid和Scale匹配,获得了SOTA效果。

1.问题

COCO数据集中存在的两个问题:1.大量小物体 2.尺度变化极大

Therefore,most object instances in COCO are smaller than 1% of image
area!
To make matters worse, the scale of the smallest and largest 10%
of object instances in COCO is 0.024 and 0.472 respectively (resulting
in scale variations of almost 20 times!);
SNIP - An Analysis of Scale Invariance in Object Detection_第1张图片

这两个问题迫使检测器需要具备很强的尺度不变性,同时还要具备从fintune前在ImageNet上训练的识别任务迁移到检测任务的能力。
已经有许多论文对该问题进行了探讨,但仍然有一些重要的问题没有被发现。

• Is it critical to upsample images for obtaining good performance for object detection? Even though the typical size of images in detectiondatasets is 480x640, why is it a common practice to up-sample them to00x1200? Can we pre-train CNNs with smaller strides on low resolution images from ImageNet and then fine-tune them on detection datasets for detecting small object instances?
• When fine-tuning an object detector from a pre-trained image classification model, should the resolution of the training object instances be restricted to a tight range (from64x64 to 256x256) after appropriately re-scaling the input images, or should all object resolutions (from 16x16 to 800x1000, in the case of COCO) participate in training after up-sampling input images?

  1. upsampling是否可以获得更好的结果?是否能够在低分辨率图片上上pre-train,然后fintune到detection数据集上去检测小物体?
  2. 当fintune时,训练用图像中物体的尺寸是应该严格限制还是让所有尺寸的物体都参与训练。
    作者通过实验对这些问题进行了回答,同时还进行了一些实验去验证多尺度能力。scale-specific designs的检测器在每个尺度区间中训练检测器,这有助于减少和pretraining的模型的domain-shift,但是同时减少了各个尺度上的训练样本数目。但另一方面,如果在多尺度上同时训练,又会需要很大的模型容量。
    作者最终提出了一个SNIP模块训练范式,能够减少训练时的尺度变化,而不减少训练样本。具体一点,是通过使用一个在每个尺度上包含正则输入表示的image-pyramid实现的。为了最小化domain-shift,只对和pre-trainedCNN分辨率相近的ROI进行BP。

2.相关工作

尺度问题:[4, 30, 28, 21, 14, 5, 23,35, 26]
最后的stride为32:,解决:[32, 7, 5]
常用策略:上采样[8, 7, 15]
低级特征结合:[23, 31, 1, 31]
独立预测,合并:Methods like
SDP [36], SSH [29] or MS-CNN [3],
多层特征表示: FPN, Mask-RCNN, RetinaNet [23, 13, 24],
face[17]

3.实验

1.domain shift

这里的domain shift指的是测试和训练的图像分辨率不一致。
实验目的
探究该domain shift(测试和训练的图像分辨率不一致)的影响,并比较两种解决方案。
实验:·

网络名称 训练 测试
CNN-B 224*224 先下采样到48* 48,64* 64, 80* 80, 96* 96, 128*128。之后上采样
CNN-S 48*48 48*48
CNN-B-FT 以CNN-B为基础。下采样至48*48,再上采样 同训练集

网络的训练和测试结果如图所示:
SNIP - An Analysis of Scale Invariance in Object Detection_第2张图片
实验结果如图所示:
SNIP - An Analysis of Scale Invariance in Object Detection_第3张图片
解释

  1. 实验a:当训练时所用图像分辨率和测试时所用分辨率差别越大时,即domain shift越严重的时候,性能差距越大。
  2. 实验b、c:当测试训练分辨率一致的时候,采用CNN-B-FT的方法会获得更好的效果。也就是说,在图像分辨率相同的情况下。放大图片以CNN-B为基础进行fintune进行训练可以获得更好的效果。可能有两个原因导致这个结果:1. 放大的过程使用了插值,这在某种程度上增加了一些细节。2.fintune前的网络CNN-B提供了一个很好的初值,并且提供了一些关于高分辨率图像分类的信息,使得CNN-B-FT表象更好。

结论
测试与训练使用的分辨率要匹配。

2. image resolution

目的:探究几种MST的效果吧?主要是为了展示检测器的两个需求:

  1. 获得更多物体信息(variation)
  2. 尺度变化要在网络的可接受范围内。

实验以及结果

名称 训练 测试 结果
140 0 a l l 1400_{all} 1400all 1400*2000,所有物体 1400* 2000,小物体 19.9
80 0 a l l 800_{all} 800all 800*1400,所有物体 同上 19.6
140 0 < 8 0 p x 1400_{<80_{px}} 1400<80px 1400*2000,忽略>80像素的物体 同上 16.4
MST(Multi-Scale) 训练时随机缩放图像尺寸 同上 19.5

解释
1.

trainingat higher resolutions scales up small objects for better classification, but blows up the medium-to-large objects which degrades performance

对比 140 0 a l l 1400_{all} 1400all 80 0 a l l 800_{all} 800all,大尺度的提升不明显,可能是因为大尺度图像虽然包含更多小物体的信息,但是大物体也更大了,并且进行了BP。扰乱了网络对于小物体特征的学习。
2.

lost a significant source of variation in appearance and pose by ignoring medium-to-large objects (about 30% of the total object instances) that hurt performance more than it helped by eliminating extreme scale objects.

对比 80 0 a l l 800_{all} 800all 140 0 < 8 0 p x 1400_{<80_{px}} 1400<80px 140 0 < 8 0 p x 1400_{<80_{px}} 1400<80px的效果更差,这可能是因为减少了大量物体的信息(包括中型物体的信息和一些在小、中之间的物体),降低了perfermance。

  • 这个实验其实不太完善,只进行了 < 8 0 p x <80_{px} <80px的实验,可以做一个把中型物体包括进来的实验,这样子也避免了1中可能出现的扰乱现象,也保留了更多的物体信息。

it is important to train a detector with appropriately scaled objects while capturing as much variation across the objects as possible.

对比MST和其他,MST的效果并不明显。这可能是因为虽然能够增加更多的可利用的物体信息(可利用指的是能够对网络识别物体更加有效),但是也增加了很多无效信息,如过小的bbox和过大的bbox。MST更强的改进了2中的问题,但是也加重了1中出现的问题。

结论
总体来说,就是要同时做到两点才可以:

  1. 获得更多物体信息(variation)
  2. 尺度变化要在网络的可接受范围内。
  • 设计更好的实验

3. Anchor和GT的匹配

*该实验在SNIP实验部分出现。
当使用标准配置(15种anchor,5 scales ,3 aspect ratios,IOU 0.7)时,只有30%的GT被匹配(匹配后的Anchor与其IOU超过0.7)。而IOU设置为0.5时,58%被匹配的GT满足此IOU。

4.SNIP(Scale Normalization for Image Pyramids)

目标

maximal variations in appearance and pose whilerestricting scale to a reasonable range.

  1. 限制尺度训练
  2. 保持最大样本多样性

做法

  1. 只有对应尺度的物体回传梯度
  2. 使用所有物体的信息:通过Image Pyramid来让每个物体都有一个尺度与之对应。
    具体的:
训练过程:
输入各个尺度的输入图像(实现目标1)。

RPN的训练:
1.对于每个尺度,判断GT是否是valid,也就是是否在合适的尺度内。
2.之后确认Anchor是否是Valid,如果与invalid的GT的overlap过大则排除。因为这说明这个Anchor与这个invalid的GT尺度过于相似,也是invalid的。

RCN的训练(C: Classfication)
3.对于提出的ROI也做与1相同的操作。
(1,2,实现目标1)

推断过程:
1.RPN生成,如果符合尺度则valid。
2.尺度合并,使用soft-NMS。

备注:如果是大分辨率图片,则将其随机裁剪为小图片进行训练(主要是GPU的内存不够)

5.SNIP实验

实验配置
RPN和RCN分开训练。
resolution:(480, 800), (800, 1200) and (1400,2000)
RPN valid range:
(1400,2000): [0, 80]
(800,1200): [40, 160]
(480,800): [120, ∞ ]
RCN valid range:

Since in RPN even a one pixel feature map can generate a proposal we use a validity range of [0,160] at (800,1200) for valid ground truths for RPN.

(1400,2000): [0, 80]
(800,1200): [0, 160] : 原因没读懂
(480,800): [120, ∞ ]
Improving RPN:将5 scales增加到7。
预训练使用到了3中实验1的结论。

实验结果
首先是和单尺度、多尺度测试、多尺度训练+测试的对比。
SNIP - An Analysis of Scale Invariance in Object Detection_第4张图片
之后是RPN的效果对比。左边三列应该是mmAR,IOU阈值为50的AR,IOU阈值为75的AR
右边三列是不同物体尺寸的AR。可以看出来,SNPI能明显改善在小物体上的AR,但这一部分原因也是因为大物体的AR本来就够高了。
SNIP - An Analysis of Scale Invariance in Object Detection_第5张图片
最后是整体测试,对比了使用不同Backcone的结果,Ensemble为综合所有网络的结果。
SNIP - An Analysis of Scale Invariance in Object Detection_第6张图片

参考:

DPN:
https://blog.csdn.net/darren2015zdc/article/details/78728947

你可能感兴趣的:(计算机视觉,目标检测)