Skip to content

Latest commit

 

History

History
196 lines (146 loc) · 22.1 KB

README_zh-CN.md

File metadata and controls

196 lines (146 loc) · 22.1 KB

VLMEvalKit (python 包名为 vlmeval) 是一款专为大型视觉语言模型 (Large Vision-Language Models, LVLMs) 评测而设计的开源工具包。该工具支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,让评估过程更加简便。在 VLMEvalKit 中,我们对所有大型视觉语言模型生成的结果进行评测,并提供基于精确匹配与基于 LLM 的答案提取两种评测结果。

🆕 更新

  • [2024-08-29] 支持了 PLLaVA 这一视频理解大模型系列(包含7B/13B/34B)🔥🔥🔥
  • [2024-08-29] 支持了 GMAI-MMBench, 感谢 TousenKaname。参考: GPT-4o-MINI 达到 42.2% 的平均准确率 🔥🔥🔥
  • [2024-08-29] 支持了 MUIRBench, 感谢 amitbcp。参考: GPT-4o-MINI 达到 64.6% 的平均准确率 🔥🔥🔥
  • [2024-08-28] 支持了 VideoChat2-HD 🔥🔥🔥
  • [2024-08-25] 支持了 MVBench 评测集的 视频 版本 🔥🔥🔥
  • [2024-08-25] 支持了 Video-ChatGPT, Chat-UniViLLaMA-VID 三个视频理解大模型, 感谢 Xiangyu Zhao🔥🔥🔥
  • [2024-08-20] 优化了 MMMB 和 Multilingual MMBench 的测试流程, 现在你可以使用数据集名 MMMBMTL_MMBench_DEV 一次性得到 6 种语言上的评测结果
  • [2024-08-19] 支持了 Llama-3-MixSenseV1_1, 感谢 Zero-Vision 🔥🔥🔥
  • [2024-08-12] 支持了 MMMB 和 Multilingual MMBench, 感谢 Hai-Long Sun🔥🔥🔥
  • [2024-08-09] 支持了 Hunyuan-Vision,评测结果将很快更新🔥🔥🔥
  • [2024-08-08] 创建了 HuggingFace 数据集 OpenVLMRecords 用以维护全部原始评测记录。这个仓库提供了题目级的所有原始模型回答🔥🔥🔥

📊 评测结果,支持的数据集和模型

评测结果

OpenVLM Leaderboard: 下载全部细粒度测试结果

支持的图文多模态评测集

  • 默认情况下,我们在 OpenVLM Leaderboard 提供全部测试结果
  • 使用的缩写:MCQ: 单项选择题; Y/N: 正误判断题; MTT: 多轮对话评测; MTI: 多图输入评测
数据集 数据集名称 (用于 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
MCQ MMStar MMStar MCQ
MME MME 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/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 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 (MTI) MCQ 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

* 我们只提供了部分模型上的测试结果,剩余模型无法在 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
MVBench MVBench/MVBench_MP4 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🎞️🚅 Hunyuan-Vision🎞️🚅

基于 PyTorch / HF 的开源模型

IDEFICS-[9B/80B/v2-8B/v3-8B]-Instruct🚅🎞️ InstructBLIP-[7B/13B] LLaVA-[v1-7B/v1.5-7B/v1.5-13B] MiniGPT-4-[v1-7B/v1-13B/v2-7B]
mPLUG-Owl2🎞️ OpenFlamingo-v2🎞️ PandaGPT-13B Qwen-VL🚅🎞️ , Qwen-VL-Chat🚅🎞️
VisualGLM-6B🚅 InternLM-XComposer-[1/2]🚅 ShareGPT4V-[7B/13B]🚅 TransCore-M
LLaVA (XTuner)🚅 CogVLM-[Chat/Llama3]🚅 ShareCaptioner🚅 CogVLM-Grounding-Generalist🚅
Monkey🚅, Monkey-Chat🚅 EMU2-Chat🚅🎞️ Yi-VL-[6B/34B] MMAlaya🚅
InternLM-XComposer-2.5🚅🎞️ MiniCPM-[V1/V2/V2.5/V2.6]🚅🎞️ OmniLMM-12B InternVL-Chat-[V1-1/V1-2/V1-5/V2]🚅🎞️,
Mini-InternVL-Chat-[2B/4B]-V1-5🚅🎞️
DeepSeek-VL🎞️ LLaVA-NeXT🚅🎞️ Bunny-Llama3🚅 XVERSE-V-13B
PaliGemma-3B 🚅 360VL-70B 🚅 Phi-3-Vision/Phi-3.5-Vision🚅 WeMM🚅
GLM-4v-9B 🚅 Cambrian-[8B/13B/34B] LLaVA-Next-[Qwen-32B] 🎞️ Chameleon-[7B/30B]🚅🎞️
Video-LLaVA-7B-[HF] 🎬 VILA1.5-[3B/8B/13B/40B]🎞️ Ovis1.5-[Llama3-8B/Gemma2-9B] 🚅🎞️ Mantis-8B-[siglip-llama3/clip-llama3/Idefics2/Fuyu] 🎞️
Llama-3-MixSenseV1_1🚅 Parrot-7B 🚅 OmChat-v2.0-13B-sinlge-beta 🚅 Video-ChatGPT 🎬
Chat-UniVi 🎬 LLaMA-VID-7B 🎬 VideoChat2-HD 🎬 PLLaVA-[7B/13B/34B] 🎬

🎞️ 表示支持多图片输入。

🚅 表示模型可以被直接使用,不需任何额外的配置。

🎬 表示支持视频输入。

其他

Transformers 的版本推荐:

请注意,某些 VLM 可能无法在某些特定的 transformers 版本下运行,我们建议使用以下设置来评估对应的VLM:

  • 请用 transformers==4.33.0 来运行: 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.37.0 来运行: 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 来运行: 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, Mantis series, MiniCPM-V2.6, OmChat-v2.0-13B-sinlge-beta, Idefics-3, GLM-4v-9B, VideoChat2-HD.

如何测试一个 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,我们将进行跟进

🎯 VLMEvalKit 的目标

该代码库的设计目标是:

  1. 提供一个易于使用开源评估工具包,方便研究人员和开发人员评测现有的多模态大模型,并使评测结果易于复现
  2. 使 VLM 开发人员能够轻松地评测自己的模型。在多个支持的基准测试上评估 VLM,只需实现一个 generate_inner() 函数,所有其他工作负载(数据下载、数据预处理、预测推理、度量计算)都由代码库处理。

该代码库的设计目标不是:

复现所有第三方基准测试原始论文中报告的准确数字。有两个相关的原因:

  1. VLMEvalKit 对所有 VLMs 使用基于生成的评估(可选使用基于 LLM 的答案提取)。同时,一些基准测试可能官方使用不同的方法(例如,SEEDBench 使用基于 PPL 的评估)。对于这些基准测试,我们在相应的结果中比较两个得分。我们鼓励开发人员在代码库中支持其他评估范式。
  2. 默认情况下,我们对所有多模态模型使用相同的提示模板来评估基准测试。同时,一些多模态模型可能有他们特定的提示模板(目前可能未在代码库中涵盖)。我们鼓励 VLM 的开发人员在 VLMEvalKit 中实现自己的提示模板,如果目前未覆盖。这将有助于提高可复现性。

🖊️ 引用

如果我们的工作对您有所帮助,请考虑 star🌟 VLMEvalKit。感谢支持!

Stargazers repo roster for @open-compass/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},
}

🔝回到顶部