Code (pytorch) for 'Model Adaptation through Hypothesis Transfer with Gradual Knowledge Distillation' on Office-31, Office-Home, VisDA-C. This paper has been submitted to IROS2021.
You need to download the Office-31, Office-Home, VisDA-C dataset, modify the path of images in each '.txt' under the folder './object/data/'.
The experiments are conducted on one GPU (NVIDIA RTX TITAN).
- python == 3.7.3
- pytorch ==1.6.0
- torchvision == 0.7.0
- First training model on the source data, Office-Home dataset is shown here.
~/anaconda3/bin/python htgkd_source.py --trte val --output ckpsmix2020r0/source/ --da uda --gpu_id 0 --dset office-home --max_epoch 50 --s 0 --seed 2020 ~/anaconda3/bin/python htgkd_source.py --trte val --output ckpsmix2020r0/source/ --da uda --gpu_id 0 --dset office-home --max_epoch 50 --s 1 --seed 2020 ~/anaconda3/bin/python htgkd_source.py --trte val --output ckpsmix2020r0/source/ --da uda --gpu_id 0 --dset office-home --max_epoch 50 --s 2 --seed 2020 ~/anaconda3/bin/python htgkd_source.py --trte val --output ckpsmix2020r0/source/ --da uda --gpu_id 0 --dset office-home --max_epoch 50 --s 3 --seed 2020
- Then adapting source model to target domain, with only the unlabeled target data.
~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 0 --t 1 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 0 --t 2 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 0 --t 3 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 1 --t 0 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 1 --t 2 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 1 --t 3 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 2 --t 0 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 2 --t 1 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 2 --t 3 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 3 --t 0 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 3 --t 1 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020 ~/anaconda3/bin/python htgkd_target.py --cls_par 0.05 --da uda --dset office-home --gpu_id 0 --s 3 --t 2 --output_src ckpsmix2020r0/source/ --output ckpsmix2020r0/target_mix/ --seed 2020
The results of HTGKD is display under the folder './object/result/'.
The codes are based on SHOT (ICML 2020, also source-free).