论文名称:《 SNIPER: Efficient Multi-Scale Training 》
论文下载:https://arxiv.org/abs/1805.09300
论文代码:https://github.com/MahyarNajibi/SNIPER
引言
SNIPER是SNIP的升级版本,减少了计算消耗从而使模型运行更快。
背景
RCNN与fast-RCNN
RCNN
RCNN是经典的目标检测算法,它具有尺度不变性(scale invariant),但是他的计算量是和推荐框线性相关的。
在RCNN中,推荐框都被resize到224*224这种经典大小,而不像fast-rcnn中会同时上/下采样目标,那样可能会把大目标的进行上采样,把小的目标进行下采样,使大的更大,小的更小。但是 rcnn不像fast那样共享卷积特征
FAST-RCNN
fast-RCNN把推荐框放到一个高级的卷积特征图中,并且使用了池化的特征作为语义表征,从而使卷积层共享计算同时只有轻量级的全链接网络作用在推荐框上(这句话没看懂)。但是fast-rcnn破坏了尺度不变性
SNIPER
sniper没有对大目标进行上采样,也没有处理简单的背景,因此会比fast-rcnn更快
亮点
Negative chip sampling
就是选出容易被误判为目标的regions。这里为了找到这样的区域,用了一种巧妙的手法,就是训练一个RPN网络,但是只有2个epochs,所以RPN得到的非gt的Regions很大可能都是被误判的Regions
SNIPER相对于SNIP只关注推荐框算法得到的Regions,同时增加了Negative chip作为训练集,但是却得到了跟SNIP相近的准确率,这意味着SNIP中把大部分背景都加入训练其实是没必要的。
Chip Generation
SNIPER在多种尺度下生成chips,先把图像resize到一定尺度,然后把chips按d的间隔排列在图像上。
Positive Chip Selection
对于每个尺度,要设定一个范围R,只有在这个范围内的box才会被当做有效的box。上面已经把chips排列好了(多个尺度下的各种大小的chips),现在要选取一些chips,他们能尽可能多地包含box,以使所有box或者推荐框都被某个chips包含。
如图,是最后选取的各种大小的chips
一个box可能被不同尺度的多个chips包含,也可能是在同一尺度的多个chips里面