目录
摘要
引言
相关工作
Visual ChatGPT
Prompt Managing of Sysytem Principles M(P)
Prompt Managing of Foundation Models M(F)
Prompt Managing of User Querie M(Qi)
Prompt Managing of Foundation Model Out-puts M(F(A(j)i ))
实验
实验设置
摘要
Visual ChatGPT的作用:
1、不仅可以发送和接收语言,也可以发送和接收图像;
2、提供了复杂的视觉问题或视觉编辑指令,这需要多个AI模型多步骤的协作;
3、提供反馈并且要求纠正结果。
考虑到多输入/输出模型和需要视觉反馈的模型,将一系列提示将可视化模型信息注入到ChatGPT中。
引言
ChatGPT是在InstructGPT的基础上,专门训练它用真正对话的方式与用户交互,从而允许它保持当前对话的上下文,处理后续问题,从而产生正确的答案。
BLIP模型是理解和提供图像描述的专家。Stable Diffusion是基于文本提示合成图像的专家。
本文通过提出一个Visual ChatGPT系统。 我们不是从零开始训练一个新的多模态Chatgpt,而是直接基于Chatgpt构建可视化Chatgpt并集成多种VFMS。 为了弥补ChatGPT与这些VFM之间的差距,我们提出了一个支持以下功能的提示管理器:1)显式地告诉ChatGPT每个VFM的CAPA特性,并指定输入输出格式; 2)将不同的视觉信息,如PNG图像、深度图像和掩模矩阵转换成语言格式,以帮助ChatGPT理解; 3)处理不同Visual Foundation模型的历史、优先级和冲突。 在提示管理器的帮助下,ChatGPT可以利用这些VFMs,并以迭代的方式接收它们的反馈,直到满足用户的要求或达到结束条件。
如图所示 1、用户上传一个黄花的图像,并输入一个复杂的语言指令“请根据该图像的预测深度生成一朵红花,然后使其像卡通一样,一步一步地进行”。 在提示管理器的帮助下,Visual ChatGPT启动了相关Visual Foundation模型的执行链。 在这种情况下,首先应用深度估计模型检测深度信息,然后利用深度-图像模型生成具有深度信息的红花图形,最后利用基于稳定扩散模型的风格转移VFM将该图像的风格转换为卡通。 在上述流程中,prompt Manager通过提供可视化格式类型和记录信息转换过程来充当ChatGPT的调度程序。 最后,当Visual ChatGPT从提示管理器中获得“卡通”提示时,将结束执行流水线并显示最终结果。
相关工作
需要关注的几篇论文:
1、LiT:《Lit: Zero-shot transfer with locked-image text tuning.》
2、CLIP:《Learning transferable visual models from natural language supervision.》
3、ViT:《Scaling vision transformers.》
4、frozen pre-trained LLMs。
5、Chain-of-Thought(CoT):激发大规模语言模型的多步推理能力,也就是说CoT要求LLMs为最终结果生成中间答案。现有的技术分为Few-Shot-CoT和Zero-Shot-CoT。这两种用于单一的模态。MultimodalCoT将语言和视觉两个模态结合到一个两阶段框架中,将理论生成和答案推理分开。本文的工作将CoT潜力扩展到大规模任务,包括但不限于文本到图像的生成[27]、图像到图像的翻译[18]、图像到文本的生成[40]等。
Visual ChatGPT
Prompt Managing of Sysytem Principles M(P)
Visual ChatGPT是一个集成了不同的VFM来理解视觉信息并生成相应答案的系统。为此,需要定制一些系统原理,然后将其转化为ChatGPT可以理解的提示。这些提示有多种用途,包括:
visual chatgpt的角色:visual chatgpt旨在帮助一系列与文本和视觉相关的任务,如VQA、图像生成和编辑。
VFMS可访问性:Visual ChatGPT可以访问一个VFMS列表,以解决各种VL任务。 使用哪种基础模型的决定完全由ChatGPT模型本身做出,因此很容易支持新的VFMS和VL任务。
文件名敏感性:Visual ChatGPT根据文件名访问图像文件,使用精确的文件名以避免歧义是至关重要的,因为一轮对话可能包含多个图像及其不同的更新版本,误用文件名将导致混淆当前讨论的是哪一个图像。 因此,Visual ChatGPT被设计为严格使用文件名,以确保检索和操作正确的图像文件。
链式思维:处理一个看似简单的命令可能需要多个VFMs,例如“根据图像的深度预测生成一朵红花,然后使其像卡通一样”的查询需要深度估计、深度到图像和样式转移VFMs。 为了通过将查询分解为子问题来解决更具挑战性的查询,在Visual ChatGPT中引入了COT来帮助决策、利用和调度多个VFMS。
推理格式严格性:Visual ChatGPT必须遵循严格的推理格式。 因此,我们采用详细的Regex匹配算法对中间推理结果进行解析,并为ChatGPT模型构造合理的输入格式,以帮助其确定下一次执行,如触发新的VFM或返回最终响应。
可靠性:作为一种语言模型,Visual ChatGPT可能会编造虚假的图像文件名或事实,从而使系统不可靠。 为了处理这些问题,我们设计提示,要求Visual ChatGPT忠于Vision Foundation模型的输出,而不是捏造图像内容或文件名。 此外,多个VFMS的协作可以提高系统的可靠性,因此我们构造的提示将指导ChatGPT优先利用VFMS而不是基于会话历史生成结果。
Prompt Managing of Foundation Models M(F)
Visual ChatGPT配备了多个VFMS来处理各种VL任务。 由于这些不同的VFMS可能有一些相似之处,例如,图像中对象的替换可以被视为生成新的图像,图像到文本(I2T)任务和图像问答(VQA)任务都可以被理解为根据所提供的图像给出响应,因此区分它们至关重要。 如图所示 3、提示管理器具体定义了以下几个方面,以帮助Visual ChatGPT准确理解和处理VL任务:
名称:名称提示符为每个VFM提供了总体功能的摘要,例如回答有关图像的问题,它不仅帮助Visual ChatGPT简明地理解VFM的目的,而且作为VFM的入口提供了帮助。
用法:用法提示描述了应该使用 VFM 的具体场景。例如,Pix2Pix 模型适用于改变图像的风格。提供此信息有助于 Visual ChatGPT 做出有关将哪个 VFM 用于特定任务的明智决策。
输入/输出:输入和输出提示概述了每个 VFM 所需的输入和输出格式,因为格式可能会有很大差异,并且为 Visual ChatGPT 正确执行 VFM 提供明确的指导至关重要。
示例(可选):示例提示符是可选的,但它有助于Visual ChatGPT更好地理解如何在特定的输入模板下使用特定的VFM,并处理更复杂的查询。
Prompt Managing of User Querie M(Qi)
Visual ChatGPT 支持多种用户查询,包括语言或图像,简单或复杂的查询,以及多张图片的引用。 Prompt Manager 从以下两个方面处理用户查询:
生成唯一文件名:Visual ChatGPT 可以处理两种类型的图像相关查询:涉及新上传图像的查询和涉及引用现有图像的查询。对于新上传的图像,Visual ChatGPT 会生成一个具有通用唯一标识符 (UUID) 的唯一文件名,并添加一个前缀字符串“image”来表示相对目录,例如“image/{uuid}.png”。虽然新上传的图像不会被输入 ChatGPT,但会生成一个虚假的对话历史记录,其中包含一个说明图像文件名的问题和一个表明图像已收到的答案。这个虚假的对话历史有助于以下对话。对于涉及引用现有图像的查询,Visual ChatGPT 会忽略文件名检查。这种方法已被证明是有益的,因为 ChatGPT 能够理解用户查询的模糊匹配,前提是它不会导致歧义,例如 UUID 名称。
强制VFM思考:为保证Visual ChatGPT的VFM成功触发,我们在(Qi)后面附加了一个后缀提示:“由于Visual ChatGPT是文本语言模型,Visual ChatGPT必须使用工具来观察图像,而不是想象。想法和观察仅对 Visual ChatGPT 可见,Visual ChatGPT 应记住在最终响应中为 Human 重复重要信息。想法:我需要使用工具吗?这个提示有两个目的:1)提示 Visual ChatGPT 使用基础模型,而不是仅仅依靠它的想象; 2) 它鼓励 Visual ChatGPT 提供由基础模型生成的特定输出,而不是诸如“你在这里”之类的通用响应。
Prompt Managing of Foundation Model Out-puts M(F(A(j)i ))
对于来自不同VFMs F(A(j)i)的中间输出,Visual ChatGPT将隐式汇总并反馈给ChatGPT进行后续交互,即调用其他VFMS进行进一步操作,直到达到结束条件或反馈给用户。 内部步骤可以总结如下:
生成链式文件名:由于Visual ChatGPT的中间输出将成为下一轮隐式对话的输入,我们应该使这些输出更符合逻辑,以帮助LLMS更好地理解推理过程。 具体地说,从Visual Foundation模型生成的图像保存在“image/”文件夹下,该文件夹提示以下表示图像名称的字符串。 然后将图像命名为“{name}{operation}{prev name}{org name}”,其中{name}为上述UUID名称,以{operation}为操作名称,以{prev name}为输入图像唯一标识符,以{org name}为用户上传或VFMS生成图像的原始名称。 例如,“image/ui3c edge-ofo0ec nji9dcgf.png”是输入“o0ec”的名为“ui3c”的canny边缘图像,该图像的原始名称是“nji9dcgf”。 通过这样的命名规则,可以提示中间结果属性(即图像)的chatgpt,以及它是如何从一系列操作中生成的。
调动更多的VFMs:visual chatgpt的一个核心是可以自动调用更多的vfms来完成用户的命令。 更具体地说,我们通过在每一代的末尾扩展一个后缀“though:”,使ChatGPT不断地问自己是否需要VFMS来解决当前的问题。
询问更多细节:当用户的命令不明确时,Visual ChatGPT应该询问用户更多细节,以帮助更好地利用VFMS。 这种设计是安全和关键的,因为LLMS不允许任意篡改或毫无根据地猜测用户的意图,尤其是在输入信息不足的情况下。
实验
实验设置
使用LangChain引导LLM,我们从HuggingFace Transformers、Maskformer和ControlNet中收集基础模型。 全面部署所有22个VFMS需要4个NVIDIA V100 GPU,但允许用户部署更少的基础型号,以灵活节省GPU资源。 聊天历史记录的最大长度为2000个,并截断过多的令牌以满足chatgpt的输入长度。
局限性:
虽然Visual ChatGPT是一种很有前途的多模式对话方法,但它有一些局限性,包括:
Visual ChatGPT在很大程度上依赖于ChatGPT来分配任务,并依赖于VFMS来执行任务。 因此,这些模型的准确性和有效性严重影响了可视化ChatGPT的性能。
Visual ChatGPT需要大量的提示工程来将VFMS转换为语言,并使这些模型描述变得可区分。 这个过程可能会占用时间,需要计算机视觉和自然语言处理方面的专业知识。
Visual ChatGPT 被设计为通用的。它试图将一个复杂的任务自动分解成几个子任务。因此,在处理特定任务时,Visual ChatGPT 可能会调用多个 VFM,与专门为特定任务训练的专家模型相比,实时能力有限。
ChatGPT中的最大令牌长度可能会限制可使用的基础模型的数量。 如果有数以千计或数以百万计的基础模型,可能需要一个预滤波模块来限制馈入ChatGPT的VFMS。
轻松插入和拔出基础模型的能力可能会引起安全和隐私问题,特别是对于通过API访问的远程模型。 必须仔细考虑和自动检查,以确保敏感数据不应暴露或泄露。
由于VFMS的故障和提示的不稳定,一些生成结果不能满足。 因此,需要一个自校正模块来检查执行结果与人类意图之间的一致性,并据此进行相应的编辑。 这种自我修正行为会导致对模型的思考更加复杂,显著增加推理时间。