AI大视觉(二十) | 小目标检测的tricks汇总

  本文来自公众号“每日一醒”

在计算机视觉中,检测小目标是最有挑战的问题之一。

本文汇总了一些有效的策略。

为何小目标

(1)基于相对尺度

物体宽高是原图宽高的1/10以下的可以视为小目标。

目标边界框面积与图像面积的比值开方小于一定值(较为通用的值为0.03)的可以视为小目标。

(2)基于绝对尺度

通常认为绝对尺寸小于32×32的物体可以视为小目标。

小目标为什么难检测?

(1) 可利用特征少

低分辨率的小目标可视化信息少,难以提取到具有鉴别力的特征,并且极易受到环境因素的干扰,进而导致了检测模型难以精准定位和识别小目标。

(2) 定位精度要求高

小目标由于在图像中覆盖面积小,因此其边界框的定位相对于大/中尺度尺寸目标具有更大的挑战性。

在预测过程中,预测边界框框偏移一个像素点,对小目标的误差影响远高于大/中尺度目标。

(3) 现有数据集中小目标占比少

(4) 样本不均衡问题

在训练的过程中,通过设定固定的阈值来判断锚框属于正样本还是负样本。

这种方式导致了模型训练过程中不同尺寸目标的正样本不均衡问题。

当人工设定的锚框与小目标的真实边界框差异较大时,小目标的训练正样本将远远小于大/中尺度目标的正样本,这将导致训练的模型更加关注大/中尺度目标的检测,而忽略小目标的检测。

(5) 小目标聚集问题

相对于大/中尺度目标,小目标具有更大概率产生聚集现象。

当小目标聚集出现时,聚集区域相邻的小目标通过多次降采样后,反应到深层特征图上将聚合成一个点,导致检测模型无法区分。

当同类小目标密集出现时,预测的边界框还可能会因后处理的非极大值抑制操作将大量正确预测的边界框过滤,从而导致漏检情况。

另外,聚集区域的小目标之间边界框距离过近,还将导致边界框难以回归,模型难以收敛。

如何改进?

1、高分辨率图像采集(图像源头)(小目标变大系列)

2、高分辨率图像模型输入(模型源头)(小目标变大系列)

3、图像分块(小目标变大系列)

训练的时候分块训练,预测的时候也分块训练。

比如一张大图像分成8块,相当于一个batch size。

问题在于如何规避分块时将目标分成两部分。

4、Context信息(打标技巧)

标的大点添加周边的信息辅助训练。

上下文Context信息,那么目标就相当于变大了一些,上下文信息加上检测也就更容易了。

5、数据增强

复制并粘贴每个图像中的小目标多次。

从而让模型在训练的过程中,也能够有机会得到更多的小目标训练样本。

6、特征提取

不同尺度的特征融合,在扩大感受野的同时,也融合多个尺度的特征,增强了模型对于小目标的检测能力

7、损失函数

在bounding bbox损失上加一个针对小物体的权重2-w*h。

8、仅对小目标不设置过于严格的iou阈值

对小目标的Anchor使用比较宽松的匹配策略,尽量多的留下小目标。

9、小目标的过采样

过采样OverSampling策略。

对于数据集中含有小目标图片较少的情况,使用过度采样(oversample)的方式,即多次训练这类样本。

10、网络模型

降低下采样率与空洞卷积,减少小物体特征损失,同时在不改变网络分辨率的前提下增加网络的感受野,减小对大物体检测性能的损失。

11、 优化Anchor尺寸设计

利用边框聚类进行anchor尺寸设计,边框聚类时通常使用K-Means算法,这也是YOLO采用的Anchor聚类方法,设计更好的Anchor可以有效提升Proposal的质量,设计贴近小物体尺寸的anchor能有效减小回归量的variance,降低网络的学习难度,提高recall。

总结

另外,由于anchor free里面样本定位关系,小目标检测会略好于anchor base的模型。

   

 ——————

浅谈则止,细致入微AI大道理

扫描下方“每日一醒”,选择“关注”公众号

————————————————————— 

—————————————————————

投稿吧   | 留言吧


萍水相逢逢萍水,浮萍之水水浮萍!
原文地址:https://www.cnblogs.com/AIBigTruth/p/15182729.html