如何提高目标检测模型在小目标检测任务上的性能

下面给你一份小目标检测提效清单 (从"性价比最高的改动"到"进阶/研究向")。按优先级逐步做,通常能明显拉升 APS / Recallsmall

快速见效(一般不改模型结构)

  1. 更高输入分辨率

    • 小目标像素更大→可分辨性提升。
    • 代价:显存/延迟上升。若受限,可只对含小目标的图做裁切/切片推理(见 SAHI 思路)。
  2. 多尺度训练 + 多尺度/软TTA推理

    • 训练时随机缩放;推理时做1--2个尺度并合并NMS
    • 注意总时延;在线业务可只保留最收益的1个附加尺度。
  3. NMS 调参

    • 小目标易被大目标抑制:

      • Soft‑NMSCluster‑NMS
      • 适当提高score阈值降低IoU阈值(具体要在验证集网格搜索)。
  4. 数据增广更"利小"

    • Copy‑Paste/Instance‑Mix:把小目标抠出来贴到多背景上,提升长尾频次。
    • Mosaic/MixUp:保留小目标清晰度,避免过度压缩。
    • 随机裁剪:确保小目标经常被放大到可学尺度(但别裁掉语义上下文)。
  5. 标注质量与采样

    • 小目标的框更容易偏;清洗严重偏移/过小(<4×4 px)的框。
    • 重采样/重加权小目标类别,缓解长尾。

模型/训练侧(结构或训练策略的小改动)

  1. 更注重高分辨率特征的骨干/颈部

    • 使用/强化 FPN/PAFPN/BiFPN ;增加P2层(stride 4)输出分支。
    • 减小下采样步长(e.g., 首层stride 4→2),或在颈部增加上采样/可学习上采样(如CARAFE/PixelShuffle)。
  2. Anchor/Assign 改善(锚框法)

    • 重聚类小尺度 anchor(k‑means/k‑means++ 按你数据集的wh分布)。
    • 采用更鲁棒的正负样本分配:ATSS、SimOTA 等,对小框更友好。
  3. 无锚方法的对齐与分布式分类

    • 使用 GFL/VarifocalNetDFL/Varifocal Loss,提升边界框与分类分数对齐。
    • Task‑Aligned AssignQuality Focal Loss 提高对小目标的置信度刻画。
  4. 损失函数与权重

    • 分类用 Focal Loss 抗易负样本;回归用 GIoU/DIoU/CIoU
    • 对小目标样本加权(sample‑level 或 size‑aware loss weight)。
  5. Transformer系改进(DETR族)

  • 优先选 Deformable‑DETR / DINO / RT‑DETR 等稀疏注意力与多尺度特征强的变体。
  • 增加高分辨率特征 输入给encoder/decoder;提高query数 并引入小目标专属queries
  1. 上下文与超分
  • 适度扩大感受野/上下文模块(dilated conv、Aspp、GCNet/SE注意力)。
  • 试**轻量超分支路(ESRGAN/EDSR‑lite)**先放大小目标再检测(注意延迟)。
  1. 训练细节
  • 更长训练 (schedule延长 ×1.5~2),EMA 权重、余弦退火LR。
  • 更大batch梯度累积稳定小目标学习。
  • BN 冻结/同步BN在多卡时更稳。

推理与工程化

  1. 切片辅助推理(SAHI/滑窗)
  • 把大图等分为重叠小块→单块高分辨率推理→合并NMS。
  • 常用于遥感/安防/零售货架等场景;对延迟要求高的线上,可只对"疑似小目标区域"启用。
  1. 类别/区域先验
  • 已知小目标常出现在特定区域/比例(如路面交通标志)时,做区域放大区域阈值微调。
  1. 量化与剪枝时的守护
  • 小目标对量化更敏感:校准集需覆盖小目标;考虑混合精度保留前几层/高分辨率分支为FP16/FP32。

诊断与评估(别盲调)

  1. 拆分评估
  • APS/RecallS / LAMR,以及不同尺度PR曲线。
  • TIDE 做误差归因(定位误差、分类误差、NMS抑制过度、漏检)。
  • 尺寸‑召回曲线:目标短边/面积 vs 召回,定位问题一眼明了。
  1. 网格搜索关键超参
  • {输入分辨率, NMS类型与阈值, 置信度阈值, 切片大小与重叠率, anchor簇数与尺度}
  • 固定随机种子,使用验证集进行一次性网格或贝叶斯优化,避免反复"拍脑袋"。

小目标"配方"示例

  • YOLO 系列(v5/v8/YOLOX/PP‑YOLOE)

    1. 打开 P2输出头
    2. 重新聚类 anchors(若是anchor‑based);
    3. 训练用 多尺度 + Mosaic/Copy‑Paste
    4. 推理用 SAHI 或分辨率↑、Soft‑NMS
    5. 验证集中做阈值网格搜索。
  • DETR 系列(Deformable‑DETR/DINO/RT‑DETR)

    1. 保留/加强最高分辨率特征;
    2. 提高num_queries 并引入小目标先验query
    3. 使用 DN训练/多尺度特征
    4. 结合 切片推理 合并结果。

常见坑

  • 一味把分辨率拉满但显存不足→batch过小,训练不稳定;
  • 增广把小目标"糊掉"(过强模糊/压缩);
  • NMS过严导致互相抑制
  • 量化/剪枝后小目标置信度塌陷但未重校阈值。

如果你愿意,我可以根据你的数据集规模、目标尺寸分布、延迟/显存预算、当前模型与指标,直接给出一份可执行的训练/推理配置(含推荐超参与网格搜索脚本)。