基于PPSeg框架的HRNet_W48_Contrast复现
发布时间:2025-07-23 编辑:游乐网
该项目复现相关论文,基于PaddleSeg实现全监督语义分割训练范式,借跨图像像素对比优化特征空间。在Cityscapes验证集上,HRNet_W48模型mIou达82.47%,超复现要求,使用Tesla V100及PaddlePaddle 2.1.2。
论文简介
论文作者提出一种新的、全监督语义分割训练范式,可应用于语义分割的训练中,能够显著提高语义分割的效果。论文在cityscapes验证集上进行实验,HRNet_W48的mIou为81.0%,本次复现赛要求复现的精度为82.2%,本项目复现结果为82.47%。
论文核心思想
作者提出一种新的、全监督语义分割训练范式,利用跨图像的像素-像素之间的关系,来学习一个更好的特征空间。如上图所示,(a)和(b)是训练图片及其对应的标签,传统的语义分割训练时忽略了不同图片之间的上下文信息,而本篇论文提出的跨图像像素对比学习,利用不同图片之间的像素关系,使得特征空间中同种类别的像素相似性变高、不同类别的像素相似度变低(如图d),从而得到一个更好的结构化的特征空间(如图e)。
网络结构
上图为网络结构,fFCN为backbone模块,fSEG为语义分割head模块,从fSEG平行引出fPROJ模块,fPROJ用来进行对比训练,fSEG训练方法与传统方法相同。
损失函数
损失函数如上图,由2部分构成,交叉熵损失和对比损失组成,其中对比损失为本篇论文的核心。
交叉熵损失如上图所示,此处不做介绍。
上图为对比损失,亦是本篇论文的核心。其中i是真实标签为c的特征向量,i+为正样本像素特征,i-为负样本像素特征,由上式可以看出,通过像素-像素对比学习,在特征空间上同一类别的像素拉近,不同类别的像素原理,从而使得不同类别的像素特征空间能够更好的可区分。
对比损失的anchor采样方法
预测错误的像素被认为是hard anchor,预测正确的像素被认为是easy anchor,在对比度损失计算过程中,一半的anchor是hard anchor,另一半是easy anchor。
实验
上左图为像素交叉熵损失的特征可视图,上右图是对比损失的特征可视化图,可以看出,使用了像素对比损失的语义分割模型特征空间更具结构化。
项目介绍
本项目为第四届百度论文复现赛Exploring Cross-Image Pixel Contrast for Semantic Segmentation复现结果,本项目基于PaddleSeg实现,并复现了论文实验结果,非常感谢百度提供的比赛平台以及GPU资源。
复现环境
硬件: Tesla V100 * 4
框架: paddlepaddle==2.1.2
参数调试
1、project dimension:此参数不影响最后的模型大小,可以适度调整来获得好的效果;
2、迭代次数:40k次迭代时mIou为81.8%,不满足验收标准,60k次迭代mIou为82.47%,可以适当提高迭代次数;
3、训练时长:Tesla V100 * 4, batch_size为2,60k次迭代,训练总时长为13.5h。
复现经验
1、使用paddleseg语义分割框架可以有效的减少复现的代码量,提高复现速度;
2、论文提供的源码使用的框架是pytorch,需要注意不同框架模型转换的细节(尤其是部分函数的不同)。
项目结果
项目实现思路
本项目基于PaddleSeg开发,由于PaddleSeg已经包含了数据处理,验证等多项功能,本篇论文的复现仅需要实现HRNet_W48 Head和Contrast loss部分。
项目运行实践
1、按照以下步骤可运行本项目。
2、由于HRNet_W48参数较大,无法上传至Aistudio,可从github的百度云连接下载训练好的权重参数。
# step 1: git clone, 本项目已clone过,跳过此步骤!git clone https://hub.fastgit.org/justld/contrast_seg_paddle.git登录后复制 In [ ]
# step 2: 解压数据集%cd /home/aistudio/data/data64550!tar -xf cityscapes.tar%cd /home/aistudio登录后复制 In [ ]
# step 3: 训练# 注意:把configs目录下的HRNet_W48_cityscapes_1024x512_60k中数据集目录更换为自己的数据集目录,如:dataset_root: /home/aistudio/data/data64550/cityscapes%cd /home/aistudio/contrast_seg_paddle!python train.py --config configs/HRNet_W48_cityscapes_1024x512_60k.yml --do_eval --use_vdl --log_iter 100 --save_interval 1000 --save_dir output登录后复制 代码解释In [3]
# step 4: 验证# 注意:由于训练好的参数文件太大,请移步github(https://hub.fastgit.org/justld/contrast_seg_paddle.git)从百度云下载权重文件,并把model_path更换为自己的参数路径%cd /home/aistudio/contrast_seg_paddle!python val.py --config configs/HRNet_W48_cityscapes_1024x512_60k.yml --model_path output/best_model/model.pdparams登录后复制
相关阅读
MORE
+- PaddleRS:geojson-建筑提取 07-23 Gemini如何接入智能家居 Gemini智能设备控制方案 07-23
- 豆包AI编程操作说明 豆包AI自动编程技巧 07-23 AdvSemiSeg: 利用生成对抗实现半监督语义分割 07-23
- pdf转word文档怎么转?五大高效方法全攻略! 07-23 基于PPSeg框架的HRNet_W48_Contrast复现 07-23
- 【第五期论文复现赛-语义分割】BiSeNet 07-23 自学AI工具有哪些好用平台?附带免费教程推荐 07-23
- Monodepth2-基于自监督学习的单目深度估计模型 07-22 怎样用豆包AI进行推荐系统开发?协同过滤实战 07-22
- 2021 CCF BDCI基于飞桨实现花样滑冰选手骨骼点动作识别-B榜第3名方案 07-22 FRN——小样本学习SOTA模型 07-22
- deepseek界面操作说明 deepseek怎么调出专业设置 07-22 AI Overviews怎么下载不了 AI Overviews安装失败的常见解决方案 07-22
- Gemini AI怎么用来写简历 Gemini AI自动生成求职内容的方法 07-22 豆包 AI能不能导入本地文件 豆包 AI读取外部文档的操作步骤 07-22
- DeepSeek AI能不能多窗口操作 DeepSeek AI同时处理多个任务的方法 07-22 DeepSeek AI怎么下载离线版 DeepSeek AI本地使用方式是否可行 07-22