• 问答
  • 技术
  • 实践
  • 资源
目标检测之殇—小目标检测
技术讨论

作者丨无名氏@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/426047353
编辑丨极市平台

目标检测作为一项发展了20年的技术,技术层面已经非常成熟,涌现了一大批如Faster R-CNN、RetinaNet、YOLO等可以在工业界实用的目标检测方法,但小目标检测性能差的问题至今也没有被完全解决。因为Swin Transformer的提出,COCO test-dev上的 $AP$ 已经刷到61 ,但小目标检测性能(即$AP_S$ )和大目标检测性能(即 $AP_L$ )仍然差距悬殊, $AP_L$ 是 $AP_S$ 的1.7倍(74 AP vs 44 AP)。从某方面讲,现在COCO刷不上去的一个主要原因就是小目标检测的性能太差。

COCO test-dev leaderboard,数据来源:CodaLab

小目标检测难点

本文所指的小目标是指COCO中定义的像素面积小于32*32 pixels的物体。小目标检测的核心难点有三个:

  • 由本身定义导致的rgb信息过少,因而包含的判别性特征特征过少。
  • 数据集方面的不平衡。这主要针对COCO而言,COCO中只有51.82\%的图片包含小物体,存在严重的图像级不平衡。具体的统计结果见下图。

COCO的统计结果,来源于\[1\]

  • anchor难匹配问题。这主要针对anchor-based方法,由于小目标的gt box和anchor都很小,anchor和gt box稍微产生偏移,IoU就变得很低,导致很容易被网络判断为negative sample。如下图,不同颜色代表不同size的gt box,对于小目标,IoU对偏移量x极为敏感。

IoU和偏移量的关系\[2\]

除了以上三点,最近个人发现了另一个难点:COCO中很大一部分小目标标注都是hard case annotation。它们不仅仅是小,而且是难,存在不同程度的遮挡、模糊、不完整现象(见下图),这也就解释了为什么在41\%的标注都是小目标的情况下,小目标的检测性能还是如此差,因为它们中很大一部分标注都是难以被有效利用的。

模糊

被遮挡的人

“不完整”的人

小目标检测研究现状

小目标检测一直都是计算机视觉领域的研究热点,近年来各式各样的方法被提出来解决小目标检测问题,主要可分为以下几种。

Multi-scale feature learning

这一类方法大致思想都是将不同scale物体分开学习,主要解决的是小目标本身判别性特征少的问题,它们可细分为两类,分别是feature pyramid based和receptive filed based。

feature pyramid based方法以FPN为代表,主要思想是融合low-level的空间信息和high-level的语义信息来加强目标特征,其它方法大都是FPN的“魔改",具体如下:

  • Path aggregation network for instance segmentation, CVPR 2018
  • Augfpn: Improving multi-scale feature learning for object detection, CVPR 2020
  • Effective fusion factor in fpn for tiny object detection, WACV 2021

FPN结构

这类方法在FPN之后就再没有突破性的工作,大部分是水文,花式融合特征。

receptive filed based方法以Trident Network[3]为代表,核心思想是小目标需要较小的感受野,大目标需要较大的感受野,利用不同dilation rate的dilated covolution,构成具有不同感受野的、负责检测不同scale物体的三个branch。

Trident Network结构

GAN-based

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

生成高分辨率图片的方法有SOD-MTGAN[4],大致思路是利用训练好的detector如Faster R-CNN获取包含object的子图,然后利用generator生成对应的高清图像,discriminator则负责判断生成的图像是real还是fake,同时充当detector的作用,预测object的类别和位置。

SOD-MTGAN结构

生成高分辨率特征的方法有Perceptual GAN[5]和BFFBB GAN[6],以BFFBB GAN为例,其思想是将输入图像缩小2倍然后经过特征提取得到的特征作为low resolution feature,原图像经过特征提取得到的特征作为对应的 "real" high resolution feature,generator根据low resolution feature生成 "fake" high resolution feature,discriminator负责区分"fake" high resolution feature和“real" high resolution feature。

BFFBB GAN结构

Context-based

Context-based方法的核心思想是利用小物体所处的环境信息或者和其它容易检测的物体之间的relationship来辅助小物体的检测,本质上解决的也是小目标本身判别性特征少的问题。这类方法最有名的有以下三个:
Inside-Outside Net[7]通过上下左右四个方向的RNN提取每个物体的全局context信息。

Inside-Outside Net结构

Pyramidbox[8]针对的是小人脸检测问题,其利用头与身体总是和人脸一起出现的先验信息,并且前两者总是更好检测,具体做法是通过检测头和身体来确定人脸的位置,再做进一步检测。

Pyramidbox利用的先验信息

RelationNetwork[9]利用物体之间的relationship来辅助小物体的检测,核心想法是通过Transformer隐式建模两两物体间的relationship,并利用这种relationship加强每个object的特征。

RelationNetwork的relation module结构

Data-based

Data-based方法从数据集本身解决问题,该类方法往往只对特定数据集有效,如COCO。COCO数据集存在两种不平衡问题:image-level 和 instance-level imbalance。

image-level imbalance指COCO中只有51.8\%图片含有小物体。解决该问题的代表性方法是Stitcher,Stitcher[10]以小物体的loss在总loss中的占比为反馈信号,当占比小于某阈值时,将四张图片拼成一张图片作为下次iter的输入,相当于增加了小物体的数量。

Stitcher结构

instance-level imbalance指COCO中小物体像素面积只占1\%。Augmentation[11]通过简单的复制粘贴小物体来解决该问题。

Augmentation复制粘贴小物体

Special design for small object

此类方法指对现有目标检测方法做改进,对小物体做“特殊照顾”。

FaceBoxes[12]定义了一种描述anchor在原图上分布的密集程度的指标:

$$
A{density}=A{scale}/A_{interval}\
$$

$A{scale}$ 代表anchor的尺度(如256*256就是256), $A{interval}$ 指anchor中心点之间的距离, $A_{density}$ 越大代表anchor在原图越密集。作者计算了不同大小物体的density,发现小物体的anchor分布太稀疏,所以“朴素”地增加了小物体anchor的数量。

S3FD[13]做法更“朴素”,降低小物体positive sample的IoU阈值(大于某IoU即为pos),如果经历这一步有些小物体匹配的anchor还是太少,就在和该物体IoU大于0.1的所有anchor中选择top N个anchor作为匹配的anchor。

Dot Distance[14]设计新的指标DotD代替IoU来做pos和neg assignment,简单来说就是两个bbox中心点的距离的函数:

$$
\operatorname{Dot} D=e^{-\frac{D}{S}}, D=\sqrt{\left(x{A}-x{B}\right)^{2}+\left(y{A}-y{B}\right)^{2}}, S=\sqrt{\frac{\sum{i=1}^{M} \sum{j=1}^{N{i}} w{i j} \times h{i j}}{\sum{i=1}^{M} N_{i}}}
$$

该指标对bbox偏移不敏感,少量的偏移不会导致该指标的剧烈下降。

IoU和DotD相对于bbox偏移x的变化

Special training strategy

此类方法主要通过设计特殊的训练策略来提升小物体检测性能,代表方法有以下两个:

SNIP[15]是针对image pyramid训练方法的改进,其通过在小尺度的图像上检测大物体、大尺度的图像上检测小物体,来保证输入分类器的物体大小接近 $224\times224$ ,即和在ImageNet上预训练的尺度一致,进而提升小物体检测性能。

SNIPPER[16]是SNIP的加强版,其根据图像内容自适应得在image pyramid截取一系列子图(chips),这样小物体就被放大了,同时计算量也变小了。

Loss reweight

该类方法通过提升小物体loss中的权重来让网络更关注小物体的训练。代表方法有Feedback-driven loss[17],其利用和Stitcher[10]一样的反馈机制,即当小物体loss占比较低时,提升小物体loss的权重,从而让网络更平等地对待不同尺度的物体。

个人对小目标检测的理解

我现在的研究方向就是小目标检测,且做的是通用小目标检测(COCO),在我看来,小目标检测的难点远不止一个“小”字,它还可能是被严重遮挡的大物体的局部,亦可能伴随着模糊、黑暗,它是目标检测领域最难啃的骨头。可能也正因为它难,近年来小目标检测相关的顶会几乎没有了,大家都在那些容易做但是意义不大的地方疯狂水文章,某种程度上也可以说2D目标检测已经到达了瓶颈阶段,而小目标检测是突破这个瓶颈的关键一环。

纵观我上面列举的那些方法,只有FPN和GAN在本质上解决了问题,其它方法大都是意义不大的改进,特别是data-based方法,换个数据集可能就完全不起作用。也有可能是深度学习方法本身达到了某种瓶颈,它就是无法解决这种hard case问题。不知道未来会不会出现一种新颖的解法,让我们拭目以待吧!

为了促进小目标检测领域的进一步发展,我建了一个小目标检测论文库(https://github.com/Icecream-blue-sky/Past-and-present-small-object-detection),实时收录最新的并且是个人阅读过的小目标检测论文,欢迎大家Star和提issue!

[1] Augmentation for small object detection, CVPR 2019.

[2] Dot Distance for Tiny Object Detection in Aerial Images, CVPRW 2021.

[3] Scale-Aware Trident Networks for Object Detection, ICCV 2019.

[4] SOD-MTGAN: Small Object Detection via Multi-Task Generative Adversarial Network, ECCV 2018.

[5] Perceptual Generative Adversarial Networks for Small Object Detection, CVPR 2017.

[6] Better to Follow, Follow to Be Better: Towards Precise Supervision of Feature Super-Resolution for Small Object Detection, ICCV 2019.

[7] Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recurrent Neural Networks, CVPR 2016.

[8] PyramidBox: A Context-assisted Single Shot Face Detector, ECCV 2018.

[9] Relation Networks for Object Detection, CVPR 2018.

[10] Stitcher: Feedback-driven Data Provider for Object Detection, CVPR 2020.

[11] Augmentation for small object detection, CVPR 2019.

[12] FaceBoxes: A CPU Real-time Face Detector with High Accuracy, IJCB 2017.

[13] S3FD: Single Shot Scale-invariant Face Detector, ICCV 2017.

[14] Dot Distance for Tiny Object Detection in Aerial Images, CVPRW 2021.

[15] An Analysis of Scale Invariance in Object Detection – SNIP, CVPR 2018.

[16] SNIPER: Efficient Multi-Scale Training, NIPS 2018.

[17] Feedback-driven loss function for small object detection, Image and Vision Computing 2021.

  • 2
  • 0
  • 1355
收藏
暂无评论