VLMEvalKit (python 包名为 vlmeval) 是一款专为大型视觉语言模型 (Large Vision-Language Models, LVLMs) 评测而设计的开源工具包。该工具支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,让评估过程更加简便。在 VLMEvalKit 中,我们对所有大型视觉语言模型生成的结果进行评测,并提供基于精确匹配与基于 LLM 的答案提取两种评测结果。
- [2024-07-29] 支持了 Yi-Vision🔥🔥🔥
- [2024-07-27] VLMEvalKit 技术报告 被 ACMMM 24' OpenSource 接收 🔥🔥🔥
- [2024-07-27] 支持了 MMDU,这是我们支持的首个多图多轮评测集,感谢 Liuziyu77🔥🔥🔥
- [2024-07-25] 支持了 VILA, 感谢 amitbcp, 评测结果很快到来 🔥🔥🔥
- [2024-07-25] 支持了 Ovis1.5, 感谢 runninglsy 🔥🔥🔥
- [2024-07-23] 支持了 Video-LLaVA 🔥🔥🔥, 我们的仓库支持的首个视频多模态大模型! 使用 这一分支版本 安装 Video-LLaVA (更推荐) 或安装 transformers 来使用它!
- [2024-07-22] 支持了 Video-MME, 感谢 Yuhan Dai 🔥🔥🔥
- [2024-07-22] 支持了 MT-VQA, 感谢 Jinghui Lu 🔥🔥🔥
- [2024-07-19] 支持了 GPT-4o-Mini, 评测结果很快到来 🔥🔥🔥
- [2024-07-19] 支持了 MathVision, 感谢 scikkk🔥🔥🔥
OpenVLM Leaderboard: 下载全部细粒度测试结果。
- 默认情况下,我们在 OpenVLM Leaderboard 提供全部测试结果
数据集 | 数据集名称 (用于 run.py) | 任务类型 | 数据集 | 数据集名称 (用于 run.py) | 任务类型 |
---|---|---|---|---|---|
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 |
Multi-choice Question (MCQ) |
MMStar | MMStar | MCQ |
MME | MME | Yes or No (Y/N) | SEEDBench Series | SEEDBench_IMG SEEDBench2 SEEDBench2_Plus |
MCQ |
MM-Vet | MMVet | VQA | MMMU | MMMU_DEV_VAL/MMMU_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 | 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 | VQA | MMT-Bench | MMT-Bench_[VAL/VAL_MI/ALL/ALL_MI] | MCQ |
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 |
BLINK | BLINK | MCQ | MathVision+ | MathVision MathVision_MINI |
VQA |
MT-VQA+ | MTVQA_TEST | VQA | MMDU+ | MMDU | VQA (multi-turn) |
* 我们只提供了部分模型上的测试结果,剩余模型无法在 zero-shot 设定下测试出合理的精度
+ 我们尚未提供这个评测集的测试结果
- VLMEvalKit 仅支持这个评测集的推理,无法输出最终精度
如果您设置了 API KEY,VLMEvalKit 将使用一个 LLM 从输出中提取答案进行匹配判断,否则它将使用精确匹配模式 (直接在输出字符串中查找“yes”,“no”,“A”,“B”,“C”等)。精确匹配只能应用于是或否任务和多选择任务
Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
---|---|---|---|---|---|
MMBench-Video | MMBench-Video | VQA | Video-MME | Video-MME | MCQ |
API 模型
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🎞️🚅 |
基于 PyTorch / HF 的开源模型
🎞️ 表示支持多图片输入。
🚅 表示模型可以被直接使用,不需任何额外的配置。
🎬 表示支持视频输入。
Transformers 的版本推荐:
请注意,某些 VLM 可能无法在某些特定的 transformers 版本下运行,我们建议使用以下设置来评估对应的VLM:
- 请用
transformers==4.33.0
来运行:Qwen series
,Monkey series
,InternLM-XComposer Series
,mPLUG-Owl2
,OpenFlamingo v2
,IDEFICS series
,VisualGLM
,MMAlaya
,SharedCaptioner
,MiniGPT-4 series
,InstructBLIP series
,PandaGPT
,VXVERSE
,GLM-4v-9B
. - 请用
transformers==4.37.0
来运行:LLaVA series
,ShareGPT4V series
,TransCore-M
,LLaVA (XTuner)
,CogVLM Series
,EMU2 Series
,Yi-VL Series
,MiniCPM-V (v1, v2)
,OmniLMM-12B
,DeepSeek-VL series
,InternVL series
,Cambrian Series
,VILA Series
. - 请用
transformers==4.40.0
来运行:IDEFICS2
,Bunny-Llama3
,MiniCPM-Llama3-V2.5
,360VL-70B
,Phi-3-Vision
,WeMM
. - 请用
transformers==latest
来运行:LLaVA-Next series
,PaliGemma-3B
,Chameleon series
,Video-LLaVA-7B-HF
,Ovis series
.
如何测试一个 VLM 是否可以正常运行:
from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# 前向单张图片
ret = model.generate(['assets/apple.jpg', 'What is in this image?'])
print(ret) # 这张图片上有一个带叶子的红苹果
# 前向多张图片
ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', 'How many apples are there in the provided images? '])
print(ret) # 提供的图片中有两个苹果
请参阅快速开始获取入门指南。
要开发自定义评测数据集,支持其他 VLMs,或为 VLMEvalKit 贡献代码,请参阅开发指南。
为激励来自社区的共享并分享相应的 credit,在下一次 report 更新中,我们将:
- 致谢所有的 contribution
- 具备三个或以上主要贡献 (支持新模型、评测集、或是主要特性) 的贡献者将可以加入技术报告的作者列表 。合条件的贡献者可以创建 issue 或是在 VLMEvalKit Discord Channel 私信 kennyutc,我们将进行跟进
该代码库的设计目标是:
- 提供一个易于使用的开源评估工具包,方便研究人员和开发人员评测现有的多模态大模型,并使评测结果易于复现。
- 使 VLM 开发人员能够轻松地评测自己的模型。在多个支持的基准测试上评估 VLM,只需实现一个
generate_inner()
函数,所有其他工作负载(数据下载、数据预处理、预测推理、度量计算)都由代码库处理。
该代码库的设计目标不是:
复现所有第三方基准测试原始论文中报告的准确数字。有两个相关的原因:
- VLMEvalKit 对所有 VLMs 使用基于生成的评估(可选使用基于 LLM 的答案提取)。同时,一些基准测试可能官方使用不同的方法(例如,SEEDBench 使用基于 PPL 的评估)。对于这些基准测试,我们在相应的结果中比较两个得分。我们鼓励开发人员在代码库中支持其他评估范式。
- 默认情况下,我们对所有多模态模型使用相同的提示模板来评估基准测试。同时,一些多模态模型可能有他们特定的提示模板(目前可能未在代码库中涵盖)。我们鼓励 VLM 的开发人员在 VLMEvalKit 中实现自己的提示模板,如果目前未覆盖。这将有助于提高可复现性。
如果我们的工作对您有所帮助,请考虑 star🌟 VLMEvalKit。感谢支持!
如果您在研究中使用了 VLMEvalKit,或希望参考已发布的开源评估结果,请使用以下 BibTeX 条目以及与您使用的特定 VLM / 基准测试相对应的 BibTex 条目。
@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},
}