训练调优:增强、迁移与评估

核心06-实践工程预计 30 分钟训练数据增强迁移学习过拟合

前置知识点

kp-025 数据集与标注工作流 kp-016 图像分类与 ImageNet 里程碑

一句话定义

视觉训练调优围绕三条主线:用几何/光度数据增强扩充有效样本、用迁移学习在预训练权重上微调、用严谨的验证协议诊断过拟合与选择模型,任何一条走偏都会让指标虚高或训练发散。

为什么重要

同一份代码、同一批数据,调优得当与不当的最终 mAP 可以相差十个百分点以上;更重要的是「指标可信」比「指标高」重要——在测试集上调参、增强破坏标签对齐这类错误产出的模型,上线即翻车。

直观类比

数据增强像给运动员变换训练场地(不同光照的球场、不同角度的风),逼出泛化能力;迁移学习像聘用一位有十年经验的老师傅再教三个月,而不是从学徒带起;验证协议像考试前绝不给学生看真题——看过真题的模拟分毫无意义。

前置知识

kp-025(数据集与标注);kp-016(分类训练框架)。

核心概念

原理与机制

增强的有效性来自「标签不变的变换扩大数据流形」:几何变换改变外观而保留类别与位置(标签随之变换),光度变换模拟传感器差异;Mosaic 把四图拼一图,同时等效增大 batch 内目标密度与尺度多样性,是小目标涨点的头号功臣。迁移学习的机理是卷积浅层特征跨域通用:小数据集冻结骨干只训头部,中大数据集低学习率全量微调;学习率过大会把预训练权重「冲掉」,等效从零训练。诊断闭环必须建立在「val 只用于决策、test 只用于终评」的纪律上——任何依据 test 的调整(选 epoch、选阈值、选模型)都是泄漏。

公式与模型

余弦退火学习率: η_t = η_min + 0.5(η_0 − η_min)(1 + cos(πt / T)) 标签同步变换: box′ = T(box) (T 为与图像同一几何变换) 早停准则: 保留 argmax_t mAP(val, epoch_t)

图示

warmup:先升后降 实线:验证损失回升 = 过拟合信号 虚线:训练损失持续下降 轮次 → 纵轴:损失

实例与案例

小数据分类(每类 200 张):ImageNet 权重冻结骨干 + 头部 10 epoch,再解冻以 1e-5 微调,比从零训练高 15 个点以上。检测实战配方:YOLO 系默认开启 Mosaic + HSV 抖动 + 水平翻转,最后若干 epoch 关闭 Mosaic(关闭增强精调)还能再涨点。失败案例:增强管线里做了「随机水平翻转」但数据是车牌/文字,标签没镜像也没翻转字符——训练损失正常、线上指标崩塌,根因是增强破坏了标签语义。

tfm = A.Compose([
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(0.2, 0.2, p=0.5),
    A.HueSaturationValue(10, 15, 10, p=0.3),
], bbox_params=A.BboxParams(format='pascal_voc', label_fields=['cls']))   # 框随图同步变换
sched = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=epochs, eta_min=1e-6)

常见误区

与其他知识点的关系

输入来自 kp-025 的数据工程;产物交给 kp-027 部署;增强配方与 kp-018 的 Mosaic、kp-019 的 Dice 损失等任务技巧衔接;「泄漏式调参」是 kp-031 之外工程侧最常见的可信度问题。

自测题

  1. 几何增强为什么必须同步变换标注?

答案要点:框/掩码/关键点定义在像素坐标系上,图像几何变了而标注不变,监督信号即错误,模型学出系统性错位。

  1. 迁移学习中「先冻结后解冻」各阶段的意义是什么?

答案要点:先冻结只训头部,用稳定特征快速对齐新任务;再低学习率解冻全量微调,让骨干适配域差异。

  1. 如何判断模型过拟合?两个可操作信号?

答案要点:验证损失开始回升且训练损失继续下降;train 与 val 指标差距持续扩大。对策是早停、增强、正则或补数据。

延伸阅读

相关知识点

kp-027 部署:量化剪枝与边缘推理kp-025 数据集与标注工作流