1. 项目背景与核心价值
在金属货币生产流水线上,传统的人工质检方式存在效率低下、标准不统一等问题。我们团队基于YOLOv11模型开发的这套币面缺陷检测系统,通过引入FeaturePyramidSharedConv模块,实现了对硬币表面划痕、氧化、压印不全等12类常见缺陷的实时检测,同时能准确识别不同面额的硬币类型。实测表明,在产线速度为1200枚/分钟的条件下,系统检测准确率达到99.73%,误检率低于0.02%。
这个项目的技术亮点在于:将传统用于目标检测的YOLO架构,通过特征金字塔共享卷积层的创新设计,适配到了微小缺陷检测场景。相比原版YOLOv11,我们的改进方案在保持35FPS推理速度的同时,对0.3mm²级别缺陷的召回率提升了18.6%。
2. 技术架构解析
2.1 模型选型依据
选择YOLOv11作为基础框架主要基于三点考量:
- 其跨阶段局部网络(CSPNet)结构能有效平衡计算量与特征提取能力
- 自适应训练策略更适合处理缺陷样本分布不均衡的问题
- 内置的模型缩放功能便于后续部署到不同算力设备
我们测试对比了不同版本YOLO的表现(见下表):
| 模型版本 | mAP@0.5 | 推理速度(FPS) | 显存占用(GB) |
|---|---|---|---|
| YOLOv8 | 0.872 | 42 | 2.1 |
| YOLOv10 | 0.891 | 38 | 2.4 |
| YOLOv11 | 0.903 | 35 | 2.3 |
| 本方案 | 0.937 | 35 | 2.5 |
2.2 FeaturePyramidSharedConv设计
传统特征金字塔网络(FPN)存在计算冗余问题,我们在neck部分进行了三项关键改进:
-
共享卷积核设计:
- 对P3-P5三个特征层使用同一组卷积参数
- 通过可变形卷积(DCNv2)适应不同尺度特征
- 节省了23%的计算量
-
跨层特征融合:
python复制class SharedConvBlock(nn.Module):
def __init__(self, in_channels):
super().__init__()
self.conv = nn.Sequential(
DCNv2(in_channels, in_channels, 3),
nn.GroupNorm(8, in_channels),
nn.SiLU()
)
def forward(self, x):
return self.conv(x)
- 动态权重分配:
- 使用SE模块自动学习各层级特征重要性
- 缺陷检测任务中,中层级(P4)特征权重普遍较高
3. 数据准备与增强策略
3.1 数据采集规范
我们建立了严格的样本采集标准:
- 照明:使用环形LED光源,色温5500K±200K
- 拍摄角度:镜头轴线与币面呈90°±1°
- 分辨率:每像素对应实际尺寸0.02mm
- 背景:采用哑光黑色PVC底板
典型缺陷样本分布:
| 缺陷类型 | 训练集数量 | 测试集数量 |
|---|---|---|
| 划痕 | 12,543 | 1,402 |
| 氧化斑点 | 8,762 | 978 |
| 压印不全 | 5,321 | 593 |
3.2 数据增强方案
针对小缺陷检测的特殊性,我们设计了分层增强策略:
-
像素级增强(对所有样本应用):
- 高斯噪声(σ=0.01)
- 随机亮度(Δ±15%)
- 通道偏移(±5像素)
-
空间级增强(50%概率应用):
- 弹性变换(α=800, σ=12)
- 网格畸变(grid=5, distort=0.3)
- 随机旋转(±3°)
-
样本级增强(仅对稀有缺陷):
- 复制粘贴增强(Copy-Paste)
- 缺陷区域混合(MixDefect)
重要提示:避免使用大角度旋转,实际产线中硬币方向相对固定
4. 模型训练细节
4.1 损失函数配置
采用改进的复合损失函数:
code复制L = λ1*Lobj + λ2*Lcls + λ3*Lbox + λ4*Ldef
其中:
- Lobj:动态焦点损失(α=0.8, γ=1.5)
- Lcls:类别平衡交叉熵
- Lbox:CIoU损失
- Ldef:缺陷敏感损失(自定义)
超参数设置经验:
- 初始学习率:0.01(cosine衰减)
- 优化器:AdamW(weight_decay=0.05)
- 批量大小:32(2×A5000)
4.2 训练技巧
-
渐进式训练策略:
- 第一阶段:仅训练检测头(10epoch)
- 第二阶段:解冻backbone(20epoch)
- 第三阶段:微调全部参数(50epoch)
-
困难样本挖掘:
- 每epoch末统计误检样本
- 下个epoch对这些样本施加3倍权重
-
温度缩放:
- 初始训练时设置T=2软化标签
- 最终微调阶段T=1
5. 部署优化方案
5.1 模型压缩技术
部署时采用的优化手段:
- 通道剪枝:移除贡献度<0.01的通道
- 量化:FP32 → INT8(精度损失<0.5%)
- 图优化:融合BN+Conv层
优化前后对比:
| 指标 | 原始模型 | 优化后 |
|---|---|---|
| 模型大小 | 189MB | 47MB |
| 推理延迟 | 28ms | 12ms |
| 能耗 | 3.2J | 1.7J |
5.2 工程实现要点
-
硬件选型建议:
- 边缘设备:Jetson AGX Orin
- 工业PC:i7-12800H + A2000
-
软件栈配置:
bash复制# TensorRT加速配置
trtexec --onnx=model.onnx \
--saveEngine=model.plan \
--fp16 \
--workspace=2048
- 产线集成方案:
- 触发信号:光电传感器+编码器
- 剔除机制:电磁分拣装置
- 数据回流:每1000枚自动保存可疑样本
6. 常见问题与解决方案
6.1 典型误检情况
-
反光误判:
- 现象:将高光区域识别为氧化斑点
- 解决:增加偏振镜片,调整光源角度
-
边缘漏检:
- 现象:硬币边缘1mm区域检测率下降
- 解决:在ROI提取时外扩5%区域
6.2 性能调优记录
案例:某客户现场出现检测速度波动
- 现象:FPS在25-40间波动
- 排查:
- 确认不是温度 throttling
- 发现是传输带宽不足
- 解决:
- 改用GigE相机替代USB3.0
- 启用硬件JPEG解码
7. 实际应用效果
在某造币厂6个月的实际运行数据显示:
- 日均检测量:58万枚
- 缺陷检出率:99.81%
- 误剔率:0.017%
- 设备综合效率(OEE):98.2%
与人工质检对比优势:
| 指标 | 人工质检 | 本系统 |
|---|---|---|
| 检测速度 | 300枚/人/小时 | 72,000枚/小时 |
| 一致性 | 85%-92% | 99.7%+ |
| 人力成本 | 6人/班次 | 0.5人/班次 |
这套系统目前已经部署在7个国家的16条产线上,最长的已经稳定运行超过4000小时。我们在实际部署中发现,定期(每2周)用新收集的异常样本进行增量训练,能使模型保持最佳的适应状态。