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

当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.rhkb.cn/news/40646.html

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

相关文章

2021年5月9日,是第108个母亲节,祝福所有的母亲节日快乐

2021年5月9日&#xff0c;是第108个母亲节&#xff0c;祝福所有的母亲节日快乐 2021年5月9日&#xff0c;是第108个母亲节&#xff0c;放下你手里的所有事情&#xff0c;哪怕是几分钟&#xff0c;给妈妈打一个电话吧&#xff0c;分享一下你最近的酸甜苦辣。 或许你忙到没有准备…

母亲节:向世界上最伟大的母爱致敬

在这世间众多的亲情关系中&#xff0c;有一种关系无与伦比&#xff0c;毫不费力地凌驾于其他任何已知的地球关系之上。这种非凡的关系就是母亲与子女之间的关系。 母亲对家庭无尽的爱、奉献和忠诚使这份感情无价。为了向全球所有母亲表示敬意&#xff0c;母亲节在世界46个国家庆…

原来程序员的母亲节可以这样温馨!

致我的可爱老妈 嗨&#xff0c;忙碌的程序员宝宝们&#xff0c;记得母亲节快要来了吗&#xff1f; 在老妈眼里&#xff0c;你一出生&#xff0c;她就觉得你是一个天才。无论你的代码写得多好看&#xff0c;老妈看不懂你的代码&#xff0c;在老妈的世界里&#xff0c;她会跳很带…

母亲节到了,写一个简单的C++代码给老妈送上一个爱心祝福

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; C/C专栏 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾…

【母亲节快乐】程序员的表达方式,了解一下?

热门文章 原创教程 原创教程&#xff1a; 附加习题&#xff1a; 趣味职场 培训费用&#xff1a; 合作推广分割线

母亲节

母亲节 目录 母亲节&#xff08;Mothers Day&#xff09; 起源(origin) 习俗(habit&custom) 世界各国庆祝母亲节的时间都不尽相同 献给母亲的花(flowers to my mother) 名人称赞母亲的十大名言 母亲节&#xff08;Mothers Day&#xff09;   母亲节作为一个感谢 母亲的节…

母亲节祝福html源码,母亲节祝福html代码,母亲节表白妈妈代码,母亲节祝福网页代码

母亲节祝福html源码&#xff0c;母亲节祝福html代码&#xff0c;母亲节表白妈妈代码&#xff0c;母亲节祝福网页代码 运行截图 核心代码&#xff1a; <!DOCTYPE HTML> <html lang"zh-Hans"> <head><meta charset"utf-8"><meta…

母亲节到了,用Python给老妈写个祝福小程序~

母亲节就要到了&#xff0c;不知各位伙伴有没有给老妈准备礼物呢&#xff1f; 微信公众号原文链接 今天&#xff0c;小笨聪给大家分享一个母亲节祝福的小程序&#xff0c;就像情人节女神节这样的&#xff0c;下面让我们愉快的开始吧&#xff01; 我们先看一下效果&#xff1a; …

母亲节不能陪在妈妈身边,我用css和js给妈妈做了一个爱心飘落

写在前面&#xff1a; 我是「扬帆向海」&#xff0c;这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录&#xff0c;如果您对 Java、算法 感兴趣&#xff0c;可以关注我的动态&am…

妇女节到了,祝福所有女神 Happy Women‘s Day!

在每年&#xff13;月&#xff18;日人们庆祝妇女节 &#xff37;omens Day is cllebrated on March 8 every year. 国际妇女节(IWD)&#xff0c;中国内地称“三八”国际劳动妇女节或国际劳动妇女节。是在每年的3月8日为庆祝妇女在经济、政治和社会等领域作出的重要贡献和取得…

简单的python小程序祝福母亲,母亲节快乐!

简单的python小程序祝福母亲&#xff0c;母亲节快乐&#xff01; 今天是星期天&#xff0c;也是母亲节&#xff0c; 不禁意识到二十二岁的我如此年轻&#xff0c;四十多岁的母亲似乎不再年轻。 今天编写了一个简单的python小程序。 代码如下&#xff0c;仅供参考。 import …

母亲节快乐!程序员们也不要忘记把这份礼品送给母亲

母亲节快乐&#xff08;Happy Mothers Day&#xff09; 母亲节快乐&#xff01; 在这个特别的日子里&#xff0c;让我们一起庆祝母亲节。母亲是世界上最伟大的人&#xff0c;她们无私地付出&#xff0c;照顾我们的成长和幸福。母亲节是一个特别的机会&#xff0c;让我们向妈妈…

母亲节送什么礼物?ChatGPT4给你最佳建议

母亲节就快来了&#xff0c;母亲节是一年一度的特别节日&#xff0c;我们可以借此机会表达我们对妈妈的感激之情。但是&#xff0c;对于我们来说&#xff0c;选择一份特别的礼物来表达我们的感激和爱意是一件很困难的事情。毕竟&#xff0c;我们的妈妈们已经给予我们无私的关爱…

今天女神节,用python画个贺卡送给母亲吧

今天女神节&#xff0c;你给女神妈妈准备了什么祝福呢&#xff1f;如果还没有&#xff0c;那么画个贺卡送给她吧&#xff0c;在你眼里&#xff0c;她是一个什么样的人呢&#xff1f; 是"可爱"&#xff0c;“温柔”&#xff0c;“美丽”&#xff0c;“漂亮”&#xf…

母亲节快到啦 咱们今天用 Python 提前送上特殊的 母亲节祝福 吧

母亲节快到啦&#xff0c;做儿女的自然要为母亲送上节日的祝福&#xff0c;如果自己在母亲身边的话&#xff0c;可以直接说几句祝福的话以及送一些小礼物什么的&#xff0c;要是不在母亲身边的话&#xff0c;可以打个电话问候一下。 相关文件 小伙伴们可以关注小编的Python源…

祝老妈母亲节快乐的三段小程序

今天是2020年5月10日——母亲节。又到了一年一度忧愁给麻麻送什么礼物的时候。钱少买不到好礼物&#xff0c;钱多又怕她说“净乱花钱&#xff01;[&#xff40;Д]老妈给你的生活费不想要了&#xff1f;” 作为一个没有实现财务自由的学生党&#xff0c;最好的方法就是榨取自己…

Python程序猿/媛如何在母亲节表达对母亲的祝福

母亲节 母亲节&#xff08;Mother’s Day&#xff09;&#xff0c;是一个感谢母亲的节日。这个节日的传统起源于古希腊&#xff1b;而现代的母亲节起源于美国。日期每年5月的第二个星期日。今年的母亲节在2017年5月14日。 以下是使用python3 中的线程和协程实现了成长的过程&…

第109个母亲节快乐,程序猿特殊的表达

文章目录 前言&#x1f680; 1.母亲节起源&#x1f680; 2.母亲节表达&#x1f308; 1.1 SQL算出母亲节日期&#x1f308; 2.2 python绘图&#x1f308; 2.3.java求指定年份母亲节日期 前言 今天是星期天&#xff0c;也是母亲节&#xff0c;2022年5月8日&#xff0c;109个母亲节…

基于python的母亲节贺卡

Python 的 Tkinter 模块创建一个带界面的母亲节贺卡。 首先&#xff0c;导入 Tkinter 模块: 复制import tkinter as tk 然后创建一个主窗口: root tk.Tk() root.title("母亲节贺卡") 在窗口中放置一张图片: photo tk.PhotoImage(file"mothers-day.png&q…

【日期】确定母亲节

【日期】确定母亲节 母亲节是每年的五月第二个星期天&#xff0c;针对输入的年份&#xff0c;计算该年的哪一天是母亲节。 输入&#xff1a; 年份 输出&#xff1a; 日期&#xff08;5月的哪一天&#xff09; 样例&#xff1a; 序号测试输入期待的输出额外进程12014↵11…