1. 引言
尽管目标检测算法取得了长足的发展,例如 Faster RCNN
、YOLO
、SSD
、RetinaNet
、EfficientDet
等。通常,这些模型是在 COCO
数据集上训练的。它是一个包含各种对象类别和标注的大规模数据集,因此在训练对象检测器方面很受欢迎。然而,事实证明,这些模型对于小物体检测效果欠佳。本文就小目标检测困难的原因进行分析,并给出常见的解决方法。
闲话少说,我们直接开始吧!
2. 感受野受限
在卷积神经网络中,感受野(Receptive Field)
是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域经过卷积计算后得到的,
在普通的物体检测器中,感受野可能是有限的,这意味着网络可能对较小物体周围的上下文信息没有足够的理解。因此,由于感受野不足,检测器可能难以准确检测和定位这些物体。下图显示了神经网络的感受野。
3. 特征表示
目标检测器通常依赖CNN
架构中学习到的特征来识别物体。然而,特征表示的固有限制可能会阻碍对较小物体的检测,因为学习到的特征可能无法充分捕捉微小和复杂的细节。下图显示了卷积神经网络特征表示。因此,检测器可能无法将小物体与背景或其他外观相似的物体区分开来。
4. 尺度变化
小物体在图像中与较大物体相比呈现出较大的尺度变化。在主要由较大物体组成的数据集(如ImageNet或COCO)
上训练的目标检测器可能会因尺度差异而难以泛化到小物体。在下图中展示了同一目标的尺度变化。尺度上的变化可能导致匹配之前训练学习到的物体特征表示时出现困难,从而导致较小物体的检测性能下降。
5. 训练数据偏置
目标检测模型通常在大规模数据集上进行训练,由于其通用性,这些数据集可能包含对较大对象的偏置。当涉及到较小的物体时,这种偏置可能会无意中影响物体检测器的性能。因此,该模型可能没有标注足够多样化的小对象训练目标,进而降低了较小对象实例的检测精度。下图 显示了具有两个类对象的数据集的散点图。可以观察到,类“0”的数据点明显多于类“1”。
6. 定位挑战
目标检测器在定位较小的物体时会具有挑战性,因为CNN架构中的特征图的空间分辨率尺寸有限。精确定位所需的细节可能会在较低分辨率下丢失或变得难以辨认,较小的物体可能会被其他更大的物体或杂乱的背景所遮挡,进一步加剧了定位的困难。这些因素可能导致普通物体检测器在准确定位和检测较小物体时失败。
7. 图像金字塔
基于上述几点分析,常用的解决思路总结,针对多尺度小目标我们首先想到的是图像金字塔。
该方案涉及通过上采样和下采样创建输入图像的多个scale
版本,这些不同的scale
版本或者不同的特征金字塔层提供了不同的图像特征分辨率。目标检测器可以应用不同的特征金字塔的层来处理不同尺度的目标。在下图中,图像金字塔的技术被用于检测太阳,这个方法通过在低层级的金字塔层来检测小目标,因为这些层的太阳目标可能更加突出和容易区分。
8. 滑动窗口
这种方法涉及在图像上以不同的位置和比例来滑动一个固定大小的窗口。在每个窗口位置,目标检测器应用分类模型来确定是否存在物体。通过考虑不同的窗口大小和位置,检测器可以有效地搜索图像上的小物体。然而,滑动窗口方法在处理大图像或多个比例的窗口时可能会带来高昂的计算成本。
9. 多尺度特征提取
目标检测器可以利用多尺度特征提取技术,在不同细节级别来捕获目标特征。这涉及在多个分辨率下处理图像,或者针对同一输入应用具有不同感受野的卷积层。通过结合不同尺度的特征,检测器可以有效地捕获场景中的小型和大型物体。这种方法有助于捕捉小物体检测相关的细粒度细节。
10. 数据增强
这是计算机视觉中最著名的技术之一,可以通过生成额外的训练样本来提高小物体的检测性能。随机裁剪、调整大小、旋转或引入人工噪音等增强方法可以帮助提升数据集中的小目标的变化,使检测器能够学习小物体的稳健特征。数据增强技术还可以模拟不同的物体尺度、视角和遮挡,帮助检测器更好地泛化到真实场景中。
11. 迁移学习
这种方法涉及利用从大规模数据集(例如ImageNet)上的预训练中学到的知识,并将其应用于特定对象检测任务。预训练模型,尤其是那些具有深度卷积神经网络 (CNN) 架构的模型,可以捕获丰富的多层次特征,有利于小目标检测。通过在目标数据集上微调预训练模型,对象检测器可以快速适应新任务,使用学习到的特征表示可以更好地检测小物体。
12. 总结
本文重点阐述了小目标检测领域相关困难点原因分析,以及业内比较常见的解决思路,并给出了相应的图示进行补充说明,您学废了吗?