本节摘要:训练策略包括划分已在第 2.4 节锁定之后的学习率、批次、冻结骨干、早停与类别权重。原文把不收敛、过拟合、数据不平衡列为常见问题。排错顺序永远是:先证明环与标签仍对,再调超参。曲线是证据,不是装饰。
阅读完本节,你应当能够:
阶段零:第 4.2 节单图,损失应能接近零。阶段一:十几张图反复训,应能背下来,验证若也是这十几张会虚高,所以这阶段只证明容量足够。阶段二:全训练集,验证走独立单元。跳过前两阶段直接全量,出现「完全不学」时你不知道是环写反还是学习率错还是标签反。
学习率:从头小 U-Net 用 Adam 试 3e-4 量级;微调预训练骨干小一个数量级,头可以更大。批次:保分辨率优先,梯度累积补有效批次。调度:热身避免开头打飞预训练,余弦或阶梯在平台期降学习率。早停耐心设为若干次验证无提升,存最佳而不是最后。
原文超参优化提到网格或搜索。分割验证贵,先手动改最敏感的学习率与损失权重,再考虑自动搜索。同时搜增强和结构,预算会烧光。
# 概念:验证更好才存盘 if val_dice > best: best = val_dice save(model, config) patience = 0 else: patience += 1 if patience >= max_wait: break
损失变 NaN:学习率过大、除零、标签越界、混合精度溢出。先关混合精度、降学习率、打印损失前检查 unique 标签。损失不降:回到单图;单图降、全量不降,看是否类别权重为零或加载器打乱了配对。训练很好验证很差:过拟合或泄漏。先确认划分没有按帧随机;再减增强以外的容量或加权重衰减;检查验证预处理是否忘了归一化。
前景全灭:交叉熵被背景支配,加 Dice 与权重;或学习率太大头直接塌。少数类永远零:验证批次太小没抽到,或模型从未见过该类尺度——加裁切采样。边界抖:增强过猛或未开 eval 模式的批归一。
| 症状 | 先查 | 再调 |
|---|---|---|
| NaN | 标签与学习率 | 裁剪梯度、关混合精度 |
| 单图不降 | 形状配对、损失轴 | 先别加层 |
| 前景全灭 | 权重与 Dice | 采样含前景的裁切 |
| 训练验证鸿沟 | 泄漏、预处理不一致 | 再正则 |
| 少数类零 | 是否真出现在验证 | 重采样、单独阈值 |
⚠️ 常见坑:用测试集调学习率。测试只有一次发言权,用在最终报告。
💡 关键直觉:大多数「模型不行」是数据配对或口径不行。超参是第三嫌疑人。
按像素频率的反比加权,或对少类图过采样。极端稀有缺陷宁可单独二类检测,不要和二十类语义挤在一个 Softmax 里被稀释。冻结:先训头几轮,再解冻骨干。一次全开大学习率,容易冲掉通用边缘滤波器。
原文案例分析应记录配置与曲线,而不是只记录最好那个数字。复现靠日志。把随机种子、有效批次、损失开关写进去。Windows 上多进程加载出问题就先把工人数调到 0,排除后再加。

调优停止的标志是验证曲线平台、抽检叠图可接受,而不是训练损失还能再抠一点。抠那一点往往在背噪声。下一节用冻结的权重算正式指标、做形态学后处理、导出。评估脚本不再改增强,只改是否后处理的消融。
显存只够批次 2 时,累积 8 步模拟 16。日志记有效批次,不要只记 2。对比两次实验若有效批次不同,学习率含义不同。冻结时间表示例:头单独训若干步(骨干学习率为 0),再全体解冻,骨干学习率仍低于头。一次全开大学习率冲预训练,像把第 3 章好不容易学到的边缘滤波器扔掉。
过拟合与泄漏要分开。泄漏是划分错误,验证会假好。真过拟合是验证先升后降。后者减容量、加衰减、早停。前者重划。把两者都叫过拟合,会用错药。原文「常见问题排查」把不收敛、过拟合、不平衡并列,动手时按本节症状表对号,不要同时拧五个旋钮。
NaN 的第一现场:打印那一步的标签 unique、logits 最大最小、损失各项。混合精度先关。除零来自 Dice 空前景,检查平滑项。标签越界来自忽略值没排除。这些比换优化器名字有效。
分割一次验证贵。先手动三个学习率看曲线形状,再在最佳附近细搜。同时搜损失权重与学习率,归因变难。自动搜索可以,但搜索空间先冻结增强与结构。
Windows 上工人数为 0 仍不稳定时,查是否在加载器里用了不可序列化对象。这与算法无关,却常被当成「框架不行」。环的值班手册包含工程环境,不只包含 Adam。
把最佳步的叠图若干张存档,和数字一起评审。只报数字不看图,边界系统性偏移会被平均 IoU 藏住。评审通过才进 6.3 的正式评估与导出。
单图过拟合、泄漏检查、前景是否灭、再学习率。跳步会用错药。有效批次记日志。冻结头再解冻骨干。NaN 现场打印 unique、logits 极值、分项损失,先关混合精度。过拟合与泄漏分开:验证假好是划分,真先升后降才是容量。测试集不搜参。最佳步叠图存档评审,平均 IoU 会藏系统性偏移。工人数 0 仍不稳时查不可序列化对象,别先骂框架。
归因顺序贴值班表。有效批次、冻结时间表、NaN 现场三项打印。泄漏与过拟合用药不同。测试不搜。叠图存档。不可序列化先查。最佳步而不是最后一步进发布。学习率只在增强与结构冻结后搜。同时拧五个旋钮的实验视为无效,日志打标作废,避免以后被当成「也曾试过」。
值班表打印归因顺序。日志头含有效批次与冻结阶段。NaN 自动转储 unique 与极值。划分脚本禁止帧级 shuffle。测试分割只读。叠图按最佳步打包。作废实验打标。学习率搜索前置条件:D 冻、M 冻、单图通过。同时拧多旋钮的作业在调度器拒绝。发布用最佳步检查点文件名含 val 指标。工人数大于 0 的开启条件写「单图已通过且序列化测过」。泄漏复查用患者或批次 id 交叉,发现交叉则整次实验作废重划,不靠正则「补救」泄漏。曲线平台后继续抠训练损失视为背噪声,早停必须执行。
反例档案:用正则补救泄漏,验证仍假好。交叉 id 检查作废重划。第二份:平台期后继续抠训练损失,测试变差。早停强制执行。多旋钮作业调度器拒绝。最佳步文件名含指标,避免有人发布最后一步。帧级 shuffle 在划分脚本直接报错。
口令卡:归因顺序、有效批次头、NaN 转储、禁帧 shuffle、测试只读、最佳步打包、作废打标、搜参前置 D 冻 M 冻单图过、调度拒多旋钮、文件名含 val。交叉 id 作废重划。平台期执行早停。序列化测过才加工人。
发布前:归因顺序执行过、有效批次头、划分无帧 shuffle、测试只读、最佳步文件名、交叉 id 干净、早停已触发或平台证明、多旋钮作业不存在。NaN 转储可演示。工人数大于 0 仅在序列化测过后。泄漏不作废而靠正则的实验打作废标。搜参时 D 与 M 必须已冻。
划分含帧级打散失败。测试集可写失败。最佳步文件名无验证指标失败。交叉 id 不干净整次作废。平台期后仍抠训练损失视为背噪声。多旋钮作业调度失败。搜参时 D 或 M 未冻失败。泄漏靠正则补救的实验打作废。工人数大于 0 无序列化证明失败。NaN 无转储失败。早停未执行失败。
现场抽问:划分还打散帧吗?测试可写吗?最佳步文件名含指标吗?交叉 id 干净吗?还在抠训练损失吗?有没有多旋钮作业?搜参时冻了吗?泄漏实验作废了吗?工人数凭据在吗?NaN 转储能演示吗?早停执行了吗?
失败演练寅:帧级打散,应拒。测试可写,应拒。最后一步当发布,应拒。交叉 id 靠正则,应拒。平台期后继续抠训练损失,应拒。多旋钮一次搜,应拒。D 未冻搜学习率,应拒。工人数无凭据,应拒。NaN 无转储,应拒。早停关掉,应拒。
十条拒绝进调度器。最后一步检查点不能标为 latest_release。交叉 id 测试进划分 CI。早停关闭视为非法配置。搜参作业检查 D 与 M 的冻结标志。泄漏实验自动打作废标签不可撤销。
调度器十条拒绝。latest_release 不得指向最后一步。划分 CI 跑交叉 id。非法配置包括关闭早停。搜参检查冻结标志。作废标签不可撤销,防止有人把泄漏实验再捡回来报。
latest_release 指针测试禁止指向未早停的最后一步。作废标签一旦打上,报表查询默认排除。划分 CI 红则训练入口关闭。关闭早停的配置 schema 直接非法。
指针测试、划分 CI、schema 非法、冻结标志、作废不可撤销,五条写进发布前自动闸。报表默认排除作废实验,防止泄漏数字混进周报。周报查询若未带排除条件,构建失败。关闭早停的配置在 schema 层就非法,不必等到训练中途再发现。中途发现早停被关,实验立即作废,不得靠手动补救继续报数。手动补救的曲线不算正式实验,周报不得引用。引用了作废或手动补救曲线的周报构建失败。
排错顺序:标签、尺寸、学习率、损失口径、再结构。曲线抖先降学习率或加平滑,不要先换骨干。手动补的验证点不得进周报;关早停的实验作废。学习率按边长和批次成比例试,不按论坛口诀。确认过拟合单图仍有效后,再对全量做一次学习率扫描。
下一节把分数图变成产品:指标口径、形态学、导出与监控。