Skip to content

Efficient Small Object Detection on High-Resolution Images (ESOD)


摘要

核心问题: 简单放大图像提升小目标检测效果,但计算和显存开销太大

关键洞察: 小目标通常稀疏分布且局部聚集,背景区域浪费大量计算

方法: 复用 detector 的 backbone 做特征级目标寻找 + patch 切片,结合稀疏检测头

结果: 在 VisDrone、UAVDT、TinyPerson 上比 SOTA 提升 8% AP


1. Introduction

背景问题

  • 放大图像可提升小目标检测效果,但计算和显存开销大
  • 小目标稀疏分布,统计显示 70%+ 的 patch 不含目标,背景区域计算浪费严重

之前工作的局限

  • 用额外网络(CPNet/DMNet 等)挑选目标区域
  • 降采样图上做目标查找 → 小目标被过滤掉
  • 两段网络导致冗余特征提取

ESOD 核心思路

  • 复用 backbone,在特征层面做目标寻找(ObjSeeker)+ patch 切片(AdaSlicer)
  • 避免图像层面的冗余特征提取
  • 稀疏检测头处理剩余 patches
  • 动机来源:借鉴 Grounded-SAM 的 "divide and conquer" 思路——先用 SAM 分割显著目标,再赋语义标签
    • Grounded-SAM = SAM(分割) + Grounding-DINO(分类)
    • ESOD 借鉴:ObjSeeker(class-agnostic,只判断"这块有没有东西")→ Neck + SparseHead(判断"是什么、在哪里")
    • 核心:"先粗找目标,再细分类"的两阶段思路
  • 训练监督:Hybrid pseudo-label(Gaussian + SAM 预测)补充形状先验

架构流程

Input → Stem → ObjSeeker → AdaSlicer (切片+丢弃背景) → Neck → SparseHead → Output

组件作用
ObjSeeker在特征层面寻找可能含目标的区域
AdaSlicer自适应切片特征图,丢弃背景 patch
SparseHead用稀疏卷积做检测,进一步节省计算

实验结果

  • 比 SOTA 提升 8% AP(VisDrone/UAVDT/TinyPerson)
  • 可处理 1080P 或更高分辨率图像

A. Small Object Detection

  • 图像放大、特征融合、FPN/PAN 等方法

B. Filter-Then-Detect Paradigm

方法核心思路
ClusDet额外 CPNet 找聚集目标,丢弃空区域
DMNet密度图估计 + 滑动窗 + 连通域生成 cluster proposals
CDMNet形态学闭运算 + 连通域
UFPMP-Det粗检测器生成子区域,合并后多 proxy 检测
Focus&DetectGMM 估计焦点区域

问题:都用额外网络,两段特征提取冗余,且在降采样图上做目标查找 → 小目标被过滤

C. Sparse Convolution

方法核心思路
Perforated-CNN确定性采样生成 mask
DynamicConv小 gating 网络预测 pixel mask
SSNet随机采样 + 插值
QueryDet级联稀疏 query 结构加速 tiny object 检测
CEASC自适应调整 mask ratio

问题:都用 Gumble-Softmax 或 focal loss 训练稀疏 mask,引入额外计算

ESOD 改进:提出 cost-free 的稀疏 mask 生成方法

3. Method

3A. Revisiting Object Detector

  • 常规检测器:Input I → Backbone F → Feature Pyramid P → Detection Head H

3B. ObjSeeker(目标寻找模块)

  • 位置:插入在 Stem 之后
  • 结构:DWConv (13x3, 扩展感受野) + 1x1 Conv → Sigmoid → objectness mask
  • 计算量:仅 1.2 GFLOPs(可忽略)
  • 为什么不直接用 RPN/密度图
    • bbox 回归不适合浅层特征找小目标(特征容量有限)
    • 密度图是计数的,要的是完整的前景,不是计数
  • 输出:class-agnostic objectness mask M̂
  • 监督策略:Hybrid pseudo-label(Gaussian + SAM 预测)

SAM 相关论述

为什么用 SAM

  • Gaussian mask 无法捕获目标的精确形状
  • 用 SAM 生成高精度 pseudo-masks M_S = SAM(I) 来补充形状先验

SAM 的局限

"despite the extraordinary ability of salient object segmentation, SAM still suffers from recognizing small objects"

Hybrid 策略

M = M_S ⊙ M_G (if M_G 太小) else M_G

用 focal loss + dice loss 训练,loss ratio = 20:1

消融实验结论(Table V)

策略BPRboxBPRctrAPs
Gaussian99.1%98.3%28.2
SAM98.9%97.7%27.9 ❌
Hybrid99.3%98.3%28.3
  • SAM 单独用反而更差,因为 SAM 分割小目标有困难
  • Hybrid 最好,带来 +0.3 AP 增益

3C. AdaSlicer(自适应切片)

  • 问题:vanilla 固定网格切 → 目标切断、背景残留
  • 贪心算法(Algorithm 1):找局部最大值 → 以它为中心初始化 patch → 调整覆盖最多目标 → 迭代直到覆盖全部
  • 并行简化版(Algorithm 2):一次并行切片所有候选 patch
  • 流程patches → Neck(特征聚合)→ SparseHead
  • ViT 适配:ViT 本身以 patch/token 为单位,直接丢弃未激活 tokens,避免 self-attention 浪费计算

3D. SparseHead(稀疏检测头)

  • 直接在 ObjSeeker 输出的 object centers C 上做稀疏卷积
  • 关键:不引入额外参数,cost-free(复用 ObjSeeker 的 objectness mask)
  • 本质是两级过滤:AdaSlicer 粗筛 → Neck 聚合 → SparseHead 精筛

训练细节

  • Warm-up 阶段:用 GT mask 做切片保证训练稳定
  • 后续:用 ObjSeeker 预测的 mask

4. Experiments

4A. Datasets

  • VisDrone: 6,471 训练 + 548 验证,10 类,图像 960×540 ~ 2000×1500,默认输入 1536×1536
  • UAVDT: 城市航拍数据,默认输入 1280×1280
  • TinyPerson: 极小目标数据集

4B. 主要结果

数据集方法APAP50GFLOPsFPS
VisDroneESOD36.059.7119.536.4
VisDrone†ESOD (1.25x)37.962.3180.628.6
VisDroneUFPMP-Det (SOTA)36.662.4658.78.5
UAVDTESOD22.540.743.741.1
TinyPersonESOD61.3 (APt)-148.332.8
TinyPerson†ESOD64.0-234.524.3

符号说明

  • ESOD (默认):ESOD + 默认输入分辨率
  • †ESOD (1.25x):输入分辨率宽高同时放大 1.25 倍(1536→1920,1280→1600)
  • 论文原话:"simply 1.25× enlarging the input sizes (both of width and height)"

分析

  • ESOD 计算量远低于 SOTA(119.5 vs 658.7 GFLOPs),速度更快(36.4 vs 8.5 FPS)
  • 精度略低于 UFPMP-Det(36.0 vs 36.6),但速度快 4 倍
  • 1.25x 分辨率后 ESOD 达到 37.9 AP,超越 UFPMP-Det

4C. 适配不同检测器

  • CNN: RetinaNet, YOLOv5, RTMDet, YOLOv8 都有效
  • ViT: Vanilla, GPViT 也适用
  • 结论:通用框架,不挑 backbone

4D. 消融实验

配置APGFLOPs
Baseline (YOLOv5)36.2264.9
+HR (高分辨率 1.25x)38.1412.2
+Uni (均匀切片)34.9243.3
+Ada (自适应切片)38.1232.9
+SparseHead37.9180.6

关键发现

  • 自适应切片 > 均匀切片
  • SparseHead 额外节省 22% 计算
  • Patch size = 1/8 是 VisDrone 的最优选择

4E. Pseudo-label 策略

  • Hybrid > Gaussian > SAM(Table V)
  • Hybrid 带来 +0.3 AP 增益

5. Conclusion

  • 小目标在图像中稀疏分布,统计显示 70%+ patch 无目标
  • 之前方法:用额外网络做 filter-then-detect,在降采样图上找目标导致小目标丢失
  • ESOD 核心:复用 backbone,在特征层面做 ObjSeeker + AdaSlicer + SparseHead
  • 优点
    1. 通用框架,CNN/ViT 都适用
    2. cost-free(不引入额外 learnable 参数)
    3. 在 VisDrone/UAVDT/TinyPerson 比 SOTA 提升 8% AP,同时大幅降低计算
    4. 适配不同 backbone 大小(s/m/l/xl)

参考