目录
论文:An Analysis of Scale Invariance in Object Detection – SNIP
时间及出处:CVPR 2018
1. Motivation
Why is object detection so much harder than image classification?
- COCO数据集中,图像中总目标区域占原图的比例(横轴)在0.472以下的图像总数占COCO数据集的90%,比例在0.106以下的图像占比为50%,比例在0.024以下的图像占比为10%,这与ImageNet数据集差别非常大。
- 相比于ImageNet,COCO存在非常多的小物体。
3个原因导致了object detection的难度大于image classification:
- 尺寸变化大:大物体和小物体的数量相差20倍。
- 小物体数量更多,且尺寸更小。
- 模型在数据集迁移时产生domain-shift偏差:ImageNet预训练的模型在迁移到样本大小差异较大的COCO数据集中,很可能产生一定的domain-shift偏差。
小目标检测一直是目标检测的难题,由COCO数据集上的测试结果可知, A P s AP_s APs通常比 A P m AP_m APm和 A P l AP_l APl低,主要原因有:
- CNN网络提取的语义特征和分辨率之间的矛盾;
- anchor-based模型中,就算小目标在anchor范围内,也会因面积小而导致IoU过低。
现在有很多针对小目标检测以及尺寸变化的措施和改良:
- 增大输入图像尺寸;
- 用扩张卷积来增加感受野,减小检测器对分辨率的敏感度(相同分辨率的特征图具有更大的感受野);
- 用可变形卷积实现动态感受野的;
- 用SSD这种在深层和浅层的特征图上直接各自独立做预测的;
- 用FPN这种把浅层特征和深层特征融合的,增强高分辨特征图的语义信息,改善小目标检测。
- 多尺度训练和多尺度预测(针对尺寸变化)
- 自动学习模型的anchors(如GA)
- 通过数据增强:一些特别有用的小物体检测的数据增强方法包括随机裁剪,马赛克数据增强等
作者对现有的方法提出以下问题:
- 通过增大图像尺寸来提高目标检测性能是否是关键做法?(目标检测数据集的图像尺寸约为 480 × 640 480\times640 480×640,通常将其增大到 800 × 1200 800\times1200 800×1200)
- 能否使用更小的下采样率或更低分辨率的图像训练率来预训练模型(指ImageNet),然后在COCO数据集上微调,来检测小目标。
- 在微调时,在通过增大图像尺寸之后,应该只使用某一尺寸范围的object(如 64 × 64 64\times64 64×64~ 256 × 256 256\times256 256×256),还是所有尺寸的object(如 16 × 16 16\times16 16×16~ 800 × 1000 800\times1000 800×1000)均可参与训练?
2. 观察实验
- 为寻找以上问题的答案,作者做了以下实验:
2.1 实验一
2.1.1 CNN-B
- 实验目的:研究测试图像分辨率与训练图像分辨率之间的差异程度对模型分类准确度的影响。
- 实验步骤:(高清图像训练,伪高清图像测试)
(1) 使用ImageNet原始的 224 × 224 224\times224 224×224训练图像对ResNet-101进行训练(高清图像训练)。
(2) 将ImageNet验证数据集中的 224 × 224 224\times224 224×224高分辨率图像分别下采样至 48 × 48 48\times48 48×48、 64 × 64 64\times64 64×64、 80 × 80 80\times80 80×80、 96 × 96 96\times96 96×96、 128 × 128 128\times128 128×128,再分别上采样至 224 × 224 224\times224 224×224,得到伪高清图像。
(3) 将第2步得到的所有伪高清图像分别作为测试数据,用来测试模型的分类准确率。 - 实验结果:如图 (a) 所示
- 实验结论:测试图像的分辨率与训练图像的分辨率的差异越大,模型的分类准确率越低,特别地,当测试图像的分辨率与训练图像的分辨率相同时,分类准确率最高(同为 224 × 224 224\times224 224×224),这说明CNN对数据的尺度变化的鲁棒性还不够好。
2.1.2 CNN-S
- 实验目的:模拟训练图像和测试图像分辨率一致时对模型分类性能的影响,验证图像分辨率的高低对分类准确度的影响。
- 实验步骤:(低清图像训练,低清图像测试)
(1) 对ImageNet原始的 224 × 224 224\times224 224×224训练图像分别进行下采样至 48 × 48 48\times48 48×48和 96 × 96 96\times96 96×96。
(2) 基于 48 × 48 48\times48 48×48的图像进行训练,将网络的第一层卷积核大小为 7 × 7 7\times7 7×7的卷积层换成卷积核为 3 × 3 3\times3 3×3,stride为1的卷积层。
(3) 基于 96 × 96 96\times96 96×96的图像进行训练,将网络的第一层卷积核大小为 7 × 7 7\times7 7×7的卷积层换成卷积核为 5 × 5 5\times5 5×5,stride为2的卷积层。
(4) 对于用 48 × 48 48\times48 48×48的图像进行训练的网络,就用 48 × 48 48\times48 48×48的图像进行测试;对于用 96 × 96 96\times96 96×96的图像进行训练的网络,就用 96 × 96 96\times96 96×96的图像进行测试。 - 实验结果:如图 (b) 和 (c)所示。
- 实验结论:
(1) CNN-B 和 CNN-S 对比,再一次说明了测试图像的分辨率与训练图像的分辨率相同时,分类准确率最高。
(2) 在保持训练-测试图像分辨率一致时,分辨率越高,模型分类性能越好。 - 卷积核越小、卷积步长越小,网络对小目标的响应越强,越能提取小目标的特征。由于 CIFAR10 数据集中的小目标比 ImageNet 数据集中多,所以,相比于在ImageNet 数据集上表现好的网络,在CIFAR10 数据集上表现好的网络,其卷积层的卷积核和卷积步长通常比较小。从上述实验也可以看出,为了让网络对分辨率小的图像仍具有较高的分类准确率,作者降低了卷积核的大小( 224 × 224 224\times224 224×224的网络使用 7 × 7 7\times7 7×7的卷积核,步长为2; 96 × 96 96\times96 96×96的网络使用 5 × 5 5\times5 5×5的卷积核,步长为2; 48 × 48 48\times48 48×48的网络使用 3 × 3 3\times3 3×3的卷积核,步长为1)。
2.1.2 CNN-B-FT
- 高清训练+伪高清微调,伪高清测试。 实际上就是利用伪高清图像对CNN-B进行微调,然后用伪高清图像进行测试。实验结果如图 (b) 和 (c)所示,说明
(1) CNN-B和CNN-B-FT对比说明,伪高清微调能提高分类性能
(2) CNN-S和CNN-B-FT对比说明,基于高分辨率图像训练的模型也可以有效提取放大的低分辨率图像的特征。
2.2 实验二
- 用检测器Deformable-RFCN对不同分辨率的图像、不同尺寸的object进行训练,采用相同的分辨率(
1400
×
2000
1400\times2000
1400×2000)的图像进行测试,在COCO数据集上测试检测器对小目标的检测准确度
A
P
s
AP_s
APs。
2.2.1 Training at different resolutions(对应图5.1)
- 80 0 a l l 800_{all} 800all:训练图像分辨率为 800 × 1400 800\times1400 800×1400,回传所有尺寸的object,最终结果是 A P s = 19.6 AP_s=19.6 APs=19.6
- 140 0 a l l 1400_{all} 1400all:训练图像分辨率为 1400 × 2000 1400\times2000 1400×2000,回传所有尺寸的object,最终结果是 A P s = 19.9 AP_s=19.9 APs=19.9
- 实验结果符合之前的实验结论:训练图像分辨率与测试图像分辨率一致时,模型性能比较好。
- 但是为什么 A P s AP_s APs只提高了0.3?猜想原因是:训练图像被放得太大时,虽然小目标被放大后更有利于检测,但是大目标被放得太大时,会影响模型对大目标的检测性能,大目标损失将增加,导致模型偏向于关注大目标,所以小目标的检测性能提升有限。
2.2.2 Scale specific detectors(对应图5.2)
- 既然特别大的目标会影响小目标的检测性能的提升。那么在回传时就不回传大目标。
- 140 0 < 80 p x 1400_{<80px} 1400<80px:训练图像分辨率为 1400 × 2000 1400\times2000 1400×2000,只回传在原图中像素小于80的小物体
- 实验结果甚至比 80 0 a l l 800_{all} 800all还差,猜想原因是:由于直接忽略了中大物体(大概占30%),影响了检测器对尺度变化的调节性,对于一些极端尺寸的物体,如特别小的物体,检测性能更加差了。
2.2.3 Multi-Scale Training (MST)(对应图5.3)
- MST:对多个分辨率的所有object同时进行回传,其结果也不太好。原因是:存在一些特别大或者特别小的物体,会影响模型性能。
- 实验结论:object的尺寸必须要在合适范围之内,并且object的种类要比较多。
3. SNIP
- 基于前面的分析,我们希望存在一个算法既可以获得多尺度的目标信息,又可以减少domain-shift带来的影响,因此SNIP(Scale Normalization for Image Pyramids)出现了。SNIP目的是结合以上方法的优点:train with maximal variations in appearance and pose while restricting scale to a reasonable range。该目的正好反映SNIP的2个创新点:
- 为减小domain-shift,在梯度回传时只将和预训练模型所基于的训练数据尺寸相对应的RoI的梯度进行回传;
- 为保证满足要求的RoI的数量和种类足够多,借鉴多尺度训练的思想,引入图像金字塔来处理数据集中的不同尺寸的数据。
- 可以说,SNIP是MST的升级版:只有当这个物体的尺度与预训练数据集的尺度(通常
224
×
224
224\times224
224×224)接近时, 我们才把它用来做检测器的训练样本。
3.1 训练RPN
- 使用Faster R-CNN的方法,利用所有的GT框对所有的anchor进行label assignment,即在RPN网络中,一个anchor的标签是根据anchor和GT的IoU值来确定的,只有下面种情况才会认为anchor是正样本:
(1) 假如某个anchor和某个GT框的IoU超过某个阈值,那么该anchor为正样本
(2) 假如一个GT框和所有anchor的IoU都没有超过设定的阈值,那么和这个GT框的IoU最大的anchor就是正样本 - 判定不同分辨率图像中的GT框是否有效:有效GT框指其尺度落入某一预先设定的范围(该范围与预训练数据集的尺度接近,通常 224 × 224 224\times224 224×224),否则为无效GT框(如Figure 6的紫色框所示)。
- 判定不同分辨率图像中的anchor是否有效:与无效GT框的IoU小于0.3的anchor即为有效anchor。显然负样本基本上是有效的,而相当一部分正样本会成为无效anchor,无效anchor不参与梯度回传。
3.2 训练detection head
- 与训练RPN类似,同样会根据GT框的有效性判断proposal的有效性,并决定是否需要进行梯度回传。
3.3 inference
- 在inference阶段,按照Faster R-CNN的网络前向推断得出多个预测边界边界框,但会根据尺寸范围来决定具有应该保留哪些边界框,如Figure 6所示。
3.4 实验
- 第二行的多尺度测试比第一行的单尺度效果好,而第三行是在多尺度测试的基础上加入了多尺度训练的情况,这个时候在大尺寸目标上的检测结果要比只有多尺度测试的时候差(
A
P
L
AP^L
APL降低了),主要是因为训练数据中那些极大和极小的目标对训练产生了负作用。
4. 总结
- 总的来说,SNIP这个算法从数据集入手,证明了尺度和图像金字塔在目标检测中的重要性。然后针对性的提出SNIP算法,即我们不需要在高分辨率图像中对大型的目标进行反向传播,不需要在低分辨率图像中对小目标进行反向传播,以更好的缓解预训练的尺寸空间中的Domain-Shift从而获得精度提升。