鞋类制造行业对产品质量的把控一直是个关键环节。传统的人工质检方式存在效率低、成本高、主观性强等问题。以运动鞋生产为例,一条标准流水线每天要生产上万双鞋,质检员需要在强光下连续工作8小时以上,用肉眼检查每双鞋的鞋面是否存在划痕、污渍、车线歪斜等十几种常见缺陷。这种工作模式不仅容易导致视觉疲劳造成漏检,还会因为不同质检员的判断标准差异产生质量波动。
基于深度学习的鞋面缺陷识别系统正是为了解决这些痛点而生。我在去年参与了一家大型代工厂的智能化改造项目,亲眼见证了这套系统如何将质检准确率从人工的92%提升到98.5%,同时将单件检测时间从3秒缩短到0.5秒。这个毕设选题的价值在于:
真实产线数据获取往往是最困难的环节。建议采用"仿真+实拍"的混合方案:
| 缺陷类型 | 模拟参数范围 | 出现概率 |
|---|---|---|
| 划痕 | 长度2-15mm,深度0.1-0.3mm | 8% |
| 胶渍 | 面积50-300mm²,透明度30-70% | 12% |
| 车线歪斜 | 偏移角度5-25度 | 6% |
标注技巧:使用LabelImg时,对微小缺陷(<3mm)建议放大200%后再标注,避免标注误差大于缺陷本身的情况。
基础CNN模型选择ResNet34作为backbone,针对鞋面缺陷特点做了三点改进:
python复制class DefectCNN(nn.Module):
def __init__(self):
super().__init__()
self.backbone = resnet34(pretrained=True)
self.fpn = FPN([512,256,128], 256)
self.cbam = CBAM(256)
self.classifier = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.Flatten(),
nn.Linear(256, 12),
nn.Sigmoid()) # 多标签分类
def forward(self, x):
features = self.backbone(x)
pyramid = self.fpn(features)
attended = self.cbam(pyramid)
return self.classifier(attended)
模型部署到产线时面临三大挑战:
我们的解决方案:
实测效果(GTX1660环境):
| 方案 | 推理耗时 | 准确率 |
|---|---|---|
| 原始模型 | 1.2s | 98.5% |
| 量化后 | 0.4s | 97.8% |
| 量化+ROI | 0.3s | 97.5% |
针对工业质检的特殊性,需要设计domain-specific的数据增强:
python复制class IndustrialAugment:
def add_scratch(self, img):
noise = generate_perlin_noise(img.shape[:2])
mask = (noise > 0.7).astype(np.uint8)
scratch = cv2.line(np.zeros_like(img), (x1,y1), (x2,y2), color, 2)
return cv2.addWeighted(img, 1, scratch, 0.8, 0)
多标签分类需要特别设计损失函数,我们采用:
python复制pos_weight = torch.tensor([2.0, 1.5, ..., 3.0]) # 根据样本比例设置
criterion = nn.BCEWithLogitsLoss(pos_weight=pos_weight)
为获得工厂信任,需要提供可解释的检测结果:
python复制def generate_cam(model, img):
model.eval()
img.requires_grad = True
pred = model(img)
pred[:, defect_idx].backward()
gradients = img.grad.detach()
# 计算加权特征图...
return cam
现象:训练准确率98%但测试集只有82%
排查步骤:
最终解决方案:
当缺陷像素占比<0.1%时检出率骤降,改进措施:
不同工厂光照差异导致模型失效,我们开发了:
python复制def auto_white_balance(img):
avg = img.mean(axis=(0,1))
scale = 128 / (avg + 1e-6)
return np.clip(img * scale, 0, 255).astype(np.uint8)
在实际部署后,我们发现几个有价值的延伸方向:
这个项目最让我意外的发现是:简单调整损失函数的样本权重,就能将金属扣缺失这类稀少缺陷的召回率从65%提升到89%。这提醒我们在工业场景中,不能盲目追求整体准确率,更要关注关键质量指标的提升。建议学弟学妹们在做毕设时,一定要去实地观察真实的生产环境,往往能发现论文里找不到的创新点。