/S2M2_fewshot

Primary LanguagePythonOtherNOASSERTION

S2M2 Charting the Right Manifold: Manifold Mixup for Few-shot Learning

A few-shot classification algorithm: Charting the Right Manifold: Manifold Mixup for Few-shot Learning

Our code is built upon the code base of A Closer Look at Few-shot Classification and Manifold Mixup: Better Representations by Interpolating Hidden States

Running the code

Donwloading the dataset and create base/val/novel splits:

miniImageNet

  • Change directory to filelists/miniImagenet/
  • Run 'source ./download_miniImagenet.sh'

CUB

  • Change directory to filelists/CUB/
  • Run 'source ./download_CUB.sh'

CIFAR-FS

  • Change directory to filelists/cifar/
  • Run 'source ./download_cifar.sh'

Training

DATASETNAME: miniImagenet/cifar/CUB/tieredImagenet

METHODNAME: S2M2_R/rotation/manifold_mixup

For CIFAR-10

python train_cifar.py --method [METHODNAME] --model WideResNet28_10 --batch_size <batch_size> --stop_epoch <stop_epoch>

For miniImagenet/CUB/tieredImagenet

python train.py --dataset [DATASETNAME] --method [METHODNAME] --model WideResNet28_10 --batch_size <batch_size> --stop_epoch <stop_epoch>

Example Training script to replicate our result on CUB Dataset:

  • python train.py --dataset CUB --method rotation --model WideResNet28_10 --stop_epoch 200 --batch_size 64 --test_batch_size 16
  • python train.py --dataset CUB --method S2M2_R --model WideResNet28_10 --stop_epoch 100 --batch_size 64 --test_batch_size 16

Fetching pretrained WideResNet_28_10 model checkpoints for evaluation

Directory path to save models should be: checkpoints/[DATASETNAME]/WideResNet28_10_[METHODNAME]/

Pre-trained mdoels can be downloadeded from https://drive.google.com/open?id=1S-t56H8YWzMn3sjemBcwMtGuuUxZnvb_. Move the tar files for each dataset into 'checkpoints' folder and untar it if required.

Few-shot evaluation

Create an empty 'features' directory inside 'S2M2'

python save_features.py --dataset [DATASETNAME] --method [METHODNAME] --model WideResNet28_10
python test.py --dataset [DATASETNAME] --method [METHODNAME] --model WideResNet28_10 --n_shot [1/5]

Features of pre-trained network can also be be directly downloaded at this link 'https://drive.google.com/open?id=1JtA7p3sDPksvBmOsJuR4EHw9zRHnKurj' for easy evaluation without the need to download datasets and models. Move the tar files for each dataset into 'features' folder and untar it.

Comparison with prior/current state-of-the-art methods on mini-ImageNet, CUB and CIFAR-FS dataset.

Note: We implemented LEO on CUB dataset. Other numbers are reported directly from the paper.

Method mini-ImageNet CUB CIFAR-FS
1-shot 5-shot 1-shot 5-shot 1-shot 5-shot
Baseline++ 57.33 +- 0.10 72.99 +- 0.43 70.4 +- 0.81 82.92 +-0.78 67.5 +- 0.64 80.08 +- 0.32
LEO 61.76 +- 0.08 77.59 +- 0.12 68.22+- 0.22 78.27 +- 0.16 - -
DCO 62.64 +- 0.61 78.63 +- 0.46 - - 72.0 +- 0.7 84.2 +- 0.5
Manifold Mixup 57.6 +- 0.17 75.89 +- 0.13 73.47 +- 0.89 85.42 +- 0.53 69.20 +- 0.2 83.42 +- 0.15
Rotation 63.9 +- 0.18 81.03 +- 0.11 77.61 +- 0.86 89.32 +- 0.46 70.66 +- 0.2 84.15 +- 0.14
S2M2_R 64.93 +- 0.18 83.18 +- 0.11 80.68 +- 0.81 90.85 +- 0.44 74.81 +- 0.19 87.47 +- 0.13

If you use this code for your research, Please cite using

@inproceedings{mangla2020charting,
  title={Charting the right manifold: Manifold mixup for few-shot learning},
  author={Mangla, Puneet and Kumari, Nupur and Sinha, Abhishek and Singh, Mayank and Krishnamurthy, Balaji and Balasubramanian, Vineeth N},
  booktitle={The IEEE Winter Conference on Applications of Computer Vision},
  pages={2218--2227},
  year={2020}
}

References

A Closer Look at Few-shot Classification

Meta-Learning with Latent Embedding Optimization

Meta Learning with Differentiable Convex Optimization

Manifold Mixup: Better Representations by Interpolating Hidden States