Open-source evaluation toolkit of large vision-language models (LVLMs), support ~100 VLMs, 40+ benchmarks
See the codeThe fastest way to get started is:
๐ Follow the [QuickStart | ๅฟซ้ๅผๅง] guide to jump right in and get rolling! Make sure your Huggingface setup is good to go! ๐
๐ก Important Note: Some Vision-Language Models (VLMs) may not work well with certain versions of transformers. We recommend the following settings to evaluate each VLM:
Please use transformers==4.33.0 for:
Qwen seriesMonkey seriesInternLM-XComposer SeriesmPLUG-Owl2OpenFlamingo v2IDEFICS seriesVisualGLMMMAlayaShareCaptionerMiniGPT-4 seriesInstructBLIP seriesPandaGPTVXVERSEPlease use transformers==4.36.2 for:
Moondream1Please use transformers==4.37.0 for:
LLaVA seriesShareGPT4V seriesTransCore-MLLaVA (XTuner)CogVLM SeriesEMU2 SeriesYi-VL SeriesMiniCPM-[V1/V2]OmniLMM-12BDeepSeek-VL seriesInternVL seriesCambrian SeriesVILA SeriesLlama-3-MixSenseV1_1Parrot-7BPLLaVA SeriesPlease use transformers==4.40.0 for:
IDEFICS2Bunny-Llama3MiniCPM-Llama3-V2.5360VL-70BPhi-3-VisionWeMMPlease use transformers==latest for:
LLaVA-Next seriesPaliGemma-3BChameleon seriesVideo-LLaVA-7B-HFOvis seriesMantis seriesMiniCPM-V2.6OmChat-v2.0-13B-sinlge-betaIdefics-3GLM-4v-9BVideoChat2-HDRBDash_72bLlama-3.2 seriesPlease use transformers==4.44.0 for:
Moondream2torchvision>=0.16 for the Moondream series๐ป Donโt forget to update the Python path in the run.sh file!
Have fun evaluating! ๐

A Toolkit for Evaluating Large Vision-Language Models.
English | ็ฎไฝไธญๆ | ๆฅๆฌ่ช
๐ OC Learderboard โข ๐Datasets & Models โข ๐๏ธQuickstart โข ๐ ๏ธDevelopment โข ๐ฏGoal โข ๐๏ธCitation
๐ค HF Leaderboard โข ๐ค Evaluation Records โข ๐ Discord โข ๐ Report
VLMEvalKit (the python package name is vlmeval) is an open-source evaluation toolkit of large vision-language models (LVLMs). It enables one-command evaluation of LVLMs on various benchmarks, without the heavy workload of data preparation under multiple repositories. In VLMEvalKit, we adopt generation-based evaluation for all LVLMs, and provide the evaluation results obtained with both exact matching and LLM-based answer extraction.
The performance numbers on our official multi-modal leaderboards can be downloaded from here!
OpenVLM Leaderboard: Download All DETAILED Results.
Supported Image Understanding Dataset
MCQ: Multi-choice question; Y/N: Yes-or-No Questions; MTT: Benchmark with Multi-turn Conversations; MTI: Benchmark with Multi-Image as Inputs.| Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
|---|---|---|---|---|---|
| MMBench Series: MMBench, MMBench-CN, CCBench | MMBench_DEV_[EN/CN] MMBench_TEST_[EN/CN] MMBench_DEV_[EN/CN]_V11 MMBench_TEST_[EN/CN]_V11 CCBench | MCQ | MMStar | MMStar | MCQ |
| MME | MME | Y/N | SEEDBench Series | SEEDBench_IMG SEEDBench2 SEEDBench2_Plus | MCQ |
| MM-Vet | MMVet | VQA | MMMU | MMMU_[DEV_VAL/TEST] | MCQ |
| MathVista | MathVista_MINI | VQA | ScienceQA_IMG | ScienceQA_[VAL/TEST] | MCQ |
| COCO Caption | COCO_VAL | Caption | HallusionBench | HallusionBench | Y/N |
| OCRVQA* | OCRVQA_[TESTCORE/TEST] | VQA | TextVQA* | TextVQA_VAL | VQA |
| ChartQA* | ChartQA_TEST | VQA | AI2D | AI2D_[TEST/TEST_NO_MASK] | MCQ |
| LLaVABench | LLaVABench | VQA | DocVQA+ | DocVQA_[VAL/TEST] | VQA |
| InfoVQA+ | InfoVQA_[VAL/TEST] | VQA | OCRBench | OCRBench | VQA |
| RealWorldQA | RealWorldQA | MCQ | POPE | POPE | Y/N |
| Core-MM- | CORE_MM (MTI) | VQA | MMT-Bench | MMT-Bench_[VAL/ALL] MMT-Bench_[VAL/ALL]_MI | MCQ (MTI) |
| MLLMGuard - | MLLMGuard_DS | VQA | AesBench+ | AesBench_[VAL/TEST] | MCQ |
| VCR-wiki + | VCR_[EN/ZH]_[EASY/HARD]_[ALL/500/100] | VQA | MMLongBench-Doc+ | MMLongBench_DOC | VQA (MTI) |
| BLINK | BLINK | MCQ (MTI) | MathVision+ | MathVision MathVision_MINI | VQA |
| MT-VQA | MTVQA_TEST | VQA | MMDU+ | MMDU | VQA (MTT, MTI) |
| Q-Bench1 | Q-Bench1_[VAL/TEST] | MCQ | A-Bench | A-Bench_[VAL/TEST] | MCQ |
| DUDE+ | DUDE | VQA (MTI) | SlideVQA+ | SLIDEVQA SLIDEVQA_MINI | VQA (MTI) |
| TaskMeAnything ImageQA Random+ | TaskMeAnything_v1_imageqa_random | MCQ | MMMB and Multilingual MMBench+ | MMMB_[ar/cn/en/pt/ru/tr] MMBench_dev_[ar/cn/en/pt/ru/tr] MMMB MTL_MMBench_DEV PS: MMMB & MTL_MMBench_DEV are all-in-one names for 6 langs | MCQ |
| A-OKVQA+ | A-OKVQA | MCQ | MuirBench+ | MUIRBench | MCQ |
| GMAI-MMBench+ | GMAI-MMBench_VAL | MCQ | TableVQABench+ | TableVQABench | VQA |
| MME-RealWorld+ | MME-RealWorld[-CN] | MCQ | HRBench+ | HRBench[4K/8K] | MCQ |
| MathVerse+ | MathVerse_MINI MathVerse_MINI_Vision_Only MathVerse_MINI_Vision_Dominant MathVerse_MINI_Vision_Intensive MathVerse_MINI_Text_Lite MathVerse_MINI_Text_Dominant | VQA | AMBER+ | AMBER | Y/N |
| CRPE+ | CRPE_[EXIST/RELATION] | VQA | MMSearch* | - | - |
d reasonable results under the zero-shot setting
+ The evaluation results are not available yet
- Only inference is supported in VLMEvalKit
* VLMEvalKit is integrated in its official repository.
VLMEvalKit will use a judge LLM to extract answer from the output if you set the key, otherwise it uses the exact matching mode (find "Yes", "No", "A", "B", "C"... in the output strings). The exact matching can only be applied to the Yes-or-No tasks and the Multi-choice tasks.
Supported Video Understanding Dataset
| Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
|---|---|---|---|---|---|
| MMBench-Video | MMBench-Video | VQA | Video-MME | Video-MME | MCQ |
| MVBench | MVBench/MVBench_MP4 | MCQ |
Supported API Models
| GPT-4v (20231106, 20240409) ๐๏ธ๐ | GPT-4o ๐๏ธ๐ | Gemini-1.0-Pro ๐๏ธ๐ | Gemini-1.5-Pro ๐๏ธ๐ | Step-1V ๐๏ธ๐ |
|---|---|---|---|---|
| Reka-[Edge / Flash / Core]๐ | Qwen-VL-[Plus / Max] ๐๏ธ๐ | Claude3-[Haiku / Sonnet / Opus] ๐๏ธ๐ | GLM-4v ๐ | CongRong ๐๏ธ๐ |
| Claude3.5-Sonnet ๐๏ธ๐ | GPT-4o-Mini ๐๏ธ๐ | Yi-Vision๐๏ธ๐ | Hunyuan-Vision๐๏ธ๐ | BlueLM-V ๐๏ธ๐ |
Supported PyTorch / HF Models
๐๏ธ: Support multiple images as inputs.
๐ : Models can be used without any additional configuration/operation.
๐ฌ: Support Video as inputs.
Transformers Version Recommendation:
Note that some VLMs may not be able to run under certain transformer versions, we recommend the following settings to evaluate each VLM:
transformers==4.33.0 for: Qwen series, Monkey series, InternLM-XComposer Series, mPLUG-Owl2, OpenFlamingo v2, IDEFICS series, VisualGLM, MMAlaya, ShareCaptioner, MiniGPT-4 series, InstructBLIP series, PandaGPT, VXVERSE.transformers==4.36.2 for: Moondream1.transformers==4.37.0 for: LLaVA series, ShareGPT4V series, TransCore-M, LLaVA (XTuner), CogVLM Series, EMU2 Series, Yi-VL Series, MiniCPM-[V1/V2], OmniLMM-12B, DeepSeek-VL series, InternVL series, Cambrian Series, VILA Series, Llama-3-MixSenseV1_1, Parrot-7B, PLLaVA Series.transformers==4.40.0 for: IDEFICS2, Bunny-Llama3, MiniCPM-Llama3-V2.5, 360VL-70B, Phi-3-Vision, WeMM.transformers==latest for: LLaVA-Next series, PaliGemma-3B, Chameleon series, Video-LLaVA-7B-HF, Ovis series, Mantis series, MiniCPM-V2.6, OmChat-v2.0-13B-sinlge-beta, Idefics-3, GLM-4v-9B, VideoChat2-HD, RBDash_72b, Llama-3.2 series.transformers==4.44.0 for: Moondream2.Note that some VLMs may not be able to run under certain torchvision versions, we recommend the following settings to evaluate each VLM:
torchvision>=0.16 for: Moondream series# Demo
from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# Forward Single Image
ret = model.generate(['assets/apple.jpg', 'What is in this image?'])
print(ret) # The image features a red apple with a leaf on it.
# Forward Multiple Images
ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', 'How many apples are there in the provided images? '])
print(ret) # There are two apples in the provided images.
See [QuickStart | ๅฟซ้ๅผๅง] for a quick start guide.
To develop custom benchmarks, VLMs, or simply contribute other codes to VLMEvalKit, please refer to [Development_Guide | ๅผๅๆๅ].
Call for contributions
To promote the contribution from the community and share the corresponding credit (in the next report update):
Here is a contributor list we curated based on the records.
The codebase is designed to:
generate_inner() function, all other workloads (data downloading, data preprocessing, prediction inference, metric calculation) are handled by the codebase.The codebase is not designed to:
If you find this work helpful, please consider to star๐ this repo. Thanks for your support!
If you use VLMEvalKit in your research or wish to refer to published OpenSource evaluation results, please use the following BibTeX entry and the BibTex entry corresponding to the specific VLM / benchmark you used.
@misc{duan2024vlmevalkit,
title={VLMEvalKit: An Open-Source Toolkit for Evaluating Large Multi-Modality Models},
author={Haodong Duan and Junming Yang and Yuxuan Qiao and Xinyu Fang and Lin Chen and Yuan Liu and Xiaoyi Dong and Yuhang Zang and Pan Zhang and Jiaqi Wang and Dahua Lin and Kai Chen},
year={2024},
eprint={2407.11691},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2407.11691},
}
Python
97.6%
Jupyter Notebook
2.0%
Open-source evaluation toolkit of large vision-language models (LVLMs), support ~100 VLMs, 40+ benchmarks
See the codeThe fastest way to get started is:
๐ Follow the [QuickStart | ๅฟซ้ๅผๅง] guide to jump right in and get rolling! Make sure your Huggingface setup is good to go! ๐
๐ก Important Note: Some Vision-Language Models (VLMs) may not work well with certain versions of transformers. We recommend the following settings to evaluate each VLM:
Please use transformers==4.33.0 for:
Qwen seriesMonkey seriesInternLM-XComposer SeriesmPLUG-Owl2OpenFlamingo v2IDEFICS seriesVisualGLMMMAlayaShareCaptionerMiniGPT-4 seriesInstructBLIP seriesPandaGPTVXVERSEPlease use transformers==4.36.2 for:
Moondream1Please use transformers==4.37.0 for:
LLaVA seriesShareGPT4V seriesTransCore-MLLaVA (XTuner)CogVLM SeriesEMU2 SeriesYi-VL SeriesMiniCPM-[V1/V2]OmniLMM-12BDeepSeek-VL seriesInternVL seriesCambrian SeriesVILA SeriesLlama-3-MixSenseV1_1Parrot-7BPLLaVA SeriesPlease use transformers==4.40.0 for:
IDEFICS2Bunny-Llama3MiniCPM-Llama3-V2.5360VL-70BPhi-3-VisionWeMMPlease use transformers==latest for:
LLaVA-Next seriesPaliGemma-3BChameleon seriesVideo-LLaVA-7B-HFOvis seriesMantis seriesMiniCPM-V2.6OmChat-v2.0-13B-sinlge-betaIdefics-3GLM-4v-9BVideoChat2-HDRBDash_72bLlama-3.2 seriesPlease use transformers==4.44.0 for:
Moondream2torchvision>=0.16 for the Moondream series๐ป Donโt forget to update the Python path in the run.sh file!
Have fun evaluating! ๐

A Toolkit for Evaluating Large Vision-Language Models.
English | ็ฎไฝไธญๆ | ๆฅๆฌ่ช
๐ OC Learderboard โข ๐Datasets & Models โข ๐๏ธQuickstart โข ๐ ๏ธDevelopment โข ๐ฏGoal โข ๐๏ธCitation
๐ค HF Leaderboard โข ๐ค Evaluation Records โข ๐ Discord โข ๐ Report
VLMEvalKit (the python package name is vlmeval) is an open-source evaluation toolkit of large vision-language models (LVLMs). It enables one-command evaluation of LVLMs on various benchmarks, without the heavy workload of data preparation under multiple repositories. In VLMEvalKit, we adopt generation-based evaluation for all LVLMs, and provide the evaluation results obtained with both exact matching and LLM-based answer extraction.
The performance numbers on our official multi-modal leaderboards can be downloaded from here!
OpenVLM Leaderboard: Download All DETAILED Results.
Supported Image Understanding Dataset
MCQ: Multi-choice question; Y/N: Yes-or-No Questions; MTT: Benchmark with Multi-turn Conversations; MTI: Benchmark with Multi-Image as Inputs.| Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
|---|---|---|---|---|---|
| MMBench Series: MMBench, MMBench-CN, CCBench | MMBench_DEV_[EN/CN] MMBench_TEST_[EN/CN] MMBench_DEV_[EN/CN]_V11 MMBench_TEST_[EN/CN]_V11 CCBench | MCQ | MMStar | MMStar | MCQ |
| MME | MME | Y/N | SEEDBench Series | SEEDBench_IMG SEEDBench2 SEEDBench2_Plus | MCQ |
| MM-Vet | MMVet | VQA | MMMU | MMMU_[DEV_VAL/TEST] | MCQ |
| MathVista | MathVista_MINI | VQA | ScienceQA_IMG | ScienceQA_[VAL/TEST] | MCQ |
| COCO Caption | COCO_VAL | Caption | HallusionBench | HallusionBench | Y/N |
| OCRVQA* | OCRVQA_[TESTCORE/TEST] | VQA | TextVQA* | TextVQA_VAL | VQA |
| ChartQA* | ChartQA_TEST | VQA | AI2D | AI2D_[TEST/TEST_NO_MASK] | MCQ |
| LLaVABench | LLaVABench | VQA | DocVQA+ | DocVQA_[VAL/TEST] | VQA |
| InfoVQA+ | InfoVQA_[VAL/TEST] | VQA | OCRBench | OCRBench | VQA |
| RealWorldQA | RealWorldQA | MCQ | POPE | POPE | Y/N |
| Core-MM- | CORE_MM (MTI) | VQA | MMT-Bench | MMT-Bench_[VAL/ALL] MMT-Bench_[VAL/ALL]_MI | MCQ (MTI) |
| MLLMGuard - | MLLMGuard_DS | VQA | AesBench+ | AesBench_[VAL/TEST] | MCQ |
| VCR-wiki + | VCR_[EN/ZH]_[EASY/HARD]_[ALL/500/100] | VQA | MMLongBench-Doc+ | MMLongBench_DOC | VQA (MTI) |
| BLINK | BLINK | MCQ (MTI) | MathVision+ | MathVision MathVision_MINI | VQA |
| MT-VQA | MTVQA_TEST | VQA | MMDU+ | MMDU | VQA (MTT, MTI) |
| Q-Bench1 | Q-Bench1_[VAL/TEST] | MCQ | A-Bench | A-Bench_[VAL/TEST] | MCQ |
| DUDE+ | DUDE | VQA (MTI) | SlideVQA+ | SLIDEVQA SLIDEVQA_MINI | VQA (MTI) |
| TaskMeAnything ImageQA Random+ | TaskMeAnything_v1_imageqa_random | MCQ | MMMB and Multilingual MMBench+ | MMMB_[ar/cn/en/pt/ru/tr] MMBench_dev_[ar/cn/en/pt/ru/tr] MMMB MTL_MMBench_DEV PS: MMMB & MTL_MMBench_DEV are all-in-one names for 6 langs | MCQ |
| A-OKVQA+ | A-OKVQA | MCQ | MuirBench+ | MUIRBench | MCQ |
| GMAI-MMBench+ | GMAI-MMBench_VAL | MCQ | TableVQABench+ | TableVQABench | VQA |
| MME-RealWorld+ | MME-RealWorld[-CN] | MCQ | HRBench+ | HRBench[4K/8K] | MCQ |
| MathVerse+ | MathVerse_MINI MathVerse_MINI_Vision_Only MathVerse_MINI_Vision_Dominant MathVerse_MINI_Vision_Intensive MathVerse_MINI_Text_Lite MathVerse_MINI_Text_Dominant | VQA | AMBER+ | AMBER | Y/N |
| CRPE+ | CRPE_[EXIST/RELATION] | VQA | MMSearch* | - | - |
d reasonable results under the zero-shot setting
+ The evaluation results are not available yet
- Only inference is supported in VLMEvalKit
* VLMEvalKit is integrated in its official repository.
VLMEvalKit will use a judge LLM to extract answer from the output if you set the key, otherwise it uses the exact matching mode (find "Yes", "No", "A", "B", "C"... in the output strings). The exact matching can only be applied to the Yes-or-No tasks and the Multi-choice tasks.
Supported Video Understanding Dataset
| Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
|---|---|---|---|---|---|
| MMBench-Video | MMBench-Video | VQA | Video-MME | Video-MME | MCQ |
| MVBench | MVBench/MVBench_MP4 | MCQ |
Supported API Models
| GPT-4v (20231106, 20240409) ๐๏ธ๐ | GPT-4o ๐๏ธ๐ | Gemini-1.0-Pro ๐๏ธ๐ | Gemini-1.5-Pro ๐๏ธ๐ | Step-1V ๐๏ธ๐ |
|---|---|---|---|---|
| Reka-[Edge / Flash / Core]๐ | Qwen-VL-[Plus / Max] ๐๏ธ๐ | Claude3-[Haiku / Sonnet / Opus] ๐๏ธ๐ | GLM-4v ๐ | CongRong ๐๏ธ๐ |
| Claude3.5-Sonnet ๐๏ธ๐ | GPT-4o-Mini ๐๏ธ๐ | Yi-Vision๐๏ธ๐ | Hunyuan-Vision๐๏ธ๐ | BlueLM-V ๐๏ธ๐ |
Supported PyTorch / HF Models
๐๏ธ: Support multiple images as inputs.
๐ : Models can be used without any additional configuration/operation.
๐ฌ: Support Video as inputs.
Transformers Version Recommendation:
Note that some VLMs may not be able to run under certain transformer versions, we recommend the following settings to evaluate each VLM:
transformers==4.33.0 for: Qwen series, Monkey series, InternLM-XComposer Series, mPLUG-Owl2, OpenFlamingo v2, IDEFICS series, VisualGLM, MMAlaya, ShareCaptioner, MiniGPT-4 series, InstructBLIP series, PandaGPT, VXVERSE.transformers==4.36.2 for: Moondream1.transformers==4.37.0 for: LLaVA series, ShareGPT4V series, TransCore-M, LLaVA (XTuner), CogVLM Series, EMU2 Series, Yi-VL Series, MiniCPM-[V1/V2], OmniLMM-12B, DeepSeek-VL series, InternVL series, Cambrian Series, VILA Series, Llama-3-MixSenseV1_1, Parrot-7B, PLLaVA Series.transformers==4.40.0 for: IDEFICS2, Bunny-Llama3, MiniCPM-Llama3-V2.5, 360VL-70B, Phi-3-Vision, WeMM.transformers==latest for: LLaVA-Next series, PaliGemma-3B, Chameleon series, Video-LLaVA-7B-HF, Ovis series, Mantis series, MiniCPM-V2.6, OmChat-v2.0-13B-sinlge-beta, Idefics-3, GLM-4v-9B, VideoChat2-HD, RBDash_72b, Llama-3.2 series.transformers==4.44.0 for: Moondream2.Note that some VLMs may not be able to run under certain torchvision versions, we recommend the following settings to evaluate each VLM:
torchvision>=0.16 for: Moondream series# Demo
from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# Forward Single Image
ret = model.generate(['assets/apple.jpg', 'What is in this image?'])
print(ret) # The image features a red apple with a leaf on it.
# Forward Multiple Images
ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', 'How many apples are there in the provided images? '])
print(ret) # There are two apples in the provided images.
See [QuickStart | ๅฟซ้ๅผๅง] for a quick start guide.
To develop custom benchmarks, VLMs, or simply contribute other codes to VLMEvalKit, please refer to [Development_Guide | ๅผๅๆๅ].
Call for contributions
To promote the contribution from the community and share the corresponding credit (in the next report update):
Here is a contributor list we curated based on the records.
The codebase is designed to:
generate_inner() function, all other workloads (data downloading, data preprocessing, prediction inference, metric calculation) are handled by the codebase.The codebase is not designed to:
If you find this work helpful, please consider to star๐ this repo. Thanks for your support!
If you use VLMEvalKit in your research or wish to refer to published OpenSource evaluation results, please use the following BibTeX entry and the BibTex entry corresponding to the specific VLM / benchmark you used.
@misc{duan2024vlmevalkit,
title={VLMEvalKit: An Open-Source Toolkit for Evaluating Large Multi-Modality Models},
author={Haodong Duan and Junming Yang and Yuxuan Qiao and Xinyu Fang and Lin Chen and Yuan Liu and Xiaoyi Dong and Yuhang Zang and Pan Zhang and Jiaqi Wang and Dahua Lin and Kai Chen},
year={2024},
eprint={2407.11691},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2407.11691},
}
Python
97.6%
Jupyter Notebook
2.0%