多模态大模型升级:LLaVA→LLaVA-1.5,MiniGPT4→MiniGPT5

news2024/11/28 17:57:54

Overview

  • LLaVA-1.5
    • 总览
    • 摘要
    • 1.引言
    • 2.背景
    • 3.LLaVA的改进
    • 4.讨论
    • 附录

LLaVA-1.5

总览

题目: Improved Baselines with Visual Instruction Tuning
机构:威斯康星大学麦迪逊分校,微软
论文: https://arxiv.org/pdf/2310.03744.pdf
代码: https://llava-vl.github.io/
任务: 多模态大模型
特点: 预训练与指令微调只用非常少的数据(8张A100训练一天),就可以超过InstructBLIP和千问-VL。

  • LLaVA-1.5(预训练:558K,指令微调:665K,分辨率336,LLM:Vicuna 13B,projector:两层全连接)
  • InstructBLIP(预训练:129M,指令微调:1.2M,分辨率:224,LLM:Vicuna 13B,projecter:Q-former)
  • 千问-VL(预训练:1.4B,指令微调:50M,分辨率:448,LLM:千问-7B,projecter:VL-Adapter)等模型

方法: 研究数据、模型和图像输入分辨率的规模影响;

  1. 数据上(1)使用了InstructBLIP的VQA子集(2)VQA指令格式优化(3)ShareGPT多语言纯文本数据
  2. 模型上(1)双层全连接层充当adapter(2)LLM Vicuna 7B -> Vicuna 13B
  3. 分辨率上 224 -> 336
    前置相关工作:LLaVA,千问-VL,InstructBLIP
    历史博客:多模态大模型综述: LLaVA, MiniGPT4

摘要

近期,大型多模态模型(LMM)在视觉指令调优方面展示出了鼓舞人心的进步。在这篇简报中,我们证明了LLaVA中全连接的视觉语言跨模态连接器的强大力量和高效的数据效率。通过对LLaVA进行简单的修改,即使用带有MLP(多层感知器)映射的CLIP-ViT-L-336px,并添加以学术任务为导向,带有简单响应格式提示的视觉问答数据,我们成功建立了在11个基准测试中达到最先进水平的更强基线。我们最终的13B checkpoint仅使用了1.2M公开可用的数据,在单个8-A100节点上完成了全程训练,仅需大约1天的时间。我们希望这能让最先进的LMM研究更易于接触。代码和模型将公开发布。

1.引言

大型多模态模型(LMMs)已在研究社区中愈发受到欢迎,因为它们是通向通用助理的关键基础模块[1, 22, 35]。近期对LMMs的研究逐渐聚焦于被称为视觉指令调优[28]的核心概念上。结果十分令人鼓舞,例如,LLaVA[28]和MiniGPT-4[49]在自然指令跟随和视觉推理能力上展示出了卓越的成果。为了更好地了解LMMs的能力,已有多个基准测试[MME 11, Seed bench 20, 26, MM bench 29, 43]被提出。最近的研究进一步通过扩大预训练数据[千问-VL 2, InsctructBLIP 9],指令跟随数据[9, Otter 21, Llavar 45, Svit 46],视觉编码器[2]或语言模型[31]来展示改进的性能。LLaVA架构也被用于不同的下游任务和域,包括区域级别[Shikra 6, GPT2ROI 44]和像素级别[LISA 19]的理解,生物医学助手[23],图像生成[3],对抗性研究[4, 47]。

本文在LLaVA框架的基础上建立了更强,更可行的基线。我们报道了两个简单的改进,也就是,一个MLP跨模态连接器和结合如VQA这样的学术任务相关数据,它们与LLaVA的框架是正交的,而且当它们和LLaVA一起使用的时候,这会带来更好的多模态理解能力。与InstructBLIP [9]或Qwen-VL [2]相反,后两者在几亿,几十亿甚至更多的图像-文本配对数据上训练专门设计的视觉重新采样器,LLaVA仅使用最简单的LMMs架构设计,并且只需要在仅有的600K图像-文本配对上训练一个简单的全连接投影层。我们的最终模型可以在一台单个的8-A100机器上在1天内完成训练,而且在一系列基准测试上实现了最先进的结果。此外,与Qwen-VL [2]不同,后者在训练中包含了内部数据,LLaVA仅利用公开可用的数据。我们希望这些改进并易于复制的基线将为未来的开源LMM研究提供参考。

2.背景

指令跟随的LMM。常见的架构包括一个预训练的视觉主干来编码视觉特征,一个预训练的大型语言模型(LLM)来理解用户指令并产生响应,以及一个视觉-语言跨模态连接器来将视觉编码器的输出与语言模型对齐。如图1所示,LLaVA [28]可能是LMMs的最简单架构。视觉重采样器(例如 Qformer [24])被用来减少视觉补丁的数量[2, 9, 49]。训练一个指令跟随的LMM通常遵循两阶段协议。首先,视觉-语言对齐的预训练阶段利用图像-文本对来将视觉特征与语言模型的单词嵌入空间对齐。早先的工作使用相对较少的图像-文本对(例如~600K [LLaVA 28]或~6M [MiniGPT4 49]),而一些最近的工作在大量的图像-文本对上(例如129M [InstructBLIP 9]和1.4B [千问-VL 2])预训练视觉-语言连接器以用于特定的语言模型,从而最大化LMM的性能。第二,视觉指令调整阶段将模型调整到视觉指令上,使模型能够跟随用户对涉及视觉内容的指令的多样化请求。

BLIP model

多模态指令跟随数据。在自然语言处理(NLP)中,研究表明,指令跟随数据的质量在很大程度上影响了最终指令跟随模型的能力[48]。对于视觉指令微调,LLaVA [28]是第一个利用文本独立的GPT-4来扩展现有的COCO [27]bbox和caption数据集到一个包含三种类型指令跟随数据的多模态指令跟随数据集的先驱:对话式问答,详细描述和复杂推理。LLaVA的流程已被用来扩展到文本理解[45],百万级别[46],以及区域级别的对话[6]。InstructBLIP [9] incorporates学术任务定向的VQA数据集以进一步增强模型的视觉能力。相反,[5]认定这样简单的数据合并可以导致模型倾向于过度拟合VQA数据集,因此无法参与自然对话。作者进一步提出利用LLaVA流程将VQA数据集转换为对话风格。虽然这对训练有效,但它在数据扩展中引入了额外的复杂性。

3.LLaVA的改进

概述。作为视觉指令调整的初始工作,LLaVA已经在视觉推理能力上展示出了令人称赞的熟练技能,甚至在多样化的现实生活视觉指令跟随任务的多样化基准测试中超越了更多近期的模型,只是在通常需要短形答案(例如单个单词)的学术基准上稍显不足。后者归因于LLaVA没有像其他方法一样在大规模数据上进行预训练。在这篇短文中,我们首先研究了数据、模型和图像输入分辨率的规模影响,并在三个选择的数据集上进行验证,结果如表1所示。然后在表2中用最终模型与现有的LMMs在多样化的12组基准测试上进行比较。我们展示了LLaVA的架构对于视觉指令调整是强大且数据高效的,并且比所有其他方法使用显著更少的计算和训练数据就能达到最好的性能。

BLIP model

响应格式提示:我们发现像InstructBLIP[9]这样的方法无法在短篇和长篇视觉问答(VQA)之间达到平衡,主要原因如下。首先,关于响应格式的提示模棱两可。例如,问题:{问题} 回答:{回答}。这样的提示并没有清晰地指出期望的输出格式,甚至可能导致LLM在自然的视觉会话中甚至过度适应短形式的答案。其次,没有对LLM进行微调。InstructBLIP仅对Qformer进行指令调整的微调,使得第一个问题更加严重。它要求Qformer的视觉输出令牌来控制LLM的输出长度是长格式还是短格式,就像prefix tuning[25]一样,但是由于其与像LLaMA这样的LLM相比,只有有限容量,因此Qformer可能没有适当地做这件事的能力。请参见表6以了解一个定性的示例。

BLIP model

为了解决这个问题,我们建议使用一个单一的响应格式提示,清楚地指示输出格式,该提示将在推动简短回答时追加到VQA问题的末尾:“使用一个单词或短语来回答问题”。我们通过实证表明,当用这样的提示进行LLM微调时,LLaVA能够根据用户的指令适当地调整输出格式,并且不需要用chatgpt额外处理VQA数据。这进一步使其能够扩展至各种数据来源。如表1所示,仅通过在训练中包含VQAv2[12],LLaVA在MME上的表现显著提高(1323.8 vs 502.8),并且比InstructBLIP高出111点。

视觉语言连接器的MLP。 受到由线性投影改为MLP[7,8]在自监督学习中改善性能的启发,我们发现,通过将视觉语言连接器的表示能力改进为双层MLP,可以提高LLaVA的多模式能力,相比于原有的线性投影设计。

面向学术任务的数据。我们进一步包括了针对VQA,OCR和区域级感知的附加学术任务导向VQA数据集,如表1所示,以多种方式提升模型的能力。我们首先包括了InstructBLIP使用的四个附加数据集:开放知识VQA(OKVQA[33],A-OKVQA[37])和OCR(OCRVQA[34],TextCaps[39])。A-OKVQA被转化为多选题,使用了特定的响应格式提示:直接使用给定选项的字母来回答。仅使用InstructBLIP使用的数据集的一个子集,LLaVA就已经在表1的所有三项任务中超越了它,这表明LLaVA的有效设计。此外,我们发现,进一步添加区域级别的VQA数据集(Visual Genome[18],RefCOCO[17,32])可以提高模型定位细粒度视觉细节的能力。

额外的扩展。我们进一步放大输入图像分辨率,让LLM能清晰地“看到”图像的细节,并添加GQA数据集作为额外的视觉知识来源。我们还结合ShareGPT[38]数据,并根据[2,6,31]将LLM扩展到13B。在MM-Vet上的结果显示,当将LLM扩展到13B时,它的提升最为显著,这表明了基础LLM在视觉对话中的重要性。我们将所有这些修改后的最终模型称为LLaVA-1.5(在表的最后两行中)。其取得了令人印象深刻的表现,显著超过了原始的LLaVA [28]。

4.讨论

与SoTA的比较。我们在广泛的学术VQA基准测试和最近专门为遵循指令的LMM提出的基准测试上对LLaVA-1.5进行了评估,总共有12项基准测试。我们展示了它在12个基准测试中的11个基准测试上都取得了最佳性能,尽管与其他方法[2,9]相比,它使用的预训练和指令调整数据量小得多。令人鼓舞的是,LLaVA-1.5在最简单的架构,学术计算和公共数据集方面取得了最佳性能,并产生了一个完全可复制和负担得起的未来研究的基线。结果还表明,视觉指令调整在提高LMM能力上更重要,比预训练更为重要,并对普遍的观点产生了疑问,即“LMM需要大量的视觉-语言对齐预训练”[2,9,24],尽管视觉编码器(如CLIP[36],OpenCLIP[16],EVA-CLIP[10]等)已经在网络规模的图像-文本配对数据集上预训练过。LLaVA-1.5(甚至是7B模型)优于80B的IDEFICS[15],一个具有数十亿可训练参数的Flamingo-like LMM。这也使我们在多模态指令跟随能力方面,重新思考了视觉采样器的好处和额外大规模预训练的必要性。

BLIP model

zero-shot格式指令泛化。尽管LLaVA-1.5只使用了有限数量的格式指令进行训练,但它可以泛化到其他指令。首先,VizWiz[13]要求模型在提供的内容不足以回答问题时输出“无法回答”,我们的响应格式提示(表8)有效地指导模型这样做(在无法回答的问题上从11.1%提高到67.8%)。我们还提供了在指导LLaVA-1.5验证棘手问题(图3)和以约束性的JSON格式响应(图4)的定性例子。

BLIP model BLIP model

zero-shot多语言能力。尽管LLaVA-1.5并未针对多语言多模态指令进行微调,但我们发现,它能够遵循多语言的指令,这部分可能得益于ShareGPT [38]中的多语言语言指令。我们在MMBench-CN [29]上定量评估模型对中文的泛化能力,其中MMBench的问题被转换成中文。值得注意的是,尽管Qwen对中文多模态指令进行了微调,而LLaVA-1.5没有,但LLaVA-1.5的表现仍然超过了Qwen-VL-Chat 7.3%(63.6% vs 56.7%)。

计算成本。对于LLaVA-1.5,我们使用的预训练数据集是LCS-558K1(来自LAION-CC-SBU的约558K图像-文本对的子集,用BLIP打标,这在LLaVA-Lightning系列中被使用。),训练迭代次数和批次大小大致与LLaVA [28]保持一致。由于图像输入分辨率提高到336px,LLaVA-1.5的训练时间大约是LLaVA的2倍:预训练大约需要6小时,视觉指令调整大约需要20小时,使用的是8个A100s。

限制。尽管LLaVA-1.5展示出了有希望的结果,但仍需承认它存在几个限制。首先,LLaVA使用的是全图像块,可能将每次训练迭代拖长。尽管视觉重采样器 [2,9,24] 减少了LLM的视觉块数,但它们当前在相同训练数据量下,无法像LLaVA一样高效地达到收敛,这可能是由于重采样器中的可训练参数更多。有效样本的视觉重采样器的开发可能会为未来指令遵循的多模态模型的扩展铺平道路。

其次,由于缺乏此类指令跟随数据和上下文长度的限制,LLaVA-1.5还无法处理多张图片。第三,尽管LLaVA-1.5显示出了遵循复杂指令的熟练性,但其在某些领域的问题解决能力仍然有限,通过更强大的语言模型和高质量的,针对性的视觉指令调整数据可以得到改进。最后,尽管其产生错觉的倾向显著降低,但LLaVA并非完全不会产生错觉,偶尔还会传播错误信息,在关键应用(如医疗)中应慎重使用。

附录

数据。我们的最终训练数据混合包含了各种数据集:VQA [12, 14, 33, 37], OCR [34, 39], 区域级别的 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. 对于VisualGenome,我们为有附加注释的图像抽取了10个注释。
  6. 对于RefCOCO,对话被分解成片段,每个片段包含少于10个对话。
  7. 我们观察到语言对话通常比视觉对话长。对于每个批次,我们只从单一模态中抽取对话,这加快了训练速度25%,并且不影响最后的结果。

所有的数据切片都被一起连接,并且以相同的概率进行采样。我们在表7中展示了最终的指令跟踪数据混合的响应格式提示,以及在表8中用于每个评估基准的响应格式提示。
在这里插入图片描述

超参数。LLaVA-1.5使用的超参数集合与原始的LLaVA相同,唯一的不同是在预训练中我们将学习率减半,因为我们使用的是MLP投影层而不是原来的线性投影层设计。我们在表5中展示了第一阶段视觉语言对齐预训练和第二阶段视觉指令调整的训练超参数。
在这里插入图片描述

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

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

相关文章

无法解析符号 ‘SpringBootApplication’

刚打开一个项目出现"SpringBootApplication"无法解析: 通过以下步骤,修改maven路径即可: 文件---->设置(File--->Settings) 构建、执行、部署--->构建工具--->Maven--->Maven主路经&#xf…

07-ConfigurationClassPostProces的解析

文章目录 如何解析Component,Service,Configurationd,Bean,Import等注解1. 源码描述2. 类继承结构图3. 解析流程4. 具体的注解解析 如何解析Component,Service,Configurationd,Bean,Import等注解 1. 源码描述 BeanFactoryPostProcessor used for bootstrapping processing of…

论文笔记[156]PARAFAC. tutorial and applications

原文下载:https://www.sciencedirect.com/science/article/abs/pii/S0169743997000324 摘要 本文介绍了PARAFAC的多维分解方法及其在化学计量学中的应用。PARAFAC是PCA对高阶数组的推广,但该方法的一些特性与普通的二维情况截然不同。例如,…

O2O优惠券预测

O2O优惠券预测 赛题理解赛题类型解题思路 数据探索理论知识数据可视化分布 特征工程赛题特征工程思路 模型训练与验证 赛题理解 赛题类型 本赛题要求提交的结果是预测15 天内用券的概率,这是一个连续值,但是因为用券只有用与不用两种情况,而…

IDEA中为Maven配置使用vpn工具连接的网络

IDEA中为Maven配置使用vpn工具连接的网络 在电脑上使用VPN工具连接上特定网络后,发现idea中使用maven工具还是无法访问相关的网络,这时需要在idea中进行相关配置,开启ipv4代理 -Djava.net.preferIPv4Stacktrue maven配置 这时,…

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽,大家好,我是雷工。 JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符:只需要一个表达式就可以运算的运算符。 示例:正负号 一元运算符有两…

Golang 协程 与 Java 线程池的联系

Golang 协程 与 Java 线程池的联系 引言Java 线程池缺陷Golang 协程实现思路0.x 版本1.0 版本1.1 版本Goroutine 抢占式执行基于信号的抢占式调度 队列轮转系统调用工作量窃取GOMAXPROCS设置对性能的影响 小结 引言 如何理解Golang的协程,我觉得可以用一句话概括: …

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1)数据库结构 默认的数据库叫做default,存储于HDFS的:/user/hive/warehouse 用户自己创建的数据库存储位置:/user/hive/warehouse/database_name.db 2)创建数据库 create (database|…

c#设计模式-行为型模式 之 备忘录模式

🚀简介 备忘录模式(Memento Pattern)是一种行为型设计模式,它保存一个对象的某个状态,以便在适当的时候恢复对象。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象…

Android 14 正式发布,已经在 AOSP 中上线

本心、输入输出、结果 文章目录 Android 14 正式发布,已经在 AOSP 中上线前言总结主要更新内容机型支持优化性能的数据体现字体放大、多媒体支持加强Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持提供了新的图形和尺寸管理用户体验 与隐私安全弘扬爱国精神Android 14…

Vue3 + Nodejs 实战 ,文件上传项目--实现拖拽上传

目录 1.拖拽上传的剖析 input的file默认拖动 让其他的盒子成为拖拽对象 2.处理文件的上传 处理数据 上传文件的函数 兼顾点击事件 渲染已处理过的文件 测试效果 3.总结 博客主页:専心_前端,javascript,mysql-CSDN博客 系列专栏:vue3nodejs 实战-…

【JVM】JVM的内存区域划分

JVM的内存区域划分 堆Java虚拟机栈程序计数器方法区运行时常量池 堆 程序中创建的所有对象都保存在堆中 Java虚拟机栈 Java虚拟机栈的生命周期和线程相同,描述的是Java方法执行的内存模型,每个方法在执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法…

C语言 —— 结构体

生活中有许多复杂对象是无法用基本数据类型来描述的, 于是为了描述复杂对象, C语言就会使用到结构体. 1. 结构体的声明与定义 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明与定义 struct tag {…

vue3后台管理框架之基础配置

配置vite.config.js import { defineConfig } from viteimport vue from @vitejs/plugin-vueexport default defineConfig(({ command, mode }) => {//const env = loadEnv(mode, process.cwd(), ) //获取环境变量return {// 打包devbase: ./,// 开发环境server: {port: 50…

Spring framework Day11:策略模式中注入所有实现类

前言 什么是策略模式? 策略模式(Strategy Pattern)是一种面向对象设计模式,它定义了算法族(一组相似的算法),并且将每个算法都封装起来,使得它们可以互相替换。策略模式让算法的变…

LeetCode【17】电话号码的字母组合

题目: 思路: 参考:https://blog.csdn.net/weixin_46429290/article/details/121888154 和上一个题《子集》的思路一样,先画出树结构,看树的深度(遍历层级),树的宽度(横向…

压力山大题

找不到工作的面试者总结 提示:写文章的时候,我还在找工作!!! 文章目录 找不到工作的面试者总结前言一、JAVA面死题1. OOP是什么2. 重载与重写的区别3. java基本类型4. String、StringBuffer、StringBuilder的区别 二、…

2022最新版-李宏毅机器学习深度学习课程-P23 为什么用了验证集结果还是过拟合

用了验证集还有可能会过拟合 这个片段可以从理论上证明这一点 以上整个挑选模型的过程也可以想象为一种训练。 把三个模型导出的最小损失公式看成一个集合,现在要做的就是在这个集合中找到某个h(此处可以视为训练),使得在验证集…

边写代码边学习之Pycaret

PyCaret 简介 PyCaret 是一个用于简化 Python 机器学习工作流程的开源库。它提供了一个高级、低代码的接口,用于自动化机器学习流程的各个方面,使数据科学家和分析师更容易构建和部署机器学习模型。PyCaret 的一些关键特点和用途包括: 1. 自…

第六章 查找

第六章 查找 基本概念静态查找表顺序表上的查找有序表上的查找索引顺序表上的查找 二叉排序树散列表常见散列法散列表的实现 小试牛刀 基本概念 查找表是由同一类型的数据元素构成的集合,它是一种以查找为“核心”,同时包括其他运算的非常灵活的数据结构…