1 图生文
CLIP
该模型架构由图像编码器和文本编码器组成。图像编码器将图像转换为嵌入(数字列表),文本编码器将文本转换为嵌入。
这两个编码器在成批的图像-文本对上进行训练,其中文本描述图像。编码器的训练方式如下:
对于每个图像-文本对,图像和文本嵌入彼此“接近”。
对于所有不匹配的图像-文本对,图像和文本嵌入彼此相距甚远。
注意,有很多种方法可以测量两个嵌入之间的距离。一些常用的方法是欧几里得距离和余弦相似度。CLIP 使用后者。
此图中有 N 个图像-文本对。I N和 T N是第 N 个图像-文本对的图像和文本嵌入。突出显示的蓝色方块表示我们希望靠近的嵌入对。
在这里插入图片描述
从高层次来看,CLIP 学习的是联合图像-文本嵌入空间,这基本上意味着可以直接计算图像和文本之间的相似度。事实证明,以此为目标训练模型通常非常有用,包括在多模态 LLM 环境中
LLaVA
LLaVA是一门多模态 LLM,于 2023 年发布。其架构非常简单:
视觉编码器使用 CLIP 进行预训练。
LLM 是经过预先训练的Vicuna模型。
视觉编码器通过单个投影层连接到 LLM。
请注意,与 BLIP-2 中的 Q-Former 以及 Flamingo 中的感知器重采样器和交叉注意层相比,视觉编码器和 LLM 之间的组件非常简单。
训练分为两个阶段:
在第 1 阶段,训练目标是图像字幕。视觉编码器和 LLM 被冻结,因此只训练投影层。
在第 2 阶段,LLM 和投影层在部分合成的指令跟踪数据集上进行微调。它是部分合成的,因为它是在 GPT-4 的帮助下生成的。
2 文生图
扩散模型(Diffusion Model)详细解析
扩散模型(Diffusion Model)是一种基于概率生成的深度学习模型,广泛应用于图像生成、去噪、超分辨率等任务。目前最流行的**文本生成图像(Text-to-Image)**模型,如 Stable Diffusion、DALL·E 2、Imagen,都使用了扩散模型作为核心技术。
📌 扩散模型的基本思想
扩散模型的核心思想是:
- 前向扩散过程(Forward Diffusion):给真实数据(如图片)逐步添加噪声,使其最终接近高斯噪声(即随机分布的像素)。
- 反向去噪过程(Reverse Denoising):使用一个神经网络模型学习如何从噪声中逐步恢复出原始数据,最终生成高质量的图像。
这类似于:
- 训练时:往一杯清水里不断滴墨水,使其逐渐变成黑色的液体。
- 生成时:从黑色液体中一点点去除墨水,直到恢复出清水。
1️⃣ 训练阶段(Forward Process)—— 向图像逐步加噪
📌 训练流程
在训练阶段,我们希望教会模型如何去除噪声,因此我们首先需要创建一组“噪声数据”。
-
给真实图像 X_0 逐步加噪
- 设
X_0
是原始图像(干净的图像)。 - 依次给
X_0
添加噪声,生成一系列噪声图像X_1, X_2, ..., X_T
(最终成为完全随机的高斯噪声)。 - 这个噪声是高斯噪声(Gaussian Noise),是随机的像素扰动。
- 设
-
训练模型学习噪声分布
- 我们训练一个 噪声预测器(Noise Predictor),让它学会预测某个时间步
t
的噪声。 - 训练时,我们希望模型能够学习:
- 给定一个带噪声的图像
X_t
,预测X_t
中的噪声ε
。 - 这样,在反向推理时,我们就能一步步去掉噪声,最终还原图像。
- 给定一个带噪声的图像
- 我们训练一个 噪声预测器(Noise Predictor),让它学会预测某个时间步
-
数学公式
- 前向扩散公式:
[
X_t = \sqrt{\alpha_t} X_{t-1} + \sqrt{1 - \alpha_t} \epsilon_t
]
其中:X_t
是当前步的噪声图像α_t
是一个超参数,控制噪声添加的强度ε_t
是高斯噪声
- 前向扩散公式:
📌 目标:让模型学习如何去噪,即 预测 ε_t
。
2️⃣ 生成阶段(Reverse Process)—— 逐步去噪
📌 生成流程
在生成图像时,我们从纯噪声开始,逐步去除噪声,恢复清晰的图像。
-
初始化一个随机噪声图像
X_T
- 这个噪声是完全随机的,没有任何信息。
-
用训练好的模型预测噪声
- 令
t=T
(最大时间步),输入X_T
进入去噪网络(Denoise Model),模型会预测出X_T
中的噪声ε_T
。 - 用
X_T - ε_T
得到X_{T-1}
(噪声稍微减少的图像)。
- 令
-
重复去噪过程
- 依次计算
X_{T-1}, X_{T-2}, ..., X_1
,逐步减少噪声。 - 最终,我们得到
X_0
(清晰的合成图像)。
- 依次计算
-
数学公式
- 反向去噪公式:
[
X_{t-1} = \frac{X_t - \sqrt{1 - \alpha_t} \hat{\epsilon_t}}{\sqrt{\alpha_t}}
]
其中:X_t
是当前噪声图像\hat{\epsilon_t}
是模型预测出的噪声α_t
控制去噪的强度
- 反向去噪公式:
📌 目标:从 X_T
(完全噪声)一步步恢复到 X_0
(清晰图像)。
3️⃣ 为什么扩散模型适用于图像生成?
📌 1. 能生成高质量图像
- 由于扩散模型的去噪过程是渐进的,它能够生成高质量、细节丰富的图像。
- 例如 Stable Diffusion、DALL·E 2 能够生成清晰、逼真的图像。
📌 2. 适用于多模态任务
- 扩散模型不仅能用于图像生成,还能用于:
- 文本生成图像(Text-to-Image)
- 图像修复(Image Inpainting)
- 超分辨率(Super-Resolution)
- 视频生成(Video Generation)
- 方法:在输入噪声
X_T
时,附加一个 文本条件text
,让模型学习图像与文本的关系。
📌 3. 适用于条件生成
- 例如,我们可以在
X_T
输入文本:X_T = TextPrompt("A cat sitting on the beach") + Noise
- 这样,扩散模型在去噪时会受到文本的约束,生成符合文本描述的图像。
4️⃣ 经典的扩散模型架构
📌 1. DDPM(Denoising Diffusion Probabilistic Models)
- 最早的扩散模型,逐步降噪,但计算开销较大。
📌 2. DDIM(Denoising Diffusion Implicit Models)
- 改进的版本,减少去噪步骤,提高生成速度。
📌 3. Stable Diffusion
- 由 Stability AI 开发的 Text-to-Image 模型,基于扩散模型,支持高质量文本图像生成。
📌 4. Imagen(Google)
- 由 Google 研究团队开发,融合文本和图像生成技术,效果接近 DALL·E 2。