高分辨率图像上的高效小目标检测,大幅超越现有最先进检测器 !

免责声明

凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。

image.png

扩大输入图像是促进小目标检测的一种直接而有效的方法。然而,简单的图像放大在计算和GPU内存上的开销极大。实际上,小目标通常在图像中稀疏分布且局部聚集。因此,大量的特征提取计算被浪费在非目标背景区域上。

近期的研究尝试使用额外的网络来挑选包含目标的区域,并执行常规的目标检测,但新引入的计算限制了它们的最终性能。在本文中,作者提出重用检测器的 Backbone 网络来进行特征 Level 的目标寻找和图像块切片,这可以避免冗余的特征提取并降低计算成本。

结合稀疏检测Head,作者能够在高分辨率输入(例如1080P或更高)上检测小目标,以获得更优的性能。由此产生的“高效小目标检测”(ESOD)方法是一个通用框架,可以应用于基于CNN和ViT的检测器,以节省计算和GPU内存成本。

大量实验证明了作者方法的有效性和效率。特别是,在代表性的VisDrone、UAVDT和小型行人数据集上,作者的方法一致性地大幅度超越现有技术水平(例如,在AP上提升8%)。

I Introduction

随着卷积神经网络(CNNs)[1, 2, 3]和视觉 Transformer (ViTs)[4, 5, 6]的最新进展,通用目标检测在包括MS COCO [7, 8]和Pascal VOC [9, 10]在内的公共基准测试中已取得令人鼓舞的性能。它已成为广泛应用的基石,例如自动驾驶[11, 12]和安全监控[13, 14]。然而,检测小尺寸目标(例如小于像素[7])仍然是一项具有挑战性的任务,这限制了在无人飞行器(UAVs)[18, 19]和全景相机[13, 20]等专用平台上的视觉分析。

为了填补检测小尺寸目标与正常尺寸目标之间的性能差距,研究行人在数据增强[21, 16]、特征聚合[22, 23]、模型演进[24, 25]等方面做出了诸多努力。然而,由于小目标占据的像素较差,缺乏足够的视觉信息来突出特征表示[26],改进仍然有限。一种简单而有效的解决方案是增大输入图像的分辨率,以规避小目标的大小问题[27, 28]。然而,简单的分辨率提升不可避免地会导致计算量和GPU内存的爆炸性增长,这对于现实世界中快速检测小目标并不利。

实际上,由提高分辨率带来的大多数计算都消耗在背景区域[29, 28]。这种冗余计算在实践中尤为常见。以VisDrone [18]数据集为例,由UAVs捕获的图像上的目标分布稀疏,而小目标往往集中在特定区域,如图1所示。平均而言,每张图像包含54个目标,但这些目标总共只占用8.1%的像素。作者统一将每张图像划分为的块,以进一步探索目标密度分布。统计数据表明,超过70%的块不包含任何目标。因此,首先过滤掉空白区域应该更具计算友好性,而不是没有区别地处理整张大图像。

image.png

为了高效地消除背景,本文首先在基础检测器的早期阶段插入了一个ObjSeeker模块,以寻找可能包含感兴趣物体的区域。随后,AdaSlicer模块自适应地将特征图划分为固定大小的小块,丢弃大量但非目标特征块,并将剩余的块输入后续模块进行最终的目标预测。在此过程中,SparseHead对剩余的块应用稀疏卷积[30, 31],以进一步减少在背景上的计算浪费。如图2所示,所形成的通用框架ESOD,有效提升了现代神经网络在高分辨率图像上检测小物体的能力。

image.png

这一想法受到近期Grounded-SAM1的启发,后者采用“分而治之”的方法,使用Segment Anything Model (SAM) [32]分割显著物体,并通过Grounding-DINO [33]赋予语义标签。作者提出的ESOD粗略寻找类别无关的物体,然后确定它们的类别标签和更精细的定位。这样做显著节省了高分辨率图像中背景区域巨大的计算成本。实际上,这种先过滤后检测的范式最近已被研究行人所研究[34, 35, 36],他们通常采用额外的独立网络生成目标检测 Mask ,并将原始图像划分为小块供传统检测器使用。然而,由于在原始图像和切片图像块上冗余的特征提取,新引入的计算是不可忽视的。因此,他们的初步物体寻找应用于下采样的图像以节省计算,而像素较差的小物体则进一步被过滤掉。相比之下,作者的ESOD在特征层面进行物体寻找和图像切片,以避免冗余的特征提取。这种方式使作者能够在保持计算和时间效率的同时,检测原始高分辨率(例如1080P)甚至更大图像中的小物体。因此,小物体的稀缺像素信息得到了最大程度的保留。结果,作者的ESOD在包括VisDrone [18]、UAVDT [37]和TinyPerson [16]在内的三个代表性数据集上均取得了最新的技术水平,一致提高了效果和效率。

值得注意的是,ESOD是一个即插即用的优化方法,适用于卷积神经网络(CNNs)[38, 39]和视觉 Transformer (Vision Transformers)[6, 4]。AdaSlicer可以轻松扩展以生成注意力 Mask ,避免背景区域视觉 Token 的计算呈二次增长。更多细节和实验请参考第III-C节和第IV-D节。

作者的贡献可以总结如下:

  1. 作者统计地指出实践中稀疏分布的小目标的事实,并通过自适应的 Patch 分割进行特征 Level 的目标寻找,以避免冗余的特征提取并节省计算成本。此外,采用稀疏检测Head复用估计的目标 Mask ,以进一步节省计算资源。
  2. 作者提出了一种通用框架ESOD,它能够适应CNN和ViT架构,从而在检测高分辨率图像时节省计算和GPU内存。
  3. 作者在代表性的VisDrone [18]、UAVDT [37]和TinyPerson [16]数据集上,以相当的计算成本和推理速度,大幅超越现有最先进检测器(例如,在AP上提高了**8%**)。

II Related Works

Small Object Detection

受到通用目标检测成功的启发,许多研究采用“分而治之”的思想来解决小目标检测(SOD)中的尺寸变化问题。SNIP [40]构建了一个图像金字塔,在每一个尺度上只将大小适中的目标视为 GT 值。SNIPER [24]从原始图像中裁剪出一系列固定大小的 Patch ,避免了显式构建用于多尺度训练的图像金字塔。然而,这需要耗时多的多尺度测试。HRDNet [25]使用一个 Backbone 金字塔来利用图像金字塔,其中重量级的 Backbone 处理小图像,反之亦然,然后采用多尺度FPN融合提取的特征。

此外,数据增强是提高SOD性能的有效方法。简单的 Copy-Paste [21]是一种针对实例分割和目标检测的强大数据增强方法,用以解决各种不平衡问题。Yu等人提出了SM[16]和SM+[41]作为预训练策略,通过调整大型源数据集(如MS COCO[7])与小目标数据集之间的目标尺寸分布,提高迁移学习的有效性。Stitcher[42]在训练期间手动缩小常规图像以生成小目标,并选择性地将收集到的图像输入以优化检测器对小目标的检测。

与上述工作相比,输入图像放大[27, 43]更有效但缺乏效率。作者的工作专注于探索在放大图像时节省计算资源并加速检测的方法。

滤波后检测范式

当采用高分辨率图像作为输入时,通常的做法是从原始图像中筛选出几个 Patch ,然后进行检测。均匀地切割图像并放大输入 Patch 是检测小目标的一种简单而有效的方法[27]。为了避免在空白 Patch 上进行计算,ClusDet[34]使用额外的CPNet定位聚集的目标并丢弃空区域。通过独立估计密度图,DMNet[44]利用滑动窗口和连通组件算法生成聚类 Proposal ,而CDMNet[35]应用形态闭运算和连通区域。同时,UFPMP-Det[45]使用一个粗糙检测器生成子区域,并将它们合并为统一图像进行多代理检测。Focus&Detect[28]则利用高斯混合模型估计聚焦区域。

所提及的方法引入了单独的网络来生成聚类区域,将原始图像裁剪成 Patch ,并输入到另一个网络进行更精细的目标检测。然而,在这两个网络中存在大量的冗余特征提取,这反而损害了检测效率。相比之下,作者的方法在特征层面进行 Patch 搜索,并将其与单一网络中的目标检测统一。不再需要冗余的计算。

Sparse Convolution

稀疏CNN[30, 31]最近作为一种加速推理的方案而受到关注,它通过为卷积生成像素级的样本 Mask 来实现。Perforated-CNN[46]使用不同的确定性采样方法生成 Mask 。DynamicConv[47]利用一个小型的门控网络来预测像素 Mask ,而SSNet[48]提出了一个随机采样和插值网络。特别是,稀疏卷积已被应用于检测Head。QueryDet[49]构建了一个级联稀疏 Query 结构,以加速在高分辨率特征图上的小目标检测,而CEASC[19]通过全局特征捕获来自适应地调整 Mask 比例,以平衡效率与准确性。

由于上述方法通常采用Gumble-Softmax[50]或Focal Loss[51]来训练稀疏 Mask ,这会引入额外的计算成本。与此不同,本文提出了一种无需成本的生成稀疏 Mask 的方法,以加速检测过程。

III Method

本节介绍了作者的ESOD框架,该框架能够高效地在高分辨率图像上检测小物体。首先,在第三节A中,作者回顾了通用目标检测器,并将神经网络分解为三个部分(即,基础模块、中间模块和 Head 模块)。随后,在接下来的章节中,作者将展示每个部分针对小目标检测的专业化演变。

Revisiting Object Detector

image.png

为了加快检测过程,一个常见的做法[29, 59]是使用额外的网络预先过滤包含目标的区域,丢弃背景,并对分割的图像块重新进行目标检测。然而,如图3所示,额外网络引入的计算量是不可承受的。相比之下,本文重用检测器自身的特征进行高效的目标搜索(第III-B节),自适应地将相应的特征图划分为小 Patch (第III-C节),并利用特征金字塔上的稀疏检测Head进一步节省计算(第III-D节)。作者提出的ESOD的总体框架如图4所示。

image.png

Efficient Object Seeker

关键因素在于如何以低成本高效地定位可能包含物体的区域,以加快小目标检测的速度。先前的研究通过引入另一个独立的网络来估算密度图[59, 35]或回归聚类区域[29, 45],实现了这一目标。然而,在初步寻物和最终目标检测中对特征提取的冗余计算是不可忽视的,这阻碍了它们在更大图像上检测小物体以获得更好的性能。

image.png

实际上,寻找潜在物体的直观方法是直接使用区域建议网络[61]或聚类建议网络[29]。然而,由于特征容量有限[62, 63],在网络浅层阶段直接进行边界框回归可能不适用于寻找小物体。因此,研究者利用密度图来估算物体分布[59, 35]。然而,一个普通的密度图可能会损害初步寻找过程[64],因为作者的核心目标是寻找前景(包含整个物体),而不仅仅是计数人群(仅包含物体的中心)。

因此,作者的ObjSeeker生成了类不可知的目标性 Mask ,用以区分前景与背景,而不是生成类似聚类坐标[29]或目标计数(密度)[59]的高度语义预测。这一想法受到了近期Grounded-SAM [33]的启发,它采用“分而治之”的方法对显著物体进行分割,然后赋予其语义标签。ObjSeeker粗略地寻找类不可知的目标,随后的模块确定它们的类别标签和更精细的定位。

image.png

image.png

Adaptive Feature Slicer

算法1 自适应特征切片。

image.png

然而,如图6所示,这种朴素切片策略有两个主要缺点。首先,目标容易被打断并分散到不同的块中。尽管网络的感受野可以超出特征块以检测完整的目标,但大型目标仍然容易被打断。其次,这种切片策略实际上是低效的,因为切分的块中仍存在大量的背景。

image.png

实际上,用最少数量的切片块包围所有可能的目标是一个NP难问题[67]。作者首先在算法1中引入了一种贪心策略,然后在算法2中提出了一个简化的替代方案以加快速度。

image.png

算法2 简化的自适应特征切割。

image.png

Sparse Detection Head

在传统的目标检测器中,证明在聚合的高分辨率特征图上的解耦检测Head对于检测小物体至关重要[39, 68]。然而,计算成本仍是一个需要解决的问题,特别是在资源受限的平台 上。

最近,稀疏卷积[30, 31]通过仅在特征图中的稀疏采样网格上执行卷积,展示了一种有前景的解决方案。然而,先前的研究[49, 19]通过可学习 Mask 获得稀疏位置,这引入了额外的参数和计算,相应的优化难度也增加了。

image.png

结合ObjSeeker、AdaSlicer和SparseHead,作者提出的ESOD框架能够高效地在高分辨率输入上检测小物体,以获得更好的性能。ObjSeeker与检测网络一同优化,而AdaSlicer和SparseHead是无需训练的组件,因为它们没有引入新的可学习参数。特别是,在初步预热步骤中,作者使用 GT 物体 Mask 进行特征切片,以确保训练稳定性;在其余步骤中,作者使用ObjSeeker预测的物体 Mask 进行后续流程。

IV Experiment

在本节中,作者将介绍实验设置,包括所使用的数据集、作者方法的实现细节以及评估指标。作者实验的目标是验证作者提出方法的有效性和效率。

Datasets

为了验证所提出的ESOD的有效性并减少偏差,作者在三个流行且具有代表性的数据集上进行了一系列实验:VisDrone [18],UAVDT [37],和TinyPerson [16]。

VisDrone数据集。 VisDrone中的视频和图像由多个无人机平台在不同的场景下捕获,覆盖了十四个城市。VisDrone-DET数据集包含总共10,209张静态图像(6,471张用于训练,548张用于验证,3,190张用于测试),涵盖10个目标类别。图像的尺度从960×540到2,000×1,500不等。如图1所示,当均匀地将图像划分为的块时,超过70%的块不包含任何目标,显示出其稀疏分布的特点。遵循文献[29, 49, 19],作者使用验证集进行评估。

UAVDT数据集。 UAVDT数据集由无人机平台在城市区域的多个地点捕获,包含50个视频序列,其中有3个类别需要检测。其中30个视频(23,258帧)用于训练,20个视频(15,069帧)用于测试,其分辨率为1,024×540。平均而言,每张图像中有18个目标,仅占4.9%的像素,大约84%的块是空的。

TinyPerson数据集。 TinyPerson中的所有图像均来自互联网,主要关注海边的行人,其中目标的大小既绝对又相对较小(例如,小于像素)。该数据集包含1,610张图像(794张用于训练,816张用于测试),主要尺寸为1,920×1,080。平均每张图像包含25个目标,仅占0.87%的像素。这些目标在图像中的分布更为稀疏,块的空置率甚至高达89%。

Evaluation Protocols

image.png

Implementation Details

作者基于纯PyTorch实现方法[69],所有模型都在两个Nvidia V100 GPU上进行训练。为了构建基准,作者在新型YOLOv5[52]上配备了解耦检测Head[39],以获得更好的性能[68, 39]。通过提出的ObjSeeker、AdaSlicer和SparseHead,作者开发了ESOD。所有检测器都按照默认设置训练50个周期(例如,具有0.0005权重衰减的SGD优化器,以及采用余弦退火计划的0.01初始学习率)。批量大小为8。除非另有说明,作者采用中等尺寸的 Backbone 网络[52]来构建检测器,并且对于VisDrone、UAVDT和TinyPerson,输入尺寸的较长边分别设置为1,536、1,280和2,048。

Main Results

与最先进方法的比较。作者在表1和表2中与最先进的方法在三个数据集上进行了比较。作者的ESOD在准确性和效率上都大幅超过了竞争方法。
image.png

具体来说,与采用图像级先过滤后检测范式(包括ClusDet [29]、DMNet [59]和CDMNet [35])的检测器相比,作者的ESOD在VisDrone [18]和UAVDT [37]数据集上表现出更高的性能,如表1所示。这表明作者的特征级目标搜索和块切片更为高效,因为避免了大量的冗余特征提取。因此,ESOD能够增大输入分辨率(例如,,表示为)以获得更好的检测性能,而计算成本可承受。

image.png

此外,表2显示,对于小目标检测[16],重型网络和复杂策略(如Cascade RCNN [3])是不必要的。简单的分辨率增大仍然是提高性能的有效方法,而作者的ESOD可以显著节省计算资源并加快推理速度。

适应不同架构中的各种检测器。 为了评估作者方法的灵活性和普遍性,作者将ESOD扩展到从传统的卷积神经网络(CNN)到最近的视觉 Transformer (ViT)的各种流行目标检测器,如表3所示。

image.png

对于基于CNN的目标检测器,作者从广泛使用的RetinaNet模型[51]开始研究。特别是,作者首先在表3中用检测Head训练标准的RetinaNet在P3-P7层,同时以相同的输入分辨率1,536测试QueryDet[49],以进行公平比较。结果表明,尽管QueryDet将AP提高了0.4,但然后,作者扩展到研究更多最近先进的模型,包括YOLOv5[52]、RTMDet[71]和YOLOv8[72]。根据表3,作者的ESOD能够很好地适应不同的 Baseline 检测器。在相同的输入分辨率下,ESOD显著减少了计算量并加快了推理速度;随着输入分辨率的增大,作者的ESOD在检测性能上实现了持续的提升(例如,AP*的1.5-2.3增益)并且推理吞吐量甚至更高(+1 FPS)。当 Baseline 模型变得更强大(例如,从RetinaNet到YOLOv8)时,作者的ESOD在目标检测的效率和效果上带来了持续的改进,这表明作者具有将来的文献中整合更先进检测器的能力。

对于基于ViT的检测器,作者首先通过将YOLO[52] Baseline 中的CSP块[74]替换为Transformer块[4, 58]来构建一个普通的检测器,后者包括一个多头自注意力(MHSA)层和一个前馈网络(FFN)层。然而,尽管ViT[4, 5]的性能很有希望,但输入尺寸增大时,计算和GPU内存成本会成倍增加(主要是由于MHSA层)。在处理高分辨率图像上的小物体时,训练成本通常是高昂的(例如,对于的输入尺寸,需要161 GB GPU内存,如图9所示)。因此,具有ViT架构的 Baseline 模型只能在上训练,导致检测性能较差,如表3所示。

image.png

相比之下,图9显示作者的ESOD可以显著降低GPU内存需求(例如,对于,只需19 GB),这使得能够在更高分辨率上训练和测试检测器以获得更好的性能(例如,29.0与23.5的AP*)。实际上,图9意味着随着输入尺寸的增长,ESOD所需的GPU内存几乎线性增加,因为无论输入分辨率如何变化,图像中的物体数量是恒定的。如第III-C节所述,ESOD仅在潜在物体区域上执行自注意力,而计算和GPU内存仅在初步特征提取过程中增长。因此,作者的方法使得在处理高分辨率图像时的训练和推理变得可行。

此外,作者将ESOD适配到GPUiT [73]主干网络上,该网络能够感知更多的高分辨率信息,以进一步研究基于ViT的检测器的改进。实验结果展示在表3中。相应地,当采用相同的输入分辨率时,作者的方法也可以显著减少60%的计算量,并将推理速度提高2.8倍,并且通过简单的输入扩大操作建立了一种新的小目标检测性能的最新水平(例如,AP为31.3)。然而,推理成本逐渐变得难以承受(例如,低于10 FPS),这高度依赖于工程优化和硬件资源。同时,在相同的输入尺寸下,与基于CNN的检测器相比,ESOD对基于ViT的检测器造成的性能降级相对更多。这主要是因为特征级切片策略,这些策略旨在避免在背景区域上进行无用计算,但损害了ViT模型中通过注意力块进行的全局建模。作者将无损适配到ViT模型作为未来的工作。

Ablation Studies

在本小节中,作者在VisDrone [18] 数据集上进行了广泛的消融研究,以验证ESOD主要组成部分(即ObjSeeker、AdaSlicer和SparseHead)在先进的YOLOv5 Baseline 上所具有的优越性。

image.png

image.png

** Patch 大小在有效性和效率之间是一种权衡。** 如表7所示,如果作者以原始特征图1/4的大小来裁剪特征 Patch ,计算量同时增加了44%,而FPS从28.6下降到23.2,因为裁剪的 Patch 中存在更多的背景区域。然而,检测性能并没有获得显著的增益(例如,AP仅增加了0.1)。相反,当 Patch 大小变为特征图的1/16时,计算量减少,但检测精度也降低,表明小的 Patch 大小会导致物体更多的截断。因此,对于当前的VisDrone [18] 数据集,1/8是一个适当的系数来确定 Patch 大小。至于像TinyPerson [16] 这样的其他数据集,其中物体更小且稀疏分布,1/16可能是一个更合适的选择。总的来说, Patch 大小在有效性和效率之间是一种权衡,这取决于具体的数据集。

image.png

随着保留 Patch 数量的增加,计算成本线性增长。 在之前的实验中,作者仅报告了验证集中每个输入图像的平均GFLOPs和FPS作为衡量代理。由于作者的方法的计算成本可能因不同图像和数据集上的物体大小和密度而有所不同,作者进一步采用分桶策略来测量保留 Patch 比例(由作者的ObjSeeker决定)从0%到100%的图像上的GFLOPs和延迟。如图10所示,随着保留 Patch 的增加,成本几乎线性增长,这与作者经验结果一致,即与VisDrone [18] 数据集相比,作者的方法在TinyPerson [16] 数据集上节省了更多的计算量,因为前者有更少的前景物体/ Patch 。根据目标应用场景中物体的分布,人们可以预测作者的ESOD如何在小型目标检测中带来好处。

image.png

作者的方法能有效扩展到更大的网络。 作者的ESOD主要是基于中等规模的 Backbone 网络[52]以获得更好的性能,但这并不意味着ESOD不适用于其他网络规模。实际上,图11展示了作者的方法在所有 Backbone 网络系列(即小、中、大和特大尺寸)上始终大幅优于 Baseline 。这意味着根据计算资源,作者的ESOD可以应用于不同规模的网络。例如,在边缘设备上可以采用小规模 Backbone 网络,而在GPU服务器上则可以采用大规模 Backbone 网络。

image.png

Visualizations

为了定性展示作者提出的ESOD的有效性,图12展示了一些代表性的示例,包括预测的目标 Mask 、切片块以及最终的检测结果。结果表明,稀疏分布的小物体被粗糙但有效地识别出来,而大量的背景区域则被排除。在切片块中,小物体被成功检测。

值得注意的是,尽管一些大物体在视觉上被块状切割,但最终的预测仍然完整(右上角的示例)。实际上,如第三节C部分所讨论的,经过初步的特征提取过程后,网络的感受野可以超出特征块,作者的AdaSlicer会以大物体中心为中心确定切片块。这样,很大一部分物体被包含在切片块内,使得检测完整。因此,作者的ESOD可以同时加速小目标检测,同时保持相对较大物体的检测完整性。

V Conclusion

在本文中,作者从统计角度指出,在实际应用中,大量的小目标在高分辨率图像中呈现稀疏分布和局部聚类的特点。

相比于细微的特征微调,图像放大更为有效。作者致力于节省计算资源和时间成本,以扩大用于小目标检测的输入图像。

具体而言,作者通过ObjSeeker和AdaSlicer在特征层面进行初步的目标寻找和自适应 Patch 分割,避免了对冗余特征提取的需要。

结合稀疏卷积,SparseHead重用预测的目标性 Mask 以进行稀疏检测。由此形成的方法,即ESOD,能够减少在背景区域特征提取和目标检测上的大量计算和GPU内存浪费。此外,作者的ESOD是一个适用于基于CNN和ViT网络的通用框架。

在VisDrone、UAVDT和小型行人数据集上的实验表明,作者的ESOD大幅降低了计算成本,并且显著优于现有的最先进竞争对手。

参考

[1].ESOD: Efficient Small Object Detection on High-Resolution Images.

作者:小书童
来源:集智书童

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式AI专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
18754
内容数
1314
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息