最全【AIGC】Visual ChatGPT 视觉模型深度解析_visualgpt解读,2024年最新致C C++高级工程师的一封信

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

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​),要从第

i

i

i 轮对话中得到答案

A

i

A_i

Ai​,需要一系列的 VFM 和中间输出。

将第

i

i

i轮对话中第

j

j

j次的工具调用中间答案记为

A

i

j

A_i^{j}

Aij​,就可以定义 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§, M(F), M(H_{<i}), M(Q_i), M(R_i^{<j}), M(F(A_i^j)))

Aij+1​=ChatGPT(M§,M(F),M(H<i​),M(Qi​),M(Ri<j​),M(F(Aij​)))
其中:P 是全局原则,F 是各个视觉基础模型,

M

(

H

<

i

)

M(H_{<i})

M(H<i​) 是历史会话记忆,$ M(Q_i)$ 是第 i 轮的用户输入,

M

(

R

i

<

j

)

M(R_i^{<j})

M(Ri<j​) 是第 i 轮的推理历史,

A

j

A^j

Aj 是中间答案。

ChatGPT生成最终答案要经历一个不断迭代的过程,它会不断自我询问,自动调用更多VFM。而当用户指令不够清晰时,Visual ChatGPT会询问其能否提供更多细节,避免机器自行揣测甚至篡改人类意图。

3.3 模块说明

M§:

Visual-GPT 为了能让不同的VFM理解视觉信息并生成相应答案,需要设计一系列系统原则,并将其转化为 ChatGPT能够理解的提示。

通过生成这样的提示,Prompt Manager 能够帮助 Visual-GPT 完成生成文本、图像的任务,能够访问一系列VFM并自由选择使用哪个基础模型,提高对文件名的敏感度,进行链式思考和严格推理。

M(F):

Prompt Manager 需要帮助 Visual-GPT 区分不同的VFM,以便准确地完成图像任务。

为此,Prompt Manager对各个基础模型的名称、应用场景、输入和输出提示以及实例给出了具体定义。

M(Q):

Prompt Manager会对用户新上传的图像生成唯一文件名,并生成假的对话历史,其中提到该名称的图片已经收到,这样可以在涉及引用现有图像的查询时忽略文件名的检查。

Prompt Manager会在查询问题之后加上一个后缀提示,来确保成功触发VFM,强制 Visual-GPT 进行思考,给出言之有物的输出。

M(F(A)):

VFM给出的中间输出,Prompt Manager会为其生成链式文件名,作为下一轮内部对话的输入。

3.4 Prompt Manager 功能与规则

Visual-GPT 的核心是 Prompt Manager,具体功能如下:

  1. 首先明确告诉 ChatGPT 每个 VFM 的功能,并指定输入输出格式。
  2. 然后转换不同的视觉信息(如 png 图像、深度图像和 mask 矩阵)转换为语言格式。
  3. 最后处理不同 VFM 的历史、优先级和冲突。

通过 Prompt Manager 的帮助,ChatGPT 可以利用这些 VFM,并以迭代方式接收反馈,直到满足用户的需求或达到结束条件。

Visual-GPT 集成了不同 VFM 来理解视觉信息并生成相应答案的系统。因此,Visual-GPT 需要制定一些基本规则,并将其转化为 ChatGPT 可以理解的命令。

这些基本规则包括:

  • Visual-GPT 的任务需求:协助完成一系列与文本和视觉相关的任务,例如 VQA、图像生成和编辑。
  • VFM 的可访问性:Visual ChatGPT 可以访问 VFM 列表来解决各种 VL( vision-language ) 任务,使用哪种基础模型由 ChatGPT 模型本身决定。
  • 文件名敏感度:在对话中可能包含多个图像及不同的更新版本,使用精确的文件名以避免歧义至关重要,滥用文件名会导致混淆图片。Visual-GPT 被设计为严格使用文件名,确保检索和操作图像文件的正确性。
  • Chain-of-Thought:一些看似简单的命令可能需要多个 VFM,例如生成卡通图片的过程涉及深度估计、深度到图像和风格转换的 VFM。Visual-GPT 引入了 CoT 以帮助决定、利用和调度多个 VFM,将用户的问题分解为多个子问题来解决更具挑战性需求。
  • 推理格式的严谨性:Visual-GPT 必须遵循严格的推理格式。该研究使用精细的正则表达式匹配算法解析中间推理结果,为 ChatGPT 模型构建合理的输入格式,以帮助其确定下一次执行,例如触发新的 VFM 或返回最终响应。
  • 可靠性:Visual-GPT 作为一种语言模型,可能会伪造假图像文件名或事实,这会使系统不可靠。为了处理此类问题,需要设计 prompt 使忠于视觉基础模型的输出,而不能伪造图像内容或文件名。此外,prompt 还将引导 ChatGPT 优先利用 VFM,而不是根据对话历史生成结果。

在这里插入图片描述

3.5 视觉基础模型(Visual Foundatin Model)

Visual-GPT 支持 22 种视觉基础模型(Visual Foundatin Model):

  • 从图像中删除对象(Remove Objects from Image):image path, textual what to remove -> image path
  • 替换图像中的对象(Replace Objects from Image):image path, textual what to replace, textual what to add -> image path
  • 按文本要求修改图像(Change Image by the Text):image path, textual how to modify -> image path
  • 图像问题解答(Image Question Answering):image path, question -> answer
  • 从图像生成描述文本(Image-to-Text):image path -> natural language description
  • 从描述文本生成图像(Text-to-Image):textual description -> image path
  • 对图像进行边缘检测(Image-to-Edge):image path -> edge image path
  • 从边缘检测图和文本描述生成新图像(Edge-to-Image):edge image path, textual description -> image path
  • 对图像进行直线检测(Image-to-Line):image path -> line image path
  • 从直接检测图和文本生成新图像(Line-to-Image):line image path, textual description -> image path
  • 对图像进行 HED 边缘检测(Image-to-Hed):image path -> hed image path
  • 从HED边缘检测和文本生成新图像(Hed-to-Image):hed image path, textual description -> image path
  • 生成分割图像(Image-to-Seg):image path -> segment image path
  • 从分割图像和文本生成新图像(Seg-to-Image):segment image path, textual description ->image path
  • 从图像生成深度图(Image-to-Depth):image path -> depth image path
  • 从深度图和文本生成新图像(Depth-to-Image):depth image path, textual description -> image path
  • 从图像生成法线图(Image-to-NormalMap):image path -> norm image path
  • 从法线图和文本生成新图像(NormalMap-to-Image):norm image path, textual description -> image path
  • 从图像生成草图(Image-to-Sketch):image path -> sketch image path
  • 从草图和文本生成新图像(Sketch-to-Image):sketch image path, textual description -> image path
  • 对图像进行姿态检测(Image-to-Pose):image path -> pos image path
  • 从姿态检测和文本生成新图像(Pose-to-Image):pos image path, textual description -> image path

4. 【Visual-GPT】使用与运行

【本文为删节版,相关内容已删除。】

4.1 clone the repo
4.2 prepare the basic environments
4.3 start local runing

5. 【Visual-GPT】论文简介

5.1 论文获取

在这里插入图片描述

Title:Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models
标题:Visual ChatGPT:使用 Visual Foundation 模型进行对话、绘图和编辑
作者:Chenfei Wu, Shengming Yin, Weizhen Qi, Xiaodong Wang, Zecheng Tang, Nan Duan
机构:Microsoft Researc Asia(微软亚洲研究院)
论文链接: https://arxiv.org/abs/2303.04671
开源代码: https://github.com/microsoft/visual-chatgpt

我已经将本文上传到 CSDN,读者也可以从 arxiv 自行下载。

第一作者:吴晨飞,高级研究员,2020 年加入微软亚洲研究院自然语言计算组,研究领域为多模型的预训练、理解和生成。

通讯作者: 段楠,微软亚洲研究院首席研究员及自然语言计算组研究经理,中国科学技术大学兼职博导,天津大学兼职教授,研究领域为自然语言处理、代码智能、多模态智能和机器推理等。

5.2 主要贡献

(1)提出 Visual ChatGPT,打开了 ChatGPT 和 VFM 连接的大门,使 ChatGPT 能够处理复杂的视觉任务。

(2)设计了一个 Prompt Manager,其中涉及 22 个不同的 VFM,并定义了它们之间的内在关联,以便更好地交互和组合。

(3)进行了大量的零样本实验,并展示了大量的案例来验证 Visual ChatGPT 的理解和生成能力。

5.3 本文的启发
  • 本文开启了 ChatGPT 处理视觉任务的大门。
  • NLP —> Natural Language PhotoShop,自然语言文本描述下的图片创作编辑和问答。
  • 可以通过系统设计和工具包设计的 Prompt 实现无监督的工具调用,类似于 zero-shot 的 toolformer。
  • ChatGPT 本身对仿真场景的能力很强,也能接受图片路径和函数关系,可以很好地使用基础视觉模型。
  • Visual ChatGPT 本身是一个语言模型,所谓的两方多轮对话只是一个 Human AI 的多轮特殊形式。
5.4 模型复现

Visual-GPT 的运行步骤如下。

(1)创建 Python3.8 环境并激活新的环境:

# create a new environment
conda create -n visgpt python=3.8

# activate the new environment
conda activate visgpt

(2)安装所需的依赖(详见4.2):

#  prepare the basic environments
pip install -r requirement.txt

(3)clone the repo:

【删除】

clone the repo 所建立的文件夹结构如下:

├── assets
│ ├── demo.gif
│ ├── demo_short.gif
│ └── figure.jpg
├── download.sh
├── LICENSE.md
├── README.md
├── requirement.txt
└── visual_chatgpt.py

(4)设置工作目录:

将工作目录设置为创建的 github repo 的 copy:

# clone the repo
%cd visual-chatgpt

(5)下载基本视觉模型 VFM:

# download the visual foundation models
bash download.sh

(6)输入 OpenAI_API_key:

要开始使用OpenAI API,请访问 platform.OpenAI.com 并使用 Google 或 Microsoft 邮箱注册帐户,获取 API 密钥,该密钥将允许您访问API。——科学上网,势不可挡!

%env OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# prepare your private OpenAI key (for Linux)
export OPENAI_API_KEY={Your_Private_Openai_Key}

# prepare your private OpenAI key (for Windows)
set OPENAI_API_KEY={Your_Private_Openai_Key}

(7)创建图像保存目录

!mkdir ./image

(8)运行 Visual GPT

!python3.8 ./visual_chatgpt.py

注意问题:

(1)可以通过 “–load” 指定 GPU/CPU 分配,该参数设置使用的 VFM 模型及加载位置。可用的 Visual Foundation 模型参见 3.6 节内容。

例如,将 ImageCaptiing 加载到 cpu,将 Text2Image 加载到 cuda:0,则设置为:

python visual_chatgpt.py --load ImageCaptioning_cpu, Text2Image_cuda:0

(2)VFM 模型所需的内存资源很大,推荐的设置选项为:

  • CPU 用户:只加载 ImageCaptioning_cpu, Text2Image_cpu
  • 1 Tesla T4 15GB 用户:只加载 ImageCaptioning_cuda:0, Text2Image_cuda:0,可以加载 ImageEditing_cuda:0
  • 4 Tesla V100 32GB 用户:加载如下
--load ImageCaptioning_cuda:0,ImageEditing_cuda:0,
    Text2Image_cuda:1,Image2Canny_cpu,CannyText2Image_cuda:1,
    Image2Depth_cpu,DepthText2Image_cuda:1,VisualQuestionAnswering_cuda:2,
    InstructPix2Pix_cuda:2,Image2Scribble_cpu,ScribbleText2Image_cuda:2,
    Image2Seg_cpu,SegText2Image_cuda:2,Image2Pose_cpu,PoseText2Image_cuda:2,
    Image2Hed_cpu,HedText2Image_cuda:3,Image2Normal_cpu,
    NormalText2Image_cuda:3,Image2Line_cpu,LineText2Image_cuda:3

(3)不同 VFM 模型所需内存的参考值。

| Foundation Model | Memory Usage (MB) |

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

cuda:1,Image2Canny_cpu,CannyText2Image_cuda:1,
Image2Depth_cpu,DepthText2Image_cuda:1,VisualQuestionAnswering_cuda:2,
InstructPix2Pix_cuda:2,Image2Scribble_cpu,ScribbleText2Image_cuda:2,
Image2Seg_cpu,SegText2Image_cuda:2,Image2Pose_cpu,PoseText2Image_cuda:2,
Image2Hed_cpu,HedText2Image_cuda:3,Image2Normal_cpu,
NormalText2Image_cuda:3,Image2Line_cpu,LineText2Image_cuda:3


(3)不同 VFM 模型所需内存的参考值。




| Foundation Model | Memory Usage (MB) |


[外链图片转存中...(img-qfXVtzmF-1715820287190)]
[外链图片转存中...(img-UMCXscew-1715820287190)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值