多模态大模型Vary:扩充视觉Vocabulary,实现更细粒度的视觉感知

前言

现代大型视觉语言模型(LVLMs)具有相同的视觉词汇- CLIP,它可以涵盖大多数常见的视觉任务。然而,对于一些需要密集和细粒度视觉感知的特殊视觉任务,例如文档级OCR或图表理解,特别是在非英语场景下,clip风格的词汇表在视觉知识的标记化方面可能会遇到效率较低的问题,甚至会出现词汇外问题。

解决方案

在此基础上,本文提出了一种高效、有效的扩展LVLMs视觉词汇量的方法——Vary。Vary的过程分为两部分:新的视觉词汇的生成和整合。

1.第一阶段,设计了一个词汇表网络和一个小型的仅解码器转换器,通过自回归产生所需的词汇表。
2.第二阶段,通过将新的视觉词汇表与原始词汇表(CLIP)合并来扩展vanilla视觉词汇表,为lvlm有效地提供新的特征,使lvlm能够快速获取新特性。
在这里插入图片描述

与流行的BLIP-2、MiniGPT4和LLaVA相比,Vary在保持原有功能的同时,具有更出色的细粒度感知和理解能力。具体来说,Vary能够胜任新的文档解析功能(OCR或标记转换),同时在DocVQA中实现78.2%的ANLS,在MMVet中实现36.2%。

Vary方法

一.算法架构

Vary有两种:Vary-tiny和Vary-base,如图2所示。作者设计了Vary-tiny来“书写”新的视觉词汇,而Vary-base则用来使用新的词汇。具体来说,Vary-tiny主要由一个词汇网络和一个微小的OPT-125M组成。在两个模块之间,添加了一个线性层来对齐通道尺寸。在Vary-tiny中没有文本输入分支,因为它主要关注细粒度感知。作者希望新的视觉词汇网络能够在处理人工图像,即文档和图表方面表现出色,以弥补CLIP的不足。同时,作者也期望在对自然图像进行标记时,它不会成为CLIP的噪声。因此,在生成过程中,作者将人工文档和图表数据作为正样本,将自然图像作为负样本来训练Vary-tiny。在完成上述过程后,提取词汇网络并将其添加到一个大型模型中以构建Vary-base。如图2下半部分所示,新旧词汇网络具有独立的输入嵌入层,并在LLM之前进行集成。在此阶段,冻结新旧视觉词汇网络的权值,解冻其他模块的权值。
在这里插入图片描述

二、视觉词汇

1.新词汇网络

作者使用SAM预训练的ViTDet图像编码器(基尺度)作为Vary新词汇网络的主要部分。由于SAM-base的输入分辨率为(1024×1024),而输出步幅为16,所以最后一层的特征形状为(H×W×C为64×64×256),无法与CLIP-L的输出(N×C为256×1024)对齐。因此,作者在SAM初始化网络的最后一层后面添加了两个卷积层,这是一个很好的token合并单元,如图3所示。第一个卷积层的核大小为3,目的是将7b - llm特征形状转移到32×32×512。第二个转换层的设置与第一个相同,可以进一步将输出形状转换为16×16×1024。之后,将输出特征平展为256×1024,以对齐CLIP-VIT的图像token形状。

2.生成短语中的数据引擎

Documnet数据 作者选择高分辨率文档图像-文本对作为新视觉词汇预训练的主要正数据集,因为密集OCR可以有效验证模型的细粒度图像感知能力。目前还没有公开的中英文文档数据集,所以作者创建了自己的数据集。首先从arXiv和CC-MAIN-2021-31-PDFUNTRUNCATED上的开放获取文章中收集pdf格式的文档作为英文部分,从互联网上的电子书中收集中文部分。然后使用PyMuPDF的fitz提取每个pdf页面中的文本信息,同时通过pdf2image将每个页面转换为PNG图像。在此过程中,分别构建了1M个中文文档和1M个英文文档图像-文本对进行训练。图表数据 作者发现目前的LVLMs并不擅长图表理解,尤其是中文图表,所以作者选择它作为另一个需要“写”进新词汇表的主要知识。对于图表图像-文本对,遵循渲染方式。选择matplotlib和pyecharts作为渲染工具。对于matplotlib风格的图表,构建了250k的中英文版本。而对于pyecharts,分别为中文和英文创建了50万个pyecharts。此外,作者将每个图表的文本基础真值转换为python- dictionary形式。图表中使用的文本,例如标题、x轴和y轴,是从互联网上下载的自然语言处理(NLP)语料库中随机选择的。

负样本自然图片 对于CLIP-VIT擅长的自然图像数据,需要保证新引入的词汇不会产生噪声。因此,作者构建了负的自然图像-文本对,以使新词汇网络在看到自然图像时能够正确编码。作者从COCO数据集中提取了120k张图像,每张图像对应一个文本。文本部分从以下句子中随机抽取:“It 's a image of nature”;“这是一张自然的照片”;“这是一张自然照片”;“这是一个自然的形象”;“这是大自然的杰作。”

3.输入格式

用图像-文本对对var -tiny的所有参数进行自回归训练。输入格式遵循流行的LVLMs,即图像token以前缀的形式与文本token打包。具体来说,作者使用两个特殊的标记“”和“”来指示图像标记作为插值OPT-125M(4096个标记)的输入的位置。在训练过程中,Vary-tiny的输出仅为文本,并将“”视为eos令牌。

三、扩大视觉词汇

1.Vary-base结构

在完成词汇网络的训练后,作者将其引入到LVLM - Var -base中。具体来说,作者将新的视觉词汇表与原始的CLIP-VIT并行化。这两个视觉词汇表都有一个单独的输入嵌入层,即一个简单的线性。如图2所示,线性的输入通道为1024,输出通道为2048,保证了拼接后的图像token通道为4096,这与LLM (Qwen-7B或Vicuna-7B)的输入完全一致。

2.扩展短语中的数据引擎

LATEX渲染文档 作者认为需要数据具有一定的格式,例如支持公式和表格。为此,作者通过LATEX呈现创建文档数据。首先,在arxiv上收集了一些.tex源文件,然后使用正则表达式提取表、数学公式和纯文本。最后,重新渲染这些内容与用pdflatex准备的新模板。作者收集了10多个模板来执行批处理呈现。此外,将每个文档页面的文本ground truth转换为mathpix markdown样式,以统一格式。通过这个建设过程,作者获得了50万英文页面和40万中文页面。图4显示了一些示例。

在这里插入图片描述

使用pdflatex来渲染文档,使用pyecharts/matplotlib来渲染图表。文档数据获取中/英文文本、公式和表格。图表数据包括中/英文条形、线形、饼形和复合样式。

语义关联图呈现 在1.2.2节中,作者批量渲染图表数据来训练新的词汇网络。然而,这些呈现图表中的文本(标题、x轴值和y轴值)相关性较低,因为它们是随机生成的。这个问题在词汇表生成过程中不是问题,作者只希望新的词汇表能够有效地压缩视觉信息。但是在Vary-base的训练阶段,由于LLM的解冻,希望使用更高质量(强相关内容)的数据进行训练。因此,作者使用GPT-4使用相关语料库生成一些图表,然后利用高质量语料库添加渲染200k图表数据进行Vary-base训练。一般数据 训练Vary-base的过程遵循流行的LVLMs,例如LLaVA,包括预训练和SFT阶段。与LLaVA不同的是,作者冻结了所有的词汇网络,并解冻了输入嵌入层和LLM,这更像是一个纯LLM的预训练设置。作者使用自然的图像-文本对数据向vary库引入一般概念。图像-文本对从LAION-COCO中随机抽取,数量为400万。在SFT阶段,使用LLaVA-80k或LLaVA-CC665k以及DocVQA和ChartQA的训练集作为微调数据集。

实验结果

在这里插入图片描述

如表2所示,在llva -80k SFT数据上,Vary-base(以Qwen-7B为LLM)在DocVQA上可以实现78.2% (test)和76.3% (val)的ANLS。使用LLaVA-665k的SFT数据,Vary-base在ChartQA上的平均性能可以达到66.1%。在这两个具有挑战性的下游任务上的表现与Qwen-VL相当甚至更好,这表明所提出的视觉词汇量放大方法在下游也很有前景。
在这里插入图片描述

使用相同的LLM (Vicuna-7B)和SFT数据(LLaVA-CC665k), Vary比LLaVA-1.5提高了2.4%(32.9%对30.5%)的总度量,证明Vary的数据和训练策略不会损害模型的一般能力。此外,Vary与Qwen-7B和LLaVA-80k的性能可以达到36.2%,进一步证明了Vary的视觉词汇缩放方式的有效性这一次,只需一句话命令,多模态大模型Vary直接端到端输出结果。Vary表现出了很大的潜力和极高的上限,OCR可以不再需要冗长的pipline,直接端到端输出,且可以按用户的prompt输出不同的格式如latex 、word 、markdown。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子电路快速入门

参考: 电子电路设计入门篇一 https://www.bilibili.com/video/BV18C4y1p7p9Proteus与protel的区别 https://www.zhihu.com/question/385796380数字集成电路的设计流程简介 https://zhuanlan.zhihu.com/p/24476011?tt_fromweixin硬件电路设计的基本流程、作用和注意…

StratifiedGroupKFold解释和代码实现

StratifiedGroupKFold解释和代码实现 文章目录 一、StratifiedGroupKFold解释和代码实现是什么?二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释 四、样本类别类别不平衡 一、StratifiedGroupKFold解释和代码…

简单Diff算法

简单Diff算法 渲染器的核心 Diff算法 解决的问题 比较新旧虚拟节点的子节点,实现最小化更新。 虚拟节点key属性的作用 就像虚拟节点的“身份证号”,在更新时,渲染器会通过key属性找到可复用的节点,然后尽可能地通过DOM移动操…

Hexo 部署 Github Pages, Github Actions自动部署

想整个静态的博客部署在github pages 历经两天的折磨终于是摸索成功了,官网的文档太简陋了,很多东西没说清楚。 欢迎大家访问我的博客! CanyueThis is Canyues blog.https://mobeicanyue.github.io/ 最终实现的效果,一个项目仓库…

polar CTF 简单rce

一、题目 <?php /*PolarD&N CTF*/ highlight_file(__FILE__); function no($txt){if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){return $txt;}else{ die("whats up");}} $yyds(…

【openGauss服务器端工具的使用】

【openGauss服务器端工具的使用】 gs_checkperf openGauss 不仅提供了gs_checkperf工具来帮助用户了解openGauss的负载情况。 使用数据库安装用户登录服务器&#xff0c;执行如下命令进行查看数据库性能&#xff1a; 简要信息展示&#xff1a;[ommopengauss03 ~]$ gs_checkperf…

Ubuntu Server 22.04 连接Wifi并配置静态IP

Ubuntu Server 22.04 连接Wifi并配置静态IP 前言&#xff1a;我家最近好几台电脑&#xff0c;我都想跑着Ubuntu Server做服务器&#xff0c;但是近几年的超级本已经不自带网口了&#xff0c;所以我就考虑用Wifi来联网&#xff0c;速度也还可以&#xff0c;但是既然是跑服务&…

《算法导论》复习——CHP1、CHP2 算法基础

基本定义&#xff1a; 算法是一组有穷的规则&#xff0c;规定了解决某一特定类型问题的一系列运算。 关心算法的正确性和效率。 算法的五个重要特性&#xff1a;确定性、能行性、输入、输出、有穷性。 基础方法&#xff1a; 伪代码&#xff08;Pseudocode&#xff09;&#xff…

Springboot集成RabbitMq二

接上一篇&#xff1a;Springboot集成RabbitMq一-CSDN博客 1、搭建项目-消费者 与之前一样 2、创建配置类 package com.wym.rabbitmqconsumer.utils;import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.spring…

11.盛水最多的容器(双指针,C解法)

题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;…

床垫选得好孩子睡得香!康姿百德学生床垫让孩子拥有甜美梦乡

睡眠与健康密切相关,而床垫的选购则直接关系到人们睡眠质量的好坏。而孩子的床垫选择更是重中之重,青少年儿童正处于生长发育的重要时期,床垫选不好很容易导致孩子睡眠不足,影响孩子的学习,甚至会影响孩子的脊椎发育。所以,给孩子挑张好用又合适的床垫十分重要,现在让我们来看看…

SpringMVC-域对象共享数据

一、request域对象共享数据 1.1 通过ServletAPI共享数据 RequestMapping("/servletAPI")public String servletAPI(HttpServletRequest request){request.setAttribute("requestAttribute","helloworld");return "servletAPI";}<!…

(学习打卡1)重学Java设计模式之设计模式介绍

前言&#xff1a;听说有本很牛的关于Java设计模式的书——重学Java设计模式&#xff0c;然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧&#xff0c;本文主要记录笔者的学习笔记和心得。 打卡&#xff01;打卡&#xff01; 设计模式介绍 一、设计模式是什么&#xff1f; …

学习JavaEE的日子 day08 方法的重载,递归,万年历

day08 1.方法的重载 >理解&#xff1a;方法与方法之间的关系> 条件&#xff1a;> 1.方法必须在同一个类中> 2.方法名必须一致> 3.参数列表的个数或者类型不一致> 4.与返回值无关> 好处&#xff1a;系统会根据具体实参类型自动匹配到对应的方法…

React(2): 使用 html2canvas 生成图片

使用 html2canvas 生成图片 需求 将所需的内容生成图片div 中包括 svg 等 前置准备 "react": "^18.2.0","react-dom": "^18.2.0","html2canvas": "^1.4.1",实现 <div ref{payRef}></div>const pa…

阿里云性能测评ESSD Entry云盘、SSD云盘、ESSD和高效云盘

阿里云服务器系统盘或数据盘支持多种云盘类型&#xff0c;如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等&#xff0c;阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

循环与基础函数

循环与函数 1.循环的三种方式2.循环的中断与空语句3.函数的定义与使用4.参数的作用域5.指针6.总结 1.循环的三种方式 我们最熟悉的循环为for和while&#xff0c;这两种循环方式在Python系列介绍过。在C中&#xff0c;循环的基本逻辑同Python是类似的。c中while循环的语法如下&…

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

thumbnailator 基本使用教程

thumbnailator 基本使用教程 本文中的 Demo 项目使用 SpringBoot 创建&#xff0c;代码仓库地址: thumbnailator-study: 使用 Thumbnailator 库的 Demo 程序&#xff0c;演示地址: www.huhailong.vip/thumbnailator-study。我的站点。) 使用 thumbnailator 库来操作图片非常的…

大语言模型LLM微调技术:P-Tuning

1 引言 Bert时代&#xff0c;我们常做预训练模型微调&#xff08;Fine-tuning&#xff09;&#xff0c;即根据不同下游任务&#xff0c;引入各种辅助任务loss和垂直领域数据&#xff0c;将其添加到预训练模型中&#xff0c;以便让模型更加适配下游任务的方式。每个下游任务都存…