Domain Conditioned Adaptation Network (AAAI Conference on Artificial Intelligence, 2020)
If you find this code useful for your research, please cite our paper:
@inproceedings{Li20DCAN,
title = {Domain Conditioned Adaptation Network},
author = {Li, Shuang and Liu, Chi Harold and Lin, Qiuxia and Xie, Binhui and Ding, Zhengming and Huang, Gao and Tang, Jian},
booktitle = {Thirty-Fourth AAAI Conference on Artificial Intelligence (AAAI-20)},
pages = {11386--11393},
publisher = {{AAAI} Press},
year = {2020}
}
Tremendous research efforts have been made to thrive deep domain adaptation (DA) by seeking domain-invariant features. Most existing deep DA models only focus on aligning feature representations of task-specific layers across domains while integrating a totally shared convolutional architecture for source and target. However, we argue that such strongly-shared convolutional layers might be harmful for domain-specific feature learning when source and target data distribution differs to a large extent. In this paper, we relax a shared-convnets assumption made by previous DA methods and propose a Domain Conditioned Adaptation Network (DCAN), which aims to excite distinct convolutional channels with a domain conditioned channel attention mechanism. As a result, the critical low-level domain-dependent knowledge could be explored appropriately. As far as we know, this is the first work to explore the domain-wise convolutional channel activation for deep DA networks. Moreover, to effectively align high-level feature distributions across two domains, we further deploy domain conditioned feature correction blocks after task-specific layers, which will explicitly correct the domain discrepancy. Extensive experiments on three cross-domain benchmarks demonstrate the proposed approach outperforms existing methods by a large margin, especially on very tough cross-domain learning tasks.
The code is implemented with Python(3.7) and Pytorch(1.2.0).
To install the required python packages, run
pip install -r requirements.txt
Office-Home dataset can be found here.
DomainNet dataset can be found here.
Office-31 dataset can be found here.
Pre-trained models can be downloaded here and put in <root_dir>/pretrained_models
Office-Home
$ python train_dcan.py --gpu_id id --net 50 --output_path snapshot/ --data_set home --source_path data/list/home/Art_65.txt --target_path data/list/home/Clipart_65.txt --test_path data/list/home/Clipart_65.txt --task ac
DomainNet
$ python train_dcan.py --gpu_id id --net 50/101/152 --output_path snapshot/ --data_set domainnet --source_path /data/list/domainnet/clipart_train.txt --target_path data/list/domainnet/infograph_train.txt --test_path data/list/domainnet/infograph_test.txt --task ci
Office-31
$ python train_dcan.py --gpu_id id --net 50 --output_path snapshot/ --data_set office --source_path data/list/office/dslr_31.txt --target_path data/list/office/webcam_31.txt --test_path data/list/office/webcam_31.txt --task dw
This code is heavily borrowed from Xlearn and CDAN.
If you have any problem about our code, feel free to contact
or describe your problem in Issues.