Advertisement

SNIPER: Efficient Multi-Scale Training 论文笔记

阅读量:

前言

为了进行多尺度目标检测,一些目标检测算法比如Faster R-CNN和Mask R-CNN都是在一个多尺度图像金字塔上训练的,在训练时每个尺度的图像的所有像素都参与到后续计算中,因此训练时间会很长。比如一个具有3种尺度的图像金字塔(分别是原始图像的1倍,2倍,3倍),它要处理相当于原始图像14倍的像素。然而,最近的研究SNIP表明,在进行多尺度训练时,最好忽略掉极端大小的目标的梯度 。比如,在3种尺度的图像金字塔的情况下,应将较大分辨率图像上的极大目标和较小分辨率图像上的极小目标的梯度忽略掉。那么就出现一个问题,还以3种尺度的图像金字塔为例,当图像中的目标都较大时,是否还需以3倍的分辨率处理整张图像? 也就是说,图像的所有像素都要参与到训练中来吗?

本文提出一种新的多尺度训练算法SNIPER (Scale Normalization for Image Pyramids with Efficient Resampling),该算法根据图像内容,从多尺度图像金字塔中自适应地采样chips,根据gt来采样positive chips,根据RPN网络生成的proposal来采样negative chips。实验证明,在相同的条件下(固定的批归一化),SNIPER的性能和SNIP中提出的多尺度训练策略一样好,并且在COCO数据集上进行训练时,处理的像素数量减少了3倍。


SNIPER

1. chip的生成

给定输入图像,SNIPER会在不同的尺度的图像上\lbrace s_1,s_2,...,s_i,...,s_n \rbrace生成chip C^ichip就是在尺度 s_iW_i \times H_i)的图像上生成的大小固定的(K \times K像素),且以恒定间隔(d个像素)排布的小窗,有点类似于滑动窗口(sliding window),每个chip内都可能包含一个或者多个目标。注意chip的大小是固定的,变化的是图像的尺寸。

2. positive chip

每个图像尺度i中都会有这样一个范围大小:R^i =[r^i_{min},r^i_{max}],i\in [1,n],只有大小落入这个范围内的gt,才会参与到尺度i的训练中。落入R^i范围内的gt是有效的,其余为无效的,有效的gt集合表示为G^i。然后尽可能多地选取完全包含有效gt的chip,这些chip就是positive chip ,其集合表示为C^i_{pos}。对于一个gt来说,完全包含指的是该gt box完全位于某个chip内,并且总存在一个chip能够完全包含它。由于不同尺度上R^i的区间会有重叠,因此一个gt可能会被不同尺度上的多个chip包含,当然也有可能在同一个尺度上被多个chip包含。如果一个gt被割裂开来,那么只保留chip内的部分。

如下图所示,左侧将gt box和不同尺度上的chip都呈现在了原图上,由于不同尺度的图像都缩放为原图大小,因此chip才会有大有小。绿色框是gt box,其它五颜六色的框就是不同尺度上的chip。右侧才是训练时使用的chip,它们的大小是固定的,由于原始图像被缩放到3种尺度,所以存在3种chip,其中绿色的是有效gt,红色的是无效gt。
在这里插入图片描述
可以看到,原图中没有被positive chip覆盖的背景区域(高分辨率)被丢弃了,参与训练的是chip(比原图分辨率小很多),因此能够减少计算量。也就是说,SNIPER只用了4个低分辨率的chip就处理了原图上所有的目标,并且实现多尺度训练。

3. negative chip

由于positive chip并没有包含大部分背景区域,如果不能对背景进行正确分类,会导致假正率(false positive rate)比较高。为了降低假正率,同时计算量不至于上涨太多,一种简单的方法是借助RPN生成的proposal,分辨proposal中是否可能有目标存在。如果图像的某部分没有任何proposal生成,那么说明这里有很大可能是背景区域,那么训练时可以忽略掉这一部分。

为了挖掘negetive chip,首先训练一个RPN,训练这个RPN时不需要负样本,因为它只是用来粗略地生成一些不太准确的proposal,因此不必要求太高。RPN在整个训练集上生成proposal,如果图像的某部分没有任何proposal生成,那么可以认为这部分不包含任何目标,可以忽略掉。RPN生成的proposal主要是用来挖出假正例(false positive),最后参与到训练的也是这些假正例,完全被认为是背景的区域不会参与到训练中。

在生成proposal之后,就要开始选择negative chip了,可以分为以下两步:

  1. 对于尺度 i,首先移除所有被positive chip覆盖的proposal;
  2. 然后选择那些至少包含了 M个proposal的chip,当然这些proposal的大小还要在R^i内,那么就得到了negative chip,其集合为C^i_{neg}

下图展示了SNIPER生成的negative chip,上面一行是原始图像以及gt box,下面一行中的小红点表示proposal的中心,橘色的框就是negative chip,可以看到它确实包含了positive chip未能覆盖到的区域。
在这里插入图片描述
由于SNIPER只处理那些可能包含假正例的区域,而不是处理整个背景区域,因此速度很快。


总结

本文提出了一种新的多尺度训练策略SNIPER,在使用图像金字塔处理高分辨率图像时,采样低分辨率的chip进行训练,同样能达到很好的性能,这说明在进行实力级别的视觉任务时(比如目标检测),并不是必须要在高分辨率图像上进行训练。回归时标签的赋值与Faster R-CNN类似,其它设置基本和Faster R-CNN差别不大。

全部评论 (0)

还没有任何评论哟~