- AVA-Bench is a diagnostic benchmark for Vision Foundation Models (VFMs) that breaks visual understanding into 14 Atomic Visual Abilities, such as localization, counting, depth, OCR, and spatial reasoning. Instead of asking which VFM is best overall, AVA-Bench reveals where each model excels or fails, enabling principled VFM selection for downstream applications.
- Installation and Requirements
- Get Started
- Custom Finetune
- Customize Your Own Large Multimodel Models
- Acknowledgement
- Contact
- ✏ Citation
- Clone this repository and navigate to the folder
git clone git@github.com:OSU-MLB/AVA-Bench.git
cd AVA_Bench- Create a conda environment, activate it and install Packages
conda create -n ava_bench python=3.10 -y
conda activate ava_bench
pip install --upgrade pip setuptools wheel
pip install torch==2.2.0 torchvision==0.17.0 --index-url https://download.pytorch.org/whl/cu118
pip install timm==1.0.15
pip install .
pip install "setuptools<70" wheel packaging ninja
pip install flash-attn==2.6.3 --no-build-isolation
pip install "safetensors<0.5" datasetsFor first and second stage training,
please refer to the Data Preparation section in TinyLLaVA's Documenation.
For finetuning on our AVA-Bench in third stage, refer to . The code will automatically download the dataset to train on it.
- Stage 1 :To pretrain a Vision Foundation Model using Qwen2 0.5B.
- Replace data path and image path with yours in
scripts/train/pretrain/pretrain.sh - Replace
output_dirwith yours inscripts/train/qwen2/pretrain_qwen2.sh. We chose to keep pretrained models in./checkpoints/pre-trained-models/folder. Also adjust your GPU ids (localhost) andper_device_train_batch_sizein this script. - Here's an example for training DINOv2 model.
- Replace data path and image path with yours in
bash scripts/train/pretrain/pretrain.sh facebook/dinov2-large
- Stage 2 : To finetune a Vision Foundation Model using Qwen2 0.5B.
- Replace
FINETUNE_DATA_PATHandFINETUNE_IMAGE_PATHwith yours inscripts/train/finetune/finetune.sh - Replace
pretrained_model_pathandoutput_dirwith yours inscripts/train/qwen2/finetune_qwen2.sh. We chose to keep pretrained models in./checkpoints/fine_tuned_models/folder. - Here's an example for training DINOv2 model.
- Replace
bash scripts/train/finetune/finetune.sh facebook/dinov2-large- Stage 3: To finetune a Vision Foundation Model using Qwen2 0.5B on each of our
AVA-Bench. Change path ofROOTinscripts/train/finetune_lora/bash.sh.- Here's an example for training DINOv2 model trained for counting AVA. Please see
scripts/train/finetune_lora/bash.shon how to train for other AVAs.
- Here's an example for training DINOv2 model trained for counting AVA. Please see
bash scripts/train/finetune_lora/bash.sh dinov2 counting
Important hyperparameters used in pretraining and finetuning are provided below.
| Training Stage | Global Batch Size | Learning rate | conv_version |
|---|---|---|---|
| Pretraining | 256 | 1e-3 | pretrain |
| Finetuning | 128 | 2e-5 | qwen2_base |
| AVA-Bench Finetuning | 16 | 1e-4 | qwen2_base |
Tips:
Global Batch Size = num of GPUs * per_device_train_batch_size * gradient_accumulation_steps, we recommand you always keep global batch size and learning rate as above except for lora tuning your model.
- AVA-Bench evaluation: [Todo]
- TinyLLaVA evaluation: Please refer to the Evaluation section in Documenation.
If you want to finetune TinyLLaVA with your custom datasets, please refer to here . If you want to add a new LLM or a new vision tower, please refer to here.
If you find our paper and code useful in your research, please consider giving a star ⭐ and citation 📝.
@article{mai2025ava,
title={AVA-Bench: Atomic Visual Ability Benchmark for Vision Foundation Models},
author={Mai, Zheda and Chowdhury, Arpita and Wang, Zihe and Jeon, Sooyoung and Wang, Lemeng and Hou, Jiacheng and Kil, Jihyung and Chao, Wei-Lun},
journal={arXiv preprint arXiv:2506.09082},
year={2025}
}- TinyLLaVA : https://github.com/tinyllava/tinyllava_factory
If you have any questions, feel free to either initiate an Issue or contact us by email.
