目录
二、核心思路:为什么扩散模型比传统增强强100倍
三、准备工作:环境配置和数据集说明
3.1 硬件要求
3.2 环境安装
3.3 参考数据集选择
四、核心代码:扩散模型数据增强完整实现
4.1 方案设计
4.2 完整代码实现
4.3 常用Prompt模板
五、YOLOv10训练:从增强数据集到检测模型
5.1 数据集准备
5.2 YOLOv10训练代码
5.3 训练技巧:针对少样本类别调整损失权重
六、实验结果对比
七、踩坑记录和优化建议
去年年底,我接了一个工业检测的项目——检测流水线上某种罕见的零件缺陷。甲方只提供了不到200张标注图片,其中正常样本占了150张,缺陷样本只有可怜的50张。
我拿着这个数据集去跑YOLOv8(当时v10还没出),结果可想而知。mAP@0.5勉强到0.45,缺陷类别的召回率只有0.3左右。甲方看了测试结果直接说:“你这连人都看不出来的缺陷,模型怎么可能学得会?”
其实问题不在模型,在数据。少样本场景下,目标检测模型面临三个致命问题:
过拟合:模型把背景当成了特征,换个光照条件直接崩
类别不平衡:正常样本多,模型变成“睁眼瞎”,罕见缺陷检测不到
欠拟合:小类别因为样本太少,根本学不到有判别力的特征
后来我尝试了传统的图像增强——翻转、旋转、裁剪、颜色抖动,效果有一点提升,mAP到了0.52,但距离0.8的可用门槛还差得远。
直到我尝试了Stable Diffusion + ControlNet来做数据增强,效果立竿见影。这篇文章就是把我踩过的坑、写过的代码、总结的经验,完整地分享出来。