Plot2Code:评估多模态大型语言模型在科学图像生成代码方面的综合基准 多模态大型语言模型(MLLMs)在视觉上下文中表现出卓越的性能,引起了广泛关注。然而,它们将视觉图像转换为可执行代码的能力尚未得到彻底评估。 为了解决这个问题,作者推出了Plot2Code,这是一个旨在公平深入评估MLLMs的全面视觉编码基准。作者从公开可用的matplotlib图库中精心挑选了132个高质量的手工选择matplotlib图像,涵盖六种图像类型。对于每个图像,作者仔细提供了其源代码,以及由GPT-4总结的描述性指令。 这种方法使得Plot2Code能够广泛评估MLLMs在多种输入模态下的编码能力。此外,作者提出了三种自动评估指标,包括代码通过率、文本匹配比率和GPT-4V总体评分,以对输出代码和渲染图像进行细致的评估。 作者不是简单判断通过或失败,而是使用GPT-4V对生成图像和参考图像进行总体判断,这已被证明与人工评估一致。评估结果包括了14个MLLMs的分析,如专有的GPT-4V、Gemini-Pro和开源的Mini-Gemini,突显了Plot2Code所呈现的巨大挑战。 通过Plot2Code,作者发现大多数现有的MLLMs在处理文本密集型图像的视觉编码方面存在困难,过度依赖文本指令。作者希望Plot2Code在视觉编码方面的评估结果能够指导MLLMs未来的发展。所有与Plot2Code相关的数据均可在https://huggingface.co/datasets/TencentARC/Plot2Code获取。
在大数据和计算能力显著进步的背景下,大型语言模型(LLM),例如ChatGPT [27]和GPT-4 [28],在商业和学术领域都成为了关注的焦点。为了在各种情境中扩展它们的灵活性,多模态大型语言模型(MLLM)[8; 23; 29]迅速发展,最新的模型如GPT-4V [29],Gemini [9],Claude-3 [1],以及开源模型LLaVA [21; 22],Mini-GPT [44; 5]等等[8; 7]。同时,各种各样的评估基准[17; 16; 41; 39]被策划出来,以评估它们在不同领域内的视觉理解性能。然而,对于文本密集图像中的图表的关注仍然存在明显的不足,这对于评估MLLM的多模态推理能力至关重要[24; 25]。
遵循理查德·费曼的理念,“我不能创造的东西,我就不理解”,评估MLLM生成能够有效渲染所提供图像的代码的能力,进一步展示了它们的多模态理解和推理实力。这一挑战要求MLLM准确解释输入图表中的视觉元素,与所提供的文本上下文相关联,并最终推导出可执行的代码来生成图表。
尽管近年来从单模态自然语言生成代码的发展经历了快速进步[30; 10; 37],但使用多模态输入进行代码生成的探索仍然是一个活跃的研究领域。以前的工作,例如HumanEval [6]和MBPP [2],主要集中在单模态代码问题上,而最近Design2Code [31]已经将范围扩展到包括用户界面(UI)设计,特别是HTML文件,用于评估MLLM。然而,这些研究关注的是单模态场景(例如,仅文本[6; 2]或仅图像[31]输入),在评估具有多模态输入的模型时能力有限。
为此,作者的工作强调了在评估MLLM的编程能力时,解决三个关键挑战的重要性和动机:
图1:Plot2Code概述。左:(a)来自作者Plot2Code数据集中的原始图表样本。(b)使用参考图像由多模态LLM生成的图表样本。右:(c)用于评估多模态LLM代码生成能力的综合 Pipeline 。作者考虑两种不同的设置:直接询问和条件询问。
作者在各种评估设置下评估了14个公开可用的MLLMs,以确定最佳性能。作者的研究结果表明,Plot2Code提出了重大挑战,GPT-4V仅达到7.68/10的总体评分,表明在视觉编码任务中有很大的提升空间。
本研究的主要贡献如下:
作者预计Plot2Code将激发研究社区进一步探索和推进MLLMs领域的边界,推动作者朝向真正智能的多模态系统的实现。
随着大型语言模型(LLMs)取得的显著进展,将多模态输入信号整合到基础LLMs中已经引起了学术界和工业界的广泛关注。多模态LLM研究的主要焦点是开发附加编码器,以使基础LLMs能够兼容并处理多模态输入。
为了增强实际应用,一些研究专注于使用高分辨率视觉编码器处理文本密集型图像,如文档和图表。作者的目标是通过对MLLMs及其潜能进行彻底和全面的调查,评估它们从参考图表生成代码的能力,展示它们在视觉编码方面的专业技能。
基于LLM模型的日益成熟,一类专门的模型子集,称为代码LLM [30; 19; 10],已经出现。这些模型专门关注编程代码,提供了许多吸引人的应用,如代码补全和填充。代码任务有效地反映了(多)LLM的深入推理能力。
单模态代码基准测试,如HumanEval和MBPP [6; 2],使用单轮单元测试并通过Pass@k指标测试生成的代码。近来,LLM代理在更复杂的多次交互式代码设置中进行了评估 [35; 38]。
扩展到单模态环境之外,MMCode [18] 将图像输入整合到代码任务中,而Design2Code [31] 通过CLIP分数和HTML块评估MLLM生成的HTML文件。
作者的工作提出了一个全面的基准测试Plot2Code,它支持广泛的评估场景,并容纳单模态和多模态输入。这些指标包括基于文本的度量,如代码通过率和生成的剧情相似度,作为评估MLLM深入理解和推理能力的全面评价套件。
有关与相关基准测试的详细比较,请参见表2。
在本节中,作者描述了整理和处理作者基准数据的过程。最初,作者抓取了matplotlib画廊中枚举的每个网站链接。随后,作者从每个相应的HTML文件中提取代码块。这个过程总共产生了841个独特的代码块,这些代码块在后续章节中进行进一步的筛选和处理。
主要目标是获取结构良好的绘图代码对,有效评估MLLM的代码生成能力。需要注意的是,最初抓取的Python代码并不总是适合生成用于评估的高质量绘图。为了解决这个问题,作者采用自动处理和手动筛选相结合的方法,如下所述。
生成筛选在分析过程中,作者观察到单个HTML文件可能包含多个代码段,有些段由于专注于导入行和初始化函数而无法生成绘图。为了克服这一限制,作者专门从包含单个代码块的HTML文件中提取代码。这确保了提取的代码包含所有基本组件,并且不需要额外的依赖就能生成绘图。然后作者筛选掉所有不能生成绘图的代码,获得了529个绘图代码对。
类型筛选作者的分析基于这样一个假设:绘图是简单、静态的图形,不包含动画和交互。因此,每个绘图都可以被视为由matplotlib引擎渲染的图像文件。为了保持这种简单性,作者筛选掉了与特定标签相关的绘图,如动画、小部件和事件处理,这些标签可以在它们对应的URL中找到。关于作者数据集中的绘图代码对类型的详细分解见图3。
手动整理在上述处理之后,作者进行最后一轮手动整理,根据以下标准筛选示例:
在手动筛选过程中,作者采取了更为严格的方法,只保留高质量的绘图。最终,作者获得了132个测试示例,作为作者的基准。
作者对在前一步骤中精心准备的测试集在两种不同的评估场景下进行了评估:直接提问和条件提问。为了方便从MLLM生成的回应中提取代码,作者要求代码被包含在特定的标记之间,这样就可以使用正则表达式进行提取。
直接提问在这种设置中,意味着给MLLM一个图像作为输入,并要求它生成可执行的代码,以产生与输入图像相近的图表。具体的提示可以在A.1中找到。图7展示了这种情况下的一个例子。
条件提问对于MLLM来说,这种设置意味着接收一个图像和条件(文本指令)作为输入,并生成可执行的代码,以产生符合指定条件的结果。对于LLM,输入只包括条件,其他要求与MLLM的要求一致。作者使用GPT-4从 GT 代码中提取这些指令,指示它保留所有复现所需的基本信息,同时避免暴露代码实现细节。用于构建这些指令的提示可以在附录A.2中找到。图8展示了这种情况下的一个例子。
关键统计数据为了评估测试示例的难度 Level ,作者在表1中展示了一些统计数据。作者枚举了测试样本中存在的子图总数,因为单个图表可能包含多个子图。总共有293个子图(最小=1,最大=18)。
作者使用LLaMA-2分词器[33]对抓取的代码文件进行分词。 GT 代码平均有409个标记,标准差为291。此外,作者对伴随测试样本的说明进行分词,得到平均242个标记和标准差为58。
使用PaddleOCR2,作者计算每个图表的文本数量,平均为23,标准差为13。总的来说,这些指标表明作者的基准示例确实具有挑战性,并涵盖了科学图表中发现的广泛复杂性。