SNIP理解

An Analysis of Scale Invariance in Object Detection – SNIP

出发点

文章分析了小尺度与预训练模型尺度之间的关系, 并且提出了一个和 Cascade R-CNN 有异曲同工之妙的中心思想: 要让输入分布接近模型预训练的分布(本文主要探讨尺度的分布不一致带来的问题).

之后利用分析的结论, 提出了一个多尺度训练(MST)的升级版:Scale Normalization for Image Pyramids (SNIP).
用于解决检测数据集上尺寸极端变化问题。

由于小尺寸与大尺寸对象很难分别在较小和较大的尺寸下识别出来,本文提出了一个新的训练方案,图像金字塔的尺寸归一化(SNIP),有选择地反向传播不同尺寸的目标实例的梯度作为图像尺寸的公式。

作者发现如果将数据集按照图像中目标的尺寸除以图像尺寸的比例来排序的话,那么在ImageNet中这个比例的中位数是「0.5444」,而在COCO数据集中,这个比例的中位数是「0.106」 ,如下面的Figure1中两个「Median」 代表的点所示。

在这里插入图片描述

其中横坐标表示「目标尺寸/图像尺寸」 的值,而纵坐标则表示比例。我们看到在COCO数据集中大部分目标的面积只有图像面积的1%以下,这「说明在COCO数据集中小目标占的比例比ImageNet多」。此外,在COCO数据集中,第90%(0.472)的倍数差不多是第10%的倍数(0.106)的20倍,这「说明COCO数据集中目标尺寸变化范围非常大」。

我们知道在目标检测算法如Faster RCNN/SSD中常用基于ImageNet数据集预训练的模型来提取特征,也就是迁移学习,但是我们从Figure1发现ImageNet和COCO数据集在目标的尺寸分布上差异比较大,这样在做迁移学习时可能会存在一些问题,论文将其称为域平移「domain-shift」。

研究现状

为了缓解待检测目标尺寸变化以及尺寸偏小的问题,有许多方法被提出:

l 将浅层的特征与深层的特征相结合,用于检测小目标实例。

l 拓展 / 变形的卷积被用来增加检测对象的感受野,用于检测大尺寸实例。

l 在不同分辨率网络层上进行的独立预测,用于检测不同尺寸的对象实例。

l 利用上下文信息来进行消歧。

l 在一个大范围的尺寸内进行训练。

l 在一个多尺寸的图片金字塔上进行推断,并且结合非极大值抑值进行预测。

创新点

  1. 「为了减少第二节提到的Domain-Shift,在梯度回传的时候只将和预训练模型所基于的训练数据尺寸相对应的ROI的梯度进行回传。」

  2. 借鉴多尺度训练的思想,引入图像金字塔来处理数据集中不同尺寸的数据。」

分辨率、尺寸与图片大小的关系?

很多人说分辨率越高的图片越清晰、越大,这是半错误的看法,分辨率其实是密度,是1英寸里有多少像素,所以,文件大小(重量)=面积×密度。举个简单例子:比如现在有一小堆沙子,文件大小是重量,像素是一颗沙,不管你怎么装这堆沙子,它的重量和数量都一样,就算你在1cm地方放几万颗沙子,跟你在1cm的地方只放1颗沙子的都一样的,因为沙子(像素)总量不变,只是密度变了而导致面积变了而已。图片的大小由像素的多少决定,分辨率是单位密度,同量像素图片的分辨率越高,面积越小。

核心实验

实验一:

针对创新点一,给出实验解释。在ImageNet数据集上做的关于分辨率变化的实验,也就是「去验证第二节提到的Domain-Shift对模型效果的影响。如下三个模型:

在这里插入图片描述

l CNN-B」。分类模型基于ImageNet数据集常规的分辨率来训练(其中分辨率为224*224),但是验证数据集进行了尺度变化,即先将验证数据图片缩小到48,64,80和128,然后再将这些图片上采样到与训练数据相同尺寸作为模型的输入,这样上采样后的图像分辨率较低。训练集与验证集尺寸相同,分辨率不同。「因此这个实验模拟的就是训练数据的分辨率和验证数据的分辨率不一致的时候对模型效果的影响。

l 「CNN-S」。 这个实验中,训练数据的分辨率和验证数据的分辨率保持一致,这里主要针对的是48和96的分辨率,且尺寸相同。并且对网络结构的第一层做了修改。例如对于分辨率48的数据进行训练,将卷积核大小为77的卷积层改成卷积核大小为33,滑动步长为1的卷积层。而基于分辨率96的数据训练时,将卷积核大小为77的卷积层变成卷积核尺寸为55,步长为2的卷积层。训练集与验证集尺寸相同,分辨率相同。「这个实验模拟的是训练数据和验证数据的分辨率一致的效果。

l 「CNN-B_FT」。这个实验中,先在224*224常规分辨率上进行预训练,然后再在上采样的低分辨率图片上进行微调,且以上采样的低分辨率图片作为验证。训练集与验证集尺寸相同,分辨率一部分相同。「可以看出这个实验验证的是基于高分辨率图像进行训练的模型是否可以有效提取低分辨率图像的特征。

结果如下:
在这里插入图片描述

下图(a)中可以看出如果验证集数据的分辨率和训练数据的分辨率差别越大,则实验效果越差,这说明CNN对数据的尺度变化的鲁棒性还不够好。从(b),©的结果我们可以看出当训练数据的分辨率和验证数据的分辨率相同时,模型的效果会好很多,并且CNN-B-FT的效果更好,而二者的差别仅仅是模型是否在放大的低分辨率图像上做fine-tune,因此可以得出下面的结论:「基于高分辨率图像训练的模型也可以有效提取放大的低分辨率图像的特征。」

实验二:

对于创新点二,给出实验解释。在COCO数据集上关于「特定尺度检测器」
和 「多尺度检测器」 的实验

结果如下图:

在这里插入图片描述

l 和分别代表检测器基于将原始图片640480放大到8001400和1400*2000两种尺寸的图像进行训练,从两者的mAP结果对比可以看出的效果稍好。提升非常小,猜测原因是虽然基于放大图像训练的模型在训练过程中可以提高对小目标物体的检测,但是由于训练数据中尺寸中等或较大的目标的尺寸太大所以难以训练,这就影响了模型最终的效果」

l 表示训练数据尺寸是14002000,但是训练过程中忽略中等尺寸和大尺寸的目标,其中中等和大尺寸的标准是在原始图像中目标宽高的像素大于80,这就是前面提到的「特定尺度检测器」,即基于单一尺度的输入进行训练,这样就可以减少Domain-Shift。所以,这个实验的目的是验证上面那个实验的猜想,即:「基于14002000大小的图像训练时由于训练数据中尺寸中等及较大的目标对模型训练有负作用,因此这里直接在训练过程中忽略这样的数据。」 但是从实验结果看出,这个模型的效果更差了,猜测原因是因为忽略这些训练数据(大概占比30%)所带来的的数据损失(降低数据丰富性)对模型的影响更大。

l MST」 表示训练一个检测器时采用不同尺度的图像进行训练,即前面说的「多尺度检测器」。按道理来说这个实验的效果应该会比前面2个实验好,可是结果却不是这样,这是为什么呢?「主要原因是训练数据中的那些尺寸非常大或者非常小的目标会影响训练效果」。

l SNIP: 「本文在引入MST思想的同时限定了不同尺寸的目标在训练过程中的梯度回传,这就是SNIP的核心思想」。

SNIP算法

SNIP借鉴了多尺度训练的思想,在多尺度训练方法中,由于训练数据中尺寸极大或极小的目标会影响实验结果,「因此SNIP的做法就是只对尺寸在指定范围内的目标回传损失(该范围需接近预训练模型的训练数据尺寸),这样就可以减少Domain-Shift的影响。又因为训练过程中采用了类似多尺度训练的方法,所以每个目标在训练时都会有几个不同的尺寸,那么总有一个尺寸在指定的尺寸范围内。」还需要注意的一点是在SNIP中,对目标的尺寸限制是在训练过程,而不是预先对训练数据进行过滤,训练数据仍然是基于所有的数据进行的。

在这里插入图片描述

可以看到整个流程还是基于Faster RCNN的,不管是训练ROI Head还是训练RPN网络,都是基于所有Ground Truth来定义候选框和Anchor的标签。具体来说就是某个ROI在某次训练中是否进行梯度回传是和预训练模型的数据尺寸有关的,也就是说当某个ROI的面积在指定范围内时,该ROI就是「valid」,否则就是「invalid」(如上图的紫色框所示)。这些「invalid」 的ROI所对应的「invalid ground truth」 会用来决定RPN网络中Anchor的有效性。具体来说,「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor,如上图左边的黑色框所示。

关于RPN网络中不同标签的anchor比例作者也做了分析,我们知道在RPN网络中,一个anchor的标签是根据该anchor和ground truth的IOU来决定的,只有两种情况下才会认为某个anchor的标签是正样本(标签为1):1、假如该anchor和某个ground truth的IOU超过某个阈值(阈值默认采用是0.7),那么该ancho就是正样本。2、假如一个ground
truth和所有anchor的IOU都没超过该阈值,那么和该ground truth的IOU最大的那个anchor就是正样本。同样,作者将conv4的输出作为RPN网络的输入,然后设置了15种anchor(5 scales,3 aspect ratios),接下来就有意思了,作者发现在COCO数据集上(图像大小为800*1200),只有30%的ground truth满足前面第一种情况!即便将阈值调整为0.5,也只有58%的ground
truth满足第一种情况!这说明什么?说明即便阈值等于0.5,仍有40%的正样本anchor和ground
truth的IOU小于0.5(这些anchor是因为满足前面的情况2才被定义为正样本)!显然,这样的正样本质量不算很高。而这篇文章因为引入多种分辨率的图像作为输入,所以在一定程度上缓解了这种现象。另外,作者也尝试将conv4和conv5的特征做融合并预测,不过这部分文章只是一笔带过,还需要看源码才能知道具体是怎么做的。

其中图片尺寸和有效ROI尺寸分别为:14002000-1080、8001200-40160、480800-120无穷。

RPN阶段

  1. 对于每一个锚点,分配15个anchors,其中有5种scale,每种scale有3中比例

  2. 用所有的GroundTruth给Anchors分配好+/-标签,即该anchor属于前景或背景

  3. 根据GroundTruth在特征图上的ROI是否落在[si,ei]范围内分为Valid/Invalid GT

  4. 去除无效的anchors。「invalid Anchor」 就是和「invalid ground truth」的IOU大于0.3的Anchor

实验结果

在这里插入图片描述

第二行的multi-scale test显然比第一行的single scale效果要好。第三行,在multi-scale test的基础上加入multi-scale train的时候,会发现在大尺寸目标(APL)的检测效果上要比只有multi-scale test的时候差。这个原因我们在前面也介绍过了,主要是因为训练数据中那些尺寸极大和极小的object对训练产生了负作用。

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值