Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models论文阅读
相关资料
Visual ChatGPT论文
Visual ChatGPT代码
Abstract
ChatGPT is attracting a cross-field interest as it provides a language interface with remarkable conversational competency and reasoning capabilities across many domains.However, since ChatGPT is trained with languages, it is currently not capable of processing or generating images from the visual world. At the same time, Visual Foundation Models, such as Visual Transformers or Stable Diffusion, although showing great visual understanding and generation capabilities, they are only experts on specific tasks with one-round fixed inputs and outputs. To this end, We build a system called Visual ChatGPT, incorporating different Visual Foundation Models, to enable the user to interact with ChatGPT by 1) sending and receiving not only languages but also images 2) providing complex visual questions or visual editing instructions that require the collaboration of multiple AI models with multi-steps. 3) providing feedback and asking for corrected results. We design a series of prompts to inject the visual model information into ChatGPT, considering models of multiple inputs/outputs and models that require visual feedback. Experiments show that Visual ChatGPT opens the door to investigating the visual roles of ChatGPT with the help of Visual Foundation Models. Our system is publicly available at https: //github.com/microsoft/visual-chatgpt.
摘要
ChatGPT正在吸引跨领域的兴趣,因为它提供了一个语言接口,具有跨许多领域的卓越会话能力和推理能力。然而,由于ChatGPT是用语言训练的,它目前还不能处理或生成来自视觉世界的图像。与此同时,Visual Foundation Models,如Visual Transformers或Stable Diffusion,虽然表现出了很强的视觉理解和生成能力,但它们只是针对一轮固定输入和输出的特定任务的专家。为此,我们构建了一个名为Visual ChatGPT的系统,结合了不同的Visual Foundation模型,使用户能够通过以下方式与ChatGPT进行交互:
- 不仅发送和接收语言,还发送和接收图像。
- 提供复杂的视觉问题或视觉编辑指令,需要多个AI模型以多步骤协作。
- 提供反馈并要求纠正结果。
考虑到多输入/输出的模型和需要视觉反馈的模型,我们设计了一系列提示符,将视觉模型信息注入ChatGPT。实验表明,Visual ChatGPT为在Visual Foundation Models的帮助下研究ChatGPT的视觉角色打开了大门。我们的系统在https: //github.com/microsoft/visual-chatgpt公开可用。
一个例子
- 用户上传了图片:黄色花朵
- 并输入了一个复杂的语言指令:“请根据该图片的预测深度生成一朵红色的花朵,然后将其一步步制作成卡通”。
在Prompt Manager的帮助下,Visual ChatGPT启动了相关Visual Foundation Models的执行链。
在本例中,
- 首先应用深度估计模型检测深度信息
- 然后利用深度-图像模型生成具有深度信息的红花图形
- 最后利用基于稳定扩散模型的风格转移VFM将该图像的风格转变为卡通
在上述过程中,Prompt Manager作为ChatGPT的调度器,提供可视化格式的类型并记录信息转换的过程。最后,当Visual ChatGPT从Prompt Manager获得“卡通”提示时,它将结束执行管道并显示最终结果。
Visual 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)}是一个有
N
N
N个问答对的对话系统。为了从第
i
i
i轮对话中获得响应
A
i
A_i
Ai,涉及到一系列Visual Foundation Models(VFM)和来自这些模型的中间输出
A
i
(
j
)
A_i^{(j)}
Ai(j),其中
j
j
j表示第
i
i
i轮第
j
j
j个VFM (
F
F
F)的输出。更具体地说,通过处理提示管理器
M
M
M,不断修改
A
i
(
j
)
A_i^{(j)}
Ai(j)的格式,以满足每个
F
F
F的输入格式。最后,如果将
A
i
(
j
)
A_i^{(j)}
Ai(j)表示为最终响应,则系统输出
A
i
(
j
)
A_i^{(j)}
Ai(j),不再执行VFM。下面给出了Visual ChatGPT的正式定义:
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_i^{j+1}=ChatGPT(M(P),M(F),M(H_{<i}),M(Q_i),M(R_i^{<j}),M(F(A_i^{(j)})))
Aij+1=ChatGPT(M(P),M(F),M(H<i),M(Qi),M(Ri<j),M(F(Ai(j))))
- 系统准则:
P
P
P
系统准则为Visual ChatGPT提供了基本的规则,例如,它应该对图像文件名敏感,应该使用VFM来处理图像,而不是根据聊天记录生成结果。 - 视觉基础模型(VFM):
F
F
F
Visual ChatGPT的一个核心是各种VFM的组合: F = { f 1 , f 2 , … , f N } F = \{f_1, f_2,…, f_N\} F={f1,f2,…,fN},其中每个基础模型 f i f_i fi包含一个明确输入输出的确定函数。 - 对话历史:
H
<
i
H_{<i}
H<i
我们将第i轮对话的对话历史定义为以前的问题答案对的字符串连接,即 { ( Q 1 , A 1 ) , ( Q 2 , A 2 ) , … , ( Q i − 1 , A i − 1 ) } \{(Q_1, A_1),(Q_2, A_2),…,(Q_{i-1}, A_{i-1})\} {(Q1,A1),(Q2,A2),…,(Qi−1,Ai−1)}。此外,我们使用最大长度阈值截断对话历史,以满足ChatGPT模型的输入长度。 - 用户查询:
Q
i
Q_i
Qi
在可视化ChatGPT中,查询是一个通用术语,因为它可以包括语言查询和视觉查询。例如,上图显示了同时包含查询文本和相应图像的查询示例。 - 推理史:
R
i
<
j
R_i^{<j}
Ri<j
为了解决一个复杂的问题,Visual ChatGPT可能需要多个VFM的协作。在第 i i i轮对话中, R i < j R_i^{<j} Ri<j是来自 j j j调用的VFM的所有以前的推理历史。 - 中间结果答案:
A
(
j
)
A^{(j)}
A(j)
在处理复杂查询时,Visual ChatGPT将尝试通过逻辑调用不同的VFM逐步获得最终答案,从而生成多个中间答案。 - 提示管理器:
M
M
M
设计了一个提示管理器,将所有视觉信号转换为语言,以便ChatGPT模型能够理解。
Prompt Manager
系统准则的Prompt Manager: M ( P ) M(P) M(P)
Visual ChatGPT是一个集成了不同的VFM来理解视觉信息并生成相应答案的系统。要做到这一点,需要定制一些系统原则,然后将其转换为ChatGPT可以理解的提示。这些提示有几个目的,包括:
-
Visual ChatGPT的作用是解决文本和视觉的联合任务
-
控制VFM的可访问性
-
对文件名敏感,避免滥用文件名
-
将查询分解成子问题进行链式推理
-
遵循严格的推理格式,使用精细的正则表达式匹配算法解析中间推理结果
-
忠实于视觉基础模型的输出,而不是伪造图像内容或文件名
基础模型的Prompt Manager: M ( F ) M(F) M(F)
Visual ChatGPT配备了多个VFM来处理各种VL任务。由于这些不同的VFM可能有一些相似之处,例如,图像中物体的替换可以看作是生成新的图像,图像到文本(I2T)任务和图像问答(VQA)任务都可以理解为根据提供的图像给出响应,因此区分它们是至关重要的。提示管理器具体定义了以下几个方面来帮助Visual ChatGPT准确理解和处理VL任务:
- 名称提示符为每个VFM提供了一个整体功能的抽象
- 用法提示符描述了应该使用VFM的特定场景
- 输入和输出提示符概述了每个VFM所需的输入和输出格式
- 示例提示符是可选的,但它可以帮助visualchatgpt更好地理解如何在特定输入模板下使用特定的VFM并处理更复杂的查询
用户查询的Prompt Manager: M ( Q i ) M(Q_i) M(Qi)
Visual ChatGPT支持各种用户查询,包括语言或图像,简单的或复杂的,以及多个图像的引用。提示管理器在以下两个方面处理用户查询:
- Visual ChatGPT可以处理两种类型的图像相关查询:涉及新上传的图像和涉及引用现有图像的查询
- 由于Visual ChatGPT是一个文本语言模型,因此Visual ChatGPT必须使用工具来观察图像,而不是想象
基础模型输出的Prompt Manager: M ( F ( A i ( j ) ) ) M(F(A_i^{(j)})) M(F(Ai(j)))
对于来自不同VFM的 M ( F ( A i ( j ) ) ) M(F(A_i^{(j)})) M(F(Ai(j)))中间输出,Visual ChatGPT将隐式地总结并将它们提供给ChatGPT进行后续交互,即调用其他VFM进行进一步操作,直到达到结束条件或将反馈给用户。内部步骤可以总结如下:
- 由于Visual ChatGPT的中间输出将成为下一轮隐式会话的输入,我们应该使这些输出更具逻辑性,以帮助LLMs更好地理解推理过程
- 我们让ChatGPT不断问自己是否需要VFM来解决当前的问题,在每一代的末尾增加一个后缀“Thought:”
- 当用户的命令不明确时,Visual ChatGPT应该向用户询问更多细节,以帮助更好地利用VFM