Visual ChatGPT论文阅读
1、读完了论文,做一下笔记让自己别忘的那么快
2、蹭一波热度(好像有点晚了)
3、这是第一次看纯工程论文,所以做一下笔记
大的自然语言模型,在自然语言处理任务上展现出了强大的能力,但难以处理视觉任务。同时大的视觉模型在特定的任务上表现的非常好,但受限于输入输出格式等等不如语言模型一样灵活。对于如何让ChatGPT支持多模态聊天这个问题,比较直观的想法是训练一个多模态聊天模型,但是这样做需要耗费大量的数据和计算资源,同时可拓展性也不高。因此作者从Prompt工程出发,构建了Visual ChatGPT,将ChatGPT和22个视觉模型一起包在一个壳里面,组成了Visual ChatGPT。

整体框架如上图所示,就是在query输入ChatGPT之前添加一些Prompt来让ChatGPT能够知道要掉用什么模型。
首先输入的是系统准则P,主要包括:
M(F)是关于视觉模型的描述:
1.名字
2.用法
3.输入输出格式
大概的样子长这样

M(Q)是对query进行处理:
M
(
F
(
A
i
(
j
)
)
)
M(F(A_i^{(j)}))
M(F(Ai(j)))是对模型返回的结果进行处理
1.首先是定义了链式命名(让模型知道这个图片由哪张图片变过来,做了什么,可以让模型知道还需不需要调用VFM)
2.Call for more VFMs,让Visual ChatGPT自动的调用更多的VFM,来完成多个视觉相关指令。

每次输入的P和F是相同的,历史对话是直接加进去和历史reasoning都是直接加进去的。当输入
Q
2
Q_2
Q2时由于还没有进行推理,也没有调用语言模型所以
R
2
(
<
1
)
R_2^{(<1)}
R2(<1)和
A
2
1
A_2^{1}
A21都等于
ϕ
\phi
ϕ。将Prompt输入ChatGPT输出,判断输出的内容是需要调用模型,并且ChatGPT会自动将要调用的模型名字和输入输出的样式给出,之后自动化调用VFM就可以。完成第一次后,更新
R
2
(
<
1
)
R_2^{(<1)}
R2(<1)和
A
2
1
A_2^{1}
A21,在输入到ChatGPT中,第二次也需要调用VFM,因此重复上面的步骤。当ChatGPT判断不需要VFM的时候就输出结果,一次Visual ChatGPT的调用就结束了。可以看到一次Visual ChatGPT的调用可能涉及多次ChatGPT的调用。
使用的ChatGPT模型是“text-davinci-003“,使用的视觉模型是从HuggingFace Transformers,Maskformer 和ControlNet 上收集的。
实验主要是验证了总体框架中的每个部分都不少,不然Visual ChatGPT可能工作的不是很好。下面是Visual ChatGPT的对话实例:

下面这张图证明了P的每一个部分都很有必要

下面这张图证明了M(F)的名字、用处、输入输出格式很重要,样例可有可无;

下面这种图证明了剩下的部分设计的很有必要

在这项工作中,我们提出了Visual ChatGPT,这是一个集成了不同VFM的开放系统,使用户能够超越语言格式与ChatGPT进行交互。构建这样一个系统,我们精心设计了一系列提示帮助将视觉信息注入ChatGPT从而可以逐步解决复杂的视觉问题。大量实验和选定的案例已经证明Visual ChatGPT的巨大潜力和能力不同的任务。除了上述限制之外,另一个令人担忧的问题是,由于VFM的故障和促使因此,一个自校正模块对于检查执行结果与人类意图之间的一致性,并相应地做出编辑。这种自我纠正行为会导致更多模型的复杂思维,显著增加推理时间。我们将来会解决这样一个问题。
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
我经常使用嵌套数据结构,很多时候我必须从控制台手动分析它们。问题是它们全部打印在一行中。是否有一种简单的方法可以根据{,[,],}和逗号重新构造数据结构的显示,使其看起来像Ruby的pretty_print输出? 最佳答案 :%s/\([{,]\)/\1\r/gggVG=:setft=ruby呜呜呜 关于ruby-如何将Vim中的"expand"文本转换成一种易于阅读的方式?,我们在StackOverflow上找到一个类似的问题: https://stacko
TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报
软件特点部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。使用手册基本页面配置路径配置日志所在的目录,配置后按回车键生效,下拉框选择日志名称。选择日志后点击生效,即可加载日志。windows路径E:\java\project\log-view\logslinux路径/usr/local/XX历史模式历史模式下,不会读取新增的日志。针对历史文件可以分页读取,配置分页大小、跳转。历史模式下,支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库,搜索速度相对较低,优点是比较简单。2G日志全文搜
我正在使用Watir进行自动化,它会创建一封我需要检查的电子邮件。有人指出电子邮件gem是执行此操作的最简单方法。我添加了以下代码,并且能够从我的收件箱中收到第一封电子邮件。require'mail'require'openssl'Mail.defaultsdoretriever_method:pop3,:address=>"email.someemail.com",:port=>995,:user_name=>'domain/username',:password=>'pwd',:enable_ssl=>trueendputsMail.first我是这个论坛的新手,有以下问题:如何获