基于LLMs的多模态大模型(Visual ChatGPT,PICa,MM-REACT,MAGIC)

news/2024/5/21 0:35:30/文章来源:https://blog.csdn.net/qq_39388410/article/details/130756614

当LLMs已经拥有了极强的对话能力后,如何使其拥有视觉和语音等多模态能力是紧接而来的热点(虽然GPT4已经有了),这个系列将不定期更新一些利用LLMs做多模态任务的文章。

直觉上,如果直接训练一个类似chatgpt架构的多模态框架一定会消耗非常大的数据和计算量,此外如果每次增加一个新的模态,那现有框架都需要重新训练,这无论是对高校还是企业来说都是很难承担的代价。因此目前的文章都尝试利用一些策略或者适配的方法来连接语言模型和其他模型,特别是visual and language。

本篇博文首先整理一些不训练视觉模型的文章们,这些文章主要是利用一些策略使得LLMs能够完成多模态任务。


在这里插入图片描述

Visual ChatGPT
Visual ChatGPT是一个利用LLMs做agent,即利用LLMs作为语言中枢,通过告诉它每个视觉基础模型(Visual Foundation Models,VFMs)的输入输出格式,然后让ChatGPT针对用户提出的需求、进行模型的调用和选择。

  • 如上图所示,用户上传一张图像+指令(如请根据该图像的深度生成红花,然后风格变为卡通step by step)。
  • 于是PromptManager分解用户指定为多个可执行的捕捉,然后调用它的基础模型库(22个)。
  • 即先根据深度估计预测图像深度,然后利用深度生成红花,最后利用stable diffusion进行风格迁移。
    在这里插入图片描述

由于是利用chatGPT当基座,所以这注定是一个多轮对话的框架。如图所示,在图上中部,可以看到输入prompt manager的有四个部分:

  • system principles P:指定一些系统规则得到chatgpt可以理解的prompt,以帮助集成多个基础视觉模型。如对访问VFMs,根据文件名访问图像,cot以分解用户的命令(如上图拆解query为多个可供调用的步骤)。此外还有一些约束推理和系统可靠性的system principles。
  • visual foundation models F:一堆可供调用的基础视觉模型VFMs。为了方便模型调用,因此还需要定义名称、用法、输入/输出、例子(可选的)。
  • user query Q:当前时刻的用户查询。
  • history of dialogue H:所有的对话历史,但这里会按照chatgpt的最大输入来做截断。

所以对于一个对话 S = ( Q 1 , A 1 ) , ( Q 2 , A 2 ) , … , ( Q N , A N ) S=(Q_1,A_1),(Q_2,A_2),…,(Q_N,A_N) S=(Q1,A1),(Q2,A2),,(QN,AN),在第I轮对话中,所得到的回复 A i j + 1 A^{j+1}_i Aij+1是通过调用了j次基础视觉模型工具的结果,即 A i j + 1 = C h a t G P T ( M ( P ) , M ( F ) , M ( H < I ) , M ( Q i ) , M ( R i < j ) , M ( F ( A i ( j ) ) ) ) A^{j+1}_i=ChatGPT(M(P),M(F),M(H_{<I}),M(Q_i),M(R_i^{<j}),M(F(A^{(j)}_i))) Aij+1=ChatGPT(M(P),M(F),M(H<I),M(Qi),M(Ri<j),M(F(Ai(j))))M即prompt manager,用于把各个功能变成合理的prompt交由chatgpt处理。

paper:Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models
arxiv:https://arxiv.org/abs/2303.04671
github:https://github.com/microsoft/TaskMatrix


在这里插入图片描述

PICa
总调openai的接口也不是长久之道,如果有一些策略可以让视觉变成一种prompt的输入的话,便可以避免掉很多的计算量。一种最最直观的思路是,先将视觉转化为文本,然后再将文本输入到LLMs即可。

因此PICA这篇文章主要就是将视觉转化为文本(in-context learning的方式),然后执行一种Knowledge-based QA的工作。如上图的左下角所示,模型的输入是

  • 【N-shot VQA examples】【Question】【Image textual descriptions】,然后输入到冻结的LLMs(GPT3)中来利用大模型的能力。
    在这里插入图片描述

具体来说,图片所转化为的文本将直接和问题拼在一起,然后作为LLM的输入。此处所使用in-context learning的思路需要保证质量和数量,因此作者提出了In-context example selection和Multi-query ensemble两个策略。

  • In-context example selection。适合当前问题的样本应该和当前问题相似,因此利用CLIP(ViT-B/16)来挑选跟问题最相似的n个样本作为few-shots(16个),以尝试让LLMs直接生成回答。
  • Multi-query ensemble。此处是针对n个样本再生成k个prompts,最后用k个答案中的最高值作为输出。

paper:An Empirical Study of GPT-3 for Few-Shot Knowledge-Based VQA
arxiv:https://arxiv.org/abs/2109.05014
code:https://github.com/microsoft/PICa


但由于图像转成caption的过程中会损失一些视觉信息,因此目前一些模型都会先得到跟query更相关的视觉信息,比如加一个Image-Question Matching模块,比如使用attention如Q-former,这些模型将在下一篇博文:基于LLMs的多模态大模型(Flamingo, BLIP-2,KOSMOS-1)中进行整理。

此处略补一篇使用question generation的模型生成相应的问题来迁就图像的文章。

From Images to Textual Prompts: Zero-shot VQA with Frozen Large Language Models
在这里插入图片描述

思路较为直观,如上图所示,首先用caption模型生成图片的caption,然后抽取出其中的名词、形容词等,因为他们很有可能会是答案中的关键词,然后再根据这些词通过一个question generation的模型来生成相应的问题,以优化(question, answer) pair。

paper:https://arxiv.org/abs/2212.10846
code:https://github.com/salesforce/LAVIS/tree/main/projects/img2llm-vqa (LAVIS的实现版本)


在这里插入图片描述
MM-REACT
这个模型可说是以上两个模型思路的综合,其一方面通过一个caption模型将图像变为文本后再输入到大模型,另一方面它会调用chatgpt来调用各种视觉模型以实现多种多模态任务。

如上图所示,具体来说,对于用户输入的query将首先交给chatgpt来判断是否需要调用视觉模型(如caption、ocr、bing search等模型),对于需要调用情况来执行相应的action,否则直接拿chatgpt的输出结构返回给用户就行。

paper:MM-REACT: Prompting ChatGPT for Multimodal Reasoning and Action
arxiv:https://arxiv.org/abs/2303.11381
code:https://github.com/microsoft/MM-REACT


MAGIC
最后再补一篇MAGIC(iMAge-guided text GeneratIon with CLIP),它的优势在于无需多模态的训练数据,只需利用现成的语言模型(例如GPT-2)和图文匹配模型(例如CLIP)就能够以zero-shot的方式高质量地完成多模态生成任务。

为什么它连多模态数据都不要就能训练呢?原因在于它直接使用视觉信息来指导预训练语言模型的生成过程即可,如下图所示,视觉特征参与到语言模型的解码过程即可,即MAGIC Search解码算法。
在这里插入图片描述
既然MAGIC的思路是在LLMs进行生成的时候添加视觉约束,从而使生成的词更贴近视觉,所以最关键的部分在于如下公式,
在这里插入图片描述
该公式由三项组成:

  • model confidence:LLM预测词的概率,就是正常LLMs的输出loss。
  • degeneration penalty:退化惩罚, h v h_v hv [ x < t : v ] [x_{<t}:v] [x<t:v]拼接后的特征,而 h x j h_{x_j} hxj x < j + 1 x_{<j+1} x<j+1序列的特征,通过计算两者的cosine以鼓励每次生成的词会带来一些新的信息量。
  • magic score:视觉相关性,基于CLIP计算所有候选词和图片的softmax相关性,即f函数。

paper:Language Models Can See: Plugging Visual Controls in Text Generation
arxiv:https://arxiv.org/abs/2205.02655
code:https://github.com/yxuansu/MAGIC


下一篇博文将继续整理一些需要训练视觉模型来适配多模态大模型的文章们,这也是目前的主流方向:

  • 基于LLMs的多模态大模型(Flamingo, BLIP-2,KOSMOS-1,ScienceQA)

  • 基于LLMs的多模态大模型(MiniGPT-4,LLaVA,mPLUG-Owl,InstuctBLIP,X-LLM)

  • 基于LLMs的多模态大模型(PALM-E,ArtGPT-4,VPGTrans )

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

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

相关文章

sql查询指定数据的函数(等于、and、or、in、find_in_set、like)

sql查询指定数据的函数&#xff08;等于、and、or、in、find_in_set、like&#xff09;&#xff1a; 1.查询指定单字段的指定数据&#xff1a; 举例&#xff1a;查询user表中address字段数据等于aa的数据&#xff1b; select * from user where address aa 2.查询指定多字段…

【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第一章——调试调优背景介绍

1.模型迁移、模型调试调优背景介绍 模型训练\推理过程中可能遇到的问题&#xff1a; • 代码编写错误&#xff0c;问题难以定位&#xff1b; • 模型结构错误&#xff1b; • 权重更新错误&#xff1b; • 损失函数设计错误&#xff1b; • 半精度下计算溢出&#xff1b; • L…

Kali-linux Gerix Wifi Cracker破解无线网络

Gerix Wifi Cracker是另一个aircrack图形用户界面的无线网络破解工具。本节将介绍使用该工具破解无线网络及创建假的接入点。 9.3.1 Gerix破解WEP加密的无线网络 在前面介绍了手动使用Aircrack-ng破解WEP和WPA/WPA2加密的无线网络。为了方便&#xff0c;本小节将介绍使用Geri…

​路由器端口映射怎么设置?内网IP不能映射怎么办?​

使用路由器后&#xff0c;Internet用户无法访问到局域网内的主机&#xff0c;因此不能访问内网搭建的Web、FTP、Mail等服务器。路由器 端口映射功能可以实现将内网的服务器映射到Internet&#xff0c;从而实现服务器对外开放。 建议在设置路由器端口映射之前&#xff0c;确认以…

基于北斗+LoRa的落水报警定位方案一 -实现无人区,弱信号地区人员 位置安全监控

人员安全一直是企业管理的重中之重。无人区工地是一个安全事故多发的地方&#xff0c;在施工环境复杂且危险的情况下&#xff0c;工地人员位置监控成为管理工作中的一个难点&#xff0c;一直以来采用粗放的方式&#xff0c;现有的工地项目存在施工人员实时督查难等问题&#xf…

【程序员面试金典】面试题 08.02. 迷路的机器人

【程序员面试金典】面试题 08.02. 迷路的机器人 题目描述解题思路 题目描述 描述&#xff1a;设想有个机器人坐在一个网格的左上角&#xff0c;网格 r 行 c 列。机器人只能向下或向右移动&#xff0c;但不能走到一些被禁止的网格&#xff08;有障碍物&#xff09;。设计一种算…

c++ 11标准模板(STL) std::map(四)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

order by排序语句的用法

文章目录 学习连接语法用法示例1、按单个列的值排序2、按多个列的值排序3、按指定的规则排序4、按中文拼音字母顺序5、Order by和where条件共用 数据库中常用order by关键字对结果集进行排序&#xff0c;又可使用desc和asc来进行指定规则的排序。 学习连接 数据库&#xff1a;…

办公技巧:学会这 7 种 PPT 制作技巧,让 PPT 制作效率飙升

F4 键&#xff1a;重复上一步操作 例如需要你在一分钟内完成 8 个形状的排版&#xff0c;你会怎么做&#xff1f; 如果是最基础的方式&#xff0c;可能得画出一个之后&#xff0c;慢慢的按住 Ctrl 复制新的出来&#xff0c;但这样实在是太慢了&#xff01;&#xff08;你是这样…

重磅发布 |《2023年消费品企业数字化转型调研白皮书》

数字经济时代&#xff0c;数字化转型对于消费品企业越来越重要&#xff0c;已成为消费品企业增加经济效益、提升竞争力的重要策略之一。随着数字化转型进入深水区&#xff0c;越来越多涉及到商业模式、业务模式和产业链生态的创新变革开始出现&#xff0c;给消费品企业带来了一…

【UE】windows包蓝图分辨率设置

【UE】windows包蓝图分辨率设置 屏幕模式&#xff08;SetFullscreenMode&#xff09; 模式说明全屏可以任意修改分辨率的全屏窗口化全屏适配显示器分辨率的全屏窗口化窗口化 分辨率修改方法(SetScreenResolution) 控制台修改分辨率方法(ExecuteConsoleCommand) 命令 &#xf…

Android深入源码分析事件分发机制流程

前言 对于Android中的触摸事件即指手指触摸到屏幕时产生的点击事件&#xff1b; 类型如下&#xff1a; MotionEvent.ACTION_DOWNMotionEvent.ACTION_UPMotionEvent.ACTION_MOVEMotionEvent.ACTION_CANCEL Android事件处理流程 主要涉及三个流程&#xff1a;事件采集、事件中…

@Qualifier注解详解

本文来说下Qualifier注解使用 文章目录 Autowired注解Qualifier注解Primary注解 Resource注解 Autowired注解 spring Autowire 的注解默认是按类型注入bean 如果存在多个实现类&#xff0c;可以使用 Qualifier注解 Qualifier注解 Primary注解 存在多个实现类&#xff0c;也可以…

CCF-CSP 201903-1 小中大

该题比较简单&#xff0c;因为所给数据都是排好序的了&#xff0c;对于最大值与最小值我们只需判断第一个元素与最后一个元素的关系即可&#xff0c;而中位数的判断则与n的大小有关&#xff0c;如果n为偶数&#xff08;下标从1开始&#xff09;&#xff0c;那么中间会存在两个数…

机器学习:基于Apriori算法对中医病症辩证关联规则分析

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;关注…

针对UDP协议的攻击与防御

一、UDP协议概述 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是TCP/IP协议栈中的一种无连接的传输协议&#xff0c;能够提供面向事务的简单不可靠数据传输服务。 1&#xff0e;UDP的报文格式 UDP的报文格式如图1所示。 图1 UDP报文格式 …

探索可视化大屏:引领信息时代的视觉革命

可视化大屏是一种利用先进的数据可视化技术和交互技术&#xff0c;将大量的数据和信息以直观、易于理解的方式展示在大屏幕上的解决方案。可视化大屏通常由高分辨率的显示屏、强大的计算和处理设备以及专业的可视化软件组成&#xff0c;它通过图表、图形、动画等可视化元素&…

字节内部又推出最新spring进阶全家桶了!强烈建议人手一份!

前言 一份 Alibaba 内部强烈推荐的“玩转 Spring 全家桶的 PDF” &#xff0c;小编也不是个吝啬的人&#xff0c;好的东西当然要一起分享咯。今天小编就带你一站通关 Spring全家桶&#xff0c;让你一路通关轻松斩获大厂 Offer&#xff01; Spring 框架自 2002 年诞生以来一直…

chatgpt赋能python:Python修改变量名:提高代码可读性和维护性

Python修改变量名&#xff1a;提高代码可读性和维护性 Python是一门通用编程语言&#xff0c;被广泛应用于Web开发、数据分析、人工智能等领域。在实际开发中&#xff0c;我们可能会遇到需要修改变量名的情况。本文将介绍如何使用Python修改变量名&#xff0c;提高代码的可读性…