图像语义分割 — 利用Deeplab v3+训练自己的数据 loss震荡解决办法

本文介绍了使用DeeplabV3+在自定义数据集上训练时遇到的loss震荡问题及解决方案。通过更改图片大小、调整数据集处理、修改训练参数,特别是crop_size,最终使测试集MIOU从0.55提升至超过0.8。此外,还探讨了预训练权重、损失权重以及batch_size和learning_rate的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

    在利用DeeplabV3+ 训练自己数据集时,loss一直在0.4附近震荡,测试集MIOU值在0.55附近(结果较差),折腾许久,终于有所提高,最近计算结果:测试集 MIOU > 0.8,且过拟合现象不明显。

参考链接:

1. https://blog.csdn.net/u011974639/article/details/80948990;

2. https://blog.csdn.net/qq_32799915/article/details/80070711

3. https://github.com/tensorflow/models/issues/3730

数据集描述:

    数据共 2 类,其中:Images [256, 256, 3], jpg格式;Labels [256, 256, 1],  png格式。

具体修改步骤:

1. 更改图片大小

    编写脚本,将图片大小进行扩充,修改后为:Images [512, 512, 3], Labels [512, 512, 1]。至于为什么要更改图片大小,后面我会进行说明。

2. 运行datasets下build_voc2012_data.py

### PSPNet 模型中的 mIoU 评估指标 在语义分割领域,评价模型性能的一个重要标准是平均交并比(Mean Intersection over Union, mIoU)。对于PSPNet而言,这一度量方法同样适用。mIoU计算方式为各类别预测结果与真实标签之间交集区域除以并集区域之和再取均值[^1]。 具体到PSPNet的设计理念上,该网络通过金字塔池化模块(Pyramid Scene Parsing module)有效地捕捉到了不同尺度下的空间信息,在多个公开数据集上的实验表明这种设计显著提升了最终的mIoU得分[^3]。此改进使得PSPNet能够在处理复杂场景时获得更精确的对象边界定位能力以及更好的整体分类效果。 尽管EncNet引入了上下文编码模块来增强对全局背景的理解,并可能进一步提高某些特定任务下的表现[^2];然而就原始提出的PSPNet架构本身来说,其主要贡献在于利用多层次感受野聚合机制改善了传统CNN结构中存在的局部偏差问题,从而实现了更高的mIoU数值。 ```python def calculate_miou(pred_mask, true_mask, num_classes): ious = [] pred_mask = np.asarray(pred_mask).astype(np.int32).copy() true_mask = np.asarray(true_mask).astype(np.int32).copy() for cls in range(1, num_classes): # 跳过背景类0 pred_inds = pred_mask == cls target_inds = true_mask == cls intersection = (pred_inds & target_inds).sum() union = (pred_inds | target_inds).sum() if union > 0: ious.append(float(intersection) / float(union)) miou = sum(ious)/len(ious) if len(ious)>0 else 0 return miou ```
评论 132
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值