Home

Awesome

ECACL: A Holistic Framework for Semi-Supervised Domain Adaptation

This repository includes the PyTorch implementation of ECACL introduced in the following paper:

Kai Li, Chang Liu, Handong Zhao Yulun Zhang, and Yun Fu, "ECACL: A Holistic Framework for Semi-Supervised Domain Adaptation", ICCV 2021

Install

pip install -r requirements.txt

The code is written for Pytorch 0.4.1, but should work for other version with some modifications.

Data preparation

For all the datasets, we provide the splits in './data/txt'

DomainNet

To get data, run

sh download_data.sh

The images will be stored in the following way.

./data/multi/real/category_name

./data/multi/sketch/category_name

Office-home

Download the dataset and put it under the './data' folder as

./data/office_home/

VisDA2017

Download the dataset and put it under the './data' folder as

./data/visda/

Training

The following scripts reproduce our results for the adaptation result between Real and Sketch domains from the DomainNet dataset under the 3-shot settings, with AlexNet and ResNet-34 as the backbone respectively. Other results can be obtained by changing the parameter '--source' and '--target' and '--trg_shots', which specify the source domain, target domain, and number of labeled samples from the target, respectively.

CUDA_VISIBLE_DEVICES=0 python main.py --beta 1.0 --alpha 0.1 --threshold 0.8 --align_type proto --log_file r2s_proto_resnet_num3_semi_kld_hard --kld --labeled_hard --trg_shots 3 --num 3 --net resnet34 --source real --target sketch

CUDA_VISIBLE_DEVICES=0 python main.py --beta 1.0 --alpha 0.1 --threshold 0.8 --align_type proto --log_file r2s_proto_alex_num3_semi_kld_hard --kld --labeled_hard --trg_shots 3 --num 3 --net alexnet --source real --target sketch

Test

Pretrained models

Our trained models for the adaptation from the real domain to the sketch domain from the DomainNet dataset are available in GoogleDrive.

Within the folder, We provide the models with the AlexNet and ResNet-34 as the backbone for the 3-shot settings.

Download the models and save them in the './pretrained' folder.

Evaluation

Run the following scripts and get the evaluation results:

CUDA_VISIBLE_DEVICES=0 python eval.py --dataset multi --source real --target sketch --checkpath pretrained --net resnet34 --num 3

CUDA_VISIBLE_DEVICES=0 python eval.py --dataset multi --source real --target sketch --checkpath pretrained --net alexnet --num 3

Citation

@inproceedings{li2021ECACL,
  title={ECACL: A Holistic Framework for Semi-Supervised Domain Adaptation},
  author={Li, Kai and Liu, Chang and Zhao, Handong and Zhang, Yulun and Fu, Yun},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={},
  year={2021}
}


Acknowledgment

This code is developed based on the implementation of MME.