This repository contains code for training a linear classifier on top of a frozen DINOv2 backbone. The project leverages Meta's DINOv2 model to extract image embeddings and applies a simple PyTorch linear layer for classification.
- dino_training.py: Script for training the classifier.
- dino_inference.py: Script for running inference.
- .gitignore: Specifies files and directories that Git should ignore.
- requirements.txt or environment.yml: Files to recreate the Python environment.
git clone https://github.com/yourusername/my_dinov2_project.gitUsing pip (virtualenv):
python -m venv venv
source venv/bin/activate # For Linux/macOS
pip install -r requirements.txtUsing conda:
conda env create -f environment.yml
conda activate dinov2_classificationAn example of running the training script:
python dino_training.py \
--data_dir /path/to/data \
--train_percentage 0.8 \
--save_dir ./outputs \
--num_epochs 30 \
--batch_size 64 \
--lr 1e-4 \
--device cuda:0 \
--model_name dinov2_vits14_reg \
--early_stopping_patience 10 \
--seed 42Use the inference script:
python dino_inference.py \
--inference_dir /path/to/inference/images \
--checkpoint_path ./outputs/best_model.pth \
--model_name dinov2_vits14_reg \
--device cuda:0 \
--out_file predictions.json