注塑机外观缺陷检测:基于YOLOv12的工业质检方案落地实战 摘要在注塑行业外观缺陷检测长期依赖人工目检漏检率高且一致性差。本文记录了一套基于YOLOv12的注塑件外观缺陷检测系统从算法选型、数据工程、模型训练到边缘端部署的完整落地过程。文章不讲空洞理论重点分享在真实产线环境中遇到的“坑”与解法包括小目标缺陷检出率优化、负样本策略、TensorRT加速量化等工程细节。附完整架构图与关键代码片段适合正在做工业视觉落地的工程师参考。一、 为什么选YOLOv12不是追新是业务倒逼做工业质检的同学都知道算法选型从来不是“哪个新用哪个”而是“哪个能稳住产线节拍”。我们这条注塑线生产的是汽车内饰卡扣件单件检测窗口只有350ms缺陷类型包括飞边、缺料、缩水、熔接痕、划伤五类其中飞边和划伤的像素占比经常低于0.5%。此前我们用YOLOv8n跑过一版mAP0.5到了92%但上线后飞边的漏检率始终压在3%左右降不下去。分析bad case发现两个核心问题注意力分散v8的CSP结构在小目标密集场景下特征图的高频信息容易被背景纹理淹没推理瓶颈即使导出ONNX再用TensorRT FP16加速在Jetson Orin NX上单帧耗时仍卡在28ms左右留给后处理和通信的余量太紧。YOLOv12注此处指Ultralytics生态中最新的v12架构迭代引入的区域感知注意力机制Area-Attention和重参数化卷积块恰好对准了这两个痛点。前者让模型在不增加FLOPs的前提下聚焦局部高频区域后者在训练时多分支融合、推理时等价合并为单卷积天然适配TensorRT的算子融合。实测对比如下相同数据集、相同分辨率640×640、Orin NX平台模型mAP0.5:0.95飞边RecallTensorRT FP16耗时参数量YOLOv8n78.3%89.1%28ms3.2MYOLOv11n80.1%91.4%24ms2.9MYOLOv12n82.6%94.7%19ms2.7M飞边Recall提升5.6个百分点推理耗时降低32%这是我们决定切换架构的直接依据。二、 系统整体架构先放一张端到端的系统架构图后面逐层拆解┌─────────────────────────────────────────────────────────┐ │ 注塑机产线现场 │ │ ┌──────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ 环形光源 │───▶│ 5MP工业相机 │───▶│ Jetson Orin NX│ │ │ │ 偏振片 │ │ (GigE, 60fps)│ │ (TensorRT) │ │ │ └──────────┘ └──────────────┘ └───────┬───────┘ │ │ │ │ │ ┌───────▼───────┐ │ │ │ 检测结果图像 │ │ │ │ → MES/看板 │ │ │ └───────────────┘ │ └─────────────────────────────────────────────────────────┘ ▲ ▲ │ 离线训练闭环 │ 在线Bad Case回流 ┌────────┴────────────────────────┴────────────────────┐ │ 云端/工作站训练平台 │ │ ┌────────────┐ ┌─────────────┐ ┌───────────────┐ │ │ │ Label Studio│→│ 数据增强管线 │→│ Ultralytics │ │ │ │ 标注审核 │ │ MosaicCopyPaste│ Train v12n │ │ │ └────────────┘ └─────────────┘ └───────┬───────┘ │ │ │ │ │ ┌───────▼───────┐ │ │ │ ONNX → TRT引擎 │ │ │ │ INT8校准验证 │ │ │ └───────────────┘ │ └──────────────────────────────────────────────────────┘这套架构的核心设计原则是训练与推理解耦、数据闭环可追溯。下面重点讲三个最容易踩坑的环节。三、 数据工程比调参重要十倍的事3.1 缺陷样本的“长尾陷阱”注塑缺陷天然长尾缺料和缩水占样本量的70%飞边和划伤加起来不到15%。如果直接按比例采样训练模型会对多数类过拟合少数类的PR曲线惨不忍睹。我们的解法是分阶段采样 CopyPaste增强第一阶段Warmup全量数据正常采样训50 epoch让模型学到基础特征第二阶段Balance对飞边、划伤两类做CopyPaste增强——从原图中抠出缺陷mask区域随机粘贴到正常样本的光滑区域同时做亮度/角度扰动避免过拟合。增强后少数类样本量提升至多数类的60%~80%不追求完全平衡过度平衡反而引入分布偏移第三阶段Hard Mining用第二阶段模型对全量验证集推理筛选置信度在0.3~0.6之间的“犹豫样本”人工复核后加入训练集再训30 epoch。这套流程下来飞边的AP从68%拉到83%且没有牺牲其他类别的精度。3.2 负样本策略别只靠“好品”很多团队做缺陷检测只用良品当负样本结果上线后把水渍、灰尘、油污误报成缺陷。我们在负样本池中显式加入了三类干扰项模具脱模剂残留痕迹传送带反光/阴影人工擦拭后的纤维丝这些样本在标注时打ignore标签不参与loss计算但在训练时以30%概率混入batch强迫模型学会区分“真缺陷”和“伪缺陷”。实测误报率从4.2%降至0.8%。3.3 标注质量控制我们用的是Label Studio 双人交叉审核。关键规则飞边标注必须贴合边缘bbox不能包含超过2px的正常区域否则模型学到的是“边缘位置”而非“飞边形态”划伤用旋转框OBB标注因为划伤方向任意水平框会引入大量背景噪声每批次标注完成后随机抽10%由资深质检员复审Kappa系数低于0.85则该批次返工。四、 训练技巧针对注塑场景的定制改动4.1 Loss函数调整默认CIoU Loss对小目标不够敏感。我们将box loss替换为Wise-IoU v3它通过动态加权机制降低低质量锚框的梯度贡献同时增强对小目标偏移的惩罚。配置方式# yolo12_custom.yamlbox_loss_type:wise_iou_v3iou_ratio:0.5small_obj_weight:1.8# 自定义参数放大面积64²目标的loss权重4.2 输入分辨率的动态策略640×640对全局上下文足够但对0.3mm级别的飞边仍然粗糙。我们没有暴力提升到1280显存和速度都扛不住而是采用双尺度训练70% batch用640×64030% batch随机crop缺陷所在区域的2倍patchresize到640×640送入网络。这相当于让模型在一半时间里“近距离观察”缺陷细节推理时仍用640全图不增加任何开销。4.3 EMA与早停工业数据噪声大模型容易在后期过拟合。我们开启EMAdecay0.9998并设置patience20的早停监控指标选val/fly_burr_recall而非mAP——因为业务上漏检的代价远高于误报召回率才是真正的一等公民。五、 部署优化从PyTorch到产线的最后一公里5.1 TensorRT INT8量化FP16在Orin NX上已经够用但我们还想榨取更多性能。INT8量化的关键是校准数据集的选择不能用纯良品或纯缺陷必须按产线实际比例混合必须包含各类光照条件下的样本早晚班灯光差异、光源老化等校准集大小500张足够过多反而引入偏差。量化后用独立测试集验证mAP下降仅0.8%推理耗时从19ms降至13ms。5.2 后处理优化YOLO默认NMS在GPU上执行但对于单帧通常只有3~8个检测框的场景CPU上的轻量NMS反而更快省去GPU-CPU同步开销。我们把NMS移到CPU并用SIMD指令重写IoU计算单帧后处理从2.1ms降至0.6ms。5.3 异常兜底机制工业现场永远有意外。我们在推理pipeline中加了三道保险图像质量预检曝光均值超出[40,220]或拉普拉斯方差50时直接报警不做推理置信度动态阈值根据近100帧的检测统计自适应调整避免光源渐变导致的批量误报/漏报心跳监控推理线程连续3帧超时即触发重启同时缓存最近5秒图像供事后排查。六、 落地效果与反思6.1 产线实测数据系统在两条注塑线上稳定运行4个月累计检测186万件指标人工目检历史基线YOLOv12系统漏检率2.8%0.31%误报率-0.74%单件检测耗时~2s含取放350ms含通信班次一致性波动大σ0.15%6.2 几个血泪教训光源比算法重要前期花了两个月调模型后来换了环形偏振光源飞边对比度直接翻倍同样的模型Recall涨了6个点。做视觉先搞定打光别急着炼丹。别迷信开源数据集网上公开的注塑缺陷数据集和自家产线的分布差异巨大直接用预训练权重fine-tune不如在自己数据上从头trainbackbone可以用COCO预训练head必须重新初始化。MES对接要提前规划检测结果写入MES的协议、字段、超时重试机制必须在开发初期就和IT部门对齐。我们曾因为MES接口变更导致产线停机4小时教训深刻。模型版本管理生命线每次更新模型必须保留完整的训练配置、数据集快照、验证报告。产线出问题时要能在10分钟内回滚到上一个稳定版本。七、 总结YOLOv12在注塑缺陷检测上的优势不是“全面碾压”而是在小目标注意力和推理效率这两个工业场景最敏感的维度上提供了更好的trade-off。但算法只是链条中的一环真正决定项目成败的是数据质量、光学方案、部署鲁棒性和跨团队协作。希望这篇实战记录能给同行一些参考。如果你有类似的落地经验或踩过的坑欢迎评论区交流。参考资料Ultralytics YOLOv12 DocumentationWise-IoU v3: Focusing on High-Quality Anchor Boxes (arXiv:2301.10051)NVIDIA TensorRT Developer GuideLabel Studio Official Docs声明文中涉及的产线数据已做脱敏处理代码片段为示意性伪代码实际使用请结合官方文档调整。