下面给你一份小目标检测提效清单 (从"性价比最高的改动"到"进阶/研究向")。按优先级逐步做,通常能明显拉升 APS / Recallsmall。
快速见效(一般不改模型结构)
-
更高输入分辨率
- 小目标像素更大→可分辨性提升。
- 代价:显存/延迟上升。若受限,可只对含小目标的图做裁切/切片推理(见 SAHI 思路)。
-
多尺度训练 + 多尺度/软TTA推理
- 训练时随机缩放;推理时做1--2个尺度并合并NMS。
- 注意总时延;在线业务可只保留最收益的1个附加尺度。
-
NMS 调参
-
小目标易被大目标抑制:
- 试 Soft‑NMS 或 Cluster‑NMS。
- 适当提高score阈值 、降低IoU阈值(具体要在验证集网格搜索)。
-
-
数据增广更"利小"
- Copy‑Paste/Instance‑Mix:把小目标抠出来贴到多背景上,提升长尾频次。
- Mosaic/MixUp:保留小目标清晰度,避免过度压缩。
- 随机裁剪:确保小目标经常被放大到可学尺度(但别裁掉语义上下文)。
-
标注质量与采样
- 小目标的框更容易偏;清洗严重偏移/过小(<4×4 px)的框。
- 重采样/重加权小目标类别,缓解长尾。
模型/训练侧(结构或训练策略的小改动)
-
更注重高分辨率特征的骨干/颈部
- 使用/强化 FPN/PAFPN/BiFPN ;增加P2层(stride 4)输出分支。
- 减小下采样步长(e.g., 首层stride 4→2),或在颈部增加上采样/可学习上采样(如CARAFE/PixelShuffle)。
-
Anchor/Assign 改善(锚框法)
- 重聚类小尺度 anchor(k‑means/k‑means++ 按你数据集的wh分布)。
- 采用更鲁棒的正负样本分配:ATSS、SimOTA 等,对小框更友好。
-
无锚方法的对齐与分布式分类
- 使用 GFL/VarifocalNet 的 DFL/Varifocal Loss,提升边界框与分类分数对齐。
- Task‑Aligned Assign 或 Quality Focal Loss 提高对小目标的置信度刻画。
-
损失函数与权重
- 分类用 Focal Loss 抗易负样本;回归用 GIoU/DIoU/CIoU。
- 对小目标样本加权(sample‑level 或 size‑aware loss weight)。
-
Transformer系改进(DETR族)
- 优先选 Deformable‑DETR / DINO / RT‑DETR 等稀疏注意力与多尺度特征强的变体。
- 增加高分辨率特征 输入给encoder/decoder;提高query数 并引入小目标专属queries。
- 上下文与超分
- 适度扩大感受野/上下文模块(dilated conv、Aspp、GCNet/SE注意力)。
- 试**轻量超分支路(ESRGAN/EDSR‑lite)**先放大小目标再检测(注意延迟)。
- 训练细节
- 更长训练 (schedule延长 ×1.5~2),EMA 权重、余弦退火LR。
- 更大batch 与梯度累积稳定小目标学习。
- BN 冻结/同步BN在多卡时更稳。
推理与工程化
- 切片辅助推理(SAHI/滑窗)
- 把大图等分为重叠小块→单块高分辨率推理→合并NMS。
- 常用于遥感/安防/零售货架等场景;对延迟要求高的线上,可只对"疑似小目标区域"启用。
- 类别/区域先验
- 已知小目标常出现在特定区域/比例(如路面交通标志)时,做区域放大 或区域阈值微调。
- 量化与剪枝时的守护
- 小目标对量化更敏感:校准集需覆盖小目标;考虑混合精度保留前几层/高分辨率分支为FP16/FP32。
诊断与评估(别盲调)
- 拆分评估
- 看 APS/RecallS / LAMR,以及不同尺度PR曲线。
- 用 TIDE 做误差归因(定位误差、分类误差、NMS抑制过度、漏检)。
- 画尺寸‑召回曲线:目标短边/面积 vs 召回,定位问题一眼明了。
- 网格搜索关键超参
- {输入分辨率, NMS类型与阈值, 置信度阈值, 切片大小与重叠率, anchor簇数与尺度}
- 固定随机种子,使用验证集进行一次性网格或贝叶斯优化,避免反复"拍脑袋"。
小目标"配方"示例
-
YOLO 系列(v5/v8/YOLOX/PP‑YOLOE)
- 打开 P2输出头;
- 重新聚类 anchors(若是anchor‑based);
- 训练用 多尺度 + Mosaic/Copy‑Paste;
- 推理用 SAHI 或分辨率↑、Soft‑NMS;
- 验证集中做阈值网格搜索。
-
DETR 系列(Deformable‑DETR/DINO/RT‑DETR)
- 保留/加强最高分辨率特征;
- 提高num_queries 并引入小目标先验query;
- 使用 DN训练/多尺度特征;
- 结合 切片推理 合并结果。
常见坑
- 一味把分辨率拉满但显存不足→batch过小,训练不稳定;
- 增广把小目标"糊掉"(过强模糊/压缩);
- NMS过严导致互相抑制;
- 量化/剪枝后小目标置信度塌陷但未重校阈值。
如果你愿意,我可以根据你的数据集规模、目标尺寸分布、延迟/显存预算、当前模型与指标,直接给出一份可执行的训练/推理配置(含推荐超参与网格搜索脚本)。