Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models
如下图所示,所提出的主要模块叫做 Prompt Manager,作用是基于用户输入,结合 chatgpt 和各个视觉基础模型实现用户给定的多模态任务。Visual ChatGPT 多模态对话系统的功能对于上面每轮答案 Ai 都需要利用一系列 VFM(F) 模型,具体的处理模块为 Prompt Manager (M),公式表示为。整体流程如下图所示,左边展示了三轮对话内容,中间展示了 Visual
Paper name
Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models
Paper Reading Note
Paper URL: https://arxiv.org/pdf/2303.04671.pdf
Code URL: https://github.com/microsoft/visual-chatgpt
Demo URL: https://huggingface.co/spaces/RamAnanth1/visual-chatGPT
TL;DR
- 2023 年 3 月微软发布的文章,提出 Visual ChatGPT,结合不同的视觉基础模型,使用户能够输入文本与图像的多模态信息与 ChatGPT 进行交互
Introduction
背景
- ChatGPT 正在吸引跨领域的兴趣,因为它提供了一个跨许多领域具有显著会话能力和推理能力的语言交互方式
- 然而,由于 ChatGPT 是用语言训练的,目前还不能从视觉世界中处理或生成图像
- 与此同时,视觉基础模型 (Visual Foundation Models, VFM),如 Visual transformer 或 Stable Diffusion,虽然表现出了出色的视觉理解和生成能力,但它们仅是在特定任务上具有一轮固定输入和输出的专家
- 目前还没有一个支持图像理解和生成的 chatgpt 系统。重新训练一个这样的系统可能有两个问题
- 花费较多的数据和计算资源
- 训练好一个多模态模型后,比如训好一个视觉语言模型后,增加新的模态(如视频、声音)支持会较为麻烦,又需要重新训练
本文方案
-
本文提出 Visual ChatGPT,结合不同的视觉基础模型,使用户能够基于以下方式与 ChatGPT 进行交互:
- 不仅发送和接收语言,还发送和接收图像信息
- 提供复杂视觉问题或视觉编辑指令,这些问题需要多个 AI 模型以多步骤协作完成
- 提供反馈并要求修正结果
-
考虑到多输入/输出模型和需要视觉反馈的模型,本文设计了一系列提示符将可视化模型信息注入到 ChatGPT 中。如下图所示,所提出的主要模块叫做 Prompt Manager,作用是基于用户输入,结合 chatgpt 和各个视觉基础模型实现用户给定的多模态任务
Dataset/Algorithm/Model/Experiment Detail
实现方式
Visual ChatGPT 概览
-
整体流程如下图所示,左边展示了三轮对话内容,中间展示了 Visual ChatGPT 具体处理流程,右边展示了处理第二轮对话中 VFM 模型的具体处理细节
-
ChatGPT 对话系统的功能表示
上述为 N 个问答对 -
Visual ChatGPT 多模态对话系统的功能对于上面每轮答案 Ai 都需要利用一系列 VFM(F) 模型,具体的处理模块为 Prompt Manager (M),公式表示为
- System Principle P: 系统原理为 Visual ChatGPT 提供了基本规则。比如该系统应该对图像文件名敏感,并且应该使用 VFM 来获取聊天结果,而不是根据聊天历史生成结果
- Visual Foundation Model F:不同基础模型的组合,比如 BLIP、Stable Diffusion 等
- History of Dialogue H<i:历史对话的文本形式,超过 ChatGPT 长度约束的历史问答对会被直接删掉
- User query Qi:用户输入可以是文本或者图片
- History of Reasoning Ri(<j):对于第 i 轮对话,Ri(<j) 是来自 j 个调用的VFMs 的所有历史推理
- Intermediate Answer A(j):在处理复杂的查询时,Visual ChatGPT 将尝试通过逻辑上调用不同的 VFMs 来逐步获得最终答案,从而产生多个中间答案
- Prompt Manager M:用于将所有视觉信息转换为语言,以便 ChatGPT 模型能够理解
-
支持的视觉基础模型汇总
-
Prompt Manager 的整体概览,以下章节会详细介绍具体的实现
Prompt Managing of System Principles M§
- Visual ChatGPT 是一个集成不同 VFM 来理解视觉信息并生成相应答案的系统。要做到这一点,需要定制一些系统原理,然后将其转换为 ChatGPT 可以理解的提示。这些提示符有几个用途,包括
- Visual ChatGPT 角色定义 (Role of Visual ChatGPT): Visual ChatGPT 旨在协助一系列与文本和视觉相关的任务,例如 VQA、图像生成和编辑
- VFM 可访问性 (VFMs Accessibility): Visual ChatGPT可以访问 VFM 列表来解决各种 VL 任务。使用哪个基础模型完全由 ChatGPT 模型本身决定,因此很容易支持新的 VFM 和 VL 任务
- 对文件名敏感 (Filename Sensitivity): 根据文件名访问图像文件,使用精确的文件名以避免歧义是至关重要的,因为一轮对话可能包含多个图像及其不同的更新版本,而滥用文件名将导致当前正在讨论哪个图像的混淆。Visual ChatGPT 被设计为严格限制文件名的使用,以确保它检索和操作正确的图像文件
- 思想链 (Chain-of-Thought): 为了处理一个看似简单的命令,可能需要多个 VFM 中的模型,例如图一中的 “根据此图像的预测深度生成一个红花,然后使其像卡通一样” 的查询需要深度估计,深度到图像和风格转换这三个模型。为了通过将查询分解为子问题来处理更具挑战性的查询,Visual ChatGPT 中引入了 CoT 来帮助决定、利用和分派多个 VFM 模型
- 格式严格性 (Reasoning Format Strictness): Visual ChatGPT 必须遵循严格的推理格式。因此,本文使用详细的正则匹配算法解析中间推理结果,并为 ChatGPT 模型构建合理的输入格式,以帮助它确定下一次执行,例如触发一个新的 VFM 或返回最终响应
- 可靠性 (Reliability): 引导 ChatGPT 优先利用 VFM,而不是根据会话历史生成结果
Prompt Managing of Foundation Models M(F)
- Visual ChatGPT 配备了多个 VFM 来处理各种 VL 任务。由于这些不同的 VFM 可能有一些相似之处,例如替换图像中的对象可以被视为生成一个新的图像,图像到文本(I2T)任务和图像问题回答(VQA)任务都可以理解为根据所提供的图像给出响应,因此区分它们是至关重要的。本文明确定义了以下方面,以帮助Visual ChatGPT 准确地理解和处理VL任务
- Name: 名称提示符提供了每个VFM整体功能的摘要,比如
answer question about the image
- Usage: 使用提示符描述了应该使用VFM的特定场景
- Inputs/Outputs: 输入和输出提示符概述了每个 VFM 所需的输入和输出格式,因为格式可能有很大差异,为 Visual ChatGPT 正确执行 VFM 提供明确的指导方针是至关重要的
- Example(Optional): 示例提示是可选的,可以帮助 Visual ChatGPT 更好地理解如何在特定输入模板下使用特定的 VFM 并处理更复杂的查询
- Name: 名称提示符提供了每个VFM整体功能的摘要,比如
Prompt Managing of User Querie M(Qi)
- 从以下两个方面处理用户查询
- 生成唯一的文件名 (Generate Unique Filename): Visual ChatGPT 可以处理两种与图像相关的查询: 涉及新上传的图像的查询和涉及对现有图像的引用的查询
- 对于新上传的图像,Visual ChatGPT会生成一个具有通用唯一标识符(UUID)的唯一文件名,并添加一个前缀字符串 “image” 表示相对目录,例如“image/{UUID}.png”。虽然新上传的图像不会被输入到ChatGPT,但会生成一个假的对话历史记录,其中一个问题说明了图像的文件名,而一个答案表明图像已被接收
- 对于涉及到现有图像引用的查询,Visual ChatGPT 会忽略文件名检查。这种方法已被证明是有益的,因为 ChatGPT 能够理解用户查询的模糊匹配,前提是它不会导致歧义,例如 UUID 名称
- 促使 VFM 思考 (Force VFM Thinking):为了确保成功触发 Visual ChatGPT的 VFMs,在 (Qi) 后面添加了一个后缀提示符:“Since Visual ChatGPT is a text language model, Visual ChatGPT must use tools to observe images rather than imagination. The thoughts and observations are only visible for Visual ChatGPT, Visual ChatGPT should remember to repeat important information in the final response for Human. Thought: Do I need to use a tool?”,这个 prompt 有两个作用
- 提示 Visual ChatGPT 使用基础模型,而不是仅仅依靠它的想象力
- 鼓励 Visual ChatGPT 提供由基础模型生成的特定输出,而不是像 “here you are” 这样的通用响应
- 生成唯一的文件名 (Generate Unique Filename): Visual ChatGPT 可以处理两种与图像相关的查询: 涉及新上传的图像的查询和涉及对现有图像的引用的查询
Prompt Managing of Foundation Model Outputs
- 模型输出的内部步骤如下
- 生成链式文件名:
- 图片命名: “{Name} {Operation} {Prev Name} {Org Name}”,其中 {Name} 为 UUID 名称,{Operation} 为操作名称,{Prev Name} 为输入图像的唯一标识符,{Org Name} 为用户上传或 VFM 生成的图像的原始名称
- 调用更多的 VFM:让 ChatGPT 通过在每一轮迭代结束时扩展一个后缀 “Thought:” 来不断地询问自己是否需要 VFM 来解决当前的问题
- 询问更多细节: 当用户的命令不明确时,Visual ChatGPT 应该向用户询问更多细节,以帮助更好地利用 VFM
- 生成链式文件名:
实验结果
实验配置
- LLM 使用 ChatGPT (“text-davinci-003” 版本),用 LangChain 指导 LLM
- HuggingFace Transformers、Maskformer 和 ControlNet 库中收集视觉基础模型
- 22 个视觉语言模型部署需要 4 个 Nvidia V100 GPU。用户可以部署更少的基础模型,灵活节省GPU资源
- 聊天记录的最大长度为 2000,超过的 token 会被截断以满足 ChatGPT 的输入长度
多轮对话的完整样例
- 16 轮对话示例,Visual ChatGPT 可以理解人类的意图,支持语言和图像输入,并完成复杂的可视化任务,如生成、提问和编辑
Prompt Manager 的样例分析(system principles)
- 命名敏感性和格式严格性
- 可靠性和 CoT
Prompt Manager 的样例分析(foundation models)
- 命名影响与使用影响
- 输入输出影响与示例影响
Prompt Manager 的样例分析(user query and model outputoutput.)
- 独特文件名影响与促使 VFM 思考影响
- 生成链式文件名影响与询问更多细节影响
局限性分析
- 依赖 ChatGPT 和 VFM:Visual ChatGPT 的性能在很大程度上受到这些模型的准确性和有效性的影响
- 重型提示工程:这个过程很耗时,需要计算机视觉和自然语言处理方面的专业知识
- 实时性有限:在处理特定任务时,Visual ChatGPT 可能会调用多个 VFM,导致与专门为特定任务训练的专家模型相比,实时能力有限
- Token 长度限制:ChatGPT 中的最大 token 长度可能会限制可以使用的基础模型的数量。如果有数千或数百万个基础模型,则可能需要一个预过滤器模块来限制输入到 ChatGPT 的 VFM
- 安全和隐私:方便地插入和拔出基础模型的能力可能会引起安全和隐私问题,特别是对于通过 api 访问的远程模型
Thoughts
- 无需 finetune 的方案对于使用者来说非常友好,未来模态扩充也更方便
- 工作的主要创新点在 prompt manager 上,整体思路其实很直观,工作量整体来看并不大,主要是 prompt 工程需要一定的专业知识才能做
- Github 代码上线两天 8k+ star,视觉语言这个领域现在确实火…
更多推荐
所有评论(0)