扩展大型视觉-语言模型的视觉词汇:Vary 方法

news2025/1/12 3:48:44

在人工智能领域,大型视觉-语言模型(LVLMs)正变得越来越重要,它们能够处理多种视觉和语言任务,如视觉问答(VQA)、图像字幕生成和光学字符识别(OCR)。然而,现有的模型通常依赖于一个通用的视觉词汇表,如CLIP,这在处理一些特殊视觉任务时可能会遇到效率低下和词汇表外问题。为了解决这些问题,研究者们提出了Vary方法,这是一种用于扩展LVLMs视觉词汇的有效方法。

LVLMs在多种任务上展现出了卓越的性能,但它们在处理如文档级OCR或图表理解这类需要细粒度视觉感知的任务时,仍然面临挑战。CLIP风格的视觉词汇表在这些任务中可能会遇到编码效率低下的问题。Vary方法的提出,旨在通过生成和融合新的视觉词汇表来提升LVLMs的性能。

Vary方法是针对大型视觉-语言模型(LVLMs)提出的一种创新方法,旨在通过扩展模型的视觉词汇来提升其在特定视觉任务上的表现,尤其是那些需要密集和细粒度视觉感知的任务,如文档级光学字符识别(OCR)或图表理解。以下是Vary方法的详细介绍:

1. 动机与挑战

现有的LVLMs通常使用统一的视觉词汇表,如CLIP,来处理各种视觉任务。然而,CLIP在处理一些特殊场景,如高分辨率图像、非英语OCR、文档/图表理解等任务时,可能不够高效,甚至会遇到超出词汇表的问题。

2. Vary的核心思想

Vary方法的核心思想是模仿文本词汇表的扩展方式,为视觉词汇表添加新的元素。这包括两个主要步骤:生成新的视觉词汇表和将新旧词汇表融合。

3. 方法细节

3.1 生成新的视觉词汇表

生成新的视觉词汇表是Vary方法的第一阶段,这一阶段的目标是创建一个能够补充现有CLIP视觉词汇表的新型视觉词汇表,以提高LVLMs在特定视觉任务上的表现。以下是详细说明,包括在论文中的具体位置:

新词汇网络的构建
  • 使用预训练的ViTDet图像编码器:Vary采用了SAM预训练的ViTDet(base scale)图像编码器作为新词汇网络的主要组成部分。由于SAM-base的输入分辨率是1024×1024,输出步长是16,因此最后一层的特征形状是(64×64×256),这与CLIP-L的输出(256×1024)不匹配。为了解决这个问题,研究者们在SAM初始化网络的最后一层后面添加了两个卷积层,以将特征形状转换为与CLIP兼容的形式。
数据引擎和训练过程

      

  • 文档数据:选择高分辨率的文档图像-文本对作为主要的正面数据集,因为密集OCR可以有效验证模型的细粒度图像感知能力。研究者们创建了自己的数据集,包含了100万中文和100万英文文档图像-文本对。
  • 图表数据:由于当前的LVLMs在图表理解方面表现不佳,特别是中文图表,研究者们选择将其作为需要写入新词汇的另一个主要知识点。他们使用matplotlibpyecharts作为渲染工具,为matplotlib风格的图表构建了25万中英文数据对,对于pyecharts风格的图表则构建了50万。
  • 负面自然图像:为了确保新引入的词汇在处理CLIP-VIT擅长的自然图像时不会产生噪声,研究者们构建了负面自然图像-文本对,以确保新词汇网络在看到自然图像时能正确编码。
输入格式
  • Vary-tiny使用图像-文本对通过自回归进行训练。输入格式遵循流行的LVLMs,即使用两个特殊标记"<img>"和"</img>"来指示图像标记的位置,作为插值OPT-125M的输入。
3.2 扩展视觉词汇表

扩展视觉词汇表是Vary方法的核心贡献之一,旨在解决大型视觉-语言模型(LVLMs)在处理特定视觉任务时可能遇到的效率和性能问题。

Vary-tinyVary-base的架构

Vary-tiny Vary方法的第一阶段,专注于生成新的视觉词汇表。它由一个词汇网络和一个小型的OPT-125M模型组成。这个词汇网络使用自回归的方式,通过预测下一个词来生成新的视觉词汇。OPT-125M模型在这个过程中充当解码器,帮助生成与视觉任务相关的文本描述。

Vary-base Vary方法的第二阶段,它利用Vary-tiny生成的新视觉词汇表来增强LVLMs的性能。Vary-base的架构包括两个并行的视觉词汇网络:新的词汇网络和原有的词汇网络(如CLIP)。这两个网络在输入时是独立的,但它们的输出会在进入大型语言模型(LLM)之前进行整合,以此来提供更丰富的视觉特征表示。

训练策略

在训练Vary-base时,采取了一种特殊的策略,即冻结新旧视觉词汇网络的权重。这样做的目的是保留新旧词汇网络的知识,避免在训练过程中丢失。由于这些词汇网络已经在Vary-tiny阶段进行了训练,因此它们在Vary-base中的权重保持不变,这样可以确保新引入的视觉词汇不会影响已有的视觉特征提取能力。

除了冻结词汇网络的权重外,Vary-base中的其他模块,如输入嵌入层和LLM,其权重则不冻结。这些模块会在训练过程中进行优化,以适应新的视觉词汇并提高模型的整体性能。

训练过程

Vary-base的训练过程通常包括两个阶段:预训练和监督式微调(Supervised Fine-Tuning,简称SFT)。

  1. 预训练:在这个阶段,模型使用大量的图像-文本对进行训练,以学习通用的视觉和语言表示。预训练可以帮助模型建立一个强大的知识基础,为后续的微调打下基础。
  2. SFT:在SFT阶段,模型会在特定的下游任务上进行训练,以调整和优化模型参数,使其更适应特定的应用场景。这个阶段可能会使用特定的数据集,如DocVQAChartQA,来进行任务相关的优化。

通过这种训练策略,Vary-base能够结合新旧视觉词汇的优势,提高模型在复杂视觉任务上的表现,同时保持在通用任务上的性能。

4. 实验与结果

4.1 数据集和评估指标
  • 自定义文档级OCR测试集:包含纯OCR任务和Markdown格式转换任务。纯OCR任务中,测试集随机抽取了100页中文和英文文档。Markdown转换任务中,测试集包含200页文档,其中100页包含表格,另100页包含数学公式。
  • DocVQAChartQA:用于测试下游任务性能的提升。
  • MMVet:用于监控模型在通用任务上的性能变化。
  • 评估指标:对于文档解析任务,使用归一化编辑距离(Normalized Edit Distance)和F1分数来评估模型性能。对于DocVQAChartQAMMVet,使用各自数据集的标准指标进行公平比较。
4.2 实施细节

   

  • Vary-tiny训练:使用512的批量大小和3epoch进行训练,采用AdamW优化器和余弦退火调度器,学习率为5e-5
  • Vary-base训练:在Vary-base的训练阶段,冻结新旧视觉词汇网络的权重,优化输入嵌入层和LLM的参数。预训练的初始学习率为5e-5SFTSupervised Fine-Tuning)阶段为1e-5。预训练和SFT阶段的批量大小为256,训练周期为1
4.3 细粒度感知性能
  • Vary-tiny:通过生成视觉词汇的过程,Vary-tiny获得了中文和英文的密集OCR能力。在中文和英文文档(纯文本)OCR上分别达到了0.2660.197的编辑距离,证明了新视觉词汇在细粒度文本编码上的能力。
  • Vary-base:与Nougat(一个专门的文档解析模型)相比,在英文纯文本文档上达到了相当的表现。通过不同的提示(例如,将图像转换为Markdown格式),Vary-base能够实现文档图像到Markdown格式的转换。
4.4 下游任务性能

  • DocVQAVary-baseLLaVA-80k SFT数据上达到了78.2%(测试)和76.3%(验证)的ANLSAnswer Normalized Levenshtein Score)。
  • ChartQA:在使用LLaVA-665k数据进行SFT时,Vary-baseChartQA上达到了66.1%的平均性能。
  • 这些结果表明,Vary在这些具有挑战性的下游任务上的表现与Qwen-VL等流行方法相当或更好,证明了所提出的视觉词汇扩展方法对下游任务也是有益的。
4.5 通用性能
  • MMVet基准:使用Vicuna-7B作为LLM,以及LLaVA-CC665k作为SFT数据,Vary在MMVet基准上的总指标比LLaVA-1.5高出2.4%,证明了Vary的数据和训练策略没有损害模型的通用能力。

实验结果表明,Vary方法通过扩展视觉词汇,在细粒度感知任务和下游任务性能上都取得了显著提升。同时,Vary在保持原有能力的同时,还增强了对特定视觉任务的处理能力,如文档级OCR和图表理解。这些结果证明了Vary方法的有效性,并展示了其在实际应用中的潜力。

5. 结论

Vary方法成功地证明了扩展LVLMs视觉词汇的重要性,并通过实验展示了其在多个任务上的卓越性能。尽管Vary已经取得了令人满意的结果,但在扩展视觉词汇方面仍有改进空间。研究者们希望Vary的设计能够吸引更多研究关注这一方向,并从视觉词汇构建的角度重新思考LVLMs的设计。

6. 代码与资源

Vary的代码已经开源,并可在GitHub上找到。此外,研究者们还提供了一些预训练模型和数据集,以促进进一步的研究和开发。

通过Vary方法,我们看到了LVLMs在处理特殊视觉任务方面的新可能性,这为未来的研究和应用开辟了新的道路。

项目主页:https://varybase.github.io/

论文地址:https://arxiv.org/pdf/2312.06109.pdf

Github地址:https://github.com/Ucas-HaoranWei/Vary

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot 集成 flowable

随着企业对于业务流程管理需求的增加&#xff0c;流程引擎在企业信息化建设中的作用越来越重要。Flowable是一个开源的轻量级业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;它支持BPMN 2.0标准。 Flowable的一些特点&#xff1a; 安装集成&#xff1a;Flow…

基于Springboot 的 Excel表格的导入导出

首先 &#xff0c;引入相关依赖EasyPOI <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 编写实体类&#xff1a; Data AllArgs…

Golang错误处理机制

文章目录 Golang错误处理机制panic异常recover捕获异常自定义错误 Golang错误处理机制 panic异常 panic异常 Go的类型系统会在编译时捕获很多错误&#xff0c;但有些错误只能在运行时检查&#xff0c;比如除零错误、数组访问越界、空指针引用等&#xff0c;这些运行时错误会引…

mongodb卸载(win)

关闭服务 &#xff08;或者cmd卸载服务&#xff1a;&#xff09; net stop 服务名称卸载应用 至此&#xff0c;卸载完成&#xff01;

手拉手CentOS 安装 mysql-5.7

MySQL是一种关系型数据库管理系统&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性。 tar.gz包安装 #如没有安装wget则无法使用&#xff0c;以装&#xff0c;则直接省略该步~&#xff…

DBeaver连接神通数据库

一、在dbeaver中新建一个驱动 1、打开dbeaver&#xff0c;点击数据库-驱动管理器 2、点击右侧的新建 在【设置】中填写以下信息 类名&#xff1a;com.oscar.Driver URL模板&#xff1a;jdbc:oscar://{host}:{port} 默认端口&#xff1a;2003 在【库】中点击添加文件&#…

C语言学习/复习37--进阶总结与题目练习

一、题目练习 1. 循环与无符号char的取值范围 注意事项&#xff1a;0~255 -128~127 char类的取值范围看做循环图 2.ASCLL值与循环 3.按位操作与bit位 4 .结构体的大小 注意事项&#xff1a;结构体嵌套结构体的大小计算 5.循环条件 6.数据类型与原反补码 7.指针访问字符串数…

Python实现智能客服问答系统

随着人工智能技术的不断发展&#xff0c;机器人客服与聊天系统成为了热门话题。Python作为一种简单易学、功能强大的编程语言&#xff0c;在机器人客服与聊天系统的开发中具有广泛应用。 本文将介绍如何使用Python实现机器人客服与聊天系统&#xff0c;包括实现方式、代码示例和…

rust将json字符串直接转为map对象或者hashmap对象

有些时候我们还真的不清楚返回的json数据里面到底有哪些数据&#xff0c;数据类型是什么等&#xff0c;这个时候就可以使用批处理的方式将json字符串转为一个对象&#xff0c;然后通过这个对象的get方法来获取json里面的数据。 pub async fn test_json(&self) {let json_st…

综合性练习(后端代码练习2)——用户登录

目录 一、准备工作 二、约定前后端交互接口 1、需求分析 2、接口定义 1、输入账户密码界面 2、当前登录的用户界面 三、实现服务端代码 四、调整前端页面代码 1、login.html代码&#xff1a; 页面跳转的三种方式&#xff1a; 2、index.html代码&#xff1a; 五、运…

推荐一个好用的命令行工具ShellGPT

ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到&#xff0c;现有的很多工具都在被大模型重构&#xff0c;比如诞生了像perplexity.ai 这种新交互形式的搜索引擎&#xff0c;就连wps也推出了AI服务&#xff0c;甚至都可以直接生成ppt…

信源信息数智化招采平台赋能各行业信创生态建设

信创&#xff0c;即“信息化应用创新”&#xff0c;是保障国家数据安全、网络安全的重要基础&#xff0c;也是新基建的重要组成部分。加强IT基础设施、软件、硬件、安全等领域的防护能力&#xff0c;实现国产化自主可控&#xff0c;是招采供应链数字化转型必须面对的课题。 全…

[二叉树] 二叉树的前中后三序遍历#知二求一

标题&#xff1a;[二叉树] 二叉树的前中后三序遍历#知二求一 水墨不写bug &#xff08;图片来源于网络&#xff09; 正文开始&#xff1a; 其实这一类题就是考察对二叉树的结构理解&#xff0c;此类题目的二叉树一般通过数组传入&#xff0c;我们只需根据二叉树的就够特点对数…

今日科普:认识颅脑肿瘤

颅脑肿瘤&#xff0c;这个医学名词常常令人心生畏惧&#xff0c;但其实它是指发生在大脑、小脑、脑膜等部位的肿瘤。这些肿瘤可能源于颅内组织&#xff0c;也可能是由身体其他部位的肿瘤转移而来。令人欣慰的是&#xff0c;并非所有颅内肿瘤都是恶性的&#xff0c;良性肿瘤和恶…

windows浅尝NW.js

windows浅尝NW.js 在本指南中&#xff0c;我们将详细介绍如何在windows上部署NW.js,实现应用的构成、启动方式、开发环境 环境部署 首先我们需要从官网下载对应的压缩包 (https://nwjs.io/downloads/) 下载完成后解压&#xff0c;可以看到对应的文件目录 然后我们运行目录下…

【LangChain系列 12】Prompt模版——序列化

本文速读&#xff1a; PromptTemplate FewShotPromptTemplate 通常prompt以文件形式存储比python代码更好&#xff0c;一方面可以更容易共享、存储。本文将介绍在LangChain中如何对prompt以不同的方式序列化。 一般来说&#xff0c;对于序列化有以下两个设计原则&#xff1a…

牛客热题:合并K个升序链表

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;合并K个升序链表题目链接&#…

周三多《管理学原理》第3版/考研真题/章节练习题

普通高等教育“十一五”国家级规划教材《管理学原理》&#xff08;第3版&#xff0c;周三多、陈传明、龙静编著&#xff0c;南京大学出版社&#xff09;是我国高校广泛采用的管理学权威教材之一&#xff0c;也被众多高校&#xff08;包括科研机构&#xff09;指定为考研考博专业…

开源医疗大模型排行榜: 健康领域大模型基准测试

开源医疗大模型排行榜: 健康领域大模型基准测试 文章目录 开源医疗大模型排行榜: 健康领域大模型基准测试一、引言二、数据集、任务和评估设置1、MedQA2、MedMCQA3、PubMedQA4、MMLU 子集 (医学和生物学) 三、洞察与分析四、提交你的模型以供评估五、下一步是什么&#xff1f;扩…

node.js 解析post请求 方法二

前提&#xff1a;以前面发的node.js解析post请求方法一为模板&#xff0c;具体见 http://t.csdnimg.cn/ABaIn 此文我们运用第二种方法&#xff1a;使用第三方模块formidable对post请求进行解析。 1》代码难点 *** 在Node.js中使用formidable模块来解析POST请求主要涉及到处理…