Skip to content

Latest commit

 

History

History
165 lines (126 loc) · 6.22 KB

File metadata and controls

165 lines (126 loc) · 6.22 KB

Task-Discrepancy-Maximization-for-Fine-grained-Few-Shot-Classification

Official PyTorch Repository of "Task Discrepancy Maximization for Fine-grained Few-Shot Classification (CVPR 2022 Oral Paper)"

Update

[2023/11/21] We released an extended version of TDM (called IAM). It is currently under review, and the code will be released after that.

Bug Fix

[2023/01/03] We omitted the random loss, which prevents overfitting, in training. Please add "--noise" to the training code. Sorry for the confusion.

Data Preparation

The following datasets are used in our paper:

CUB_200_2011: Dataset Page

FGVC-Aircraft: Dataset Page

iNaturalist2017 : Dataset Page

Stanford-Cars : Dataset Page

Stanford-Dogs : Dataset Page

Oxford-Pets : Dataset Page

Please proceed with the setting up data by referring to FRN Github.

Pretrained Weights

Here, all the pretrained weights with ProtoNet and FRN are publicized. Pretrained weights

Usage

Requirement

All the requirements to run the code are in requirements.txt You can download requirements by running below script.

pip install -r requirements.txt

Evaluation

To evaluate the code with pretrained weights, we provide an example script below.

Test the ProtoNet 1-shot in CUB_cropped with Conv-4.
(pretrained_weight: /Proto/CUB_fewshot_cropped/TDM/Conv4-1shot/model_Conv-4.pth)

python3 test.py --train_way 5 --train_shot 1 --gpu_num 1 --model Proto --dataset cub_cropped --TDM

Test the ProtoNet 5-shot in CUB_cropped with Conv-4.
(pretrained_weight: /Proto/CUB_fewshot_cropped/TDM/Conv4-5shot/model_Conv-4.pth)

python3 test.py --train_way 5 --train_shot 5 --gpu_num 1 --model Proto --dataset cub_cropped --TDM

Test the FRN 1-shot and 5-shot in CUB_cropped with Conv-4.
(pretrained_weight: /FRN/CUB_fewshot_cropped/TDM/Conv4-5shot/model_Conv-4.pth)

python3 test.py --train_way 5 --train_shot 5 --gpu_num 1 --model FRN --dataset cub_cropped --TDM

Train

We provide scripts for training. Other shell scripts are in the scripts directory.

python3 train.py --model Proto --dataset aircraft --opt sgd --lr 1e-1 --gamma 1e-1 --epoch 400 --stage 3 --val_epoch 20 --weight_decay 5e-4 --nesterov --train_way 30 --train_shot 1 --train_transform_type 0 --test_shot 1 --pre --gpu_num 1

Results

As we mentioned in our supplementary, we found that CTX and DSN show better performances in 1-shot when they are evaluated by models trained with 5-shot episodes. Therefore, we trained all models with 5-shot episodes except ProtoNet because it shows performance degradation.

CUB_cropped

CUB_raw

Aircraft

meta-iNat & tiered meta-iNat

Citation

If you find TDM helpful for your works, please consider citing:

@InProceedings{Lee_2022_CVPR,
    author    = {Lee, SuBeen and Moon, WonJun and Heo, Jae-Pil},
    title     = {Task Discrepancy Maximization for Fine-Grained Few-Shot Classification},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2022},
    pages     = {5331-5340}
}

Contact

If there are any questions, please feel free to contact with the authors: SuBeen Lee ([email protected]) WonJun Moon ([email protected]). Thank you.