Project Icon

SePiCo

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

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

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

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

论文   项目  

2023年11月更新:SePiCo被选为 :trophy: ESI高被引论文!!

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

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

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

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

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

概述

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

安装

本代码使用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

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

数据集准备

下载数据集

  • 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
├── ...

模型库

我们通过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)

SePiCo评估

在Cityscapes上评估

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

python -m tools.test /path/to/config /path/to/checkpoint --eval mIoU
示例

例如,如果您将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

在Dark Zurich上评估

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

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

python -m tools.test /path/to/config /path/to/checkpoint --format-only --eval-options imgfile_prefix=/path/to/labelTrainIds
示例 例如,如果你将 `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 者名单

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号