【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection

&Title

【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第1张图片

  • Stitcher: Feedback-driven Data Provider for Object Detection
  • 代码

&Summary

目标检测通常根据尺度变化质量,其中对小目标的性能最不令人满意。

本文研究了这种现象,发现:在大多数训练迭代中,小目标几乎不占总损失的一部分,从而导致不平衡优化的性能下降。

受此启发,本文提出了Stitcher,一个反馈驱动的数据提供商,旨在以平衡的方式训练目标检测器。 在Stitcher中,图像被调整成更小的组件,然后Stitch成与常规图像相同的大小。Stitch图像包含不可避免的较小对象,这将有利于作者的核心思想,利用损失统计作为反馈,以指导下一次迭代更新。

在不同的检测、骨干网、训练周期、数据集上进行了实验,甚至在实例分割上也进行了实验。Stitcher在所有设置中都稳定地提高了性能,特别是对于小对象,在训练和测试阶段几乎没有额外的计算。

&Research Objective

针对小目标的检测性能低,利用小目标训练损失比例反馈驱动,旨在以平衡的方式训练目标检测器来提高检测性能。

&Problem Statement

  • Multi-scale training

在COCO数据集中,研究detection的training方式,当时尝试了Multi-scale training的各种settings、SNIP[1]/SNIPER[2]、CSN[3]等。发现Multi-scale training对模型训练是真的很有帮助,然而,普通的Multi-scale training太低效了,而SNIPER是真的复杂,需要处理好label assignments, valid range tuning, positive/negative chip selection,费了作者很大的力气才把它从MXNet源码迁移到自己的框架上。使得作者不得不去研究一种更简洁实用的multi-scale training 方法。

  • 图像层面分析

小物体在自然图像中非常常见,而它们在不同图像中的分布是不可预测的。如表1所示,COCO训练集中的对象中有41.4%是小对象,比其他两个量表中的对象要多得多。 但是,只有52.3%的图像包含小物体。 相比之下,中型和大型物体的比例分别为70.7%和83.0%。 换句话说,在某些图像中,大多数对象很小,相反,近一半的图像中不包含小对象。 这种严重的失衡妨碍了培训过程。
【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第2张图片
在常规图像中,对象可能会因摄影问题而模糊,例如失焦或运动模糊。 如果将常规图像调整为较小的尺寸,则内部的中型或大型对象也将变为较小的对象,但是其轮廓或细节仍然比原始的小型对象更清晰。 (缩放图片的灵感来源)
【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第3张图片

  • 训练层面分析

小物体在图像上的分布不均匀,因此使训练遭受进一步的失衡问题。 即使某些图像中包含小物体,它们仍然有机会在训练过程中被忽略。 图1说明,在超过50%的迭代中,小对象占总数的不到10%。 训练损失主要是大中型物体。 因此,用于小物体的监控信号不足,严重损害了小物体的准确性甚至整体性能。
【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第4张图片
在大多数训练迭代中,小目标几乎不占总损失的一部分,从而导致不平衡优化的性能下降。

&Method(s)

在已经有了前面multi-scale training和SNIPER的实验结果后,作者想到可以把图像缩小,并拼接在一起(逆SNIPER而行,SNIPER是裁剪,Stitcher是拼接)。

如下图所示,作者把batch内每4张图都缩小到同样大小,之后拼成一张与正常普通同样大小的图作为训练。通过这样的方式,把大物体和中物体缩小成中物体和小物体,来均衡不同Scale物体在训练过程中的分布。
【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第5张图片
(这里与YOLOv4-Mosaic类似,但不同的是作者没想到拼接的时候可以调整4张图为不同大小。)

然后用loss 作为反馈信号,来指导拼接图的使用。作者采用了一种“缺啥补啥”的简单思路:如果上一个iteration中,小物体产生的loss不足(比例小于一个阈值),则下一个iteration就用拼接图;否则就用正常图片训练。
【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第6张图片

&Evaluation

  • 在Faster R-CNN、RetinaNet的1x / 2x上都进行了实验,有2个点左右的AP提升,且涨点主要来自于AP small。这符合作者最初的Motivation和方法设计。
    【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第7张图片

  • 在更大的backbone / 更高的baseline (ResNext + Deformable) 、其他数据集 (PASCAL VOC)、Instance Segmentation (Mask R-CNN) 等settings上都做了实验验证,都有不同程度的效果提升。
    【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第8张图片

  • 与多尺度训练进行比较,由下表可以得出,Stitcher相对于多尺度训练的优势很大程度上是从小尺度获得的。它们在检测大型物体方面具有大致相同的能力。 这样的对比证实了我们朝着设计目标的成就,主要目的是通过图像拼接来检测小物体。而且在相同的培训期间,多尺度培训比Stitcher花费更多的时间。
    【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第9张图片

  • 与SNIP和SNIPER的比较。 在带有ResNet-50 / 101的Faster R-CNN上比较了带有SNIP的Stitcher和SNIPER3。 Stitcher的性能稍好。SNIPER和Stitcher都可以视为多尺度训练。 但是,存在一些明显的差异:

    • 首先,Stitcher的实现更简单。 SNIPER需要标签分配,有效范围调整和正负芯片选择。
    • 其次,Stitcher是反馈驱动的,优化过程将更多的精力放在缺点上。 【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第10张图片
  • Stitcher对大型骨干网的改进。 实验以1倍训练周期在Faster R-CNN上进行。在较高的基准上,Stitcher仍可以将性能提高1.0%至1.5%AP,这证明了Stitcher对复杂情况的鲁棒性。
    【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第11张图片

  • 表7显示了对具有ResNet-50和FPN主干的Faster R-CNN的较长训练时间的评估,对于6倍训练,基线的性能会因过度拟合而降低,而Stitcher仍保持有希望的准确性。 拼接图像的组成的多样性,这会丰富数据模式并防止过度拟合。
    【论文笔记】:Stitcher: Feedback-driven Data Provider for Object Detection_第12张图片

&Thinks

  • 针对小目标数据的问题,通过loss回归来自适应调整大小目标样本的输入。大于一定阈值。输入正常图片。小于的话,则使用拼接图片。
  • 整体思想是非常简单,就是利用loss做回馈信号,来调整。这一类的操作其实还蛮多的,比如FSAF用anchorfree分支的loss来选择特征层,呃,还有……(忘了)。了解一下代码怎么实现的,可以试着利用这种思路去自适应其他的module。
  • 自适应方面也有很多,比如自适应NMS,自适应特征选择ASFF、自适应采样ATSS等

你可能感兴趣的:(#,小目标检测,#,自适应)