尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

小目标检测漏检的 3 个调优维度:Ultralytics YOLO 微调实操手册

小目标检测漏检的 3 个调优维度:Ultralytics YOLO 微调实操手册 小目标检测漏检的 3 个调优维度Ultralytics YOLO 微调实操手册【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics监控画面丢失远处行人、产线漏过 0.1mm 的裂纹——原因都一样小目标像素少、特征少容易被背景淹没。本文用 Ultralytics YOLO 讲小目标检测的微调覆盖数据、模型、训练推理 3 个维度通常能观察到小目标 AP 提升数点的量级。为什么常规做法不够用小目标检测的难点是一条链。其一图像经过降采样骨干网后16 像素的目标可能在深层特征图上被压成几个点特征信息基本耗尽其二保留细节的浅层特征离检测头远容易在融合中丢失其三小目标周围背景像素远多于目标本身信噪比低模型天然偏向看不见。只堆数据、加 epoch 效果有限得顺着这条链逐环调。YOLO 给出的应对思路提高有效分辨率大imgsz输入 P2 细粒度检测头步长 4把像素留在网里扩充小目标样本Mosaic、MixUp、多尺度训练等数据增强组合提高每张图的小目标密度损失加权调高框回归损失权重强化对小目标定位的约束标签分配YOLO26 训练配方引入 STALSmall-Target-Aware Label Assignment小目标感知标签分配保证小目标有正样本覆盖 数据侧让小目标样本看得清数据侧解决两件事小目标样本的数量与质量够不够分辨率够不够让模型看见它们。输入分辨率提到多少合适结论把imgsz从默认 640 提到 1280是提升小目标 AP 最直接的单一手段。默认超参数里imgsz是 640。一个 24 像素的小目标在 640 输入下特征所剩无几1280 输入下它的像素量接近 4 倍检测头才有东西可学。代价是显存和推理耗时随分辨率上升显存不够时batch支持填小数如batch0.5自动匹配显存不用反复手调。数据增强参数怎么调结论小目标场景用中等强度的几何增强重点在量不在烈训练末期再关掉 Mosaic。model.train( datapcb_defects.yaml, imgsz1280, mosaic1.0, # 默认 1.0四图拼一张提高小目标密度 mixup0.2, # 默认 0.0小比例即可 scale0.5, # ±50% 尺度变换 multi_scale0.25, # 分辨率在 imgsz 的 ±25% 内动态抖动 close_mosaic10, # 默认 10末 10 个 epoch 关闭 mosaic )参数推荐范围作用imgsz800~1280直接增加小目标像素量mosaic1.0四图拼合提高单图小目标密度multi_scale0.2~0.3分辨率动态抖动增强尺度鲁棒性close_mosaic10末期关闭马赛克避免小目标被拼接变形小目标的标注与样本怎么补结论小目标场景的标注容差更小2~3 像素的框偏差就可能让 AP 掉点。放大图像逐框核对标注框贴着目标边缘画。样本不够时可以用copy_paste参数把标注好的小目标物体抠出来贴到其他图上扩样比单纯过采样更便宜。 模型侧让检测头看得见细粒度特征模型侧要做的是把浅层保留的细粒度特征直接接到检测头上并选一个与数据量匹配的骨干网。什么时候上 P2 细粒度检测头结论1280 输入下目标仍只有几十个像素时换 P2 头步长 4不动骨干网。YOLO26 内置了 yolo26-p2.yaml其 Detect 头在 P2/4 ~ P5/32 四个尺度出结果P2 的特征图尺寸是图像的 1/4小目标像素保留得最多。注意这只是架构配置没有同名预训练权重发布需要从头训练或从标准版权重继续微调from ultralytics import YOLO model YOLO(yolo26n-p2.yaml)骨干网选哪个规格结论小目标场景对骨干容量更敏感同数据下从 n 升到 mAP 提升通常比大目标任务更明显。模型配置目录里有 n/s/m/l/x 五档。目标极小、背景杂乱时优先 s 或 m边缘部署受限时n P2 头也是可组合方案。别一上来就拉满 x先用小模型验证提升空间再决定是否升规格。⚙️ 训练与推理侧让参数知道小目标训练与推理侧分三件事损失向定位倾斜、训练过程稳住、推理阈值放宽。损失权重与学习率怎么倾斜结论学习率略降、热身拉长、框损失权重调高先稳小目标的定位再谈分类。model.train( datapcb_defects.yaml, epochs100, imgsz1280, box8.5, # 默认 7.5强化定位约束 lr00.005, # 默认 0.01微调场景略降 warmup_epochs5, # 默认 3.0给浅层更多收敛时间 patience30, # 默认 100早停防过拟合 )参数推荐范围作用box8.0~10.0框回归损失权重越高越强调小目标定位lr00.003~0.01初始学习率微调宜略低patience30~50早停耐心值防小目标集上过拟合多尺度与分阶段训练怎么做结论multi_scale让分辨率在 ±25% 内抖动或先低后高分两阶段都比直接上高分辨率更稳。检测训练源码里multi_scale 0时每个 batch 的图像尺寸在imgsz × (1±multi_scale)之间采样相当于不改变数据就做了多分辨率训练1280 ± 25% 即 960~1600 之间波动。分阶段做法先在 640 训若干个 epoch 收敛再resumeTrue切到 1280 精调。推理与评估阈值怎么设结论小目标召回偏低conf可放到 0.1~0.15 再评估别用默认阈值下结论。default.yaml中 predict 的conf默认 0.25而验证是 0.001。小目标阶段用 0.25 评估召回会显得异常难看——先把阈值放低看能检出多少再决定是继续训练还是调 NMS而不是直接判定模型不行。一个完整的最小可跑案例PCB 微小缺陷检测输入1 万张 4K 工业图像降采样到 1280 使用缺陷 3 类裂纹、划痕、异物单缺陷约 5~20 像素按 7:2:1 分层划分训练/验证/测试集。关键配置6 个核心参数完整参数见 train 参数默认值model YOLO(yolo26n-p2.yaml) model.train( datapcb_defects.yaml, imgsz1280, epochs100, box8.5, multi_scale0.25, patience30, )关键指标同数据下1280 P2 头相对 640 标准头的基线小目标 AP 通常有数点量级的提升空间推理耗时约为 640 版本的数倍导出 ONNX/TensorRT 后一般能压回产线节拍内。评估跑yolo val modelbest.pt datapcb_defects.yaml imgsz1280重点看小目标 AP 和召回率别只看总 mAP。踩坑与排查远处目标仍漏检 → P3/8 检测头已把目标压到几个像素以下 → 换 P2 头或把imgsz提到 1280640 训出的权重切 1280 评估后 AP 明显下降 → 训练与评估分辨率存在落差 → 用 1280 重训或开multi_scale别拿 640 权重直接当评估基线训练末期 AP 回落、检测框变形 → 训练后期 mosaic 仍开着 → 保持close_mosaic10默认值末期关闭拼接1280 训练 OOM → 分辨率翻倍后显存占用接近 4 倍 → 调低batch或填小数如batch0.5让框架自动匹配显存延伸方向一是知识蒸馏用distill_model参数把大模型的小目标能力压进可边缘部署的小模型二是切片tile推理解决超大多光谱图上 1280 也不够大的问题。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表