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

2024-01-02 11:28

本文主要是介绍【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 显示了第一阶段视觉语言对齐预训练和第二阶段视觉指令调优的训练超参数。

在这里插入图片描述

这篇关于【LMM 002】大型语言和视觉助手 LLaVA-1.5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/562306

相关文章

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou