This codebase is tested with:
To install all requirements, use "pip install -r requirements.txt"
MiniImageNet and CD-FSL: Download the datasets for CD-FSL benchmark following step 1 and step 2 here: https://github.com/IBM/cdfsl-benchmark
ImageNet: https://www.kaggle.com/c/imagenet-object-localization-challenge/data
Set datasets path: Set the appropriate dataset pathes in "configs.py".
Source dataset names: "ImageNet", "miniImageNet"
Target dataset names: "EuroSAT", "CropDisease", "ChestX", "ISIC"
All the dataset train/validation split files located at "datasets/split_seed_1" directory
All Baseline (miniImageNet) are trained Using an adapted version of the "https://github.com/cpphoo/STARTUP" repository
Baseline BN (Table 2) | |
---|---|
To Train: | https://github.com/MosyMosy/STARTUP/tree/main/teacher_miniImageNet |
To Fine-Tune: | python finetune.py --save_dir ./logs/baseline_teacher --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
Baseline FN (Table 2) | |
---|---|
To Train: | https://github.com/MosyMosy/STARTUP/tree/main/teacher_miniImageNet_na |
To Fine-Tune: | python finetune.py --save_dir ./logs/baseline_na_teacher --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_na_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
AdaBN BN (Table 2) | |
---|---|
To Train: | python AdaBN.py --dir ./logs/AdaBN/{dataset Name} --base_dictionary logs/baseline_teacher/checkpoint_best.pkl --target_dataset $target_testset --target_subset_split datasets/split_seed_1/$target_testset_unlabeled_20.csv --bsize 256 --epochs 10 --model resnet10 & |
To Fine-Tune: | python finetune.py --save_dir ./logs/AdaBN/{Target dataset name} --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/AdaBN/{Target dataset name}/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary (replace {Target_dataset_name}): https://github.com/MosyMosy/FN_Model_Zoo/tree/main/Dictionaries/AdaBN/{Target_dataset_name}/checkpoint_best.pkl |
AdaBN FN (Table 2) | |
---|---|
To Train: | python AdaBN_na.py --dir ./logs/AdaBN_na/{dataset Name} --base_dictionary logs/baseline_na_teacher/checkpoint_best.pkl --target_dataset $target_testset --target_subset_split datasets/split_seed_1/$target_testset_unlabeled_20.csv --bsize 256 --epochs 10 --model resnet10 |
To Fine-Tune: | python finetune.py --save_dir ./logs/AdaBN_na/{Target dataset name} --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/AdaBN_na/{Target dataset name}/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary (replace {Target_dataset_name}): https://github.com/MosyMosy/FN_Model_Zoo/tree/main/Dictionaries/AdaBN_na/{Target_dataset_name}/checkpoint_best.pkl |
Baseline BN (ImageNet) (Table 1) | |
---|---|
To Train: | python ImageNet.py --dir ./logs/ImageNet/ --arch resnet18 --data ./data/ILSVRC/Data/CLS-LOC --gpu 0 |
To Fine-Tune: | python ImageNet_finetune.py --save_dir ./logs/ImageNet --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
Baseline FN (ImageNet) (Table 1) | |
---|---|
To Train: | python ImageNet_na.py --dir ./logs/ImageNet_na/ --arch resnet18 --data ./data/ILSVRC/Data/CLS-LOC --gpu 0 |
To Fine-Tune: | python ImageNet_finetune.py --save_dir ./logs/ImageNet_na --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
Baseline beta (ImageNet) (Table 1) | |
---|---|
To Train: | python ImageNet_nw.py --dir ./logs/ImageNet_nw/ --arch resnet18 --data ./data/ILSVRC/Data/CLS-LOC --gpu 0 |
To Fine-Tune: | python ImageNet_finetune.py --save_dir ./logs/ImageNet_nw --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
Baseline gamma (ImageNet) (Table 1) | |
---|---|
To Train: | python ImageNet_nb.py --dir ./logs/ImageNet_nb/ --arch resnet18 --data ./data/ILSVRC/Data/CLS-LOC --gpu 0 |
To Fine-Tune: | python ImageNet_finetune.py --save_dir ./logs/ImageNet_nb --target_dataset {Target dataset name} --subset_split datasets/split_seed_1/{Target dataset name} _labeled_80.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |
Near-domain few-shot evaluation (Table 4) | |
---|---|
Baseline BN | |
To Fine-Tune: | python finetune.py --save_dir ./logs/eval/baseline_teacher --target_dataset ImageNet_test --subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --embedding_load_path ./logs/baseline_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary | |
Baseline FN | |
To Fine-Tune: | python finetune.py --save_dir ./logs/eval/baseline_na_teacher --target_dataset ImageNet_test --subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --embedding_load_path ./logs/baseline_na_teacher/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary | |
AdaBN BN | |
To Adapt: | python AdaBN.py --dir ./logs/AdaBN_teacher/miniImageNet --base_dictionary logs/baseline_teacher/checkpoint_best.pkl --target_dataset ImageNet_test --target_subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --bsize 256 --epochs 10 --model resnet10 |
To Fine-Tune: | python finetune.py --save_dir ./logs/AdaBN_teacher/miniImageNet --target_dataset ImageNet_test --subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --embedding_load_path ./logs/AdaBN_teacher/miniImageNet/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary | |
AdaBN FN | |
To Adapt: | python AdaBN.py --dir ./logs/AdaBN_na_teacher/miniImageNet --base_dictionary logs/baseline_na_teacher/checkpoint_best.pkl --target_dataset ImageNet_test --target_subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --bsize 256 --epochs 10 --model resnet10 |
To Fine-Tune: | python finetune.py --save_dir ./logs/AdaBN_na_teacher/miniImageNet --target_dataset ImageNet_test --subset_split datasets/split_seed_1/ImageNet_val_labeled.csv --embedding_load_path ./logs/AdaBN_na_teacher/miniImageNet/checkpoint_best.pkl --freeze_backbone |
Pre-Trained Dictionary |