小目标检测常用解决方法

小目标检测常用解决方法

1 定义

通用的定义来自 COCO 数据集,定义小于 32×32 pix 的为小目标。

2 小目标检测的难点

  • 可利用特征少
  • 现有数据集中小目标占比少
  • 小目标聚集问题

首先小目标本身分辨率低,图像模糊,携带的信息少。由此所导致特征表达能力弱,也就是在提取特征的过程中,能提取到的特征非常少,这不利于我们对小目标的检测。

另外通常网络为了减少计算量,都使用到了下采样,而下采样过多,会导致小目标的信息在最后的特征图上只有几个像素(甚至更少),信息损失较多。

在 COCO 挑战赛上,小目标的检测精度(

A

P

S

AP^S

APS)通常只有大目标(

A

P

L

AP^L

APL)的一半。

在这里插入图片描述

3 解决思路

3.1 数据

  • 提高图像采集的分辨率

  • 基于 GAN 的方法解决的也是小目标本身判别性特征少的问题,其想法非常简单但有效:利用 GAN 生成高分辨率图片或者高分辨率特征。

3.2 Data Augmentation

  • 一些特别有用的小物体检测增强包括随机裁剪、随机旋转和马赛克增强。

  • copy pasting, 增加小目标数量

  • 缩放与拼接,增加中小目标数量

3.3 修改模型输入尺寸

  • 提高模型的输入分辨率,也就是减少或者不压缩原图像
  • tiling,将图像切割后形成batch,可以在保持小输入分辨率的同时提升小目标检测,但是推理时也需要 tiling,然后把目标还原到原图,整体做一次 NMS。

3.4 修改 Anchor

适合小目标的 Anchor

3.5 Anchor Free

锚框设计难以获得平衡小目标召回率与计算成本之间的矛盾,而且这种方式导致了小目标的正样本与大目标的正样本极度不均衡,使得模型更加关注于大目标的检测性能,从而忽视了小目标的检测。

3.6 多尺度学习

  • FPN
  • 空洞卷积

通过多尺度可以将下采样前的特征保留,尽量保留小目标

3.7 减小下采样率

比如对于 YOLOv5 的 stride 为 32, 可以调整其 stride 来减小下采样率,从而保留某些比较小的特征。

3.8 SPP 模块

增加感受野,对小目标有效果,SPP size 的设置解决输入 feature map 的size 可能效果更好。

3.9 损失函数

小目标大权重,此外也可以尝试 Focal Loss。

3.10 Context Info

增加 context info 有利于小目标检测,参考A Survey of the Four Pillars for Small Object Detection: Multiscale Representation, Contextual Information, Super-Resolution, and Region Proposal

可以考虑的方法:加入 CBAM 模块, TPH-YOLOv5,或者可以关注 VisDrone Challenge 2021 比赛。

参考


版权声明:本文为kuweicai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。