【LLM多模态】多模态LLM在图表处理的应用

note

在真实场景下,我们进行测试,多模态大模型在处理显著文本时表现尚可,但在处理细粒度文本时往往效果并不太好,why?

​具体原因如下:

首先,视觉编码器的分辨率对于多模态大模型的性能影响较大,由于视觉信息往往包含大量的细节和复杂性,因此需要高分辨率的编码器来捕捉这些细节。但是,高分辨率编码器的计算成本也相应较高,这会限制模型的训练速度和效率。

其次,现有的模型主要依赖于大规模的预训练数据集进行训练,而这些数据集往往只包含一些大规模常规或者合成的图像和文本,比如论文arxiv。因此,这些模型可能无法很好地处理一些细粒度文本,因为它们没有在训练数据集中见过这些类型的文本。

最后,多模态模型主要关注图像和文本之间的跨模态对应关系,因此可能忽略了文本内部的一些细粒度信息。当然,正因为这些问题,多模态也存在所有大模型容易出现的问题,也就是幻觉问题,喜欢出现多字、少字甚至胡说八道的问题。

文章目录

  • note
  • 零、多模态LLM用于文档识别的可行性
  • 一、RAG中图像的处理
  • 二、RAG中表格的处理
  • 三、微调文档图表理解LLM
    • 1. 图表-数据对构造
      • (1)mPLUG-DocOwl 1.5
      • (2)OneChart中的数据工程
      • (3)ChartAssisstant的图表数据生成
    • 2. 微调图表理解-多模态LLM
  • Reference

零、多模态LLM用于文档识别的可行性

在这里插入图片描述

如果是简单图表,使用OCR就能解决。如果是复杂图表,有几个难点,比如:假如图表中,不给出每个点的数值,只有x-y轴的刻度,以及每个点在这个刻度中的视觉坐标,就能估算出来其准确数值么?如果有,那么其就具备了从像素点到刻度值之间的复杂计算逻辑的能力,但这个估计会很难。

hard case1:
在这里插入图片描述
hard case2:给定一个饼图,不标注出比例,大模型是否可以补全?其涉及到每块区域角度的划分问题。下图希望根据已知的36%,多模态LLM是否可以根据对应区块与该区块大小的比例算出数值,并且保证整个比例图和为1?
在这里插入图片描述

像GPT-4V、GeminiPro、Qwen1.5-72B、Yi-VL-34B以及LLaVA-Next-34B等大模型,不管是闭源还是开源,语言模型还是多模态,可以只根据在多模态基准MMMU测试中的问题和选项文本,就能获得不错的成绩。
这其实也很自然,因为图片本身就是对语言的一种补充,图中所呈现的信息,通常都会有别处用文本进行了阐述,而多模态大模型M通常由一个vision encoder,一个语言模型,以及一个视觉-语言连接件组成,现有的多模态benchmark中有大量的评估样本是从单模态的文本语料中转化过来,因此,大语言模型的训练数据中无意间泄露了多模态benchmark中转化不充分的评估样本,所以自然会出现这种情况。

参考:多模态大模型到底理不理解文档图表?兼谈RAG如何解决全局摘要问答类问题

一、RAG中图像的处理

重点:文档理解前沿方案及版式分析开源数据:三种模式、九大数据集
重点:基于大模型的OCR-free方案

对于“图像”元素,利用“gpt-4-vision-preview”API,生成特定查询,提示GPT提供图像的详细文本描述,取代图像最初占据的位置。
在这里插入图片描述

二、RAG中表格的处理

(1)为了表格的格式保真度,存储了其HTML表示,可以具象化如下:
在这里插入图片描述
(2)这类数据也可以转成html格式进行渲染
在这里插入图片描述
(3)许多工具都已天然支持,例如llama_parse:https://docs.llamaindex.ai/en/stable/module_guides/loading/connector/llama_parse.html,以及ragflow(https://github.com/infiniflow/ragflow.git)
在这里插入图片描述

三、微调文档图表理解LLM

1. 图表-数据对构造

(1)mPLUG-DocOwl 1.5

阿里达摩院的工作。设计了视觉到文本模块H-Reducer,旨在保留布局信息的同时,还能通过卷积合并水平相邻的块来减少视觉特征的长度,从而使LLM更高效地理解高分辨率图像。

论文:《mPLUG-DocOwl 1.5: Unified Structure Learning for OCR-free Document Understanding》(https://arxiv.org/pdf/2403.12895.pdf)
项目:https://github.com/X-PLUG/mPLUG-DocOwl/tree/main/DocOwl1.5

(1)mPLUG-DocOwl 1.5:

  • DocOwl1.5由mPLUG-Owl2初始化,使用ViT/L-14作为视觉编码器,并使用带有模态自适应模块的7B大模型作为解码器。根据长宽比和分辨率,每幅图像最多裁剪成9幅子图像,分辨率固定为448x448。每个子图像由ViT/L-14编码为1,024个特征,然后由H-Reducer缩减为256个特征。
  • 两阶段训练如下图(a),整体模型架构如下图(b),全局图像和裁剪图像由视觉编码器和H-Reducer独立处理。< rowx-coly >是一种特殊的文本标记,用于表示裁剪后的图像在原始图像中的位置是第x行和第x列。

在这里插入图片描述
(2)Unified Structure Learning of DocOwl 1.5:
数据:构建DocStruct4M数据集(图文数据集),该工作设计了一个跨5个领域的统一结构学习,包括自然图像、文档、表格、图表和网页。它包括结构感知解析任务和多粒度文本本地化任务。

  • 文档分析(Document Parsing):为了表示结构信息,Pix2Struct使用压缩的HTML DOM树解析网页截图,这些树是基于HTML源代码构建的,不适用于其他格式的文档或网页截图,例如PDF。
  • 表分析(Table Parsing):与文档或网页不同,表的结构更加标准化,其中行和列的对应关系表示键值对。HTML和Markdown代码主要是用于表示表的两种文本序列。
  • 图表分析(Chart Parsing):为了与表解析任务保持一致,该工作还使用Markdown代码来表示图表的数据表,该工作采用PlotQA、FigureQA、DVQA和ChartQA来支持结构感知的图表解析任务。图表类型包括竖线、水平线、直线、点线和饼图。图表的源数据以JSON或CSV格式提供,两者都可以方便地转换为Markdown代码。
  • 自然图像分析(Natural Image Parsing):利用OCR-CC来支持自然图像解析任务,OCR-CC是概念标题的一个子集,它包含由Microsoft Azure OCR系统检测到的带有场景文本的图像。
  • 多粒度文本本地化(Multi-grained Text Localization)

在这里插入图片描述
(3)相关数据集:
数据集已经开源,可以在huggingface以及modelscope中下载:

  • DocStruct4M:https://huggingface.co/datasets/mPLUG/DocStruct4M
  • DocDownstream-1.0:https://huggingface.co/datasets/mPLUG/DocDownstream-1.0
  • DocReason25K:https://huggingface.co/datasets/mPLUG/DocReason25K
  • DocLocal4K:https://huggingface.co/datasets/mPLUG/DocLocal4K

(4)模型效果,将图表转为markdown,最后一个example的红色数字是错误数字:
在这里插入图片描述

(2)OneChart中的数据工程

论文:《OneChart: Purify the Chart Structural Extraction via One Auxiliary Token》
工作:在图表数据生成方面,除了来自ChartQA等在线平台的图表数据外,大多数图表数据都是通过Matplotlib和Pyecharts等工具生成的。共产生1000万个图表图像,生成的数据主要分为两大类:柱状图和饼状图。其中,柱状线图分为五种不同类型:单柱图、多柱图、单线图、多线图和组合图(混合图)。每种类型都平均分为具有数字标签和不具有数字标签的可视化图表。
在这里插入图片描述

(3)ChartAssisstant的图表数据生成

论文:《ChartAssisstant: A Universal Chart Multimodal Language Model via Chart-to-Table Pre-training and Multitask Instruction Tuning》
链接:https://arxiv.org/pdf/2401.02384.pdf

  • 使用ChartQA和PlotQA中的表格的各种可视化工具重新绘制图表:利用Python中的5个API,包括gg-plot、plotly、matplotlib、seaborn和pyecharts,以及颜色、大小、字体类型、背景等参数的20多个变体,风格增强后,分别创建220050条图表文本数据,用于从PlotQA进行图表到表格的转换。
    • 还利用arXiv论文中的表格,为了收集更多真实的表格数据以增加主题多样性,因此从arXiv平台抓取了1301932篇涉及计算机科学、生物学、金融等各个主题的论文。对于每篇论文,从源LaTeX代码中提取表格,其中表格数据可以在表格环境中本地化。
  • 使用ChatGPT将Latex表转换为Markdown表

2. 微调图表理解-多模态LLM

论文:From Pixels to Insights: A Survey on Automatic Chart Understanding in the Era of Large Foundation Models
链接:https://arxiv.org/pdf/2403.12027
2024年3月的论文,比较新。

训练方式:小模型就多任务pretrain和微调,大模型直接SFT和推理。
在这里插入图片描述

当前各任务的sota模型的performance和评估指标:
在这里插入图片描述

Reference

[1] 多模态大模型到底理不理解文档图表?兼谈RAG如何解决全局摘要问答类问题
[2] 也看跨模态大模型文档图表理解的数据工程:UniChar、MATCHA等代表模型的数据构造方案
[3] 如何运用大模型进行文档图表Chart理解:兼看20240321年大模型进展早报
[4] 也看跨模态大模型遇见文档理解:mPLUG-DocOwl1.5及TextMonkey方案中的数据工程
[5] 2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望
[6] 跨模态大模型遇见文档理解:mPLUG-DocOwl1.5及TextMonkey方案中的数据工程
[7] 四个Llama3中文微调版本的衍生:继续看文档图表理解大模型中的图表-数据对构造方案
[8] 文档图表理解的数据工程:UniChar、MATCHA等代表模型的数据构造方案
[9] 再看文档理解跨模态大模型中的数据工程:UniDoc、DocPedia及TGDoc
[10] 文档图表理解的思路及若干问题?,里面还有其他内容。
OCR大一统模型前沿研究速览:
1、Donut:无需 OCR 的用于文档理解的 Transformer模型:https://link.springer.com/chapter/10.1007/978-3-031-19815-1_29,https://github.com/clovaai/donut
2、NouGAT:实现文档图像到文档序列输出:https://arxiv.org/abs/2308.13418,https://github.com/facebookresearch/nougat
3、SPTS v3基于SPTS的OCR大一统模型:https://arxiv.org/abs/2112.07917,https://github.com/shannanyinxiang/SPTS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332080.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派4B 有电但无法启动

试过多个SD卡&#xff0c;反复烧系统镜像都无法启动。接HDMI显示器没有信号输出&#xff0c;上电后PWR红灯长亮&#xff0c;ACT绿灯闪一下就不亮了&#xff0c;GPIO几个电源脚有电&#xff0c;芯片会发热&#xff0c;测量多个TP点电压好像都正常。 ……

Java面试题--JVM大厂篇(1-10)

引言&#xff1a; 在这个信息时代&#xff0c;对于准备进入大厂工作的朋友们来说&#xff0c;对于JVM&#xff08;Java虚拟机&#xff09;的掌握是面试中的一项重要内容。下面是一些精选的JVM面试题&#xff0c;希望对大家能有所帮助。 正文&#xff1a; 1. JVM有哪几种垃圾收…

用Python一键生成PNG图片的PowerPoint幻灯片

在当今的商业环境中,PowerPoint演示是展示和传递信息的常用方式。然而,手动将大量图像插入到幻灯片中往往是一项乏味且耗时的工作。但是,通过Python编程,我们可以轻松自动化这个过程,节省时间和精力。 C:\pythoncode\new\folderTOppt.py 在本文中,我将介绍如何使用Python、wx…

C/C++ vector详解

要想了解STL&#xff0c;就必须会看&#xff1a; cplusplus.comhttps://legacy.cplusplus.com/ 官方内容全都是英文的&#xff0c;可以参考&#xff1a; C/C初始识https://blog.csdn.net/2301_77087344/article/details/138596294?spm1001.2014.3001.5501 vector&#xff…

redisson的使用及LUA脚本实现分布式秒杀

1.redisson实现分布式锁(推荐) redisson官网&#xff1a;Redisson: Easy Redis Java client and Real-Time Data Platform Redisson是一个基于Redis的Java客户端&#xff0c;它不仅提供了对Redis基本操作的支持&#xff0c;而且是一个功能丰富的分布式协调服务客户端。Rediss…

知识分享:隔多久查询一次网贷大数据信用报告比较好?

随着互联网金融的快速发展&#xff0c;越来越多的人开始接触和使用网络贷款。而在这个过程中&#xff0c;网贷大数据信用报告成为了评估借款人信用状况的重要依据。那么&#xff0c;隔多久查询一次网贷大数据信用报告比较好呢?接下来随小易大数据平台小编去看看吧。 首先&…

Pandas 多层索引中的索引和切片操作你学会了吗

1. Series的索引操作 对于Series来说&#xff0c;直接中括号[]与使用 .loc() 完全一样 显式索引 # 导包import numpy as npimport pandas as pd data np.random.randint(0,100,size6) index [ ["1班","1班","1班","2班","…

C++——list的实现以及源码

前言&#xff1a; 最近学习了clist的实现&#xff0c;这让我对迭代器的理解又上升了一个新的高度&#xff0c;注意&#xff1a;代码里的list是放在一个叫zgw的命名空间里边&#xff0c;但是在实现list的代码中没有加namespace&#xff0c;这里给个注意&#xff0c;以后复习时能…

颜色值进制转换

颜色值进制转换 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时&#xff0c;都要选择颜色。各语言的颜色值表达式就两种&#xff0c;十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码…

Linux-组管理和权限管理

1 Liunx组的基本介绍&#xff1a; 在Linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。在Linux中每个文件都有所有者、所在组、其他组的概念 所有者所在组其它组改变用户所在的组 2 文件/目录的所有者 一般文件的创建者&#xff0c;谁创建了该文件&#xff0c;就…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集&#xff08;Garbage Collection&#xff0c; 下文简称GC&#xff09;&#xff0c;其优缺点如下&#xff1a; 优点&#…

Shell

Linux中shell是Linux内核的一个外层保护工具&#xff0c;负责用户与内核互交。是一直命令行解析器&#xff0c;是指一直应用程序&#xff0c;且提供一个界面 还是一种编程语言. 查看当前系统的Shell 查看有哪些shell&#xff0c;用cat /etc/shells 查看当前系统默认的shell&…

二十八篇:嵌入式系统实战指南:案例研究与未来挑战

嵌入式系统实战指南&#xff1a;案例研究与未来挑战 1. 引言 1.1 嵌入式系统的重要性及其应用广度 在当今快速发展的技术领域中&#xff0c;嵌入式系统扮演着至关重要的角色。这些系统是专门设计的计算机硬件和软件的组合&#xff0c;旨在执行特定任务&#xff0c;如控制、监…

牛马真的沉默了,入职第一天就干活

入职第一天就干活的&#xff0c;就问还有谁&#xff0c;搬来一台N手电脑&#xff0c;第一分钟开机&#xff0c;第二分钟派活&#xff0c;第三分钟干活&#xff0c;巴适。。。。。。 打开代码发现问题不断 读取配置文件居然读取两个配置文件&#xff0c;一个读一点&#xff0c;…

Leetcode算法题笔记(3)

目录 矩阵101. 生命游戏解法一解法二 栈102. 移掉 K 位数字解法一 103. 去除重复字母解法一 矩阵 101. 生命游戏 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子…

计算机网络——TCP 协议的三次握手 / 四次挥手

简述 TCP / UDP 协议都是传输层的协议。 UDP 是面向无连接的协议&#xff0c;就是说发送端不在乎消息数据是否传输到接收端了&#xff0c;所以会出现数据丢失的情况&#xff0c;所以可靠性也不高。 TCP 是面向连接的、可靠的、基于字节流的传输层协议。所谓面向连接的&#…

机器学习算法手撕(一):KD树

import math import matplotlib.pyplot as pltclass Node:def __init__(self, data, leftNone, rightNone):self.data dataself.left leftself.right right# 创建KDTree类 class KDTree:def __init__(self, k):self.k kdef create_tree(self,dataset,depth):if not dataset…

SpringBoot使用rsa-encrypt-body-spring-boot实现接口加解密

废话不多说&#xff0c;直接上代码 引入依赖 <dependency><groupId>cn.shuibo</groupId><artifactId>rsa-encrypt-body-spring-boot</artifactId><version>1.0.1.RELEASE</version> </dependency>配置文件 rsa:encrypt:# 是…

电表远传抄表是什么?

1.电表远传抄表&#xff1a;简述 电表远传抄表&#xff0c;又称为远程控制自动抄表系统&#xff0c;是电力行业的智能化技术运用&#xff0c;它通过无线或通信网络技术&#xff0c;完成对电表数据信息的远程收集解决。此项技术不仅提升了抄水表高效率&#xff0c;降低了人工偏…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89341358 功能介绍&#xff1a; 前台登录&#xff1a;前台登录&#xff1a; ①首页&#xff1a;菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…