目录
1.1 方向一:影像作为生成式AI的条件 (Condition)
2)分层 attention(伪 3D attention)
15 变分自编码器(VAE)和Flow模型如何利用文字描述和潜在空间中的“噪声”来生成图片
17.2 Diffusion Transformer的工作流程:
18 VAE、Flow-based model、Diffusion Model 三者的类比
18.4 Forward Process 与 Reverse Process:
18.5.2 Flow-based Model 生成图片的过程:
18.5.3 Diffusion Model 生成图片的过程:
19.5 GAN 的生成器(Generator)是否需要输入杂讯
0 完整章节内容
本文为李宏毅学习笔记——2024春《GENERATIVE AI》篇——“第17~18讲”章节的课堂笔记,完整内容参见:
李宏毅学习笔记——2024春《GENERATIVE AI》篇
本章节主要浅谈“有关影像的生成式AI”。
1 关于影响的生成式AI的两个方向
1.1 方向一:影像作为生成式AI的条件 (Condition)
生成式AI根据输入的图片或影像生成对应的输出,比如:
-
图片转文字:例如,GPT-4 可以解析图片内容,根据照片给出合理的描述或评论。
- 示例:两张李宏毅的照片分别为“牛仔外套年轻人”和“白衬衫眼镜男士”。GPT-4 提出:
- 牛仔外套的年轻人显得时尚有型,可能从事时尚、创意领域。
- 白衬衫的男士看起来专业而亲和,可能从事学术或技术相关工作。
- 示例:两张李宏毅的照片分别为“牛仔外套年轻人”和“白衬衫眼镜男士”。GPT-4 提出:
-
照片内容分析:模型能基于图片猜测人物职业等信息,并作出合理推断。
- 比如,当被问到“谁更帅”时,GPT-4 尽量保持客观,强调双方的独特魅力,但在多次追问下,它还是会有偏向性,并辅以详细解释。
1.2 方向二:根据文字生成影像内容
生成式AI直接生成图片或视频。输入条件可以是:
- 文本(描述、指令)。
- 其他信息(结构、风格等)。
今天课程的重点是 如何通过生成式AI生成图片或视频,而非仅分析现有图片。
2 SORA模型
2.1 SORA 模型的核心能力
1)从文本生成影像:
SORA 能根据一段文字描述,生成对应的动态影片。
示例:
GIF图像太大了,超过了5MB,无法上传
例1:
输入文字:“一个小怪物看着逐渐溶解的红色蜡烛。”
SORA 输出:一段包含小怪物与蜡烛动态交互的影片。
例2:
输入文字:“纽约街景,但城市沉入海底,周围有许多水生生物。”
SORA 输出:一段纽约沉没水底并充满海洋生物的影片。
2)创造超现实场景:
SORA 可以生成现实生活中不可能出现的画面,如沉入海底的纽约街景,表现出极高的创造性。
2.2 影片生成的瑕疵与局限性
虽然 SORA 展示了极强的影像生成能力,但依然存在一些技术局限:
-
动态逻辑的不自然:例如,在生成的小怪物影片中,小怪物虽然静止不动,但背景墙却左右移动,显得不自然。
-
生成物体的变形问题:水生生物在影片中会变形。例如,一只远处的海龟靠近后可能变成一条鱼。
-
数量或结构异常:示例:输入“画五只狼的幼崽”,SORA 生成的画面中幼崽数量不断分裂,甚至超出预期。
-
动作与物体互动的瑕疵:如影片“考古学家挖出塑胶椅”,生成的画面展示椅子突然移动或消失,显得不够自然。
2.3 SORA 的震撼与潜力
尽管存在上述问题,SORA 在文本到影像生成领域已表现出惊人的潜力:
- 其生成能力表明,AI 可以创造逼真的动态影像,而不仅限于静态图像。
- 生成超现实场景的能力,为艺术创作、影视制作、广告等领域打开了全新可能。
参考链接:OpenAI 提供的官方博客中展示了 SORA 的生成实例(课程投影片附链接)。网络上流传的许多 SORA 示例影片也来源于这些官方展示。可惜的是,今年2月横空出世 声势浩大的SORA截至目前(2024年12月)还未对外界开放使用。
3 影像生影像
3.1 未完成影片的续写:
- AI 可以根据一段未完成的影片推测剩余部分并生成完整影片。
- 应用场景:电影制作、视频补全。
3.2 风格转换:
- AI 可将影片风格进行转换,例如将黑白影片上色。
- 应用场景:老电影修复、艺术风格化处理。
3.3 画质提升:
- 将低分辨率影片提升为高分辨率画质。
- 应用场景:影像增强、高清修复。
4 其他输入生影像
4.1 Talking Head 技术
-
核心功能:
- 给定一段录音和一张照片,AI 生成对应的口型和面部表情,使照片中的人物看起来在说话。
- 示例:基于一篇今年 3 月的开源论文实现的模型,生成了人物口型动作,并自动加上细节(如牙齿)。
-
潜在应用:
- 虚拟主播 (VTuber):
- 结合 GPT-4 或其他语言模型,可实现完全 AI 驱动的虚拟主播,无需真人介入。
- 未来可能出现 AI 生成的虚拟主播风靡网络,后续再公开其 AI 身份。
- 教育与传媒:用于教学视频、新闻播报等,减少制作成本。
- 虚拟主播 (VTuber):
4.2 多种输入条件的生成应用
-
草图生成精细图像:
- 用户仅需提供简单草稿,AI 便可生成精细绘图。
- 应用场景:设计辅助、艺术创作。
-
指定站姿生成人物图像:
- 输入人物站姿,AI 生成对应的人物图像。
- 应用场景:动画制作、角色设计。
-
多条件输入的生成网络(ControlNet):ControlNet 允许将各种输入条件(如草图、站姿等)作为约束条件,生成更加多样化的图像。
5 图片与影像的基本构成
在讨论生成图片或影像的 AI 是如何工作的之前,首先需要了解图片和影像的基本构成及其视觉呈现的原理。
5.1 图片的基本构成:像素
-
像素是什么:
- 像素是图片的最小单位,每个像素记录一个颜色值。
- 图片的分辨率决定了像素的数量,例如:
- 1024×1024 分辨率的图片包含 1,048,576 个像素,图像非常清晰。
- 16×16 分辨率的图片只有 256 个像素,图像会显得非常模糊。
-
分辨率对视觉效果的影响:
- 像素越多,图像越清晰,细节越丰富。
- 像素过少会导致失真,难以识别内容。
5.2 影片的基本构成:帧(Frame)
-
影片的本质:
- 影片是一系列连续的图片(帧)组合而成的动态视觉效果。
- 每秒播放的帧数(Frame Per Second, FPS)决定了影片的流畅度。
-
帧率与视觉体验:
- 常见帧率:
- 24 FPS:电影和 YouTube 视频的标准帧率,足以让人感知为流畅的动态画面。
- 60 FPS:游戏中常见的帧率,更高的帧率让动画显得更加丝滑。
- 帧率过低(如 1 FPS)会导致画面卡顿,动态感丧失,类似网络延迟时的视频体验。
- 常见帧率:
5.3 对比案例
-
高帧率(24 FPS):
- 画面动态连贯,人眼无法分辨每一帧。
- 示例:电影中的场景,流畅、自然。
-
低帧率(1 FPS):
- 画面卡顿,动态不连贯。
- 示例:网络缓冲或低帧率视频,观感不佳。
6 今日的人工智能如何看待图片、影像
现代生成式 AI 模型在处理图片和影像时,已经不再直接以原始像素作为输入,而是通过特定的处理技术,简化和压缩数据表示。这种方式不仅提高了效率,还使得模型在生成高质量图片和影像时具有更强的能力。以下是具体细节:
6.1 图片的处理方式
1.1 编码器(Encoder)
-
图片切分为 Patch:
- 图片被划分为多个小块(Patch),每个 Patch 是图片的一部分。
- 例如:将 64×64 的图片分成 4×4 的 Patch,总共切分为 16 个 Patch。
-
Patch 压缩:
- 每个 Patch 被进一步压缩,可以用以下两种方式表示:
- 符号化:每个 Patch 被表示为一个独特的 Token(类似语言中的单词)。
- 向量化:每个 Patch 被表示为一个低维度向量。
- 每个 Patch 被进一步压缩,可以用以下两种方式表示:
-
拉直为序列:
- 图片是二维的(有宽度和高度),但在输入 AI 模型(如 Transformer)前,会将所有 Patch 拉直为一维序列。
1.2 解码器(Decoder)
- 解码器的任务是将压缩后的 Patch 还原成完整的图片。
- 解码复杂性:
- 解码器不仅仅看单个 Patch,还会综合考虑相邻 Patch 的信息,甚至整张图片所有 Patch 的关系。
- 使用复杂的神经网络(例如 Transformer)来完成解码,确保还原后的图片质量高,细节丰富。
1.3 与简单降分辨率的区别
- 虽然表面上编码器与解码器的压缩过程类似降分辨率,但实际远比简单的缩小和放大复杂。
- 编码和解码网络(例如 Transformer)具有深层架构,能够捕捉图片的细节关系和全局信息。
6.2 影片的处理方式
2.1 影片的 Patch 压缩
-
时间维度的压缩:
- 影片是多帧图片的集合,因此除了对每帧图片进行二维(宽、高)的切分,还可以在时间维度进行压缩。
- 例如:将相邻帧的同一位置的 Patch 合并为新的 “Video Patch”。
-
生成 Video Patch:
- 假设一段影片有 4 帧,每帧切分为多个 Patch,模型可以将同一位置的 Patch(跨时间维度)进一步压缩为一个 “Video Patch”。
- 每个 Video Patch 表示特定位置的一段长、宽和时间信息。
-
拉直为序列:
- 所有的 Video Patch 最终也会被拉直,形成一维序列,作为 AI 模型的输入。
2.2 编码器与解码器在影片中的应用
- 与图片类似,影片的编码器负责将影片转换为 Patch 序列,解码器负责从 Patch 序列还原影片。
- 特殊之处在于:影片的解码器会结合时间信息,确保生成的影片在动态上连贯。
6.3 案例分析:SORA 的示例
-
编码与压缩:SORA 将影片通过编码器分割为包含空间(长、宽)和时间信息的 Patch,并对其压缩表示。
-
时间与空间的结合:每个 Patch 包含了影片某一位置的一小段时空信息,是高效的表示形式。
-
模型的处理方式:最终,所有 Patch 被输入生成式 AI 模型(例如 Transformer),完成生成任务。
7 文字生图模型的训练方法及其背后的原理
7.1 模型训练所需的训练数据
- 训练目标: 给定一段文字,生成与其对应的图片。
- 数据需求: 包含图片及其对应的文字描述的配对数据。
- 例如:一张图片“白雪覆盖的山峰”会有描述文字“a snow-covered mountain under the blue sky”。
- 数据集示例:LAION(Largest AI Open Network) 提供了高达 58亿张图片及其文字描述 的大规模开源数据集。
7.2 数据预处理与图片表示
- 图片转化为 Patch:
- 将图片分割为小块(称为
patch
),例如将64×64
的图片切成4×4
的16块
。 - 每个
patch
可以表示为低维向量,或通过一个 token 表达,这样可以将图片复杂的信息浓缩表示。
- 将图片分割为小块(称为
- 整合 Patch:
- 将所有
patch
拉直为一维序列,作为 Transformer 模型的输入。
- 将所有
7.3 模型的训练方法
- 传统的 Auto-Regressive 方法:
- 类似文字生成中的“文字接龙”方式,一个
patch
接一个地生成。 - 缺点:生成效率低,一张图片可能需要生成成千上万的
patch
。
- 类似文字生成中的“文字接龙”方式,一个
- 改进的 Non-Auto-Regressive 方法:
- 一次生成所有 Patch:
- 使用 Transformer 模型,直接同时生成所有
patch
。 - 模型的 Attention 机制确保每个
patch
生成时,参考了其他patch
的信息。
- 使用 Transformer 模型,直接同时生成所有
-
-
- 关联性问题:
- Attention 机制增强了
patch
之间的关联性,但不能完全解决“脑补”问题。 - 比如:生成一只奔跑的狗时,如果不同位置生成的狗特征不一致,可能导致图片中“多只重叠的狗”。
- Attention 机制增强了
- 一次生成所有 Patch:
7.4 文字生成图片的训练流程
- 输入文字: 提供一段描述性文字(如“a cat sitting on a chair”)。
- Transformer 模型:
- 将文字编码后,与图片的
patch
一起输入 Transformer。 - Transformer 同时生成所有图片的
patch
,通过 Attention 建立每个patch
之间的关系。
- 将文字编码后,与图片的
- Decoder 解码:将生成的
patch
还原为完整的图片。
7.5 应用与挑战
- 当前应用:模型可以生成与输入文字高度相关的图片,例如通过文字描述特定场景或人物。
- 技术挑战:
- Consistency(一致性): 确保生成图片在局部细节和整体特征上具有一致性。
- Dataset Bias(数据偏差): 训练数据集的质量、数量和多样性决定了生成图片的能力。
- 法律问题: 训练使用的图像数据大多来源于互联网,可能存在版权争议。
8 如何评价影像生成的质量好坏?
在衡量影像生成模型的好坏时,当前的主流方法已经不局限于依赖人类的主观评价,而是借助机器模型的能力来进行量化评估。
8.1 为什么需要衡量生成模型的好坏?
- 生成质量评估: 当输入一段描述性文字,影像生成模型会输出一张图片。如何判断这张图片是否“符合预期”或“生成得好”是关键。
- 人类评估的局限性:
- 人类评估的主观性和精准性较高,但成本大、时间有限,无法大规模使用。
- 在语言模型中曾提到,强大的语言模型(如 GPT-4)可以部分代替人类完成评估工作。在影像生成领域,也出现了类似的趋势。
8.2 Clip 模型的作用
- Clip 的训练目标:
- 学习 图片-文字配对的正确性。
- 训练方式:
- 正向配对: 给出一张图片及其正确的文字描述,Clip 输出高分。
- 反向配对: 给出图片与随机错误文字描述,Clip 输出低分。
- 通过这些配对训练,Clip 能够对图片和文字的匹配程度进行准确评分。
- 实际使用:
- Clip 已经被训练好且开源,很多生成图片的模型会直接利用 Clip 的能力。
- Create Score(CLIP Score):
- 输入:生成的图片 + 输入的文字描述。
- 输出:Clip 模型的评分。分数越高,代表图片越符合文字描述,模型表现越好。
8.3 Clip Score 的优点与挑战
- 优点:
- 自动化评估: 减少对人工评价的依赖,大幅提高评估效率。
- 一致性: Clip Score 基于统一的标准,可以对不同模型生成的图片进行横向比较。
- 已开源: Clip 是开源的,模型开发者可以方便地使用。
- 挑战:
- 依赖性: Clip Score 的结果依赖于 Clip 模型本身的训练质量。如果 Clip 在特定类型的数据上表现较差(如艺术风格图片),评分可能不够准确。
- 主观性缺失: Clip 是根据“匹配程度”评分,但未必能反映图片在艺术性、创意性等方面的优劣。
- 潜在偏差: Clip 的训练数据来自互联网,可能会继承其中的偏见或局限。
8.4 总结与趋势
- Clip Score 代表了一种用模型评估模型的时代趋势。
- 不仅影像生成领域,其他生成式 AI(如文字生成、音乐生成等)也开始使用类似的“强模型评估弱模型”方法。
- 虽然当前 Clip Score 是影像生成模型评估的主流方法,但未来可能会发展出更加综合、准确的评价体系,结合主观与客观因素,提升评估质量。
9 个性化的图像生成
在影像生成领域,个性化图像生成是一项前沿技术,尤其是在描述复杂或抽象对象时,通过文字难以完全捕捉其特征。
9.1 传统文字描述的局限性
- 难以完全表达: 一张图片可能包含细腻的纹理、形状、颜色等特征,这些特征用文字描述往往会出现歧义或遗漏。
- 示例问题: 例如,用文字描述家中的钟,即便反复优化描述,也难以完全还原其外观,因为生成模型只能基于预训练数据中的相似内容进行生成,未必能准确匹配用户需求。
9.2 个性化图像生成的核心思想
- 引入新符号:
- 为个性化物体(如雕塑、钟)取一个独特的名字,例如
S-Star
。 - 选择平时不使用的符号,避免与常用词汇混淆。例如,不要用“狗”作为符号,以免污染模型对“狗”的理解。
- 为个性化物体(如雕塑、钟)取一个独特的名字,例如
- 微调生成模型:
- 使用 3-5 张该物体的图片,通过模型的微调机制,教会模型将这个新符号与特定的物体外观相关联。
- 让模型理解该符号(如
S-Star
)对应的具体对象,并学会在不同场景下生成该对象的图像。
9.3 实现步骤
-
数据准备:
- 收集 3-5 张目标物体的图片,尽可能覆盖不同角度或光线条件。
- 为该物体命名,选择一个独特的名称(如
S-Star
)。
-
模型微调:
- 使用一个支持微调的生成模型(如 Stable Diffusion、DreamBooth 等)。
- 将这些图片与名称
S-Star
配对,输入模型进行训练。 - 微调过程让模型学习到
S-Star
与这些图像特征的映射关系。
-
生成新图像:
- 在微调后的模型中输入指令,例如:
- “An oil painting of S-Star” (S-Star 的油画)。
- “S-Star as an app icon” (S-Star 作为一个应用图标)。
- “A knitted version of S-Star” (针织版的 S-Star)。
- 模型将根据上下文和风格要求生成带有个性化特征的图片。
- 在微调后的模型中输入指令,例如:
9.4 个性化生成的优势
- 低样本需求: 只需少量图片即可实现微调,降低数据采集难度。
- 扩展性强: 微调后的模型能够将个性化对象生成在各种风格和场景中,适配不同需求。
- 提升表达能力: 解决文字描述的局限性,使模型能生成更贴近真实物体的图像。
9.5 应用场景
- 个性化艺术创作: 为独特物品制作定制化的艺术作品(如油画、针织物等)。
- 虚拟场景模拟: 将定制化对象置入虚拟环境中,例如用于游戏开发、电影制作等。
- 品牌和产品设计: 快速生成产品在不同应用场景下的效果图。
10 文字生影像的挑战及优化措施
文字生成影片(Text-to-Video, T2V)的技术是一种从文字描述中生成动态视频的能力,它是文字生成图像(Text-to-Image, T2I)技术的扩展。从原理上来说,二者的核心机制是类似的,但生成影片的复杂性远高于生成图片
10.1 文字生成影片的原理
文字生成影片可以被视为将多帧图像(frame)按时间顺序排列起来的过程:
- Patch 的概念: 在文字生成图像中,一张图像被分解成多个小块(patch),这些 patch 是 Transformer 模型操作的基本单位。
- 时间维度的扩展: 在生成影片时,不仅要考虑一帧图像内的 patch,还需考虑不同帧之间的 patch 关系。这个时间上的扩展大大增加了计算复杂度。
简单对比:生成图片 vs 生成影片:
10.2 文字生成影片的挑战
1)计算量的指数级增长
- 假设:
- 每帧图片分成 64×64 个 patch。
- 一分钟的视频包含 1440 帧。
- 全局的 3D attention 意味着需要对所有 600万 个 patch 之间两两计算关系。
- 计算复杂度:
- 全局 3D attention 的次数为 600万^2 = 36万亿 次。
- 这对任何现有计算资源来说都是一个巨大的挑战。
2) 空间和时间信息的结合
- 图像一致性(Spatial Consistency):
- 同一帧内,画面的内容需要一致,不能有逻辑冲突或失真。
- 时间连贯性(Temporal Consistency):
- 不同帧之间需要有时间上的连贯性,避免出现不自然的跳帧或闪烁问题。
直接计算所有 patch 的 3D attention 会实现较高的空间和时间一致性,但计算量非常高,因此需要折衷方案。
10.3 优化方法:降低计算量
1)局部化 attention
- 空间注意力(Spatial Attention):
- 仅在同一帧的 patch 之间计算 attention,确保单帧内的图像一致性。
- 时间注意力(Temporal Attention):
- 在不同帧之间的相同位置 patch 之间计算 attention,捕捉时间维度的连贯性。
2)分层 attention(伪 3D attention)
通过交替使用空间注意力和时间注意力,可以降低计算需求:
- 空间注意力(2D attention)关注单帧内部关系。
- 时间注意力(1D attention)关注帧与帧之间的关系。
- 两者结合形成“伪 3D attention”,将原本的 600万^2 attention 减少到 240亿+85亿=325亿 次,减少了 千倍运算量。
10.4 文字生成影片的架构
文字生成影片的典型架构包括:
- 文本编码器: 提取文字描述的语义特征。
- 视频生成模块: 基于伪 3D attention 生成动态帧序列。
- 空间注意力模块: 处理单帧内的画面一致性。
- 时间注意力模块: 确保帧间连贯性。
10.5 另一种思路
从刚才的讨论来看,文字生成影片的挑战主要集中在 计算复杂度 和 连贯性 上,而解决这些问题的方法主要通过以下两个思路:
10.5.1 减少计算复杂度:
A. 调整 Attention 机制:
-
问题:
全 3D Attention 需要在每一帧的所有 Patch 之间进行两两计算,复杂度是天文数字(如一分钟影片高达 36×10^12 次 Attention)。 -
解决方案:
分解 3D Attention:将空间(Spatial)和时间(Temporal) Attention 分开。- Spatial Attention: 每帧内的 Patch 之间计算 Attention,确保单帧图像内容的局部一致性。
- Temporal Attention: 不同帧之间同位置 Patch 计算 Attention,确保时间轴的连贯性。
- 伪 3D Attention: 将上述两种 Attention 交替使用,从而在计算成本大幅降低的同时,尽量保留空间和时间上的关联。
成本对比:
- 全 3D Attention:36×10^12 次。
- 伪 3D Attention:约 240×10^9+85×10^9 次,降低近 1000 倍。
B. 分步生成(逐步精细化):
-
问题:
一次性生成高分辨率、高帧率的影片计算量庞大。
-
解决方案:
借鉴 多阶段流水线生成策略:- 第一步:生成 低分辨率、低帧率 的初稿影片。
- 随后的模型逐步精细化:
- 提高分辨率:从 40×24 提高到 1280×768。
- 提高帧率:从 3 FPS 提高到 24 FPS。
- 补帧:生成帧与帧之间的过渡图像,确保连贯性。
- 每个模型只处理特定任务,极大地降低单模型的复杂度。
10.5.2 提升生成质量和连贯性:
-
Diffusion 模型在影片生成中的应用: Diffusion 模型通过从噪声逐渐还原出清晰的图像,天然适合用于分阶段生成:
- 初始阶段生成模糊的、低分辨率的内容。
- 随后通过逐步优化,生成高质量、细节丰富的帧。
-
结合条件生成模型(Conditional Generation): 利用额外的条件(如文字描述)指导生成过程,确保生成影片的内容符合预期。
10.5.3 推荐阅读的论文:
-
关于语言模型与影像结合:
论文研究如何利用语言模型生成影像,并将其结果作为中间步骤输入后续模型。- 关键词:An Introduction to Visio-Language Modeling
-
关于 Diffusion Model 的影片生成:
探讨如何用扩散模型处理动态信息(如时间维度)以生成高质量影片。- 关键词:Video Diffusion Models:A Survey
这两篇论文分别涉及了生成式 AI 中语言、图像和时间序列的关键技术,是深入学习的优秀资源!
11 经典影像生成方法:
- Variational Auto-encoder (VAE): 一种生成模型,能够学习数据的潜在空间并生成新的样本。
- Flow-based Models: 通过流模型进行生成,能够精确地推导出数据分布。
- Diffusion Models: 如SORA模型,常用于将噪声逐渐去除,最终生成高质量的图像或视频。
- Generative Adversarial Networks (GAN): 通过生成器和判别器的对抗训练生成高质量图像。
12 文字生成影像的挑战:
Transformer在影像生成中的应用:Transformer架构被广泛用于生成影像,其中一个挑战是如何通过文字描述生成多样化的图像。例如,描述“奔跑的狗”时,生成模型可能会遇到问题,因为“奔跑的狗”可以指代不同的狗品种和环境。简单的文字描述可能不足以精确描述图像,因此可能会导致生成模型产生多个不一致的图像输出。
13 如何解决这一问题:
- 引入额外信息:通过为文字描述提供更多的上下文信息(如“哈士奇在草原上奔跑”),可以帮助生成模型理解不同场景下的输出要求。这样可以避免模型产生不一致的图像。
- 缺乏训练资料:我们需要根据输入的图片和文字来得到文字中没提到的关于图片的信息,但是实际中这种数据集是很难获得的,那能不能不依靠这种数据集实现上述功能呢?
- 资讯抽取模型:为了解决文字描述不足的问题,可以训练一个资讯抽取模型来提取图像中文字未提到的细节。这些细节可以作为额外信息传递给生成模型,从而提高生成图像的质量和一致性。(注意训练时有输入的图片,资讯抽取模型将补充输入中没有明确描述的部分,将其和输入文字送给Decoder,然后生成出一张和输入图片尽可能相近的图片,在这个过程中Encoder和Decoder是一起同时训练的,所以就不需要人为制造的数据集了)
14 Autoencoder架构:
Encoder和Decoder的协同训练:在这一框架中,资讯抽取模型(Encoder)和图片生成模型(Decoder)协同工作,共同优化输出的图像,使其尽可能与输入图像相似。资讯抽取模型的输出不需要是文字,而是数值向量,代表图像的不同特征(如狗的品种、背景等)。Decoder根据这些向量生成具体的图像。
15 变分自编码器(VAE)和Flow模型如何利用文字描述和潜在空间中的“噪声”来生成图片
15.1 生成图片的挑战与解决方案:
训练的时候我们有用于脑部资讯的数值向量,因为我们有输入图片,可以将输入图片经过资讯抽取模型(Encoder)来得到;但是测试的时候我们没有输入图片,只有一段文字描述,那么数值向量该如何获取呢?
在实际生成过程中,这些遗漏的、未描述的部分通过一个向量(通常称为噪声向量)来表示。模型会通过概率生成这些噪声向量的值,从而为图片生成提供了缺失的部分。
15.2 举个例子
假设输入的文字描述是:“一只站在草地上的红色狐狸”。在训练阶段,模型已经学会了如何将图像中的信息转化为潜在向量(通过Encoder)。在测试阶段,当你输入文字描述时,文本编码器会将“红色狐狸”转化为一个潜在向量,表示狐狸的颜色、形态等特征。如果描述中没有提到草地,生成模型就会通过加入噪声向量来补充这一部分缺失的信息。
通过这样的方式,模型能够在没有直接输入图像的情况下,依然生成符合文字描述的图像,并且能够通过“脑补”的方式填补描述中的空缺。
15.3 通过“掷骰子”来生成噪声向量:
生成噪声的方式类比为“掷骰子”,模型随机生成每个噪声向量的值,直到获得一个合适的向量。这些噪声值通常是通过概率分布来决定的,也就是说,模型不完全依赖文字描述,而是让随机性来决定生成过程中的不确定部分。
也即脑补的向量,是由之前训练好的资讯抽取模型Encoder“掷骰子”得到的。
在生成的过程中,这些噪声向量和文字描述共同作为输入,模型会将其结合起来生成最终的图像。
15.4 VAE(变分自编码器)的工作原理:
编码器(Encoder):编码器从文字描述中通过“掷骰子”提取出潜在空间的向量(即噪声向量),这些向量代表了图片中的主要信息,也就是文字描述没有提到的那些部分。
解码器(Decoder):解码器接收到这个潜在向量后,结合文字描述,重建出对应的图片。这个过程就是将“脑补”的噪声信息与已有的文字描述结合起来,从而生成完整的图片。
15.5 Flow模型的优化:
Flow模型与VAE非常相似,但有所不同。它只训练一个解码器,而不需要训练单独的编码器。这个解码器被设计为可逆的(invertible),也就是说,解码器的反函数可以用来作为编码器。
通过这种方式,Flow模型避免了需要训练两个独立模型的问题,只需要训练一个解码器,但它依然能够提取出潜在的噪声信息,用来补充生成图片时的缺失部分。
15.6 噪声向量的作用与重要性:
在生成图片的过程中,噪声向量(也被称为“noise”)包含了生成图片所需的额外信息。这些噪声值不仅仅是随机的,它们实际包含了非常重要的图像特征。
举个例子,你可以通过将“臭脸”的特征向量与“笑脸”的特征向量进行加减来改变图片的表情。如果你有一张原本看起来不高兴的人的照片,可以将其“臭脸”特征减去,再加上“笑脸”特征,最终通过解码器生成一张更开心的笑脸。
15.7 实际操作与效果:
比如,假设你有一组“脸很臭的人”的图片,你可以将这些图片通过编码器转换为一个向量,代表“臭脸”的特征。相反,将“笑脸”的人脸图片转换为另一组向量,代表“笑脸”的特征。
在实际生成图片时,你可以通过将“臭脸”的特征向量从当前向量中减去,并加入“笑脸”的特征向量来调整图像。通过这种方式,最终生成的图像就会呈现出更开心的笑容。
16 介绍 Diffusion Model
Diffusion Model(扩散模型)是一种生成模型,它的核心思想与之前提到的VAE(Variational Autoencoder)和Flow-based Model有所不同。尽管它们的目标都是生成图像,但在实现过程中,Diffusion Model通过多次逐步去除噪声来生成清晰的图像,而VAE和Flow-based Model通过潜在空间向量来生成图像。
在Diffusion Model中,输入和输出都包括噪声,过程如下:
16.1 输入与输出:
- 输入:与之前的模型一样,Diffusion Model的输入包括噪声(noise)和文字描述。
- 输出:输出是经过去噪后的图像。与其他模型不同,Diffusion Model在生成过程中会反复使用同一个去噪模块(DNOISE)来逐步清晰化图像。
16.2 去噪过程:
- 去噪模块:Diffusion Model的关键在于去噪模块(DNOISE)。每次生成图像时,DNOISE模块会根据输入的噪声图像和文字描述来逐步去除图像中的噪声,使其逐步变得更清晰,并尽可能与文字描述匹配。
- 反复迭代:生成图像的过程需要反复进行,通常需要500到1000次去噪。在每次去噪时,DNOISE模块都会稍微去掉一些噪声,使图像变得更加接近最终的清晰图像。随着去噪次数的增加,图像会越来越接近真实的目标图像。
16.3 训练过程:
- 加噪声:为了训练去噪模型,我们需要首先构造训练数据。原始图像与文字描述是已知的,接着将这些图像加入噪声,逐步加噪声直到图像完全失真,甚至看不出原始物体的样子。
- 训练目标:训练的目标是让DNOISE模块能够学习如何从带有噪声的图像中去除噪声,并恢复出原始图像。通过这样的训练,DNOISE模块能够在测试阶段根据输入的文字描述和噪声图像逐步去噪,生成清晰的图像。
16.4 研究方向:
- 减少去噪次数:传统的Diffusion Model需要进行500到1000次去噪才能生成清晰的图像。研究者目前正在尝试减少去噪的次数,寻找在少量去噪步骤(例如10次、5次,甚至1次)下,仍能生成质量较高的图像的技术。
16.5 生成图像的过程:
- 噪声加入:在训练时,为了制造有噪声的图像,首先将噪声加入到原始图像中,逐步增加噪声量,直到图像完全看不出原样。
- DNOISE训练:通过将噪声图像与原始图像及其文字描述一起作为训练数据,DNOISE模块学习如何将带噪声的图像恢复为无噪声的图像。
- 生成图像:在测试阶段,Diffusion Model接收一个带有噪声的图像和一段文字描述,并通过多次反复去噪,使图像逐步清晰并符合文字描述。
17 Diffusion Transformer模型
在Diffusion Model的基础上,结合Transformer架构,形成了Diffusion Transformer,这是一种非常先进且常用的技术,尤其在生成任务中有着广泛应用。
17.1 Diffusion与Transformer结合:
- 传统的Transformer:通常,Transformer模型的输入是一些信息(如文字或图像的patch),它会通过注意力机制(Attention Mechanism)生成一些表示(如图像的patch)。这些生成的patch可以通过解码器(Decoder)还原成图像。
- Diffusion Model + Transformer:在Diffusion Transformer中,每个Transformer的作用是逐步去除噪声(DNOISE)。一开始,输入的图像patch是带有噪声的,而Transformer的任务就是在每一次迭代中,去掉部分噪声,让图像patch变得越来越清晰。
- 反复使用Transformer:与传统的Diffusion Model一样,Diffusion Transformer在去噪过程中需要反复应用多个Transformer(通常为500到1000次),每次去除一些噪声,直到最终得到清晰的patch。
17.2 Diffusion Transformer的工作流程:
- 输入:一组带有噪声的图像patch。
- 处理过程:
- 第一次用Transformer去除一些噪声,使patch变得稍微清晰。
- 第二次使用相同的Transformer去除更多的噪声。
- 这个过程会持续进行多次,直到图像的patch足够清晰。
- 输出:最终的清晰patch。
这种逐步去噪的过程,结合了Diffusion模型的优势与Transformer的强大表示能力,通过多次迭代逐步提升图像的质量。
17.3 生成图像的过程:
- Patch逐步清晰化:Diffusion Transformer通过多次迭代,逐步将噪声图像的patch清晰化,最终得到一个接近目标图像的patch。每次迭代的任务是去除噪声,而这个过程被Transformer模型通过不断调整去噪操作来完成。
- 恢复图像:清晰化后的patch可以被送到解码器(Decoder)中进行组合和重建,最终还原为完整的图像或视频帧。
17.4 扩展到视频生成:
- 视频生成:与生成图像的过程类似,Diffusion Transformer同样可以扩展到视频生成。在视频生成中,每个frame(帧)也可以通过类似的方式生成,即通过一组Transformer逐步去噪,每个Transformer针对有噪声的帧执行去噪,直到生成清晰的视频帧。
- 多次去噪:与图像生成一样,视频生成中的每个帧也会经历几百次甚至几千次的去噪操作,最终得到清晰且符合描述的帧序列。
17.5 SORA的应用:
- SORA虽然没有公布其具体的训练架构,但根据SORA公开的部分资料中,可以认为SORA大体上是采用了这种技术,通过将Diffusion Model和Transformer结合使用,可以更高效地生成清晰的图像或视频。研究者们通过这种结合,提升了生成模型的性能,并且使得在生成图像的过程中,噪声的去除能够更加高效。
18 VAE、Flow-based model、Diffusion Model 三者的类比
在类比 VAE(变分自编码器)、Flow-based model 和 Diffusion Model 的时候,主要的区别和相似之处在于 编码器(Encoder) 和 解码器(Decoder) 的功能和流程。
18.1 VAE 与 Flow-based Model:
- Encoder 和 Decoder:在 VAE 和 Flow-based model 中,编码器(Encoder)负责将输入(如图像)映射到潜在空间(latent space)中,而解码器(Decoder)则负责从潜在空间生成图像。
- VAE 使用概率模型,编码器将输入数据编码为潜在空间的分布,解码器根据该分布生成图像。
- Flow-based model 通过一系列可逆的变换(transformations)来直接从潜在空间生成图像,避免了概率模型的采样过程。
18.2 Diffusion Model:
- Encoder 和 Decoder:
- Encoder:在 Diffusion Model 中,没有专门的训练编码器来将输入图片变成一个潜在表示。相反,Diffusion Model 会通过人为地将大量噪声添加到原始图片上,从而“破坏”图像的结构,使其逐渐变成无法辨认的纯噪声。这个过程叫做 Forward Process,也就是编码过程。
- Decoder:Decoder 负责从噪声中逐步恢复图像,这一过程被称为 Reverse Process。解码器通过多次去噪(DNOISE),每次逐步去除噪声,最终生成清晰的图像。
18.3 类比总结:
- VAE 和 Flow-based model 都使用 Encoder 和 Decoder,它们通过映射和重建图像来处理数据。
- Diffusion Model 没有传统的编码器,而是通过人为地加入噪声来模拟编码过程(Forward Process),然后通过解码器反复去噪(Reverse Process)来恢复图像。
18.4 Forward Process 与 Reverse Process:
- Forward Process:是将原始图像逐步加上噪声的过程。这类似于 Encoder 在其他模型中的作用——将图像转换为潜在的表示。
- Reverse Process:是通过去噪步骤逐步恢复图像的过程,相当于 Decoder 在其他模型中的作用。
18.5 举个例子
18.5.1 VAE(变分自编码器)生成图片的过程:
VAE 通常不直接与文字描述结合,但如果与文本结合,它通常采用 条件变分自编码器(Conditional VAE, CVAE) 的形式。假设你有一个文字描述:“一只猫站在沙发上”,过程如下:
- Encoder:首先,文字描述(如“猫站在沙发上”)会通过一个文本编码器(如 LSTM 或 Transformer(即训练好的“资讯抽取模型”))转换成一个潜在空间的表示。这个表示是一个向量,表示了文字描述的语义信息。
- Latent space:这个潜在空间的表示是一个分布,包含了与文字描述相关的特征信息以及一些文本没有提到但生成特定图片所需要的补充信息。
- Decoder:然后,潜在空间的向量被传递给解码器(Decoder),解码器根据该潜在向量生成图像。解码器的输出是一个具体的图像,如一只猫站在沙发上的图片。
流程总结:
- 文字描述被编码成潜在表示。
- 潜在表示通过 Decoder 转换为图像。
18.5.2 Flow-based Model 生成图片的过程:
Flow-based model,如 Glow,是通过可逆的变换将输入映射到潜在空间。对于文字描述生成图像,通常采用 条件 Flow-based model(如 Conditional Glow)。以“狗在公园里跑”的描述为例,过程如下:
- Encoder:首先,文字描述通过文本编码器(如 LSTM 或 Transformer(即训练好的“Decoder”的反函数))被转化为一个潜在向量,表示该文本描述的含义。
- Latent space:潜在空间的向量代表了文字描述的特征,通常会通过 Flow-based model 直接映射到一个潜在空间中的高维向量。
- Decoder:通过可逆的流动变换,Decoder 会将潜在空间中的向量反向变换成图像。这些变换是可逆的,保证了从潜在空间映射回图片的过程不会丢失信息。
流程总结:
- 文字描述转化为潜在表示。
- 潜在表示通过 Flow-based model 生成图像。
18.5.3 Diffusion Model 生成图片的过程:
在 Diffusion Model(如 DALL·E 2 或 Stable Diffusion)中,生成图像的过程依赖于 反向去噪过程。以“日落时的海滩”为文字描述为例,过程如下:
-
加噪声(Forward Process):首先,模型会将一张空白图像(或随机噪声图像)初始化。在每次迭代中,这个图像会通过添加噪声的方式逐步模糊,直到它变成完全的噪声。这个过程通常由一个 Encoder 控制,且不直接使用传统意义上的编码器。
-
文字描述嵌入:文字描述(如“日落时的海滩”)会通过文本编码器(如 Transformer)转化为一个向量表示,这个表示包含了描述中关键的语义信息。
-
去噪(Reverse Process):然后,模型会使用 Decoder(通常是一个去噪模块),这个模块会反复去噪,逐步消除噪声。在每次去噪时,文字描述的向量会指导去噪过程,使得去噪后的图像更加符合文字描述。
-
反复去噪:这个去噪过程通常会迭代数百次。在每次迭代中,Decoder 会用文字描述信息帮助去噪,直到最终输出清晰的图像。
通过这种类比,我们可以理解 Diffusion Model 和传统的 VAE、Flow-based model 在结构上的相似与差异。
19 GAN
在理解 生成对抗网络(GAN)时,我们可以将其与其他生成模型(如 VAE 和 Flow-based 模型)进行比较,但 GAN 的工作方式具有一些独特之处,尤其是在如何生成图像的过程中。
19.1 GAN 生成过程的核心构思:
-
Discriminator(判别器):这是一个二分类模型,目标是区分“好”图片和“坏”图片。给定一张图片和一个文字描述,判别器会判断这个图片是否符合文字描述。为了训练判别器,除了给它一组正面的例子(即图片和文字匹配的例子),还需要给它一些负面的例子(即随机打乱的图片和文字配对)。判别器通过学习,能够逐步理解哪些图片和文字描述匹配得更好。
-
Generator(生成器):生成器的目标是生成一张图片,使得判别器认为它符合输入的文字描述。在训练的过程中,生成器并不直接与真实的图片进行比较,而是通过与判别器的对抗学习来调整自己的参数。换句话说,生成器生成图片后,输入给判别器,判别器评估其质量,生成器根据判别器的反馈调整自己的生成策略,以期能“骗过”判别器,让其判断图片为“好”。
19.2 GAN的训练过程:
- 生成器与判别器的交替训练:
- 初始阶段,生成器会生成一些质量较差的图片。判别器会通过对比图片和文字描述,给出一个评价。
- 生成器的目标是通过调整参数,使得判别器对生成的图片给出更高的评分,即认为这张图片与文字描述更匹配。
- 判别器则不断地提高自己识别“好”图片和“坏”图片的能力,通过不断训练,以便能够更精确地区分真实图片与生成图片。
- 这个过程是一个对抗性的训练,即判别器和生成器不断“对抗”,生成器在努力提升自己的表现,判别器则不断提升自己的判断标准。
19.3 GAN与其他模型的对比:
- 与VAE的不同:VAE直接通过一个编码器和解码器将数据映射到潜在空间,再从潜在空间中生成数据,且生成过程是连续的。GAN没有编码器,生成过程通过生成器与判别器的对抗学习来进行,且生成的结果通过判别器的评价来优化。
- 与Flow-based模型的不同:Flow-based模型通过可逆网络将噪声空间映射到数据空间,生成过程是通过多次可逆变换进行的。GAN则是通过判别器反馈生成器生成图像,并不断优化生成器的参数。
- 与Diffusion模型的不同:Diffusion模型逐步去噪生成图像,经过多个步骤从噪声生成清晰图像。GAN则通过对抗训练来优化生成器,使生成的图像越来越真实,且生成器和判别器之间没有逐步去噪的过程。
19.4 GAN的工作原理举例:
假设我们要生成“奔跑的狗”的图像。流程如下:
- 文本描述:“奔跑的狗”通过文本编码器转换为潜在表示(向量)。
- 生成器:生成器根据这个潜在表示生成图像,但初始时生成的图像质量可能较差(比如画出一只三脚的猫,背景为黄色)。
- 判别器:判别器接收这张图像和文本描述,评估它们的匹配度。如果生成的图像质量差,判别器给出较低的评分。
- 反馈与优化:生成器根据判别器的评分调整自己的参数,使得生成的图像逐渐提高质量,直到判别器给出更高的评分。
19.5 GAN 的生成器(Generator)是否需要输入杂讯
实际上,GAN 的判别器只负责评估生成器的输出质量,它并不直接影响生成器输入的结构。如果生成器的目标仅仅是让判别器认为生成的图像足够真实(与输入的文字描述匹配),那么理论上,生成器可以只依赖于输入的文字描述,而不需要随机噪声。
虽然在大多数 GAN 文献中,生成器通常仍然接受噪声作为输入,但在一些实际应用中,尤其是图文生成任务中,生成器和判别器之间的对抗训练可能使得生成器无需杂讯也能生成合适的图像。这样做的原因是,判别器的存在已经在训练过程中提供了足够的反馈,使得生成器能够从文字描述中直接学习如何生成符合要求的图像。
19.6 GAN的“外挂”性质:
- GAN不是直接生成图像的“标准模型”,而是作为一个外挂,可以与其他模型结合,如 VAE、Flow-based 模型、Diffusion 模型等。
- 例如,在 Diffusion 模型中,加入一个 GAN 的框架,通过判别器的对抗训练,可以帮助提升生成图像的质量。此时,GAN作为一个“外挂”帮助优化生成过程。
19.7 与人类反馈强化学习(RLHF)对比:
- 在 RLHF 中,reward model 用来评价生成模型的输出,而 GAN 中的判别器充当了类似的角色。RLHF的reward model通常依赖于人工标注的好坏评价,而 GAN的判别器则通过对抗学习,无需人工标注,直接依据模型生成的图像质量来判断。
- 两者都可以不断优化模型的生成能力,但GAN的生成器是通过与判别器的“博弈”来不断提升生成效果。
20 李老师关于这些经典模型的深入讲解
可以参见李老师的Youtube频道,以下是李老师讲述的经典图像生成模型的过程:
-
VAE(变分自编码器):2016年左右开始讲解,是最早的图像生成模型之一,主要通过编码器-解码器架构进行学习和生成。最早在机器学习课程中介绍,侧重于概率模型的学习。
-
GAN(生成对抗网络):2018年,机器学习及生成与结构化课程花了13个小时讲解GAN,作为生成模型的代表,GAN通过生成器和判别器的博弈学习生成真实图像。
-
Flow-based Models(基于流的模型):2019年机器学习课程中讲解了这类模型,基于流的模型通过正向和反向过程变换数据空间,用于生成任务。
-
Diffusion Models(扩散模型):2023年,扩散模型成为新的热门图像生成方法,通过逐步添加噪声并反向生成图像。该模型背后有深厚的数学原理,需要较长时间来讲解。
资源:这些模型的详细介绍和背后的数学原理,可以在你提到的YouTube频道上找到,课程和视频有助于更深入地理解每种模型的起源、发展和应用。
数学原理:对于更深入的理解,特别是扩散模型背后的数学原理,需要进一步消化。如果刚才提到的内容没有讲得非常清楚,可以通过YouTube频道获取更多细节。
21 人类与生成图像模型的实时互动
21.1 实时互动与生成图像模型的结合
目前,人工智能已经能够生成图像,但是否能让人类与这些深层图像产生更即时的互动呢?例如,我们可以控制一个角色在东京街头行走,并通过按上下左右来决定角色走哪条路。这样,不仅能通过影像生成技术操控游戏角色的行为,还能创造一个类似开放世界的3D游戏。虽然这种互动看起来很吸引人,但实际操作中,很多图像生成技术仍然依赖于较简单的2D横向卷轴游戏模型。
21.2 生成交互式游戏环境(Genie)模型
一篇名为“Generated Interactive Environment”(Genie)的论文试图做的就是这种交互。JI的模型读取游戏画面作为输入,并接受玩家输入的动作(如按下的按钮)作为控制信号,从而生成新的游戏画面。通过这种方式,玩家可以实时操控角色在游戏世界中行动,每次按下不同的按钮,就能看到不同的游戏场景和结果。
21.3 动作提取与图像生成模型的协作
在这个过程中,挑战之一是如何从大量的游戏画面中,推断出玩家在某一时刻按下的具体按钮,因为这些按钮的按压信息并不是直接收集到的。为了解决这个问题,Genie模型采用了类似自编码器(autoencoder)的思想,通过分析连续游戏画面之间的差异,反推玩家的操作。这种方法通过训练一个动作提取模型来猜测玩家在按下哪些按钮。通过将这些推测出来的“潜在动作”与游戏画面输入到图像生成模型中,就能够实时生成下一个游戏画面。
21.4 潜在动作(latent actions)
由于动作提取模型只能“猜测”玩家的动作,而不是直接收集到按钮信息,所以这些动作被称为潜在动作(latent actions)。这些潜在动作在训练时,与游戏画面一起输入到图像生成模型中,帮助它预测并生成下一个画面。实验表明,通过这种方式,模型能够准确地生成基于玩家输入的下一帧画面。
21.5 应用场景
有了这种实时生成与互动的能力,Genie模型不仅可以用来创建简单的游戏场景,还能为更复杂的应用场景提供支持。比如:
- 虚拟驾驶训练:通过类似的技术,未来的驾训班可能不再需要真实的车辆和训练场地,学生只需在计算机前进行模拟驾驶练习。系统会根据驾驶员的操作实时调整虚拟场景,使其能像现实世界一样无缝生成新的道路场景。
- 开放世界模拟:借助图像生成模型,玩家可以在一个不断扩展的开放世界中自由探索,实时生成新的场景和事件,带来更沉浸式的体验。