InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

温馨提示:
本篇文章已同步至"AI专题精讲" InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

摘要

大规模的预训练与instruction tuning在构建通用语言模型方面已取得显著成效。然而,构建通用的视觉-语言模型仍然具有挑战性,因为附加的视觉输入带来了丰富的输入分布和任务多样性。尽管视觉-语言预训练已经被广泛研究,视觉-语言instruction tuning仍然缺乏深入探索。本文基于预训练的BLIP-2模型,开展了一项系统而全面的视觉-语言instruction tuning研究。我们收集了26个公开可用的数据集,涵盖多种任务和能力,并将其转换为instruction tuning格式。此外,我们引入了一个instruction-aware的Query Transformer,用于提取与给定指令相匹配的信息特征。在13个held-in数据集上训练后,InstructBLIP在13个held-out数据集上实现了最先进的zero-shot性能,显著优于BLIP-2和更大的Flamingo模型。我们的模型在个别下游任务上进行finetune时也达到了最优性能(例如,在带图像上下文的ScienceQA问题上达到了90.7%的准确率)。此外,我们通过定性分析展示了InstructBLIP相比同时期多模态模型的优势。所有InstructBLIP模型均已开源。

1 引言

人工智能(AI)研究的一个长期愿景是构建一个能够解决用户指定的任意任务的单一模型。在自然语言处理(NLP)领域,instruction tuning [46, 7]被证明是实现这一目标的有希望的方法。通过在由自然语言指令描述的多种任务上对大型语言模型(LLM)进行finetune,instruction tuning使得模型能够遵循任意指令。近年来,instruction-tuned的LLM也被应用于视觉-语言任务。例如,BLIP-2 [20]有效地将冻结的instruction-tuned LLM适配于理解视觉输入,并展现了初步的图像到文本生成任务中的指令遵循能力。

相比NLP任务,视觉-语言任务由于来自不同领域的附加视觉输入而更加多样化。这对一个旨在泛化至多种视觉-语言任务(包括训练中未见任务)的统一模型提出了更大挑战。以往的大多数工作可以归为两类方法。第一类方法是多任务学习 [6, 27],将各种视觉-语言任务统一为相同的输入-输出格式。然而,我们通过实验证明(见表4),缺少指令的信息会导致这种方法在未见数据集和任务上的泛化能力较差。第二类方法 [20, 4]是在预训练LLM基础上扩展视觉组件,并利用图像字幕数据训练这些视觉组件。然而,这类数据过于有限,难以实现对超越视觉描述的视觉-语言任务的广泛泛化。

在这里插入图片描述

为了解决上述挑战,本文提出了InstructBLIP,这是一种视觉-语言instruction tuning框架,使得通用模型可以通过统一的自然语言接口解决多种视觉-语言任务。InstructBLIP使用多样化的instruction数据对多模态LLM进行训练。具体而言,我们以预训练的BLIP-2模型为起点,该模型由图像编码器、LLM以及连接两者的Query Transformer(Q-Former)组成。在instruction tuning过程中,我们对Q-Former进行finetune,而保持图像编码器和LLM冻结。

本论文的关键贡献如下:

  • 我们对视觉-语言instruction tuning进行了系统而全面的研究。我们将26个数据集转换为instruction tuning格式,并将其分为11类任务。我们使用13个held-in数据集进行instruction tuning,使用13个held-out数据集进行zero-shot评估。此外,我们在任务级别上保留了4个完整的任务类别用于zero-shot评估。详尽的定量和定性结果展示了InstructBLIP在视觉-语言zero-shot泛化方面的有效性。

  • 我们提出了一种instruction-aware视觉特征提取机制,这是一种新的机制,可以根据给定的指令进行灵活且信息丰富的特征提取。具体而言,文本指令不仅被传递给冻结的LLM,也被输入给Q-Former,从而Q-Former可以从冻结的图像编码器中提取与指令相关的视觉特征。此外,我们提出了一种平衡采样策略,以在不同数据集之间同步学习进度。

  • 我们基于两类LLM评估并开源了一系列InstructBLIP模型:1)FlanT5 [7],一种从T5 [34] finetuned而来的encoder-decoder型LLM;2)Vicuna [2],一种从LLaMA [41] finetuned而来的decoder-only型LLM。InstructBLIP模型在多种视觉-语言任务上实现了最先进的zero-shot性能。此外,作为下游任务的模型初始化,InstructBLIP模型在finetuning时也达到了最优性能。

2 视觉-语言指令调优

InstructBLIP 旨在应对 vision-language instruction tuning 中的独特挑战,并对模型在未见数据和任务上的泛化能力提升进行系统研究。本节首先介绍 instruction tuning 数据的构建方式,然后阐述训练与评估协议。接着,从模型和数据两个角度出发,详细说明两种提升 instruction tuning 效果的技术。最后,给出实现细节。

2.1 任务与数据集

为了在保证 instruction tuning 数据多样性的同时兼顾其可获取性,我们收集了一套全面的、公开可用的 vision-language 数据集,并将其转化为 instruction tuning 格式。如图 2 所示,最终的集合涵盖了 11 个任务类别和 26 个数据集,包括图像描述(image captioning)[23, 3, 51],图像描述与阅读理解结合任务(image captioning with reading comprehension)[38],视觉推理(visual reasoning)[16, 24, 29],图像问答(image question answering)[11, 12],基于知识的图像问答(knowledge-grounded image question answering)[30, 36, 28],结合阅读理解的图像问答(image question answering with reading comprehension)[31, 39],图像问题生成(image question generation,改编自 QA 数据集),视频问答(video question answering)[47, 49],视觉对话问答(visual conversational question answering)[8],图像分类(image classification)[18],以及 LLaVA-Instruct-150K [25]。我们在附录 C 中提供了每个数据集的详细描述和统计信息。

针对每个任务,我们精心设计了 10 到 15 个不同的自然语言 instruction 模板。这些模板作为构建 instruction tuning 数据的基础,明确描述了任务及其目标。对于那些本身偏向生成简短回答的公开数据集,我们在其对应的部分 instruction 模板中加入了“short”、“briefly”等词语,以降低模型固定生成简短输出的过拟合风险。对于 LLaVA-Instruct-150K 数据集,我们没有额外加入 instruction 模板,因为其本身已是 instruction 格式。全部 instruction 模板列表见附录 D。
在这里插入图片描述

2.2 训练和评估协议

为了确保训练和 zero-shot 评估中有足够的数据和任务,我们将这 26 个数据集划分为 13 个 held-in 数据集和 13 个 held-out 数据集,分别在图 2 中以黄色和白色标注。我们使用 held-in 数据集的训练集进行 instruction tuning,并利用其验证集或测试集进行 held-in 评估。

对于 held-out 评估,我们的目标是理解 instruction tuning 如何提升模型在未见数据上的 zero-shot 表现。我们定义了两种类型的 held-out 数据:1)训练过程中模型未接触的数据集,但其任务类型在 held-in 集合中出现过;2)训练过程中完全未接触的数据集及其相关任务。第一类 held-out 评估面临的挑战在于 held-in 与 held-out 数据集之间的数据分布偏移。对于第二类情况,我们完全保留了一些任务未用于训练,包括视觉推理(visual reasoning)、视频问答(video question answering)、视觉对话问答(visual conversational QA)和图像分类(image classification)。

为避免数据污染,我们对数据集进行了精心筛选,确保任何评估数据不会出现在 held-in 训练集合中。instruction tuning 过程中,我们将所有 held-in 训练集混合,并对每个数据集均匀采样其 instruction 模板。模型使用标准的语言建模损失进行训练,以根据 instruction 直接生成响应。此外,对于包含场景文字的任务数据集,我们在 instruction 中加入 OCR tokens 作为补充信息。

2.3 基于指令的视觉特征提取

现有的 zero-shot 图像到文本生成方法(包括 BLIP-2)在提取视觉特征时不考虑 instruction,因此无论任务为何,输入到 LLM 的都是一组静态视觉表示。相比之下,instruction-aware 的视觉模型可以根据任务指令调整自身,从而生成更有利于当前任务的视觉表示。如果我们期望对于同一张图像的任务指令会有显著变化,那么这种方式显然更具优势。

我们在图 3 中展示了 InstructBLIP 的架构。类似于 BLIP-2 [20],InstructBLIP 使用一个 Query Transformer(即 Q-Former)从冻结的图像编码器中提取视觉特征。Q-Former 的输入包括一组 K 个可学习的查询嵌入(query embeddings),这些嵌入通过交叉注意力与图像编码器的输出进行交互。Q-Former 的输出是一组 K 个编码后的视觉向量(每个查询嵌入对应一个),这些向量经过线性投影后被送入冻结的 LLM。与 BLIP-2 一样,Q-Former 在 instruction tuning 之前需通过图像-文本数据完成两阶段预训练。第一阶段中,Q-Former 与冻结图像编码器一同用于 vision-language 表示学习;第二阶段中,将 Q-Former 的输出适配为用于文本生成的软视觉提示(soft visual prompts),此时 LLM 仍处于冻结状态。在预训练完成后,我们在 instruction tuning 阶段对 Q-Former 进行微调,此时 LLM 接收来自 Q-Former 的视觉编码和任务指令作为输入。
在这里插入图片描述

在 BLIP-2 的基础上,InstructBLIP 提出了一个 instruction-aware 的 Q-Former 模块,该模块将指令文本 token 作为额外输入。指令通过 Q-Former 的自注意力层与查询嵌入进行交互,从而促进任务相关图像特征的提取。由此,LLM 接收到有助于执行指令的视觉信息。我们通过实验证明(见表 2),instruction-aware 的视觉特征提取在 held-in 和 held-out 的评估中都带来了显著的性能提升。

2.4 平衡训练数据集

由于训练数据集数量众多,且各数据集规模差异显著,若直接对它们进行均匀混合,可能导致模型对小数据集过拟合、对大数据集欠拟合。为缓解该问题,我们提出按数据集大小的平方根比例进行采样。一般地,设有 DD 个数据集,大小为 {S1,S2,…,SD}\{ S _ { 1 } , S _ { 2 } , \ldots , S _ { D } \}{S1,S2,,SD},训练期间从数据集 dd 采样的概率为:pd=Sd∑i=1DSi.\begin{array} { r } { p _ { d } = \frac { \sqrt { S _ { d } } } { \sum _ { i = 1 } ^ { D } \sqrt { S _ { i } } } . } \end{array}pd=i=1DSiSd.

在此基础上,我们对某些数据集的权重进行了手动调整以优化训练过程。这种调整是合理的,因为尽管一些数据集规模相近,但由于任务本身的差异,其训练难度和所需训练强度也不相同。具体来说,我们降低了包含多项选择题的 A-OKVQA 的权重,同时提高了需要生成开放式文本答案的 OKVQA 的权重。表 2 显示,该平衡数据集采样策略在 held-in 评估和 held-out 泛化方面均提升了整体性能。

2.5 推理方法

在推理阶段,我们针对不同数据集采用了两种略有不同的生成方法。在大多数数据集(如图像描述和开放式 VQA)上,我们直接用指令微调后的模型进行生成,然后将其输出与真实答案对比以计算指标。而对于分类和多项选择的 VQA 任务,我们遵循以往工作的方法 [46, 22, 21],采用词汇排名的方式。具体来说,我们仍然提示模型生成答案,但将其输出词汇限制在候选列表中。然后计算每个候选答案的对数似然值,选择值最大的作为最终预测结果。

该排名方法应用于 ScienceQA、IconQA、A-OKVQA(多项选择)、HatefulMemes、Visual Dialog、MSVD 和 MSRVTT 数据集。此外,对于二分类任务,我们将正负类别扩展为一组更通用的 verbalizer(语言标记),以利用自然文本中的词频(例如,将正类扩展为 yestrue,负类扩展为 nofalse)。

对于视频问答任务,我们从每段视频中均匀采样四帧图像。每帧图像分别通过图像编码器和 Q-Former 处理,提取出的视觉特征再拼接后输入到 LLM。

在这里插入图片描述

温馨提示:
阅读全文请访问"AI深语解构" InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

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

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

相关文章

基于dropbear实现嵌入式系统ssh服务端与客户端完整交互

以下基于 Dropbear 实现 SSH 服务端与客户端交互的完整步骤,涵盖服务端部署、客户端连接、认证配置及消息传输,结合了多篇权威资料的核心实践:环境准备与安装 服务端安装 • Linux 系统(以 Ubuntu/CentOS 为例) Ubuntu…

深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效

近日,深圳安锐科技正式发布国内首款无线自供电、一体化的斜拉索实时监测设备 “4G索力监测仪”,成功攻克了传统桥梁索体监测领域长期存在的实时性差、布设困难和成本高昂的行业难题,为斜拉桥、系杆拱桥提供全无线、自动化、云端实时同步的索力…

Pipeline 引用外部数据源最佳实践

场景解析在企业网络安全日志处理场景中,防火墙、入侵检测系统(IDS)等设备会持续产生大量日志,记录网络流量、访问请求、异常事件等基础信息,但这些原始日志仅能呈现表面现象,难以全面剖析安全威胁&#xff…

UI + MCP Client + MCP Server(并且链接多个Server)

项目结构前端项目--------->MCP Client----------->MCP Serverserver就不过多赘述了,他只是相当于添加了多个的tools 链接前后端 http.createServer创建一个服务器// ---------------------------------------------------------------- // server.js import …

香港站群服务器与普通香港服务器对比

在选择香港服务器时,用户常常会遇到"站群服务器"和"普通服务器"两种选项,虽然它们都基于香港数据中心的基础设施,但在 IP 地址配置、功能定位和管理复杂度、成本上存在显著差异,理解这些差异有助于用户根据实…

4.B树和B+树的区别?为什么MySQL选择B+树作为索引?

区别:1.数据存储位置B树每个节点都存储了索引和数据B树只有叶子节点存储数据,非叶子节点仅存储索引2.叶子节点的链接B树的所有叶子节点通过指针连接成一个双向链表,可以高效地进行范围查询或者顺序遍历B树则没有这样的连接关系,查…

转换狂魔,Modbus TCP转Profinet网关打通视觉传感线连接之路

在汽车零部件冲压生产线的世界中,液压机的压力稳定性是确保产品质量的秘密武器。然而,旧时代的人工巡检和传统监测方式却好似拖累现代化进程的沉重枷锁:效率低、成本高,还总是赶不上实时反馈的快车。这时,工厂决心大刀…

C++进阶—二叉树进阶

第一章:内容安排说明 map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构二叉搜索树的特性了解,有助于更好的理解map和set的特性二叉树中部分面试题稍微有点难度,在前面讲解大家不容易接受,且时间长容易…

驱动下一代E/E架构的神经脉络进化—10BASE-T1S

汽车电子电气架构的演进正经历一场深刻的变革,“中央计算单元区域控制器”的架构模式已成为当前主流车型平台发展的明确方向。这种从传统的“功能域”(Domain)架构向“区域”(Zonal)架构的转型升级,旨在实现…

某学校系统中挖矿病毒应急排查

本篇文章主要记录某学校长期未运营维护的程序,被黑客发现了漏洞,但好在学校有全流量设备,抓取到了过程中的流量包 需要你进行上机以及结合流量分析,排查攻击者利用的漏洞以及上传利用成功的木马 文章目录靶机介绍1.使用工具分析共…

vue 、react前端页面支持缩放,echarts、地图点击左边不准的原因和解决办法

原因 由于以上都是通过canvas画布生成的,一旦初始化,就会按照比例进行缩放,但与此同时,比例尺并没有变化,导致坐标偏移 解决办法 设置一个zoomVal产量,在页面加载时计算缩放比例,然后在canvas容…

(LeetCode 每日一题) 1353. 最多可以参加的会议数目 (优先队列、小顶堆)

题目:1353. 最多可以参加的会议数目 思路:优先队列实现小顶堆,0(mx*logn) 在第i天,优先选endDay最小的那一个活动进行。那么遍历每一天,用小顶堆来维护每个活动的最后一天即可,细节看注释。 C版本&#xf…

Java结构型模式---代理模式

代理模式基础概念代理模式是一种结构型设计模式,其核心思想是通过创建一个代理对象来控制对另一个真实对象的访问。代理对象在客户端和真实对象之间起到中介作用,允许在不改变真实对象的前提下,对其进行增强或控制。代理模式的核心组件主题接…

MySQL流程控制函数全解析

MySQL 中的流程控制函数(也称为条件函数)允许你在 SQL 语句中进行逻辑判断,根据不同的条件返回不同的值或执行不同的操作。它们极大地增强了 SQL 的灵活性和表达能力,尤其在进行数据转换、结果格式化、条件聚合和复杂业务逻辑实现…

【7】PostgreSQL 事务

【7】PostgreSQL 事务前言使用事务事务内错误处理事务保存点DDL 事务前言 在 PostgreSQL 中,每一个操作都是一个事务。即使一个简单的查询(select),这也是一个事务。 例如: postgres# select now();now --------------------…

Linux:多线程---深入互斥浅谈同步

文章目录1. 互斥1.1 为什么需要互斥1.2 互斥锁1.3 初谈互斥与同步1.4 锁的原理1.5 可重入VS线程安全1.6 死锁1.7 避免死锁的算法(扩展)序:在上一章中我们知道了线程控制的三个角度:线程创建、线程等待和线程终止,分别从…

适用于 vue2、vue3 的自定义指定:v-int(正整数)

在项目中,我们经常会遇到输入框只允许输入数字的情况,下面是一段自定义指定 代码,复制到项目中,注册指定即可使用用法如下: 创建一个IntInput.js 文件,将下面代码复制到文件中保存在项目中的 main.js 文件中…

学习基于springboot秒杀系统-环境配置(接口封装,mybatis,mysql,redis(Linux))

文章目录前言创建springboot项目封装controller层输入输出rest api 的json输出返回页面集成mybatis集成redis下载虚拟机和centos下载redis.tar.gz上传redis.tar.gz 到虚拟机前言 今天开始记录学习秒杀系统-课程是基于慕课上的搜索秒杀系统的课程,老师讲解非常好。这…

stm32达到什么程度叫精通?

STM32达到什么程度叫精通?一个十年老兵的深度反思 前言:精通二字,重如泰山 每次有人问我"STM32达到什么程度叫精通"这个问题,我都会沉默很久。 不是因为这个问题难回答,而是因为"精通"这两个字太重…

微软上线Deep Research:OpenAI同款智能体,o3+必应双王炸

今天凌晨,微软在官网宣布,Azure AI Foundry中上线Deep Research公开预览版。这是支持API和SDK的OpenAI 高级智能体研究能力产品,并且Azure 的企业级智能体平台完全集成。Deep Research是OpenAI在今年4月25日发布的最新产品,能够像…