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>

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多