(NeurIPS 2022 Spotlight) Attracting and Dispersing: A Simple Approach for Source-free Domain Adaptation
Code for our paper 'Attracting and Dispersing: A Simple Approach for Source-free Domain Adaptation'
- We provide a surprisingly simple solution for source-free domain adaptation, which is an upperbound of the proposed clustering objective:
- And we can relate several methods in domain adaptation, source-free domain adaptation and contrastive learning via the perspective of discriminability and diversity:
We use pytoch 1.3 with cuda 10.0
Attention: Please note that the kl_div in pytorch equals to dot product if there is no log for the input.
Download VisDA dataset and change the path in the code to it. First train model on Source domain, directly run src_pretrain.py Source-free domain adaptation, directly run tar_adaptation.py
You can insert the core part (loss computing starting in Line 297 in tar_adaptation.py) into code of any other SFDA method, such as our NRC (NeurIPS 2021) or SHOT (ICML 2020)
For computing SND, you can use the file snd.py (code is from SND), in the paper we compute SND after only training for a few epochs (~5 on visda).