前言
机器之心报道 编辑:陈萍、小舟
Visual ChatGPT 将 ChatGPT 和一系列可视化基础模型连接起来,以支持在聊天过程中发送和接收图像。
近年来,大型语言模型(LLM)取得了令人难以置信的进展,尤其是去年 11 月 30 日,OpenAI 重磅推出的聊天对话模型 ChatGPT,短短三个月席卷社会各个领域。ChatGPT 会的东西五花八门,能陪你聊天、编写代码、修改 bug、解答问题……
但即便是非常强大的 ChatGPT 也存在短板,由于它是用单一语言模态训练而成,因此其处理视觉信息的能力非常有限,相比较而言,视觉基础模型(VFM,Visual Foundation Models)在计算机视觉方面潜力巨大,因而能够理解和生成复杂的图像。例如,BLIP 模型是理解和提供图像描述的专家;大热的 Stable Diffusion 可以基于文本提示合成图像。然而由于 VFM 模型对输入 - 输出格式的苛求和固定限制,使得其在人机交互方面不如会话语言模型灵活。
我们不禁会问,能否构建一个同时支持图像理解和生成的类似 ChatGPT 的系统?一个直观的想法是训练多模态对话模型。然而,建立这样一个系统会消耗大量的数据和计算资源。此外,另一个挑战是,如果我们想整合语言和图像以外的模态,比如视频或语音,该怎么办?每次涉及新的模态或功能时,是否有必要训练一个全新的多模态模型?
来自微软亚洲研究院的研究者提出了一个名为 Visual ChatGPT 的系统来回答上述问题,他们将 ChatGPT 和多个 SOTA 视觉基础模型连接,实现在对话系统中理解和生成图片。为了方便复现,该研究已经将代码完全开源。
正文
论文地址:https://arxiv.org/pdf/2303.04671.pdf
项目地址:https://github.com/microsoft/visual-chatgpt
他们不是从头开始训练一个新的多模态 ChatGPT,而是直接基于 ChatGPT 构建 Visual ChatGPT,并结合了各种 VFM。为了弥合 ChatGPT 和这些 VFM 之间的差距,该研究提出了一个 Prompt Manager,其支持以下功能:
1)明确告诉 ChatGPT 每个 VFM 的功能并指定输入输出格式;
2) 将不同的视觉信息,例如 png 图像、深度图像和 mask 矩阵,转换为语言格式以帮助 ChatGPT 理解;
3) 处理不同 VFM 的历史、优先级和冲突。
在 Prompt Manager 的帮助下,ChatGPT 可以利用这些 VFM,并以迭代的方式接收它们的反馈,直到满足用户的需求或达到结束条件。
总结而言,本文贡献如下:
- 提出 Visual ChatGPT,打开了 ChatGPT 和 VFM 连接的大门,使 ChatGPT 能够处理复杂的视觉任务;
- 设计了一个 Prompt Manager,其中涉及 22 个不同的 VFM,并定义了它们之间的内在关联,以便更好地交互和组合;
- 进行了大量的零样本实验,并展示了大量的案例来验证 Visual ChatGPT 的理解和生成能力。
如图 1 所示,用户上传了一张黄色花朵的图像,并输入一条复杂的语言指令「请根据该图像生成的深度图在生成一朵红色花朵,然后逐步将其制作成卡通图片。」在 Prompt Manager 帮助下,Visual ChatGPT 启动了和 VFM 相关的执行链。
其执行过程是这样的,首先是深度估计模型,用来检测图像深度信息;然后是深度 - 图像模型,用来生成具有深度信息的红花图像;最后利用基于 Stable Diffusion 的风格迁移 VFM 将该图像风格转换为卡通图像。
在上述 pipeline 中,Prompt Manager 作为 ChatGPT 的调度器,提供可视化格式的类型并记录信息转换的过程。最后,当 Visual ChatGPT 从 Prompt Manager 获得卡通提示时,它将结束执行 pipeline 并显示最终结果。
在接下来的示例中,用户输入提示:你能帮我生成一张猫的图像吗?收到指示后,Visual ChatGPT 生成一张正在看书的猫的图像。
你还可以要求 Visual ChatGPT 将图像中的猫换成狗,然后把书删除:
你甚至还能要求 Visual ChatGPT 生成 canny 边缘检测,然后基于此生成另一张图像:
接下来我们看看该研究是如何实现的。
方法:Visual ChatGPT
下图为 Visual ChatGPT 概览。左边进行了三轮对话,中间是 Visual ChatGPT 如何迭代调用 Visual Foundation Models 并提供答案的流程图。右侧展示了第二次 QA 的详细过程。
系统原则 prompt 管理
Visual ChatGPT 是一个集成了不同 VFM 来理解视觉信息并生成相应答案的系统。因此,Visual ChatGPT 需要定制一些系统原则,并将其转化为 ChatGPT 可以理解的 prompt。这些 prompt 有多种用途,包括:
- Visual ChatGPT 本身的用途:Visual ChatGPT 旨在协助完成一系列与文本和视觉相关的任务,例如 VQA、图像生成和编辑;
- VFM 的可访问性:Visual ChatGPT 可以访问 VFM 列表来解决各种 VL( vision-language ) 任务。使用哪种基础模型完全由 ChatGPT 模型本身决定,因此 Visual ChatGPT 可以轻松支持新的 VFM 和 VL 任务;
- 文件名敏感度:Visual ChatGPT 根据文件名访问图像文件,使用精确的文件名以避免歧义至关重要,因为一轮对话可能包含多个图像及其不同的更新版本,滥用文件名会导致混淆图片。因此,Visual ChatGPT 被设计为严格使用文件名,确保它检索和操作正确的图像文件;
- Chain-of-Thought:如上图 1 所示生成卡通图片的过程,涉及深度估计、深度到图像和风格转换的 VFM,这种看似简单的命令可能需要多个 VFM,为了通过将查询分解为子问题来解决更具挑战性的查询,Visual ChatGPT 引入了 CoT 以帮助决定、利用和调度多个 VFM;
- 推理格式的严谨性:Visual ChatGPT 必须遵循严格的推理格式。因此,该研究使用精细的正则表达式匹配算法解析中间推理结果,并为 ChatGPT 模型构建合理的输入格式,以帮助其确定下一次执行,例如触发新的 VFM 或返回最终响应;
- 可靠性作为一种语言模型,Visual ChatGPT 可能会伪造假图像文件名或事实,这会使系统不可靠。为了处理此类问题,该研究对 prompt 进行了设计,要求 Visual ChatGPT 忠于视觉基础模型的输出,而不是伪造图像内容或文件名。此外,多个 VFM 的协作可以提高系统可靠性,因此本文构建的 prompt 将引导 ChatGPT 优先利用 VFM,而不是根据对话历史生成结果。
下表为 Visual ChatGPT 支持的 22 种基础模型: