You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用U-Net分割GAPs数据集时损失下降但精度异常问题求助

GAPs数据集U-Net分割训练准确率异常问题排查方案

问题背景

  • 训练目标:搭建类U-Net模型,完成德国沥青路面病害数据集(GAPs)的语义分割任务
  • 数据集掩码规则:掩码采用单通道灰度图存储,灰度值与类别对应关系如下:
    • 0:VOID(空白区域)
    • 1:intact road(完好路面)
    • 2:applied patch(填补补丁)
    • 3:pothole(坑槽)
    • 4:inlaid patch(嵌补补丁)
    • 5:open joint(开放接缝)
    • 6:crack(裂缝)
    • 7:street inventory(道路附属设施)
  • 异常表现:训练流程可正常启动,训练过程损失值持续下降,但像素准确率始终无法提升至0.05以上,多轮排查未定位根因。

高概率根因与对应调整方案

1. 优先排查掩码预处理逻辑(90%概率为该问题)

参考的Oxford Pets示例代码中,输入图像默认会做除以255的归一化操作,将像素值缩放到0~1区间,适配时很容易误将掩码也传入相同的归一化流程:

  • 问题表现:原本取值为07的整数类别标签,经过除以255缩放后变成00.027区间的浮点数,传入SparseCategoricalCrossentropy损失时,会被默认转换为整数0,相当于所有像素的标签都被错标为VOID类。如果VOID类在整张图中占比不足5%,就会出现损失持续下降(模型学着全预测0类,损失降到对应值后进入平台期)但准确率卡在0.05以下的现象,和描述的症状完全匹配。
  • 排查&修复方法:
    • 取一个训练批次的掩码张量,打印其值范围和数据类型,正常状态下掩码应为int64/int32类型,值严格落在07的整数区间,不能是浮点数,也不能出现01范围的归一化值。
    • 掩码缩放时必须使用最近邻插值(interpolation="nearest"),不能用双线性、双三次插值,避免插值生成非整数的无效标签值。
    • 删除Oxford Pets示例代码中遗留的「过滤标签值为255的边界像素」逻辑,GAPs数据集不存在该类标签,残留逻辑会直接打乱类别映射。
    • 修复后随机抽取3~5组图像-掩码对做可视化,将掩码类别映射为彩色遮罩叠加在原图上,肉眼确认类别对应关系正确,没有出现掩码全黑、类别错位的问题。

2. 验证数据流正确性

修复掩码逻辑后,先取10~20张样本组成极小数据集做过拟合测试:

  • 如果模型在这个小数据集上训练20~30轮后,像素准确率无法达到90%以上,说明数据流或模型结构仍有错误,不需要启动全量数据训练,逐行核对数据加载、增强、前向传播的张量维度即可。
  • 小数据集过拟合测试通过后,再启动全量数据训练。

3. 训练策略适配

GAPs数据集存在极严重的类别不平衡问题,完好路面类占比通常超过80%,裂缝、坑槽、开放接缝类占比总和不足5%,需要对应调整训练配置:

  • 损失函数改用带类别权重的SparseCategoricalCrossentropy,给裂缝、坑槽、开放接缝等小目标类别设置5~10倍的权重,避免模型倾向于全预测占比最高的完好路面类。
  • 评估指标不要只看整体像素准确率,优先使用平均交并比(mIoU)、每类像素准确率作为核心评估指标,避免被大类的高准确率掩盖小类的学习效果。
  • 数据增强不要用过强的色彩变换,优先用随机裁剪、水平/垂直翻转、小角度旋转这类几何变换,避免破坏病害的纹理特征。

内容的提问来源于stack exchange,提问作者Mohamed Hedeya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:01:10