拓冰建站拓冰建站
首页 / 资讯中心 / 正文

YOLOv8 工业缺陷检测实战(下):小样本训练怎么把误检/漏检率压到产线标准

YOLOv8 工业缺陷检测实战下小样本训练怎么把误检/漏检率压到产线标准场景产线缺陷检测客户只认两个数——误检率OK 判成 NG和漏检率NG 判成 OK。本文用一个真实项目的迭代记录回答训练轮次和数据量怎么定才能保证这两个指标达标上线。姊妹篇《上48 张缺陷图起步的 8 版本迭代记录》讲完整流程本文只聚焦准确率达标这一件事。问题场景工业缺陷检测和通用目标检测相比最现实的约束是验收标准极其具体漏检率近乎零容忍一根 NG 木料流出产线就是质量事故误检率有上限误检太多产线频繁停机复检工人会直接关掉你的软件缺陷样本稀缺冷启动只有几十张图。所以训练的目标不是mAP 刷到多少而是用有限的数据和训练成本把误检/漏检率稳定压进客户可接受的区间。先定验收标准再谈训练动手前必须和客户白纸黑字确认量化标准例如漏检率 0.5%200 根 NG 最多漏 1 根 误检率 5%100 根 OK 最多误报 5 根后面所有关于数据量、轮次、阈值的决策都是拿这两个数当靶子。没有靶子模型够不够好永远扯不清。数据量准确率的第一杠杆多少张图才够我们的真实节奏单类别缺齿检测起步数据集图片数上线表现dataset_348 张能检出但误检多不敢放手用dataset_4157 张误检明显下降达到上线标准经验值单类别缺陷 50 张能跑通流程150 张左右能谈上线。但别死记数字正确的判断方法是看边际收益每攒一批新图比如 50 张重训一版在固定的 OK/NG 测试集上数误检/漏检个数如果新数据让误检/漏检明显下降 → 继续攒如果连续两版数据增加了但指标不动 → 说明瓶颈不在数量而在场景覆盖见下。比数量更重要覆盖误检/漏检的案发现场每版模型上线后把现场发生的误检图、漏检图全部回收进下一版训练集。这些图是价值最高的数据——它们就是模型当前的盲区。我们 dataset_3 → dataset_4 新增的 100 多张里一大半就是这么来的。另外两条数据纪律train/val 按根划分不按张同一根木料连拍的图高度相似分到两边会让验证指标虚高上线露馅OK 图也要进训练集不带标注让模型充分见过正常样本这是压误检率最直接的手段。训练轮次够用就好多了反而坏事我们的配置yolo trainmodelyolov8n.ptdatadataset.yaml\imgsz512epochs200patience100batch8devicecpu百张级数据集 yolov8n纯 CPU 训 200 轮约 40 分钟迭代成本极低。轮次与误检/漏检的关系轮次不足欠拟合特征没学好漏检率飙升——小缺陷置信度低于阈值全被过滤掉轮次过多过拟合模型背下了训练集的背景纹理val loss 开始回升表现为现场误检率上升——训练集里没出现过的正常纹理被当成缺陷甜点区val loss 走平将停的位置。实操建议epochs往大设200配patience100让它早停不用人盯必须用预训练权重modelyolov8n.pt不要yolov8n.yaml从头训。几十张图从头训train loss 降得很漂亮一上验证集全过拟合——这是我们踩过的第一个大坑训练完看results.png曲线train loss 降、val loss 平或升就是过拟合开始的位置下一版可以按这个位置收敛 epochs。阈值最后一道、也最便宜的调节阀数据定了、轮次定了误检/漏检率还能用置信度阈值最后调一把不用重训阈值调低如 0.3 → 0.2召回率升、漏检率降但误检率升阈值调高反之。产线宁误检不漏检所以方向是在误检率不超标的范围内把阈值尽量往下压。上线前验收别只看验证集指标最终上线版model_8的验证集实测Precision 0.95 Recall 0.95 mAP50 0.92 mAP50-95 0.59解读注意两点验证集只有几十张指标波动大mAP 高 ≠ 误检/漏检达标真正能拍板的是两步先在固定 OK/NG 测试集上数误检/漏检个数达标再上线试运行一周统计现场实际的误检/漏检率——这才是写进验收报告的数字。迭代全景8 个版本改了什么版本数据集imgsz改动效果model_1/248 张640首版跑通流程能检出误检多model_4/5157 张640数据量 ×3含回收的误检图误检明显下降model_6/7/8157 张512配合部署降输入尺寸精度持平速度达标结论数据量与场景覆盖的贡献 训练轮次 超参微调。轮次只要有早停机制兜底几乎不需要费心。类别什么时候该拆细第一版只有missing_tooth一个类。现场跑起来后发现边缘缺齿和中间缺齿特征差异大、互相干扰新一版数据于是拆成 3 类names:[missing_tooth,missing_glue,edge_missing_tooth]经验先单类跑通等误检/漏检分析明确指出哪类场景老出错再把它拆成独立类别。一开始就拆细每类只剩十几张图谁都学不好。注意类别定义一变相关历史数据要全量重标再重训。踩坑记录从头训练不用预训练权重train loss 漂亮验证集全过拟合误检爆炸。train/val 按张划分同根木料连拍图泄漏指标虚高。训练 640、部署 512预处理不一致小缺陷置信度整体下滑重训才恢复。只盯 mAP 调参改成每版在固定 OK/NG 测试集上数误检/漏检个数直观且和客户验收口径一致。误检/漏检图没有回收机制现场每发生一次误检漏检都是最贵的一张训练数据不回收集等于白错。小结压误检/漏检率的优先级排序定量化验收标准——没有靶子不谈达标数据回收误检/漏检图 场景覆盖 单纯堆数量轮次预训练权重 大 epochs patience 早停甜点区让曲线自己找阈值上线前在固定测试集上扫阈值宁误检不漏检验收固定测试集数个数 现场试运行一周不只看 mAP。系列文章姊妹篇《YOLOv8 工业缺陷检测实战上48 张缺陷图起步8 个版本迭代到上线的完整记录》部署篇《YOLOv8 部署到无 GPU 工控机实战ONNX 导出 OpenVINO 推理 手写后处理》
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门