MMBench
"MMBench: 你的多模态模型是全能选手吗?"的官方仓库
🔥 注意
MMBench 由 OpenCompass 社区 开发,欢迎关注 OpenCompass 获取更多最新的大模型评估技术。
下载:MMBench 是一系列用于评估大型视觉语言模型(LVLMs)多模态理解能力的基准测试集合。下表列出了 MMBench 包含的所有基准测试的信息及其下载链接。
"下载链接(VLMEvalKit)"和"下载链接(传统)"的区别:"下载链接(VLMEvalKit)"是我们官方评估框架 VLMEvalKit 使用的数据格式,它通过在循环评估的不同轮次中只保留图像的一个副本来减小文件大小。而"下载链接(传统)"为 N 选项的循环评估保留 N 个图像副本。这两个版本的其他内容完全相同。
对于不使用 VLMEvalKit 进行评估的之前的用户,请从"下载链接(传统)"下载!
名称 | 分割 | 语言 | 问题数量 | 说明 | 下载链接(VLMEvalKit) | 下载链接(传统) |
---|---|---|---|---|---|---|
MMBench-Dev | 开发 | 英文 | 1164 | MMBench 的开发集 | 下载 | 下载 |
MMBench-Test | 测试 | 英文 | 1784 | MMBench 的测试集 | 下载 | 下载 |
MMBench-Dev (cn) | 开发 | 中文 | 1164 | MMBench-Dev 的中文版 | 下载 | 下载 |
MMBench-Test (cn) | 测试 | 中文 | 1784 | MMBench-Test 的中文版 | 下载 | 下载 |
CCBench | 开发 | 中文 | 510 | 一个关于中国文化相关的基准测试 | 下载 | 下载 |
可视化:您可以在 可视化 中查看 MMBench 基准测试的数据样本。
评估:您可以使用 VLMEvalKit(我们用于 MMBench 排行榜的官方代码)来评估您的 VLM 在 MMBench 基准测试上的表现。要提交您对 MMBench 测试集的预测结果,您可以访问 MMBench 提交。
新闻
- [2023/12/26] 我们更新了 CCBench,并移除了有噪声的测试样本,新版本可以在这里下载 下载。排行榜已相应更新。
- [2023/12/10] 我们提供了一个多模态评估工具包 VLMEvalKit,支持在 MMBench 和许多其他多模态基准测试上评估 VLM。
- [2023/10/23] 我们提供了一个名为 CCBench 的新基准测试,这是一个关于中国文化领域的多模态基准测试。
- [2023/10/03] 我们提供了一个经过验证的 MMBench 中文翻译版本。用户可以使用它来验证其 VLM 的中文能力。我们在下图中提供了一个说明。
关于 MMBench
近年来,视觉-语言(VL)模型的发展迅速,如 MiniGPT-4 和 LLaVA 等模型在处理以前具有挑战性的任务时展现出了令人瞩目的性能。然而,如何有效评估这些模型的性能已成为阻碍大型 VL 模型进一步发展的主要挑战。传统的基准测试如 VQAv2 和 COCO Caption 被广泛用于对 VL 模型进行定量评估,但存在几个缺点:
数据集构建:传统基准测试倾向于根据模型在各种任务(如图像描述和视觉问答)中的表现来评估模型。遗憾的是,这些任务无法完全捕捉模型所具备的细粒度能力,可能会阻碍未来的优化工作。
评估指标:现有的评估指标缺乏稳健性。例如,VQAv2 针对单个词或短语,而许多当前的 VL 模型生成句子作为输出。尽管这些句子可能正确回答了相应的问题,但由于无法精确匹配给定的答案,现有的评估指标会给出失败的分数。此外,最近提出的主观评估指标,如 mPLUG-Owl 中使用的指标,为 VL 模型提供了全面的评估。然而,由于评估需要大量人力,这些指标难以平稳扩展。另外,这些评估具有高度偏差性,难以复现。
为了解决这些局限性,我们提出了一种新方法,定义了一组细粒度能力并收集了与每种能力相关的问题。我们还引入了创新的评估策略,以确保对模型预测进行更稳健的评估。这个新的基准测试称为 MMBench,具有以下特点:
数据收集:到目前为止,我们已收集了约 3000 个问题,涵盖 20 个能力维度。每个问题都是单选题格式,只有一个正确答案。
评估:为了更可靠的评估,我们使用 ChatGPT 将模型的预测与问题的选项匹配,然后输出相应的标签(A、B、C、D)作为最终预测。
数据集
MMBench 从多个来源收集,包括公开数据集和互联网,目前包含 2974 个多选题,涵盖 20 个能力维度。我们将现有的 20 个能力维度构建成 3 个能力维度层级,从 L-1 到 L-3。我们在我们的能力分类中将感知和推理作为顶级能力维度,称为 L-1 能力维度。对于 L-2 能力,我们从 L-1 感知中衍生出:1. 粗糙感知,2. 细粒度单实例感知,3. 细粒度跨实例感知;从 L-1 推理中衍生出:1. 属性推理,2. 关系推理,3. 逻辑推理。为了使我们的基准测试尽可能细粒度,以便为多模态模型的开发提供有信息的反馈,我们进一步从 L-2 能力维度衍生出 L-3 能力维度。据我们所知,MMBench 是第一个涵盖如此多能力维度的大规模多模态评估数据集。
与之前的数据集相比,MMBench 具有以下优势:
与之前的公开客观数据集相比:MMBench 不是评估 VL 模型在特定任务上的表现,而是评估一组细粒度能力。这使我们能够在更细粒度的层面上评估模型的表现,并为模型开发提供更有信息的反馈。
与之前的主观数据集相比:MMBench 是一个客观数据集,评估结果较少偏差。此外,MMBench 上的结果保证可重现,这在主观数据集中是无法做到的。
评估
在 MMBench 中,我们提出了一种新的评估协议,以较低的成本产生稳健的评估结果。我们使用循环评估策略来测试视觉语言模型是否能成功解决每个单独的问题。这种策略比普通的评估策略产生更可靠的结果。为了处理 VLM 的自由文本输出,我们提出使用基于 LLM 的选项提取器将自由文本转换为特定选项(A、B、C 等)。
循环评估策略:为了呈现更稳健的评估结果并减轻噪声的负面影响,我们提出了一种新的评估协议,称为循环评估,用于测试视觉语言模型是否能一致地成功解决每个单独的问题。具体来说,对于一个有 N 个选项的单选题,我们用 VLM 推理 N 次。在每次推理中,我们对选项和相应的答案进行循环移位,为 VLM 推理生成一个新的提示(如下图所示)。在循环评估中,只有当 VLM 在所有 N 次推理中都成功时,我们才认为 VLM 成功解决了这个问题。循环评估设置比传统的单次评估更具挑战性。对于大多数现有的 VLM,应用循环评估策略后,Top-1 准确率通常会下降 10% 到 20%。
如何使用?
请使用我们的官方评估工具包VLMEvalKit进行MMBench评估。这里我们展示了一些用于加载和浏览MMBench的脚本(你需要先安装VLMEvalKit)。
from vlmeval.utils import TSVDataset
from vlmeval.smp import mmqa_display
# 加载MMBench_DEV_EN
dataset = TSVDataset('MMBench_DEV_EN')
# 可视化数据集中的样本(通过索引)
dataset.display(0)
"""
输出将会是:
<image>
问题。确定Madelyn和Tucker的实验最能回答哪个问题。
提示。下面的段落描述了一个实验。阅读段落,然后按照以下指示进行。
Madelyn在她的滑雪板底部涂了一层薄薄的蜡,然后直接滑下山坡。然后,她去掉蜡,再次直接滑下山坡。她又重复了四次滑行,交替使用涂有薄层蜡的滑雪板和没有蜡的滑雪板。她的朋友Tucker为每次滑行计时。Madelyn和Tucker计算了涂蜡的滑雪板与未涂蜡的滑雪板直接滑下山坡的平均时间。
图:在山坡上滑雪。
A. 当Madelyn的滑雪板涂有薄层蜡还是厚层蜡时,它滑下山坡的时间更短?
B. 当Madelyn的滑雪板涂有一层蜡还是没有涂蜡时,它滑下山坡的时间更短?
答案。B
类别。身份推理
来源。scienceqa
二级类别。属性推理
分割。开发集
"""
# 为数据集中的样本构建多模态提示(通过索引)
item = dataset.build_prompt(0)
print(item)
"""
输出将会是:
[
{'type': 'image', 'value': '/root/LMUData/images/MMBench/241.jpg'}, # 图像将自动保存在~/LMUData/下
{'type': 'text', 'value': "提示:下面的段落描述了一个实验。阅读段落,然后按照以下指示进行。\n\nMadelyn在她的滑雪板底部涂了一层薄薄的蜡,然后直接滑下山坡。然后,她去掉蜡,再次直接滑下山坡。她又重复了四次滑行,交替使用涂有薄层蜡的滑雪板和没有蜡的滑雪板。她的朋友Tucker为每次滑行计时。Madelyn和Tucker计算了涂蜡的滑雪板与未涂蜡的滑雪板直接滑下山坡的平均时间。\n图:在山坡上滑雪。\n问题:确定Madelyn和Tucker的实验最能回答哪个问题。\n选项:\nA. 当Madelyn的滑雪板涂有薄层蜡还是厚层蜡时,它滑下山坡的时间更短?\nB. 当Madelyn的滑雪板涂有一层蜡还是没有涂蜡时,它滑下山坡的时间更短?\n请从以上选项中选择正确答案。\n"}
]
"""
进行推理:
# 以llava_v1.5_7b为例
# 要评估你自己的模型,请将`llava_v1.5_7b`替换为你实现的模型名称
python run.py --model llava_v1.5_7b --data MMBench_TEST_EN --mode infer
该命令将输出一个Excel文件:{model_name}/{model_name}_{dataset_name}.xlsx
。对于MMBench-TEST-CN/EN,你可以将文件提交到https://mmbench.opencompass.org.cn/mmbench-submission 以获得评估准确率。
引用
@article{MMBench,
author = {Yuan Liu, Haodong Duan, Yuanhan Zhang, Bo Li, Songyang Zhang, Wangbo Zhao, Yike Yuan, Jiaqi Wang, Conghui He, Ziwei Liu, Kai Chen, Dahua Lin},
journal = {arXiv:2307.06281},
title = {MMBench: Is Your Multi-modal Model an All-around Player?},
year = {2023},
}