SePiCo

SePiCo

基于语义引导像素对比的域自适应语义分割方法

SePiCo是一种创新的域适应语义分割框架,通过语义引导的像素对比学习促进跨域像素嵌入空间的类别判别和平衡。该方法在多个域适应任务中显著提升了性能,包括GTAV到Cityscapes、SYNTHIA到Cityscapes和Cityscapes到Dark Zurich。SePiCo的突出表现使其被选为ESI高被引论文,展现了其在计算机视觉领域的重要影响。

SePiCo语义分割域适应像素对比深度学习Github开源项目
<div align="center">

SePiCo:基于语义引导的像素对比学习的域适应语义分割方法 (TPAMI 2023)

谢彬辉李爽李明佳刘琦黄高王国仁

论文   项目  

</div>

2023年11月更新:SePiCo被选为 :trophy: <span style="color:red">ESI高被引论文</span>!!

2023年2月15日更新:发布Cityscapes → Dark Zurich的代码。

2023年1月14日更新:🥳 我们很高兴地宣布SePiCo已被TPAMI接收并将在即将出版的一期中发表。

2022年9月24日更新:所有检查点均已可用。

2022年9月4日更新:代码发布。

2022年4月20日更新:SePiCo的ArXiv版本已发布。

概述

在这项工作中,我们提出了语义引导的像素对比学习(SePiCo),这是一种新颖的单阶段适应框架,它突出了单个像素的语义概念,以促进跨域类别区分性和类别平衡的像素嵌入空间的学习,最终提升自训练方法的性能。

<img src="https://yellow-cdn.veclightyear.com/835a84d5/8b12dafb-7541-461f-a63d-bc14f65a3866.png" width=50% height=50%> <div align="right"> <b><a href="#概述">↥</a></b> </div>

安装

本代码使用Python 3.8.5PyTorch 1.7.1CUDA 11.0上实现。

要尝试这个项目,建议先设置一个虚拟环境:

# 创建并激活环境 conda create --name sepico -y python=3.8.5 conda activate sepico # 为新的Python环境安装正确的pip和依赖项 conda install -y ipython pip

然后,可以通过以下方式安装依赖项:

# 安装所需的包 pip install -r requirements.txt # 安装mmcv-full,此命令在本地编译mmcv,可能需要一些时间 pip install mmcv-full==1.3.7 # 需要先安装其他包

或者,可以使用官方预构建的包更快地安装mmcv-full,例如:

# 另一种安装mmcv-full的方法,更快 pip install mmcv-full==1.3.7 -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html

现在环境已经完全准备好了。

<div align="right"> <b><a href="#概述">↥</a></b> </div>

数据集准备

下载数据集

  • GTAV:这里下载所有压缩的图像及其压缩的标签,并将它们解压到自定义目录。
  • Cityscapes:这里下载leftImg8bit_trainvaltest.zip和gtFine_trainvaltest.zip,并将它们解压到自定义目录。
  • Dark Zurich:这里下载Dark_Zurich_train_anon.zip、Dark_Zurich_val_anon.zip和Dark_Zurich_test_anon_withoutGt.zip,并将它们解压到自定义目录。

设置数据集

创建所需数据集的符号链接:

ln -s /path/to/gta5/dataset data/gta ln -s /path/to/cityscapes/dataset data/cityscapes ln -s /path/to/dark_zurich/dataset data/dark_zurich

进行预处理以将标签ID转换为训练ID并收集数据集统计信息:

python tools/convert_datasets/gta.py data/gta --nproc 8 python tools/convert_datasets/cityscapes.py data/cityscapes --nproc 8

最终,数据结构应该如下所示:

SePiCo ├── ... ├── data │ ├── cityscapes │ │ ├── gtFine │ │ ├── leftImg8bit │ ├── dark_zurich │ │ ├── corresp │ │ ├── gt │ │ ├── rgb_anon │ ├── gta │ │ ├── images │ │ ├── labels ├── ...
<div align="right"> <b><a href="#overview">↥</a></b> </div>

模型库

我们通过Google Drive百度网盘(访问码:pico)提供了两个域适应语义分割任务的预训练模型。

GTAV → Cityscapes (基于DeepLab-v2)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_gta2city_dlv2.pth61.0Google / 百度 (提取码: pico)
BankCLsepico_bankcl_gta2city_dlv2.pth59.8Google / 百度 (提取码: pico)
ProtoCLsepico_protocl_gta2city_dlv2.pth58.8Google / 百度 (提取码: pico)

GTAV → Cityscapes (基于DAFormer)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_gta2city_daformer.pth70.3Google / 百度 (提取码: pico)
BankCLsepico_bankcl_gta2city_daformer.pth68.7Google / 百度 (提取码: pico)
ProtoCLsepico_protocl_gta2city_daformer.pth68.5Google / 百度 (提取码: pico)

SYNTHIA → Cityscapes (基于DeepLab-v2)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_syn2city_dlv2.pth58.1Google / 百度 (提取码: pico)
BankCLsepico_bankcl_syn2city_dlv2.pth57.4Google / 百度 (提取码: pico)
ProtoCLsepico_protocl_syn2city_dlv2.pth56.8Google / 百度 (提取码: pico)

SYNTHIA → Cityscapes (基于DAFormer)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_syn2city_daformer.pth64.3谷歌 / 百度 (提取码: pico)
BankCLsepico_bankcl_syn2city_daformer.pth63.3谷歌 / 百度 (提取码: pico)
ProtoCLsepico_protocl_syn2city_daformer.pth62.9谷歌 / 百度 (提取码: pico)

Cityscapes → Dark Zurich (基于DeepLab-v2)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_city2dark_dlv2.pth45.4谷歌 / 百度 (提取码: pico)
BankCLsepico_bankcl_city2dark_dlv2.pth44.1谷歌 / 百度 (提取码: pico)
ProtoCLsepico_protocl_city2dark_dlv2.pth42.6谷歌 / 百度 (提取码: pico)

Cityscapes → Dark Zurich (基于DAFormer)

变体模型名称mIoU检查点下载
DistCLsepico_distcl_city2dark_daformer.pth54.2谷歌 / 百度 (提取码: pico)
BankCLsepico_distcl_city2dark_daformer.pth53.3谷歌 / 百度 (提取码: pico)
ProtoCLsepico_distcl_city2dark_daformer.pth52.7谷歌 / 百度 (提取码: pico)

我们训练的模型(sepico_distcl_city2dark_daformer.pth)也在Nighttime Driving和BDD100k-night测试集上进行了泛化性能测试。

方法模型名称Dark Zurich-testNighttime DrivingBDD100k-night检查点下载
SePiCosepico_distcl_city2dark_daformer.pth54.256.940.6谷歌 / 百度 (提取码: pico)
<div align="right"> <b><a href="#overview">↥</a></b> </div>

SePiCo评估

在Cityscapes上评估

要在Cityscapes上评估预训练模型,请按如下方式运行:

python -m tools.test /path/to/config /path/to/checkpoint --eval mIoU
<details> <summary>示例</summary>

例如,如果您将sepico_distcl_gta2city_dlv2.pth及其配置JSON文件sepico_distcl_gta2city_dlv2.json下载到文件夹./checkpoints/sepico_distcl_gta2city_dlv2/中,那么评估脚本应该如下所示:

python -m tools.test ./checkpoints/sepico_distcl_gta2city_dlv2/sepico_distcl_gta2city_dlv2.json ./checkpoints/sepico_distcl_gta2city_dlv2/sepico_distcl_gta2city_dlv2.pth --eval mIoU
</details>

在Dark Zurich上评估

要在Dark Zurich上进行评估,请按如下方式获取标签预测结果,然后将其提交到官方的测试服务器

在本地获取测试集的标签预测:

python -m tools.test /path/to/config /path/to/checkpoint --format-only --eval-options imgfile_prefix=/path/to/labelTrainIds
<details> <summary>示例</summary> 例如,如果你将 `sepico_distcl_city2dark_daformer.pth` 及其配置 JSON 文件 `sepico_distcl_city2dark_daformer.json` 下载到文件夹 `./checkpoints/sepico_distcl_city2dark_daformer/` 中,那么评估脚本应该如下所示:
python -m tools.test ./checkpoints/sepico_distcl_city2dark_daformer/sepico_distcl_city2dark_daformer.json ./checkpoints/sepico_distcl_city2dark_daformer/sepico_distcl_city2dark_daformer.pth --format-only --eval-options imgfile_prefix=dark_test/distcl_daformer/labelTrainIds

请注意,测试服务器只接受具有以下目录结构的提交:

submit.zip ├── confidence ├── labelTrainIds ├── labelTrainIds_invalid

因此,我们需要手动构建 confidencelabelTrainIds_invalid 目录(因为它们对 SePiCo 评估并非必需)。

以下是我们的参考做法(请参考上面的示例中的目录名):

cd dark_test/distcl_daformer cp -r labelTrainIds labelTrainIds_invalid cp -r labelTrainIds confidence zip -q -r sepico_distcl_city2dark_daformer.zip labelTrainIds labelTrainIds_invalid confidence # 现在将 sepico_distcl_city2dark_daformer.zip 提交到测试服务器以获取结果。

SePiCo 训练

首先,从这里下载 SegFormer 官方在 ImageNet-1k 上预训练的 MiT-B5 权重(即 mit_b5.pth),并将其放入新文件夹 ./pretrained 中。

训练入口在 run_experiments.py。要查看特定任务的设置,请查看 experiments.py 以获取更多详细信息。通常,训练脚本如下:

python run_experiments.py --exp <exp_id>

任务 1~6 在 GTAV → Cityscapes 上运行,<exp_id> 和任务的映射关系如下:

<exp_id>变体骨干网络特征
1DistCLResNet-101layer-4
2BankCLResNet-101layer-4
3ProtoCLResNet-101layer-4
4DistCLMiT-B5all-fusion
5BankCLMiT-B5all-fusion
6ProtoCLMiT-B5all-fusion

任务 7~8 在 Cityscapes → Dark Zurich 上运行,<exp_id> 和任务的映射关系如下:

<exp_id>变体骨干网络特征
7DistCLResNet-101layer-4
8DistCLMiT-B5all-fusion

训练完成后,可以按照 SePiCo 评估 进行模型测试。请注意,训练结果位于 ./work_dirs 中。配置文件名应类似:220827_1906_dlv2_proj_r101v1c_sepico_DistCL-reg-w1.0-start-iter3000-tau100.0-l3-w1.0_rcs0.01_cpl_self_adamw_6e-05_pmT_poly10warm_1x2_40k_gta2cs_seed76_4cc9a.json,模型文件后缀为 .pth

代码理解提示

致谢

本项目基于以下开源项目。我们感谢这些项目的作者公开源代码。

引用

如果您觉得我们的工作有帮助,请为本仓库点星🌟引用📑我们的论文。感谢您的支持!

@article{xie2023sepico, title={Sepico: Semantic-guided pixel contrast for domain adaptive semantic segmentation}, author={Xie, Binhui and Li, Shuang and Li, Mingjia and Liu, Chi Harold and Huang, Gao and Wang, Guoren}, journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, year={2023}, publisher={IEEE} }

联系

如需帮助或与 SePiCo 相关的问题,或报告 bug,请开启一个 [GitHub Issues],或随时联系 binhuixie@bit.edu.cn

杂项

↳ 给本项目点星的用户,感谢您的支持!

给 @BIT-DA/SePiCo 点星的用户

↳ 感谢所有 Fork 本项目的支持者!

BIT-DA/SePiCo 项目的 Fork 者名单

<!-- ### &#8627; Star 历史 <div align="center"> [![Star 历史图表](https://api.star-history.com/svg?repos=BIT-DA/SePiCo&type=Date)](https://star-history.com/#BIT-DA/SePiCo&Date) </div> --> <div align="right"> <b><a href="#overview">↥</a></b> </div>

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多