Awesome
DecoupleNet
Official implementation for our ECCV 2022 paper "DecoupleNet: Decoupled Network for Domain Adaptive Semantic Segmentation" [arXiv] [Paper]
<div align="center"> <img src="figs/fig.png"/> </div>Get Started
Datasets Preparation
GTA5
First, download GTA5 from the website. Then, extract them and organize as follows.
images/
|---00000.png
|---00001.png
|---...
labels/
|---00000.png
|---00001.png
|---...
split.mat
gtav_label_info.p
Cityscapes
Download Cityscapes dataset from the website. And organize them as
leftImg8bit/
|---train/
|---val/
|---test/
gtFine
|---train/
|---val/
|---test/
Training
GTA5 -> Cityspcaes
First, download the pretrained ResNet101 (PyTorch) and sourceonly model from here, and put them into the directory ./pretrained
.
mkdir pretrained && cd pretrained
wget https://download.pytorch.org/models/resnet101-5d3b4d8f.pth
# Also put the sourceonly.pth into ./pretrained/
First-phase training:
python3 train_phase1.py --snapshot-dir ./snapshots/GTA2Cityscapes_phase1 --batch-size 8 --gpus 0,1,2,3 --dist --tensorboard --batch_size_val 4 --src_rootpath [YOUR_SOURCE_DATA_ROOT] --tgt_rootpath [YOUR_TARGET_DATA_ROOT]
Second-phase training (The trained phase1 model can also be downloaded from here):
# First generate the soft pesudo labels from the trained phase1 model
python3 generate_soft_label.py --snapshot-dir ./snapshots/GTA2Cityscapes_generate_soft_labels --batch-size 8 --gpus 0,1,2,3 --dist --tensorboard --batch_size_val 4 --resume [PATH_OF_PHASE1_MODEL] --output_folder ./datasets/gta2city_soft_labels --no_droplast --src_rootpath [YOUR_SOURCE_DATA_ROOT] --tgt_rootpath [YOUR_TARGET_DATA_ROOT]
# Then, get the thresholds from the generated soft labels:
cd datasets/ && python3 get_thresholds.py 0.8 gta2city_soft_labels
# Training with soft pseudo labels:
python3 train_phase2.py --snapshot-dir ./snapshots/GTA2Cityscapes_phase2 --batch-size 8 --gpus 0,1,2,3 --dist --tensorboard --learning-rate 5e-4 --batch_size_val 4 --soft_labels_folder ./datasets/gta2city_soft_labels --resume [PATH_OF_PHASE1_MODEL] --thresholds_path ./datasets/gta2city_soft_labels_thresholds_p0.8.npy --src_rootpath [YOUR_SOURCE_DATA_ROOT] --tgt_rootpath [YOUR_TARGET_DATA_ROOT]
Acknowledgement
This repository borrows codes from the following repos. Many thanks to the authors for their great work.
ProDA: https://github.com/microsoft/ProDA
FADA: https://github.com/JDAI-CV/FADA
semseg: https://github.com/hszhao/semseg
Citation
If you find this project useful, please consider citing:
@inproceedings{lai2022decouplenet,
title={Decouplenet: Decoupled network for domain adaptive semantic segmentation},
author={Lai, Xin and Tian, Zhuotao and Xu, Xiaogang and Chen, Yingcong and Liu, Shu and Zhao, Hengshuang and Wang, Liwei and Jia, Jiaya},
booktitle={European Conference on Computer Vision},
pages={369--387},
year={2022},
organization={Springer}
}