Stitcher学习笔记:提升小目标检测 --- 简单而有效

论文:https://arxiv.org/abs/2004.12432
代码:即将开源(开源后回来更新)

大多数目标检测算法在小目标检测上都有显著的性能下降,作者通过统计分析发现,这与训练阶段小目标对损失函数的贡献小有关系,Feedback-driven Data Provider 顾名思义,作者提出了一种基于训练时反馈然后提供数据的方式改进训练,而制作新数据的方式也很简单,就是把图像拼接起来 Stitcher。

下图是Faster RCNN算法在COCO 数据集上训练时小目标对Loss贡献比例,baseline方法来自小目标的Loss贡献比例小于10%,而 Stitcher 则让其更加均衡。此外,相比于业界已有的多尺度训练的方法,Stitcher几乎不增加训练时间,但取得的精度提升却更加可观,
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第1张图片

下表为在COCO数据集上大中小三种目标的统计,小目标占整个标注框的41.4%,但仅出现在52.3%的图像中,可见小目标数量很多,且在图像中出现较集中。

Stitcher学习笔记:提升小目标检测 --- 简单而有效_第2张图片

因为小目标在图像中出现的比例低,那么在训练时缺少小目标时如何制作小目标数据作为补充呢?将正常图像中的目标resize小一点,其纹理依然清晰类别仍然可辨,作者通过将多幅正常图像resize并拼接的方式制作数据集(图像拼接生成数据集??感觉干YOLOv4中使用的mosaic方法有点像),这就是Stitcher的由来。

Stitcher学习笔记:提升小目标检测 --- 简单而有效_第3张图片

Stitcher算法流程

Stitcher学习笔记:提升小目标检测 --- 简单而有效_第4张图片
如上图所示,在训练过程中,根据小目标对loss的贡献比率确定是否要在下一次迭代提供给网络拼接的图像训练。
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第5张图片
上图是将4幅正常图像拼接resize后拼接为一幅新的训练图像。
当小目标对Loss的贡献比例小于一定阈值,即将拼接的图像加入下一次迭代的训练集。

实验结果

Stitcher学习笔记:提升小目标检测 --- 简单而有效_第6张图片
上图是Faster R-CNN的baseline和Stitcher对比,由图中可以看出,随着迭代次数的增加,Stitcher的AP和APS持续走高并且一直处于baseline的上方。说明了Stitcher能带来非常稳固的性能提升。

为了验证方法的有效性,作者使用不同的目标检测算法(Faster R-CNN、RetineNet)、骨干网(Res-50-FPN、Res-101-FPN)做了实验,只要加上Stitcher 就能提高模型精度,而且不仅对小目标有效,对大、中目标也有效!当然从结果看,小目标获得的精度增益更大。对比如下图所示:
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第7张图片
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第8张图片

与其他处理小目标检测的常见方法比如多尺度训练、SNIP、SNIPER进行了比较,Stitcher 在提高精度更多的情况下,几乎不增加时间代价择。
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第9张图片
即使在大的骨干网上,Stitcher也获得了精度增益,如下图所示:

Stitcher学习笔记:提升小目标检测 --- 简单而有效_第10张图片

此外,随着迭代次数的增加,Stitcher的性能持续走高,而baseline在训练周期达到6时精度开始下降,如下图所示:
Stitcher学习笔记:提升小目标检测 --- 简单而有效_第11张图片

总而言之,作者从训练样本对Loss贡献不平衡的角度思考小目标检测问题,通过设计Loss反馈驱动的机制和图像拼接的方法显著改进了小目标检测,其稳固的精度增益表明,该机制可以成为目标检测算法训练的通用组件。

感想:利用反馈机制进行再学习,弥补对小目标检测的不足。有点自动控制中PID调节的味道????
想法不是非常新颖,但是非常实用有效。对无人机监测等小目标检测是一大助力。
话说YOLOv4出来晚一点,这个早一点的话,会不会YOLOv4就采用这个数据增强方法了(狗头~~~)

你可能感兴趣的:(计算机视觉,深度学习)