当前位置: 首页 > news >正文

多模态 ——LLaVA 集成先进图像理解与自然语言交互GPT-4的大模型

概述

提出了一种大型模型 LLaVA,它使用 GPT-4 生成多模态语言图像指令跟随数据,并利用该数据将视觉和语言理解融为一体。初步实验表明,LLaVA 展示了出色的多模态聊天能力,在合成多模态指令上的表现优于 GPT-4。 在科学质量保证中进行微调时,LLaVA 和 GPT-4 的协同作用实现了新的一流准确性。

论文链接:http://arxiv.org/abs/2304.08485
代码链接:https://github.com/haotian-liu/LLaVA
demo链接:https://llava-vl.github.io/

导言

本文的重点是开发结合视觉和语言的人工智能助手。在传统模型中,每项任务都是独立解决的,语言只能描述图像内容。然而,随着大规模语言模型(LLM)的发展,语言能够指导各种各样的任务。本文介绍了一种名为视觉指令调整的新技术,该技术可生成视觉数据来构建大规模多模态模型(LMM)。生成的数据用于微调 LMM,并构建通用的指令跟随视觉代理。 使用 GPT-4 在科学 QA 多模态推理数据集上实现卓越性能。

相关研究

本文将重点讨论如何构建能够遵从视觉和语言指令的代理。现有工作大致可分为端到端训练模型和通过 LangChain 等系统调整不同模型的模型。我们还将自然语言处理(NLP)研究中提出的 LLM 指令调整方法应用于视觉任务,目的是建立一个通用的指令遵循视觉代理。我们认为,这将提高对指令的有效理解和概括,并可能适用于新的多模态任务。

GPT 辅助生成视觉指示数据

虽然社会上公开的图像和文本数据激增,但多模态教学数据却很有限。为了应对这一挑战,有人提议使用 ChatGPT/GPT-4 从大量图像对数据中收集多模态教学数据。

我们提出了一种使用 GPT-4 生成基于图像-文本对的自然问题的方法。由于通常的扩展方法缺乏多样性和深度推理,因此提出了一种方法,利用纯语言 GPT-4 和 ChatGPT 作为教师,生成遵循视觉指令的数据。使用符号表示法对图像进行编码,生成不同类型的指令遵循数据。研究表明,GPT-4 可以提供高质量的指令跟随数据,而且比普通的数据增强方法效果更好。

视觉指令的调整

模型架构

主要目标是有效利用预训练 LLM 和视觉模型的能力。 网络架构如图 1 所示。

LaMA(Large Language Model for Instructions Following)即大型语言模型fφ(⋅),由参数 φ 参数化。这是因为它在仅针对开源语言的指令调整工作中被证明是有效的。ViT-L/14 提供视觉特征 Zv=g(Xv),并使用可训练的投影矩阵 W 将图像特征转换为语言嵌入标记 Hq。这确保了图像和语言模型具有相同的维度。

因此,从图像中得出的视觉标记 Hv 过程序列既轻便又高效,可以快速迭代以数据为中心的实验。其他模型,如 Flamingo’s Gate Cross Attention 和 BLIP-2’s Q-former 或 SAM,都提供了对象级功能。未来的研究仍将探索更有效、更复杂的架构设计。

模型训练

对于每幅图像,对话数据由若干个轮次(X1q、X1a、…)组成。XTq, XTa)。其中 T 代表回合总数。所有助手的回答都会被汇总,每个回合中的指令都会被整理为 Xtinstruct。这种方法产生的多模态指令统一格式如表 2 所示。利用原始的自回归训练目标,对预测标记进行 LLM 指令调整。具体来说,就是计算在长度为 L 的序列中生成目标答案 Xa的概率。在训练模型时,我们考虑了两阶段的指令调整程序。其中,θ 是可训练参数,Xinstruct < i 和 Xa < i 分别是当前预测标记 xi之前所有回合中的指令和答案标记。在条件语句中,明确添加了 Xv,以强调图像是以所有答案为基础的,并且跳过了 Xsystem 消息和之前的所有 以提高可读性。

该方法也包括两个阶段。在第一阶段,从 CC3M 中选取 595K 对图像-文本,并使用简单的扩展方法将其转换为符合指令的数据,以便将其视为单轮对话。在此,随机抽样的问题被用作图像的指令,而原始标题则被训练为预期答案。在这一阶段,视觉编码器和 LLM 权重是固定的,只有投影矩阵 W 用于最大化可能性。

第二步,固定视觉编码器的权重,更新 LLaVA 的投影层和 LLM 的权重。换句话说,可训练参数就是投影矩阵 W 和 φ。聊天机器人的训练使用收集到的语言图像指令跟踪数据,并对多转和单转回答进行均匀采样;在 ScienceQA 基准中,问题以自然语言或图像的形式提供上下文,助手负责推理过程,推理过程包括在 ScienceQA 基准中,问题以自然语言或图像的形式提供上下文,助手负责推理过程,从多个选项中选择一个答案

安装与部署

获取代码:

git clone https://github.com/haotian-liu/LLaVA.git
cd LLaVA

安装软件包:

conda create -n llava python=3.10 -y
conda activate llava
python -mpip install --upgrade pip  # enable PEP 660 support
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117
pip install -e .
pip uninstall bitsandbytes

如果想在本地启动 Gradio ui 演示,请依次运行以下命令。如果计划启动多个模型工作器以比较不同检查点之间的差异,只需要一次启动控制器和Web服务器。
在这里插入图片描述

启动项目:

python -m llava.serve.controller --host 0.0.0.0 --port 10000

试验

多模态聊天机器人

研究人员开发了一种名为 LLaVA 的新型多模态人工智能模型,并制作了一个聊天机器人演示,展示了它的图像理解和对话能力;LLaVA 仅在 80,000 张图像上进行了训练,并显示出与 GPT-4 相似的推理结果。这表明,LLaVA 可以遵循指令、理解场景并做出适当的回应。其他模型(BLIP-2 和 OpenFlamingo)则侧重于描述图像,对指令的反应有限。定量评估还比较了 LLaVA 和 GPT-4 在 COCO 验证集所选图像上的答题能力,试图从 GPT-4 的评分中了解 LLaVA 的表现。具体结果见表 3。

对说明的调整使模型遵循用户说明的能力提高了 50 多个百分点。增加详细说明和复杂推理问题后,模型的整体性能提高了 7 个百分点。模型在会话问题上的表现也有所提高,这表明推理能力与会话能力相辅相成。最后,将三种数据类型结合在一起取得了 85.1% 的最佳性能。该评估方案为全面评估和了解大型多模态模型的功能提供了一个基准。

在研究中,使用新适配器的 LLaVA 在 ScienceQA 数据集上达到了 90.92% 的高准确率,而 GPT-4 的结果为 82.69%。与 LLaVA 和 GPT-4 相结合,则能保持 90.97% 的高准确率。此外,还提出了一种通过再次提示 GPT-4 来生成唯一答案的方案,从而达到了 92.53% 的新的最高准确率。这项研究为利用 LLM 的模型组合提供了新的可能性。通过比较不同条件下的模型性能,我们对科学质量保证任务的适当模型配置有了更好的了解。

结论

本文展示了使用 GPT-4 语言模型进行视觉指令调整的有效性。本文引入了一个新的数据生成管道,以生成遵循语言和图像指令的数据,并在此基础上训练多模态模型 LLaVA。通过微调,ScienceQA 实现了新的 SoTA 准确率,多模态聊天数据实现了卓越的视觉聊天体验。未来的前景包括在更大的数据规模上进行预训练,并与其他视觉模型连接。这有望实现新的功能并提高性能。

相关文章:

多模态 ——LLaVA 集成先进图像理解与自然语言交互GPT-4的大模型

概述 提出了一种大型模型 LLaVA&#xff0c;它使用 GPT-4 生成多模态语言图像指令跟随数据&#xff0c;并利用该数据将视觉和语言理解融为一体。初步实验表明&#xff0c;LLaVA 展示了出色的多模态聊天能力&#xff0c;在合成多模态指令上的表现优于 GPT-4。 在科学质量保证中…...

文献学习-33-一个用于生成手术视频摘要的python库

VideoSum: A Python Library for Surgical Video Summarization Authors: Luis C. Garcia-Peraza-Herrera, Sebastien Ourselin, and Tom Vercauteren Source: https://arxiv.org/pdf/2303.10173.pdf 这篇文章主要关注的是如何通过视频摘要来简化和可视化手术视频&#xff0c…...

Unity Android 2021 Release-Notes

&#x1f308;Unity Android 2021 Release-Notes 版本更新内容2021.3.34Android: Google play.core package is replaced with separate plugins including play.asset-delivery 2.1.0 to solve PAD related compatibility problem with Android 14.(UUM-54157)2021.3.34Androi…...

Java8新特性--lambda表达式

lambda表达式本质上是一个匿名函数&#xff0c;在lambda表达式中我们只需要关心参数列表以及方法体。优点是可以减少代码量。 1.语法 基本语法&#xff1a;(参数)->表达式 或 (参数) -> {语句;} 2.函数式接口 要了解lambda表达式&#xff0c;首先要了解什么是函数式接口…...

C/C++中设置随机数

前言 我们通常在写一个数据结构后&#xff0c;需要去测试其正确性和性能比较&#xff0c;那在平常手动输入数据的方式太鸡肋&#xff0c;并且不具有普遍性和随机性。基于这个原因&#xff0c;我们必须要掌握设置随机数&#xff0c;不但可以给我们提供更多的数据&#xff0c;还可…...

ARM 三个小灯闪烁

.text .global _start _start: 使能GPIOE的外设时钟 LDR R0,0x50000A28 指定基地址 LDR R1,[R0] 读取r0中的数据保存到r1中 ORR R1,R1,#(0X3<<4) [4]设置为1,表示 STR R1,[R0] 将修改之后的值放回去 设置PE10,PE8为输出 LDR R0,0X50006000…...

创业之路:从市场洞察到产品实现的全方位指南

创业是一项挑战性的旅程&#xff0c;需要综合考虑市场、产品、技术、团队等多个方面。在这篇文章中&#xff0c;我们将深入探讨如何更好地进行创业&#xff0c;从市场分析到产品实现的各个环节。 深入市场洞察 在创业之前&#xff0c;深入了解目标市场是至关重要的。我们需要…...

C++ 红黑树模拟实现

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 前言 前面我们实现了AVL树&#xff0c;发明AVL树…...

【数据结构】第三节:单链表

前言 本篇要求掌握的C语言基础知识&#xff1a;指针、结构体 目录 前言 单链表 概念 对比链表和顺序表 创建链表 实现单链表 准备工作 打印链表 创建节点并初始化 尾插 二级指针的调用 尾插代码 头插 尾删 头删 查找&#xff08;返回节点&#xff09; 在指定位…...

Python中操作Excel表对象并打包为脚本

一、准备工作 pip install pandas pip install openpyxl pip install pyinstaller 数据表格&#xff1a; 数据表下载 二、执行写入操作 import pandas as pd # pyinstaller --onefile attendance_records_score.py # 打包 # 读取源Excel文件&#xff08;假设源表有列A…...

Python学习笔记23 - 目录操作

os模块操作目录相关函数 os.path模块操作目录相关函数 案例1 —— 列出指定目录下的所有.py文件 案例2 —— walk()...

今天你学langchain了吗?

langchain的重重难关 学习langchain也有一段时间了,从最初的0.0339版本到现在的稳定版本,langchain走了很长的路.在学习的路上也遇到了很多的困难. api_key难关 学习langchain最大的困难就是openai的API_KEY,国内无法申请到官方账号,申请到了也无法进行充值.好在有几美元的免…...

插值算法-代码实现

1、 import java.util.HashMap; import java.util.Map;public class Interpolation {public static void main(String[] args) {// 定义给定的 XML 字段值Map<String, double[]> xmlValues new HashMap<>();xmlValues.put("faceSize", new double[]{10…...

113.PyQt5_QtPrintSupport_打印操作

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

在vue中使用bing map 的小demo

1.注意事项&#xff08;关于经纬度&#xff09; 如果不转换成WGS84 标准的经纬度 bing map会报错 如果要在 Bing Maps 中使用中国地区的经纬度&#xff0c;需要先将其转换为 WGS84 标准的经纬度。你可以使用第三方的坐标转换服务&#xff0c;或者使用相关的 JavaScript 库进行…...

基于uni-app的埋点sdk设计

一、统计app激活状态 在App.vue 中 利用onShow生命周期验证 或者操作 onShow: function () { uni.showToast({ title: onShow }) }, 二、页面级别的统计 &#xff08;进入页面、停留时长、手机系统信息、网络状态、页面路径、标题&#xff09; 需要收集的数据 { &quo…...

Python学习笔记(三)

一、使用朴素贝叶斯制作鸢尾花数据模型 from sklearn.preprocessing import StandardScaler from sklearn.naive_bayes import MultinomialNB from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.feature_extraction…...

Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!

0 Python Excel库对比 我们先来看一下python中能操作Excel的库对比&#xff08;一共九个库&#xff09;&#xff1a; 1 Python xlrd 读取 操作Excel 1.1 xlrd模块介绍 &#xff08;1&#xff09;什么是xlrd模块&#xff1f; python操作excel主要用到xlrd和xlwt这两个库&…...

【学习笔记】R语言入门与数据分析1

数据分析 数据分析的过程&#xff1a; 数据采集 数据存储 数据分析 数据挖掘 数据可视化 进行决策 数据挖掘 数据量大 复杂度高&#xff0c;容忍一定的误差限 追求相关性而非因果性 数据可视化 直观明了 R语言介绍 R是免费的&#xff08;开源软件、扩展性好&#xff09;…...

MyBatis-Spring整合

引入Spring之前需要了解mybatis-spring包中的一些重要类&#xff1b; http://www.mybatis.org/spring/zh/index.html 什么是 MyBatis-Spring&#xff1f; MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 知识基础 在开始使用 MyBatis-Spring 之前&#x…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...