首页 > 其他分享 >多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning

时间:2023-06-26 17:08:53浏览次数:43  
标签:模态 模型 Instruction LlaVA Visual 指令 LLM GPT ChatGPT


多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_模态

代码:https://github.com/haotian-liu/LLaVA

总览

在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-following data)。 通过对此类生成数据进行指令调整,推出了大型语言和视觉助手(Large Language and Vision Assistant,LLaVA)。一种端到端训练的大型多模态模型,连接视觉编码器和 LLM 以实现通用视觉和语言理解。

背景等相关方法:大型语言模型(LLM)表明语言可以发挥更广泛的作用:通用助手的通用接口,各种任务指令可以用语言明确表示并指导端到端 训练有素的神经助手切换到感兴趣的任务来解决它。例如,最近 ChatGPT 和 GPT-4 的成功证明了对齐 LLM 在遵循人类指令方面的力量,并激发了人们对开发开源 LLM 的极大兴趣。 其中,LLaMA [44] 是一个与 GPT-3 性能相匹配的开源 LLM。 Alpaca [43]、Vicuna [45]、GPT-4-LLM [34]利用各种机器生成的高质量指令跟随样本来提高 LLM 的对齐能力,与专有 LLM 相比,报告了令人印象深刻的性能。 重要的是,这行工作是纯文本的。

不同于上面文本的指令微调,作者提出了视觉指令微调,第一个尝试将指令微调拓展到多模态领域调整。贡献如下:

  • 数据方面:使用ChatGPT/GPT-4来将数据转化为多模态指令遵循数据(multimodel instrustion-following data);
  • 模型方面:使用CLIP+LLaMA进行指令微调,构建了多模态大模型LLaVA,得到了较好的结果;
  • 开源,开源,还是开源!这年头大模型开源都算主要contribution了。

GPT-协助的数据生成

这部分我写的比较细,因为现在大模型论文在模型上区别并不大,主要还是数据的区别。

基于已有的大量图片对数据,利用ChatGPT/GPT-4进行多模态指令遵循数据的收集。主要问题集中在如何用 Language-only/Text-only的ChatGPT/GPT-4模型来为图片内容生成对应的指令。

最基本的方式:图片Xv和其对应的说明文字Xc,构建一个问题集合Xq来提示大模型助手对图片内容进行描述。通过提示GPT-4可以构建这样一个问题序列,如下图:

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_语言模型_02

然后可以将图文对扩展成指令遵循版本的数据格式:Human: Xq Xv \n。

但这样构造的数据都缺乏多样性和深入推理性,为了弥补这一问题,作者将视觉内容编码送进ChatGPT来提高指令的质量,用了两类的符合表示:文字说明(通常从不同的角度描述视觉场景)和编辑框BBox(通常对场景中的物体进行定位,每个边界框对物体的概念及其空间位置进行编码),如下图:

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_语言模型_03

通过这两类符合表示,将视觉内容传达给了大模型,然后手工设计了3种对话方式,利用GPT-4进行生成和扩充,分别是对话、细节描述复杂推理

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_语言模型_04

这里的每种类型使用的问题(Question)也是通过GPT进行in-context-learning来模仿生成的。其中,图片/描述/边界框等信息使用COCO数据集的数据。

以对话为例,作者采用了下图的方式生成更多的对话标签。

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_语言模型_05

最终累积158K的语言-图片指令遵循样本,58K对话、23K细节描述和77K复杂推理。同时在使用ChatGPT和GPT-4时,作者发现GPT-4生成的指令遵循数据质量更高,比如空间推理能力。

网络结构

与GPT-4-LLM[34], Alpaca[43], Vicuna[45]类似,作者使用LLaMA来做 指令微调任务,网络结构如下。整体比较简单,再语言模型前(LLaMA)添加了一个视觉编码器(CLIP)将图片转化为Patch features,然后这些图片特征经过一个映射层W转化为视觉Token,Vison Token与Language Token指令在同一个特征空间,一起拼接(concantate)一起送进大模型。

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_模态_06

这里的映射层W可以替换为更复杂的网络来提升性能。

模型训练

使用如下图的方式组织输入输出,其中绿色部分为参与损失计算的部分,损失使用自回归模型的损失,即next token prediction。

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_数据_07

作者使用了两阶段的训练方式:

  1. 预训练特征对齐模块(映射层W);
  2. 端对端的微调语言模型+映射层。

实验效果

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_语言模型_08

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning_数据_09

其他可以学习的文章

miniGPT-4的同期工作: 微软LLaVa模型论文笔记https://zhuanlan.zhihu.com/p/625723805

Visual Instruction Tuninghttps://zhuanlan.zhihu.com/p/624071363

参考文献

[34] Baolin Peng, Chunyuan Li, Pengcheng He, Michel Galley, and Jianfeng Gao. Instruction tuning with GPT-4.

[43] Rohan Taori, Ishaan Gulrajani, Tianyi Zhang, Yann Dubois, Xuechen Li, Carlos Guestrin, Percy Liang, and Tatsunori B. Hashimoto. Stanford alpaca: An instruction-following llama model. https://github.com/tatsu-lab/stanford_alpaca, 2023

[44] Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timo- thée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, et al. Llama: Open and efficient foundation language models. arXiv preprint arXiv:2302.13971, 2023.

[45] Vicuna. Vicuna: An open-source chatbot impressing gpt-4 with 90%* chatgpt quality. https: //vicuna.lmsys.org/, 2023.

标签:模态,模型,Instruction,LlaVA,Visual,指令,LLM,GPT,ChatGPT
From: https://blog.51cto.com/u_15366078/6555843

相关文章

  • 发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码
    赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。不过,手动注入依赖项也可能会成为我们开发过程中的瓶颈。通常情况下,当我们需要注入大量依赖对象时,我......
  • Visual Components数字化工厂解决方案 衡祖仿真
    使用VC软件设备模拟能快速的依据顾客的需求建立出生产线并进行分析,进而为客戶提供有效的设备解决方案。针对不同的使用者VisualComponents数字化工厂仿真软件,可通过电子邮件在线上展示复杂的设计流程给不同的客户和设备商,快速的取得客戶信任,在竞争对手中脱颖而出,助力签单。一......
  • [C/C++] Visual Stdio Code中多线程多源码文件编译、运行和调试
    搞了很久,记录一下:一.环境OS:Ubuntu20.04VSCode:1.77.0g++:g++(Ubuntu9.4.0-1ubuntu1~20.04.1)9.4.0二.配置文件下面两个文件先不要手动创建,下面第三章会讲到:task.json:编译程序的配置文件;launch.json:运行程序的配置文件.三.编译&运行1.打开main函数所在的cpp文......
  • visual studio 2022 community 多行编辑
    Alt+鼠标选择Alt+Shift+方向键Ctrl+Alt+鼠标选择Alt+Shift+;......
  • visual studio 2022 c++ doxygen风格注释
    设置工具/选项/文本编辑器/C/C++/代码样式/常规注释效果输入/**添加注释鼠标停靠注释预览......
  • VisualStudio解决方案多个文件夹将项目分类
    见过好多大项目,一个解决方案好多个项目,网站、动态库、测试等。放在不同的文件夹下,感觉很好。下面介绍一下方法。首先创建一个空白解决方案会自动创建MultiFolder解决方案目录。新建解决方案文件夹解决方案文件夹不会创建对应的真实目录,需手工在解决方案目录下创建。这个要......
  • 【HarmonyOS】端云一体化项目中打开Visual文件报错问题
    【关键字】端云一体化、低代码、ArkTS、Visual文件【问题描述】在使用端云一体化商场模板的过程中,突然遇到了无法打开Visual文件的情况,DevEcoStudio提示报错“JSONschemavalidationerror:data/visualModel/value/children/0/value/children/1/value/children/0/value/children/......
  • VisualVM 2.1.6 工具监控、查看内存溢出的jar服务包
    VisualVM2.1.6    链接:https://pan.baidu.com/s/1h_qacWhaQrW9kA97wdMnJQ提取码:ey5b  JTop.jar  存放路径:C:\ProgramFiles\Java\jdk-11.0.17\demo\management\JTop链接:https://pan.baidu.com/s/1UOE3ECl0-KqXnOFxs-Criw提取码:daL9 使用步骤:Visual......
  • 【gtest】Visual Studio 2019 单元测试学习Google Test
    前言记录在VS2019中使用自带的GoogleTest进行单元测试的方法和经验项目介绍总共2个项目,Work为项目工程,TestWork为Work工程的单元测试工程,TestWork依赖于Work工程,但是Work不依赖TestWork,TestWork是Work的旁路辅助工程,用于对代码的检查和测试。创建项目创建C++的常规Work工程......
  • Visual Studio Feature: .http Files
    ExploringtheNewVisualStudioFeature:.httpFiles#visualstudio#csharp#dotnet#abotwrotethisIntroduction:VisualStudio,thepopularintegrateddevelopmentenvironment(IDE)byMicrosoft,continuallyevolvestoenhancedevelopers'productivity......