VLMEvalKit(Python包名为vlmeval)是一个开源评估工具包,用于大型视觉语言模型(LVLMs)。它支持一键评估LVLMs在各种基准上的表现,无需在多个存储库中进行繁重的数据准备工作。在VLMEvalKit中,我们采用基于生成的评估方法来评估所有LVLMs,并提供通过精确匹配和基于LLM的答案提取获得的评估结果。
🆕 新闻
- [2024-08-09] 我们已支持鸿源视觉,评估结果即将发布🔥🔥🔥
- [2024-08-08] 我们创建了一个HuggingFace数据集:OpenVLMRecords,用于保存所有的评估记录。您可以在这里找到所有评估基准的样本级预测结果🔥🔥🔥
- [2024-08-08] 我们已支持MiniCPM-V 2.6,感谢lihytotoro🔥🔥🔥
- [2024-08-07] 我们支持两个新的多图像理解基准:DUDE和SlideVQA,感谢mayubo2333🔥🔥🔥
- [2024-08-06] 我们支持TaskMeAnything ImageQA-Random Dataset,感谢weikaih04🔥🔥🔥
- [2024-08-05] 我们为AI2D支持了一种新的评估策略,当选择是大写字母时,不遮蔽相应区域,而是用矩形轮廓进行标注。设置数据集名称为
AI2D_TEST_NO_MASK
,即可在此设置下进行评估(排行榜仍使用先前设置)。 - [2024-08-05] 我们已支持Mantis,感谢BrenchCC🔥🔥🔥
- [2024-08-05] 我们已支持Q-Bench和A-Bench,感谢zzc-1998🔥🔥🔥
- [2024-07-29] 我们已支持亦视🔥🔥🔥
- [2024-07-27] VLMEvalKit技术报告已被ACMMM 24'开放源代码接收🔥🔥🔥
📊 数据集、模型及评估结果
我们官方多模态排行榜的性能数据可以从这里下载!
支持的图像理解数据集
- 默认情况下,所有评估结果均在OpenVLM排行榜中展示。
- 缩写:
MCQ
:多选题;Y/N
:是或否问题;MTT
:多轮对话基准;MTI
:以多图像为输入的基准。 | 数据集 | 数据集名称(用于run.py) | 任务 | 数据集 | 数据集名称(用于run.py) | 任务 | | ------------------------------------------------------------ | ------------------------------------------------------ | --------- | --------- | --------- | --------- | | MMBench系列:
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系列 | 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 | | | |
* 我们只提供部分评估结果,因为一些VLMs在零样本设置下未能得出合理结果
+ 评估结果尚不可用
- VLMEvalKit仅支持推理
VLMEvalKit将使用judge LLM从输出中提取答案,如果您设置了键,否则它将使用精确匹配模式(在输出字符串中找到“是”,“否”,“A”,“B”,“C”等)。精确匹配仅适用于是或否任务和多项选择题任务。
支持的视频理解数据集
数据集 | 数据集名称(用于run.py) | 任务 | 数据集 | 数据集名称(用于run.py) | 任务 |
---|---|---|---|---|---|
MMBench-Video | MMBench-Video | VQA | Video-MME | Video-MME | MCQ |
支持的API模型
支持的PyTorch / HF模型 <SOURCE_TEXT>
🎞️: 支持多图像输入。
🚅: 模型无需任何额外配置/操作即可使用。
🎬: 支持视频输入。
Transformers版本推荐:
注意,有些VLM在某些transformers版本下可能无法运行,我们推荐以下配置来评估每个VLM:
- 请使用
transformers==4.33.0
来评估:Qwen系列
,Monkey系列
,InternLM-XComposer 系列
,mPLUG-Owl2
,OpenFlamingo v2
,IDEFICS系列
,VisualGLM
,MMAlaya
,ShareCaptioner
,MiniGPT-4系列
,InstructBLIP系列
,PandaGPT
,VXVERSE
,GLM-4v-9B
. - 请使用
transformers==4.37.0
来评估:LLaVA系列
,ShareGPT4V系列
,TransCore-M
,LLaVA (XTuner)
,CogVLM 系列
,EMU2 系列
,Yi-VL 系列
,MiniCPM-[V1/V2]
,OmniLMM-12B
,DeepSeek-VL 系列
,InternVL 系列
,Cambrian 系列
,VILA 系列
. - 请使用
transformers==4.40.0
来评估:IDEFICS2
,Bunny-Llama3
,MiniCPM-Llama3-V2.5
,360VL-70B
,Phi-3-Vision
,WeMM
. - 请使用
transformers==latest
来评估:LLaVA-Next 系列
,PaliGemma-3B
,Chameleon 系列
,Video-LLaVA-7B-HF
,Ovis 系列
,Mantis 系列
,MiniCPM-V2.6
.
# Demo
from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# 单图像输入
ret = model.generate(['assets/apple.jpg', '这张图片显示了什么?'])
print(ret) # 图片中有一个带有叶子的红苹果。
# 多图像输入
ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', '提交的这些图片中有多少个苹果?'])
print(ret) # 提交的这些图片中有两个苹果。
🏗️ 快速开始
🛠️ 开发指南
要开发自定义基准、VLM,或只是贡献其他代码到VLMEvalKit,请参阅[开发指南 | 开发指南]。
征集贡献
为了促进社区的贡献并分享相应的荣誉(将在下次报告更新时):
- 所有贡献将在报告中被认可。
- 有3次或以上重大贡献(实现MLLM,基准测试或主要功能)的贡献者将可以加入VLMEvalKit技术报告的作者名单。合资格的贡献者可以在VLMEvalKit Discord Channel上创建一个问题或私信 kennyutc。
🎯 VLMEvalKit 的目标
此代码库的设计目的是:
- 提供一个易于使用,开源的评估工具包,使研究人员和开发人员可以方便地评估现有的LVLM,并使评估结果易于复制。
- 使VLM开发人员可以轻松评估自己的模型。为了在多个支持的基准上评估VLM,只需要实现一个单一的
generate_inner()
函数,所有其他工作(数据下载,数据预处理,预测推理,指标计算)都由代码库处理。
此代码库的设计目的不是: </SOURCE_TEXT>
- 重现所有第三方基准测试中原始论文报告的准确性数值。原因有两个:
- VLMEvalKit 对所有VLM使用基于生成的评估(可选择性地使用基于LLM的答案提取)。同时,一些基准测试可能使用不同的方法(例如,SEEDBench使用基于PPL的评估)。对于这些基准测试,我们在相应的结果中比较这两个分数。我们鼓励开发者在代码库中支持其他评估范式。
- 默认情况下,我们使用相同的提示模板对所有VLM在某个基准测试上进行评估。同时,一些VLM可能有它们特定的提示模板(一些可能目前未被代码库覆盖)。我们鼓励VLM开发者在VLMEvalKit中实现他们自己的提示模板,如果当前未被覆盖。这将有助于提高可重复性。
🖊️ 引用
如果你觉得这项工作有帮助,请考虑star🌟这个仓库。感谢你的支持!
如果你在研究中使用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},
}