目标检测中的多尺度问题解决方案之 SNIP 系列

论文题目:An Analysis of Scale Invariance in Object Detection – SNIP 

链接:https://arxiv.org/pdf/1711.08189.pdf

一、作者试图解决什么问题?

答:这个工作是一种模型训练 trick,主要在 augmentation 环节使用。解决检测问题中,待检测的目标尺寸差别太大(小目标与大目标同时存在)的问题。

常用的方法与问题:

  1. 对图像进行多尺度的缩放或者扩展,这种方式问题是每一张图会生成很多张图,计算量堪忧;而且对于小尺度图像,小目标的检测的任务是冗余的(因为效果不佳);对于大尺度图像,大目标的检测任务是冗余的(因为没有必要,对于大目标来说,没有必要用大尺寸输入)
  2. FPN 相关方法,在不同层抽特征,小目标靠近输入层,大目标靠近输出层。这种方案是make sense 的,但是单独用这种方式,对于小目标来说,还不是特别友好,因为这种情况下,小目标尺寸的受限于输入图像。如果不对输入图像进行扩大,小目标的检测仍然存在问题,但是如果要对输入图像进行多尺度扩展,那么也就会回到上面 第 1 个方法中的问题。

二、这篇论文的基本思路与实现步骤是什么?

答:

  1. 在检测中,充分利用分类网络的预训练模型。在利用过程中,需要解决domain shift 问题,即检测算法中输入分类网络的图像中,目标尺寸占比最好能和分类网络预训练图像中的目标尺寸占比类似。
  2. 还是将输入图像 resize 到多个 scale,但是在每个 scale 中对目标的表示(representation)进行标准化(normalized)。为了解决上面的domain-shift 问题,在每个 scale 只利用与预训练分类网络的训练样本类似尺寸的 RoIs / anchors
  3. 实现步骤:
    1. 在分类器训练环节,首先对于每一个分辨率下的输入图片,将 ground-truth box (GT) 划分为 valid or invalid。具体就是先对每一个分辨率设定一个分辨率范围((resolution, range)已控制这些 GT 在这个分辨率下不大也不小。在预定义范围内的 GT 被划归为 valid,在范围外的 GT  invalid GT。然后进行 RPN 训练,在某个分辨率下如果 anchor 与 invalid GT overlap 超过 0.3, 那么这些anchor就直接被丢弃,不进入检测器训练。【具体实现中,用 1400 * 2000 的分辨率检测 [0,80] 面积范围的目标;800 * 1200的输入分辨率 检测 [40, 160] 面积范围的目标;480 * 800 分辨率勇于检测面积在 120 以上的目标】
    2. 在推理环节,检测器获得了检测结果后,首先排除预定分辨率外的检测 bboxes,然后用 soft-NMS 进行融合输出。

三、最终效果

基于同一个检测器,不同的训练训练方法,效果对比如下,可见对不同尺度的目标,检测性能均有明显提升。

------------------------------------

TODO:SNIP 升级版 SNIPER 待写

猜你喜欢

转载自blog.csdn.net/yangyehuisw/article/details/107035645