3. 模型训练基础:数据集准备、数据增强与超参数调优

做工业缺陷检测,模型训练是核心环节。但很多人一上来就调网络结构,结果数据没整明白,训练半天全是废的。

我个人习惯,花在数据准备上的时间,至少占整个项目周期的40%。你想想看,模型再牛,喂进去的是垃圾,吐出来的能是什么?

3.1 数据集准备:MVTec AD 与真实产线数据

先说公开数据集。MVTec AD 是工业异常检测的标杆,15个类目,包含纹理、物体、药品等。我建议新手先用它跑通流程。

MVTec AD 核心特点:
  • 仅含正常样本用于训练(无监督)
  • 测试集包含正常 + 各种缺陷(划痕、凹坑、污染等)
  • 图像分辨率从512×512到1024×1024不等

但说实话,真实产线数据才是大头。我在项目中遇到过,客户给的良品样本里混了5%的次品,模型直接学歪了。所以数据清洗是第一关。

数据来源 优点 缺点 我的建议
MVTec AD 标注精准,场景标准 样本量小,场景有限 用于算法选型验证
产线真实数据 贴合实际,缺陷真实 良品/次品比例悬殊 必须做数据清洗与平衡
合成数据 可批量生成罕见缺陷 与真实分布有偏差 作为补充,不能替代真实数据
避坑指南: 我曾经接手一个项目,客户说数据已经标好了。结果一检查,标注框偏移了十几个像素,缺陷区域标得乱七八糟。记住:永远不要完全相信别人给的数据标注,自己抽检20%是底线。

3.2 数据增强策略:不是越多越好

数据增强是解决小样本问题的利器。但很多人上来就一顿乱加,旋转、裁剪、颜色抖动全上,结果模型反而变差了。

为什么会这样?因为工业场景有它的特殊性。比如PCB板检测,你旋转90度没问题,但旋转45度呢?电路走线方向变了,缺陷特征也跟着变,模型就懵了。

我常用的增强策略分三类:

  • 几何变换:水平翻转、小角度旋转(±15°)、随机裁剪。注意保持缺陷形态不变。
  • 颜色变换:亮度调整、对比度拉伸、高斯噪声。模拟不同光照条件。
  • 高级增强:CutOut、MixUp、CutMix。适合缺陷样本极少的情况。
我的经验: 对于纹理类缺陷(如布料、木材),优先用颜色变换和弹性变形。对于结构类缺陷(如螺丝、齿轮),优先用几何变换和CutOut。别搞反了。

下面是我常用的增强配置,你可以直接拿来用:

import albumentations as A

train_transform = A.Compose([
    A.HorizontalFlip(p=0.5),
    A.Rotate(limit=15, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.3),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.2),
    A.CoarseDropout(max_holes=8, max_height=32, max_width=32, p=0.3),
    A.Resize(256, 256),
])

3.3 训练超参数调优:从粗调到细调

超参数调优是个体力活,但有章可循。我一般分三步走:

  1. 粗调阶段:固定学习率1e-3,batch size 32,跑50个epoch看收敛趋势。
  2. 细调阶段:根据loss曲线调整学习率,用余弦退火或StepLR。
  3. 微调阶段:调整权重衰减、dropout比例,防止过拟合。

这里有个关键点:学习率是最敏感的超参数。我见过太多人把学习率设成1e-2,结果loss直接炸了。工业场景下,我建议从1e-4开始试。

超参数 推荐范围 调优策略
学习率 1e-4 ~ 1e-3 先用余弦退火,再微调初始值
Batch Size 16 ~ 64 根据显存大小,尽量选大一点
权重衰减 1e-5 ~ 1e-4 数据量小时用大值
Epoch 50 ~ 200 早停法,patience设10
注意: 不要盲目追求大batch size。我试过把batch size从32提到128,结果模型收敛变慢,泛化能力反而下降了。工业场景下,稳定比速度重要。

最后,我习惯用WandB或TensorBoard记录每次实验的指标。调参不是玄学,是科学。你记录得越详细,下次调参就越有方向。

工业缺陷检测模型训练流程 数据准备 MVTec AD + 产线数据 数据增强 几何/颜色/高级增强 超参数调优 学习率/Batch/权重衰减 模型训练 前向/反向/优化 模型评估 准确率/召回率/F1 调优反馈 核心思路:数据决定上限,增强提升泛化,调优逼近最优

嗯,这一章的内容就这些。数据准备好了,增强策略也定了,超参数也调了,下一步就是真正跑训练了。记住:别急着上大模型,先把小模型跑通,再慢慢迭代。