bwconrad/vit-finetune

Fine-tuning Vision Transformers on various classification datasets

116

stars

69

commits

Python

primary language

Aug 31, 2024

updated

deep-learning
huggingface
image-classification
pytorch
pytorch-lightning
vision-transformer

README

Fine-tuning Vision Transformers

Code for fine-tuning ViT models on various classification datasets. Includes options for full model, LoRA and linear fine-tuning procedures.

Available Datasets

Requirements

  • Python 3.8+
  • pip install -r requirements.txt

Usage

Training

  • To fine-tune a ViT-B/16 model on CIFAR-100 run:
python main.py fit --trainer.accelerator gpu --trainer.devices 1 --trainer.precision 16-mixed
--trainer.max_steps 5000 --model.warmup_steps 500 --model.lr 0.01
--trainer.val_check_interval 500 --data.batch_size 128 --data.dataset cifar100
  • config/ contains example configuration files which can be run with:
python main.py fit --config path/to/config
  • To get a list of all arguments run python train.py --help

Training on a Custom Dataset

To train on a custom dataset first organize the images into Image Folder format. Then set --data.dataset custom, --data.root path/to/custom/dataset and --data.num_classes <num-dataset-classes>.

Evaluate

To evaluate a trained model on its test set, find the path of the saved config file for the checkpoint (eg. output/cifar10/version_0/config.yaml) and run:

python main.py test --ckpt_path path/to/checkpoint --config path/to/config
  • Note: Make sure the --trainer.precision argument is set to the same level as used during training.

Results

All results are from fine-tuned ViT-B/16 models which were pretrained on ImageNet-21k (--model.model_name vit-b16-224-in21k).

Full Fine-tuning

DatasetStepsWarm Up StepsLearning RateTest AccuracyConfig
CIFAR-1050005000.0199.00Link
CIFAR-10050005000.0192.89Link
Oxford Flowers-10210001000.0399.02Link
Oxford-IIIT Pets20002000.0193.68Link
Food-10150005000.0390.67Link

LoRA

DatasetrAlphaBiasStepsWarm Up StepsLearning RateTest AccuracyConfig
CIFAR-10088None50005000.0592.40Link
Oxford-IIIT Pets116None30001000.0593.30Link
Oxford-IIIT Pets88None30001000.0593.79Link
Oxford-IIIT Pets88All30003000.0593.76Link

Linear Probe

DatasetStepsWarm Up StepsLearning RateTest AccuracyConfig
Oxford Flowers-10220001001.099.02Link
Oxford-IIIT Pets20001000.592.64Link

Contributors

bwconrad

65 commits

wirthual

1 commits

bwconrad/vit-finetune

Fine-tuning Vision Transformers on various classification datasets

116

stars

69

commits

Python

primary language

Aug 31, 2024

updated

deep-learning
huggingface
image-classification
pytorch
pytorch-lightning
vision-transformer

README

Fine-tuning Vision Transformers

Code for fine-tuning ViT models on various classification datasets. Includes options for full model, LoRA and linear fine-tuning procedures.

Available Datasets

Requirements

  • Python 3.8+
  • pip install -r requirements.txt

Usage

Training

  • To fine-tune a ViT-B/16 model on CIFAR-100 run:
python main.py fit --trainer.accelerator gpu --trainer.devices 1 --trainer.precision 16-mixed
--trainer.max_steps 5000 --model.warmup_steps 500 --model.lr 0.01
--trainer.val_check_interval 500 --data.batch_size 128 --data.dataset cifar100
  • config/ contains example configuration files which can be run with:
python main.py fit --config path/to/config
  • To get a list of all arguments run python train.py --help

Training on a Custom Dataset

To train on a custom dataset first organize the images into Image Folder format. Then set --data.dataset custom, --data.root path/to/custom/dataset and --data.num_classes <num-dataset-classes>.

Evaluate

To evaluate a trained model on its test set, find the path of the saved config file for the checkpoint (eg. output/cifar10/version_0/config.yaml) and run:

python main.py test --ckpt_path path/to/checkpoint --config path/to/config
  • Note: Make sure the --trainer.precision argument is set to the same level as used during training.

Results

All results are from fine-tuned ViT-B/16 models which were pretrained on ImageNet-21k (--model.model_name vit-b16-224-in21k).

Full Fine-tuning

DatasetStepsWarm Up StepsLearning RateTest AccuracyConfig
CIFAR-1050005000.0199.00Link
CIFAR-10050005000.0192.89Link
Oxford Flowers-10210001000.0399.02Link
Oxford-IIIT Pets20002000.0193.68Link
Food-10150005000.0390.67Link

LoRA

DatasetrAlphaBiasStepsWarm Up StepsLearning RateTest AccuracyConfig
CIFAR-10088None50005000.0592.40Link
Oxford-IIIT Pets116None30001000.0593.30Link
Oxford-IIIT Pets88None30001000.0593.79Link
Oxford-IIIT Pets88All30003000.0593.76Link

Linear Probe

DatasetStepsWarm Up StepsLearning RateTest AccuracyConfig
Oxford Flowers-10220001001.099.02Link
Oxford-IIIT Pets20001000.592.64Link

Contributors

bwconrad

65 commits

wirthual

1 commits

Languages

Python

100.0%