【LMM 002】大型语言和视觉助手 LLaVA-1.5

论文标题:Improved Baselines with Visual Instruction Tuning
论文作者:Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee
作者单位:University of Wisconsin-Madison, Microsoft Research, Columbia University
论文原文:https://arxiv.org/abs/2310.03744
论文出处:–
论文被引:75(12/31/2023)
论文代码:https://github.com/haotian-liu/LLaVA,12k star
项目主页:https://llava-vl.github.io/

Abstract

大型多模态模型(Large Multimodal Models,LMM)最近在视觉指令调优方面取得了令人鼓舞的进展。在本说明中,我们展示了 LLaVA 中完全连接的视觉-语言跨模态连接器的强大功能和数据效率。我们对 LLaVA 进行了简单的修改,即使用 CLIP-ViT-L-336px 与 MLP 投影,并添加了以学术任务为导向的 VQA 数据和简单的响应格式提示,从而建立了更强大的基线,在 11 项基准测试中达到了最先进的水平。我们最后的 13B 检查点仅使用了 120 万个公开数据,在单个 8 卡 A100 节点上只用了 1 天就完成了全部训练。我们希望这能使最先进的 LMM 研究更容易获得。

1. Introduction

大型多模态模型(LMM)在研究界越来越受欢迎,因为它们是实现通用辅助工具的关键构件[1, 22, 35]。最近关于 LMM 的研究都集中在一个核心概念上,即视觉指令调优[28]。研究结果令人鼓舞,例如 LLaVA [28] 和 MiniGPT-4 [49] 在自然指令遵循和视觉推理能力方面取得了令人印象深刻的成果。为了更好地了解 LMM 的能力,人们提出了多个基准 [11, 20, 26, 29, 43]。近期的研究进一步证明,通过扩大预训练数据[2, 9],指令遵循数据[9, 21, 45, 46],视觉编码器[2]或语言模型[31]的规模,LMM 的性能得到了进一步提高。LLaVA 架构还可用于不同的下游任务和领域,包括区域级[6, 44]和像素级[19]理解,生物医学助手[23],图像生成[3],对抗研究[4, 47]。

本说明在 LLaVA 框架的基础上建立了更强大,更可行的基线。我们报告了两个简单的改进,即 MLP 跨模态连接器和纳入学术任务相关数据(如 VQA),这两个改进与 LLaVA 框架是正交的,与 LLaVA 一起使用时,能带来更好的多模态理解能力。InstructBLIP [9] 或 Qwen-VL [2] 需要在数亿甚至数十亿的图像-文本对数据上训练专门设计的视觉重取样器,相比之下,LLaVA 采用了最简单的 LMM 架构设计,只需要在 60 万个图像-文本配对上训练一个简单的全连接投影层。我们的最终模型可以在一台 8 卡 A100 机器上用 1 天左右的时间完成训练,并在各种基准测试中取得最先进的结果。此外,与 Qwen-VL [2] 在训练中使用内部数据不同,LLaVA 仅使用公开数据。我们希望这些经过改进且易于重现的基准能够为开源 LMM 的未来研究提供参考。

2. Background

Instruction-following LMM.

常见的架构包括一个用于编码视觉特征的预训练视觉主干,一个用于理解用户指令并生成响应的预训练大型语言模型(LLM),以及一个用于将视觉编码器输出与语言模型相匹配的视觉-语言跨模态连接器。如图 1 所示,LLaVA [28] 可能是 LMM 最简单的架构。可选择使用视觉重采样器(如 Qformer [24])来减少视觉 batch 的数量 [2 , 9, 49]。指令遵循 LMM 的训练通常分为两个阶段。

  • 首先,视觉-语言对齐预训练阶段利用图像-文本对将视觉特征与语言模型的单词嵌入空间对齐。早期的研究利用相对较少的图像-文本对(如 600K 对 [28] 或 600 万对 [49]),而最近的一些研究则在大量图像-文本对(如 1.29 亿对 [9] 和 1.4B 对 [2])上对特定语言模型的视觉语言连接器进行预训练,以最大限度地提高 LMM 的性能。

  • 其次,视觉指令调优阶段对视觉指令模型进行调优,使模型能够满足用户对涉及视觉内容的指令的不同要求。

在这里插入图片描述

Multimodal instruction-following data.

在 NLP 领域,研究表明,指令遵循数据的质量在很大程度上会影响指令遵循模型的能力[48]。在视觉指令调优方面,LLaVA[28] 率先利用纯文本 GPT-4 将现有的 COCO[27] 边框和Caption数据集扩展为多模态指令遵循数据集,其中包含三种类型的指令遵循数据:

  • 对话式 QA
  • 详细描述
  • 复杂推理

LLaVA 的管道已被用于扩展到文本理解[45],百万尺度[46]和区域级对话[6]。InstructBLIP [9] 结合了面向学术任务的 VQA 数据集,进一步增强了模型的可视化能力。相反,[5] 发现这种天真的数据合并会导致模型倾向于过度拟合 VQA 数据集,从而无法参与自然对话。作者进一步建议利用 LLaVA 管道将 VQA 数据集转换为对话风格。虽然这对训练很有效,但却增加了数据扩展的复杂性。

3. Improved Baselines of LLaVA

Overview.

在这里插入图片描述

作为视觉指令调优的初始作品,LLaVA 在视觉推理能力方面表现出了令人称道的熟练程度,在现实生活中视觉指令遵循任务的各种基准测试中甚至超过了最新的模型,而在通常需要简短答案(如单词)的学术基准测试中仅有不足。后者是由于 LLaVA 没有像其他方法那样在大规模数据上进行预训练。在本说明中,我们首先在表 1 所选的三个数据集上研究了数据,模型和输入图像分辨率的缩放效应,然后在表 2 所列的 12 个不同基准集上将最终模型与现有 LMM 进行了比较。我们的研究表明,LLaVA 的架构在视觉指令调优方面功能强大,数据效率高,与所有其他方法相比,LLaVA 使用更少的计算和训练数据实现了最佳性能

在这里插入图片描述

Response formatting prompts.

我们发现,InstructBLIP [9] 等方法无法[5]在短式和长式 VQA 之间取得平衡的主要原因如下。

  • 首先,回答格式的提示含糊不清。例如,Q:{问题} A: {答案}。这样的提示没有明确指出理想的输出格式,即使是自然的视觉对话,也会使 LLM 过度适应简短的答案。
  • 第二,没有对 LLM 进行微调。InstructBLIP 只对 Qformer 进行指令微调,使得第一个问题更加严重。它需要 Qformer 的视觉输出标记来控制 LLM 输出的长度,使其成为长式或短式,就像前缀调优那样 [25],但 Qformer 与 LLaMA 等 LLM 相比,由于容量有限,可能无法正确地做到这一点。定性示例见表 6。

在这里插入图片描述

为解决这一问题,我们建议使用单个回答格式提示,明确指出输出格式,在提示简短回答时附加在 VQA 问题的末尾:Answer the question using a single word or phrase.。我们的经验表明,当 LLM 使用这种提示进行微调时,LLaVA 能够根据用户的指示正确调优输出格式,并且不需要使用 ChatGPT [5] 对 VQA 数据进行额外处理,从而进一步扩展到各种数据源。如表 1 所示,只需在训练中加入 VQAv2 [12],LLaVA 在 MME 上的性能就会显著提高(1323.8 vs 502.8),比 InstructBLIP 高出 111 分。

MLP vision-language connector.

受到从线性投影到 MLP 的自我监督学习性能提高的启发 [7, 8],我们发现,与最初的线性投影设计相比,使用双层 MLP 提高视觉语言连接器的表示能力可以提高 LLaVA 的多模态能力

Academic task oriented data.

如表 1 所示,我们进一步增加了面向学术任务的 VQA 数据集,用于 VQA,OCR 和区域级感知,以从不同方面增强模型的能力。我们首先纳入了 InstructBLIP 中使用的四个附加数据集:开放知识 VQA(OKVQA [33],A-OKVQA [37])和 OCR(OCRVQA [34],TextCaps [39])。A-OKVQA 被转换为多选题,并使用特定的回答格式提示:Answer with the option's letter from the given choices directly。LLaVA 仅使用了 InstructBLIP 所使用数据集的一个子集,就已经在表 1 中的所有三项任务中超过了 InstructBLIP,这表明 LLaVA 的设计非常有效。此外,我们发现进一步添加区域级 VQA 数据集(Visual Genome [18],RefCOCO [17 , 32])可以提高模型定位细粒度视觉细节的能力。

Additional scaling.

我们进一步提高了输入图像的分辨率,使 LLM 能够清晰地 "看到 " 图像的细节,并添加了 GQA 数据集作为额外的视觉知识源。我们还加入了 ShareGPT [38] 数据,并像 [2, 6, 31] 那样将 LLM 放大到 13B。MM-Vet 的结果表明,当 LLM 扩展到 13B 时,改进最为显著,这表明基础 LLM 在视觉对话方面的能力非常重要。我们将所有修改后的最终模型称为 LLaVA-1.5(表 1 中的最后两行),它的性能令人印象深刻,大大超过了最初的 LLaVA [28]。

4. Discussion

Comparison with SoTA.

我们在各种学术 VQA 基准和最近专门为指令遵循 LMM 提出的基准(共 12 项基准)上对 LLaVA-1.5 进行了基准测试。我们发现,尽管使用的预训练和指令调优数据比其他方法少很多[2, 9],但在 12 个基准中的 11 个基准上,LLaVA-1.5 实现了最佳性能。令人鼓舞的是,LLaVA-1.5 利用最简单的架构,学术计算和公共数据集实现了最佳性能,并为未来研究提供了一个完全可重现且经济实惠的基线。研究结果还表明,在提高 LMM 能力方面,视觉指令调优比预训练发挥着更重要的作用,并对 LMM 需要大量视觉语言对齐预训练的普遍观点提出了质疑[2, 9, 24],尽管视觉编码器(如 CLIP [36],OpenCLIP [16],EVA-CLIP [10] 等)已经在网络规模的图像-文本配对数据集上进行了预训练。LLaVA-1.5(甚至是 7B 模型)的表现优于 80B IDEFICS [15],后者是一种类似于 Flamingo 的 LMM,具有数十亿个用于跨模态连接的可训练参数。这也让我们重新思考了视觉采样器的优势以及额外的大规模预训练在多模态指令遵循能力方面的必要性。

Zero-shot format instruction generalization.

在这里插入图片描述

尽管 LLaVA-1.5 只在有限的几种格式指示下进行了训练,但它可以泛化到其他格式指示。首先,VizWiz [13] 要求模型在所提供的内容不足以回答问题时输出 “无法回答”,而我们的回答格式提示(表 8)有效地指示模型这样做(无法回答问题的回答率为 11.1% → 67.8%)。我们还提供了一些定性示例,说明如何指示 LLaVA-1.5 验证棘手问题(表 3)并以受限的 JSON 格式进行回复(表 4)。

在这里插入图片描述

在这里插入图片描述

Zero-shot multilingual capability.

虽然 LLaVA-1.5 完全没有针对多语言多模态指令遵循进行微调,但我们发现它能够跟踪多语言指令,这部分归功于 ShareGPT [38] 中的多语言指令。我们在 MMBenchCN [29]上定量评估了模型对中文的泛化能力,MMBench 的问题被转换为中文。值得注意的是,LLaVA-1.5 比 Qwen-VL-Chat 高出 7.3%(63.6% vs 56.7%),尽管 Qwen 对中文多模态指令进行了微调,而 LLaVA-1.5 没有。

Computational cost.

对于 LLaVA-1.5,我们使用了与 LCS-558K1 相同的预训练数据集,并保持与 LLaVA [28] 大致相同的训练迭代次数和批量大小进行指令调优。由于图像输入分辨率提高到 336px,LLaVA-1.5 的训练时间是 LLaVA 的 2 倍:使用 8 卡 A100s 进行 6 小时的预训练和 20 小时的视觉指令调优。

Limitations.

尽管 LLaVA-1.5 取得了令人鼓舞的成果,但我们必须承认它还存在一些局限性。

  • 首先,LLaVA 使用的是完整的图像patch,这可能会延长每次训练迭代的时间。虽然视觉重取样器 [2, 9, 24] 减少了 LLM 中视觉patch的数量,但目前在训练数据量相当的情况下,视觉重取样器无法像 LLaVA 那样高效收敛,这可能是由于重取样器中的可训练参数较多。开发具有样本效率的视觉重取样器,可以为未来扩大指令遵循多模态模型的规模铺平道路。
  • 其次,LLaVA-1.5 还不能处理多幅图像,原因是缺乏此类指令遵循数据,以及上下文长度的限制。
  • 第三,尽管 LLaVA1.5 能熟练地遵循复杂指令,但它在某些领域的问题解决能力仍然有限,这可以通过更强大的语言模型和高质量,有针对性的视觉指令调优数据来改善。
  • 最后,尽管 LLaVA-1.5 的幻觉倾向大大降低,但它也难免产生幻觉和偶尔传播错误信息,因此在关键应用(如医疗)中应谨慎使用。

Appendix

Data.

我们的最终训练数据包含多种数据集:

  • VQA [12 , 14, 33, 37]
  • OCR [34, 39]
  • region-level VQA [17, 18 , 32]
  • 视觉对话 [28]
  • 语言对话 [38]

我们采用多种策略来降低训练成本并提高效率,具体如下:

  1. 对于所有 VQA 数据集,来自同一训练图像的 QA 对都会合并为一个对话。
  2. 对于 ShareGPT [38],我们按照 [41]的方法过滤掉无效对话。与 Vicuna[41]不同的是,超过 2048 个词组的长对话会被截断,而不是拆分成多个对话。这样就会产生 40K 个对话。
  3. A-OKVQA [37] 中的每对 QA 都会被增强 k 次,其中 k 是每个问题的选项数,以抵消多选数据的不足。
  4. 从 OCRVQA [34] 中抽取 80K 个对话样本。
  5. 对于视觉基因组,我们对带有附加注释的图像抽取 10 个注释样本。
  6. 对于 RefCOCO,会话被分割成片段,每个片段包含少于 10 个会话。
  7. 我们发现语言对话往往比图像对话更长。在每一批训练中,我们只从一种模态中抽取对话样本,这样可以将训练速度提高 25%,而且不会影响最终结果。

所有数据分拆在一起,并以相同的概率进行抽样。我们在表 7 中列出了最终数据的答题格式提示,在表 8 中列出了每个评价基准所使用的答题格式提示。

在这里插入图片描述

Hyperparameters.

LLaVA-1.5 使用的超参数集与最初的 LLaVA 相同,只是由于使用了 MLP 投影层而不是最初的线性投影层设计,将预训练的学习率减半。表 5 显示了第一阶段视觉语言对齐预训练和第二阶段视觉指令调优的训练超参数。

在这里插入图片描述

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

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

相关文章

win/linux 环境查看动态库包含的函数

我们打包了动态库,还要查看是否包含一些函数,需要导出这些函数 在win 环境下可以使用 .def 格式的文件进行操作 ######################################################### 跳过这一步,回到主题,在两个系统平台如何查看动态库包…

LanceDB:在对抗数据复杂性战役中,您可信赖的坐骑

LanceDB 建立在 Lance(一种开源列式数据格式)之上,具有一些有趣的功能,使其对 AI/ML 具有吸引力。例如,LanceDB 支持显式和隐式矢量化,能够处理各种数据类型。LanceDB 与 PyTorch 和 TensorFlow 等领先的 M…

图文证明 等价无穷小替换

等价无穷小替换 定义 等价无穷小是无穷小之间的一种关系,指的是:在同一自变量的趋向过程中,若两个无穷小之比的极限为1,则称这两个无穷小是等价的。无穷小等价关系刻画的是两个无穷小趋向于零的速度是相等的。 设当 x → x 0 时…

第5课 使用openCV捕获摄像头并实现预览功能

这节课我们开始利用ffmpeg和opencv来实现一个rtmp推流端。推流端的最基本功能其实就两个:预览画面并将画面和声音合并后推送到rtmp服务器。 一、FFmpeg API 推流的一般过程 1.引入ffmpeg库:在代码中引入ffmpeg库,以便使用其提供的功能。 2.捕获摄像头…

条款14:在资源管理类中小心拷贝行为

你可能会发现,有时候需要创建自己的资源管理类。例如,假设你正在使用一个C API来操作互斥对象,互斥类型提供了lock和unlock函数: void lock(Mutex* pm); // 锁住pm指向的互斥量 void unlock(Mutex* pm); // 互斥量解锁 class Lock { publi…

【LMM 003】生物医学领域的垂直类大型多模态模型 LLaVA-Med

论文标题:LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 论文作者:Chunyuan Li∗, Cliff Wong∗, Sheng Zhang∗, Naoto Usuyama, Haotian Liu, Jianwei Yang Tristan Naumann, Hoifung Poon, Jianfeng Gao 作…

2001-2021年各省高速公路里程数据

2001-2021年全国及各省高速公路里程数据 1、时间:2001-2021年 2、指标:高速公路里程 3、范围:全国及30个省市 (不含西藏) 4、来源:各省NJ、省TJGB、第三产业TJNJ (无缺失) 5、指…

Bytebase:统一数据库 CI/CD 解决方案 | 开源日报 No.128

bytebase/bytebase Stars: 7.9k License: NOASSERTION Bytebase 是一个数据库 CI/CD 解决方案,为开发人员和 DBA 提供统一的工具来管理不同数据库系统的开发生命周期。其主要功能包括标准化操作流程、SQL 代码审查、GitOps 集成以及数据访问控制等。关键特性和核心…

【JWT】JWT实战应用

学习参考:BV1gk4y177DS ------------------------------------------------------------------------------------------------------- # 一、前置知识点 - Java Web - Spring/SpringMVC/SpringBoot - Spring Security # 二、JWT介绍 ## 2.1 概念 官网:https://jwt.i…

带大家做一个,易上手的家常蒜酱鲍鱼

超市有个福利鲍鱼 就买回来弄一下 搞一个整个的蒜 蒜去皮切末 三四个干辣椒切小末 切一点葱花混进去 鲍鱼去壳 去内脏&牙齿 将鲍鱼切块 因为鲍鱼是正经不好入味的东西 起锅烧油 下入 葱蒜干辣椒 翻炒出味 然后倒入鲍鱼进行翻炒 翻炒均匀后 倒入 一勺生抽 半勺老抽 …

Python pycharm编辑器修改代码字体

在pycharm编辑器下修改代码字体,可以按照以下步骤: 点开上图所示的菜单, 再点击File->Settings,进入设置页面。 我们找到Editor下的Font并点选,然后我们就可以在右侧修改字体相关配置了。 这里建议使用等宽字体&…

27 UVM queue

uvm_queue类构建一个动态队列,该队列将按需分配并通过引用传递。 uvm_queue类声明: class uvm_queue #( type T int ) extends uvm_object 1 uvm_queue class hierarchy 2 uvm_queue class Methods 3 UVM Queue Example 在下面的示例中,…

Excel中部分sheet页隐藏并设置访问密码

1、新建sheet1 2、新建sheet2 3、隐藏sheet2 4、保护工作簿、输密码 5、密码二次确认 6、隐藏的sheet2已经查看不了 7、想要查看时,按图示输入原密码即可 8、查看sheet2内容

理解SQL中not in 与null值的真实含义

A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a ! b. 在sql中, null是缺失未知值而不是空值。 当你判断任意值a ! null时, 官方说, “You cannot use arithmetic comparison operators such as , <, or <> to test for NULL”, 任何与null值的对比都将返…

微服务(11)

目录 51.pod的重启策略是什么&#xff1f; 52.描述一下pod的生命周期有哪些状态&#xff1f; 53.创建一个pod的流程是什么&#xff1f; 54.删除一个Pod会发生什么事情&#xff1f; 55.k8s的Service是什么&#xff1f; 51.pod的重启策略是什么&#xff1f; 可以通过命令kub…

光伏逆变器MPPT的作用、原理及算法

MPPT是逆变器非常核心的技术&#xff0c;MPPT电压在进行光伏电站设计时一项非常关键的参数。 一、什么是MPPT&#xff1f; &#xff08;单块光伏组件的I-V、P-V曲线&#xff09; 上图中&#xff0c;光伏组件的输出电压和电流遵循I-V曲线(绿色)、P-V曲线(蓝色)&#xff0c;如果…

QT基础知识

QT基础知识 文章目录 QT基础知识1、QT是什么2、Qt的发展史3、为什么学习QT4、怎么学习QT1、工程的创建(环境的下载与安装请百度&#xff09;2、创建的工程结构说明3、怎么看帮助文档1、类使用的相关介绍2. 查看所用部件&#xff08;类&#xff09;的相应成员函数&#xff08;功…

uni-app模版(扩展插件)

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

Python如何把类当做字典来访问及浅谈Python类命名空间

Python如何把类当做字典来访问 Python把类当做字典来访问 定义一个类将它实例化&#xff0c;我们可以通过obj.属性来访问类的属性&#xff0c;如果想获取类的所有实例变量&#xff0c;我们可以使用obj.__dict__来访问&#xff0c;如下&#xff1a; class A:def __init__(self)…

CUMT--Java复习--核心类

目录 一、装箱与拆箱 二、“”与equals 三、字符串类 1、String、StringBuffer、StringBuilder的区别 2、String类 3、StringBuffer类 4、StringBuilder类 四、类与类之间关系 一、装箱与拆箱 基本类型与对应封装类之间能够自动进行转换&#xff0c;本质就是Java的自…
最新文章