阿里出品!3B多模态图表理解大模型TinyChart达到新SOTA

阿里出品!3B多模态图表理解大模型TinyChart达到新SOTA
青稞作者:Anwen Hu,人大博士毕业生,阿里巴巴通义实验室高级算法工程师
声明:原文已经授权,版权归原作者!
原文:https://zhuanlan.zhihu.com/p/696540858
作为一种重要的信息来源,图表(Chart)能够直观地展示数据关系,被广泛地应用于信息传播、商业预测和学术研究中 [1]。
随着互联网数据的激增,自动化图表理解受到广泛关注,近期诸如GPT-4V、QwenVL-Max和Gemini-Ultra等通用闭源多模态大模型都展现出一定的图表理解能力,开源模型Chartllama [2]、ChartAst [3]等也在图表问题回答、图表总结和图表转换等任务上取得强大的性能。
然而,目前开源的图表理解模型有以下三个局限:
- 模型参数规模庞大,难以部署到应用中。例如Chartllama包含13B参数,无法直接部署到单张小于26 GB显存的消费级显卡上 [4]。
- 模型容易出现数值错误,尤其是回答涉及数值计算的问题时 [3]。
- 模型无法高效处理高清图片,而许多关键信息(比如OCR文本)往往需要在较高分辨率下才清晰可见。并且,考虑到标准视觉Transformer会产生较长的视觉特征序列,直接提高输入分辨率又会带来计算效率问题。

针对以上三个问题,中国人民大学与阿里巴巴通义实验室mPLUG团队推出多模态图表理解模型TinyChart,仅通过3B参数达到多模态图表问答的SOTA水平(ChartQA: 83.6 > Gemin-Ultra 80.8 > GPT4V 78.5),并展示推理速度的优势,同时具备图表总结、图表转换和图表重绘等能力。相关代码已开源。
1 | paper:TinyChart: Efficient Chart Understanding with Visual Token Merging and Program-of-Thoughts Learning |
针对数值计算问题,TinyChart采用程序思维链学习,能够生成Python程序进行计算,显著减少计算错误。而对于高清图片处理问题,考虑到图表通常包含大片的色块和空白区域,TinyChart引入视觉特征融合模块,将相似的区域融合到一起,从而有效降低了视觉特征序列长度。
TinyChart结构
如图2所示,TinyChart采用一种常见的多模态大模型(MLLM)结构,由基于ViT的视觉编码器、基于MLP的图文连接模块和大语言模型组成。不同的是,为了高效编码高清图片,TinyChart在视觉编码器的每一层中插入视觉特征融合模块(Visual Token Merging)[5]。

图3详细展示了视觉特征融合模块。它位于每层transformer的self attention和FFN之间,通过融合相似视觉特征的方式降低高分辨率图片特征的序列长度。图3(b)展示了融合过程。
首先将视觉特征对应的token分成两个互不相交的两个集合,对于其中一个集合中的每个token,从另一个集合中找到与他最相似的token并连边。然后,保留相似度最高的条边。最后,将有边相连的视觉特征进行平均融合。这个过程能够以较快的速度找到相似的视觉token并进行特征融合 [5]。通过视觉特征融合,视觉序列在经过每一层处理后长度降低 r ,最终的序列长度降低 Nxr ,其中 N 为ViT的层数。

程序思维链学习
TinyChart加入程序思维链方式进行训练。在进行推理时,对计算类问题可先生成Python程序,再交给Python解释器执行得到最终答案。而训练这项能力需要图片-问题-Python程序这样的数据支撑。为此,我们构建了ChartQA-PoT数据集。如图4所示,该数据集基于ChartQA [6]的图表图片,通过以下两种方式构建问题-Python程序对:
- (1)基于模版的方式:构建包含placeholder的问题模版的程序模版,给定特定的图表数据,填入模版中的placeholder。
- (2)基于GPT的方式:使用gpt-3.5-turbo,为ChartQA中人工标注的问题生成Python解答,并通过运行Python解释器验证答案的正确性(与标准答案进行比对)。我们将图表对应的表格数据提供给gpt-3.5-turbo,并给出相关的in-context样例促使LLM生成风格相似Python程序。

实验结果
表1展示了TinyChart在包含图表问答、总结和图表转换等多项评测基准上的性能。只有3B参数的TinyChart在这些基准上达到了最佳性能,其中在ChartQA上甚至超过了GPT-4V、Gemini-Ultra、Qwen-VL-Max等多个闭源多模态大模型,这得益于高效的程序思维链和高分辨率视觉图片处理方法。由于较小的模型规模,TinyChart在推理时的吞吐量也远高于包含ChartLlama、ChartAst等更大规模的开源模型。

从样例中也能够看出,TinyChart能够正确理解图表内容,并完成问题回答、图表总结、图表转换和图表重绘等任务。




总结
TinyChart是一个具有3B参数量的多模态图表理解大模型,通过程序思维链学习和视觉特征融合模块,它在图表问题回答、图表总结生成、图表转换、图表重绘等多项图表理解任务上达到最佳性能,在推理速度上有明显优势,并可以通过生成Python程序解决计算问题。不过,我们发现TinyChart在生成过程中仍然存在幻觉问题,并且目前不支持中文图表理解。团队会进一步对TinyChart进行优化,欢迎大家持续关注和友好讨论!
参考文献
1 | [1] Kung-Hsiang Huang, Hou Pong Chan, Yi R. Fung, Haoyi Qiu, Mingyang Zhou, Shafiq Joty, Shih-Fu Chang, and Heng Ji. 2024. From Pixels to Insights: A Survey on Automatic Chart Understanding in the Era of Large Foundation Models. arXiv preprint. arXiv:2403.12027. |