跳到主要内容

训练参数

训练代数

训练代数默认12,不建议修改。

批量大小

分类默认批量大小32,检测类模型批量大小默认2。

当图像尺寸比较大时(比如2048),可以适当降低批量大小,避免爆显存导致训练时间过长。

爆显存示意图:

学习率

实例分割模型默认学习率为 0.001;通常不需要调整,但是当 loss 曲线比较震荡时,可以考虑降低学习率,通常减低为 0.0005 或 0.0001。

训练 loss 不稳定

下图可以看到 loss 出现了“插针”的现象,突然变很高,又回归正常。

震荡的 Loss 曲线⤵️:

alt text

平稳的 Loss 曲线: alt text

训练 Loss NaN

AI 模型在训练过程中,可能存在损失函数(Loss)的计算结果变成非法数值(如NaN、inf等),导致训练崩溃的现象。

造成 Loss NaN 可能的原因:

  • ○训练数据中存在过多重复数据,重复数据可能导致模型在训练过程中对某些特征过度敏感,梯度在反向传播时不断累积,最终数值溢出。
  • 标注中存在异常,如多边形越界,多边形交叉等。

✔️ 解决方法:

  • 检查是否存在非法多边形,如多边形越界,多边形交叉等;
  • 对数据集去重或重采样,删除重复数据,降低数据倍增参数;
  • 增加数据增强(Data Augmentation)提高多样性;
  • 调整权重衰减参数;默认值 0.0001,可调整为 0.01;

下图可以看到,训练 loss 走到第4代之后,就nan了,之后模型无法回归正常。

alt text

使用OK图训练

当我们做缺陷检测时,经常会遇见过检的情况,也就是将OK图检测为NG。这时就需要告诉模型,哪些是OK,让模型学习OK不应该检出结果。

过检现象

下图是一个气球检测模型,在浴缸内检测到假气球,也就是过检:

准备OK数据

当需要启动OK图训练时,我们要在数据集根目录内创建名为 OK 的文件夹,并且将过检图片放在这个文件夹内。

注意,不要将任何有目标物体的数据放在这个文件夹中,否则可能会造成漏检问题。

使用OK图训练

在启动训练时,勾选使用OK图训练:

降过检效果

启动降过检之后,模型不会检出气泡: