# 跨模态生成 (Cross-Modal Generation) *跨模态生成(cross-modal generation)是指以某一模态的输入为条件,生成另一模态的输出——从文生图、图生文、文生音频,乃至更多。本章涵盖 DALL·E、Stable Diffusion、无分类器引导、ControlNet、图像描述、文生视频(Sora)以及文生音频生成。* - 在本章的文件 01-03 中,你已经学习了如何表示、对齐和分词不同模态。现在轮到创造性的环节了:从一个模态生成另一个模态。跨模态生成是文生图工具、视频合成系统、音乐创作模型和图像描述背后的引擎。可以将其理解为教会机器成为多媒体艺术家——你用文字描述你想要的内容,机器则负责绘画、动画或作曲。 - 核心思想是**条件生成(conditional generation)**:给定来自模态 $A$(例如文本)的输入,生成模态 $B$(例如图像)的输出。形式上,我们学习模型 $p_\theta(y \mid x)$,其中 $x$ 是条件信号,$y$ 是生成的输出。挑战在于这个条件分布极其复杂且维度极高——一张 512x512 的图像存在于 $\mathbb{R}^{786432}$ 中,而对于同一个文本提示,可能有无数张合理的图像。 ![跨模态生成概览:文本、图像、音频和视频模态之间以方向箭头连接,展示文生图、图生文、文生音频和文生视频等生成路径](../images/cross_modal_generation_overview.svg) ## 文生图生成 (Text-to-Image Generation) - 想象你向法庭素描师描述一个场景。素描师必须理解你的话,回忆物体长什么样,在空间上排布它们,最后画出最终的图画。文生图模型正是做这件事,但它们必须从数据中学习所有这些技能,而不是经过多年的艺术院校训练。 ### DALL·E:自回归图像生成 - **DALL·E**(Ramesh 等人,2021)将图像生成视为一个序列预测问题——这正是语言模型所采用的范式(见第 07 章)。其关键洞察是:如果你能将图像表示为离散 token(回顾文件 03 中的 VQ-VAE),那么生成图像就只是逐个生成 token 序列的过程。 - 其流程分为两个阶段。首先,一个**离散 VAE(dVAE)**将 256x256 的图像压缩成 32x32 的离散 token 网格,码本大小为 8192,将图像简化为 1024 个 token 的序列。其次,一个**Transformer 解码器**被训练来建模 256 个文本 token(BPE 编码)与 1024 个图像 token 拼接后的联合分布,总计 1280 个 token: $$p(x_{\text{text}}, x_{\text{img}}) = \prod_{i=1}^{1280} p(x_i \mid x_1, \ldots, x_{i-1})$$ - 在生成时,输入文本 token,模型自回归地逐个采样图像 token。这种方法优雅之处在于它复用了语言建模的完整机制——注意力、因果掩码、top-k 采样——来完成图像合成。 - 缺点是自回归生成本质上是串行的:逐个生成 1024 个 token 速度很慢,而且序列早期的任何错误都会被放大。DALL·E 通过生成大量候选图像并用 CLIP(来自文件 01)进行重排序来缓解这一问题,以找到与文本提示最匹配的结果。 ![DALL·E 流程:文本 token 和图像 token 拼接成单一序列,由 Transformer 解码器处理,该解码器以文本 token 为条件自回归地预测图像 token](../images/dalle_autoregressive_pipeline.svg) ### Stable Diffusion:带文本条件的隐空间扩散 - **Stable Diffusion**(Rombach 等人,2022)采用了一种根本不同的方法。它不是逐个预测 token,而是从纯噪声开始,在文本提示的引导下逐步将噪声去噪成图像。回顾第 8 章中的扩散模型——Stable Diffusion 在压缩后的隐空间(latent space)而非像素空间中运行,因此效率大幅提升。 - 其架构由三个组件协同工作。**VAE 编码器**将图像从像素空间($512 \times 512 \times 3$)压缩为隐空间表示($64 \times 64 \times 4$),将维度降低了 48 倍。**文本编码器**(通常为 CLIP 或 OpenCLIP)将文本提示转换为嵌入向量序列。**U-Net 去噪器**接收含噪隐变量、时间步和文本嵌入,并预测每一步需要减去的噪声。文本条件通过**交叉注意力(cross-attention)**层进入 U-Net: $$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V$$ - 其中 $Q$ 来自含噪图像特征,$K$ 和 $V$ 来自文本嵌入。这使得模型能够在每个空间位置上关注相关的词语——当去噪"红球"应该出现的区域时,模型会关注"红"和"球"这两个 token。 - 在推理时,你在隐空间中采样 $z_T \sim \mathcal{N}(0, I)$,利用 U-Net 迭代去噪 $T$ 步(通常使用 DDIM 调度为 20-50 步),然后用 VAE 解码器将干净的隐变量 $z_0$ 解码回像素空间。整个前向过程在消费级 GPU 上仅需数秒即可生成一张 512x512 的图像。 ![Stable Diffusion 架构:文本提示由 CLIP 编码,隐空间中的随机噪声由带有交叉注意力机制的 U-Net 迭代去噪,文本嵌入作为条件,最后由 VAE 解码生成最终图像](../images/stable_diffusion_architecture.svg) ### 无分类器引导的实践应用 - **无分类器引导(Classifier-Free Guidance,CFG)**是让文生图模型能够生成与提示真正匹配的图像的关键要素。回顾第 8 章,CFG 同时训练条件模型和无条件模型,然后在采样时放大条件信号: $$\hat{\epsilon} = \epsilon_\theta(x_t, \varnothing) + s \cdot (\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing))$$ - 其中 $s$ 是引导尺度。可以将 $(\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing))$ 理解为"朝向提示的方向"——它捕捉了有条件预测与无条件预测之间的差异。乘以 $s > 1$ 会放大这个方向,将图像推近文本描述,但代价是多样性降低。 - 在实践中,Stable Diffusion 的常用默认值为 $s = 7.5$。当 $s = 1.0$ 时得到模型的原始输出(多样但仅松散匹配提示)。当 $s \geq 20$ 时图像变得过饱和且重复,但与文本高度一致。最优 $s$ 值取决于应用场景:创意探索倾向于较低的引导值,而精确遵循提示则需要更高的引导值。 ### Imagen:基于语言理解的级联扩散 - **Imagen**(Saharia 等人,2022)证明了强大的文本编码器比更大的图像模型更重要。Imagen 没有使用 CLIP,而是采用一个冻结的 **T5-XXL** 语言模型(来自第 07 章)作为文本编码器,该模型对语言语义、组合性和空间关系(如"红色球体上的蓝色方块")有着更丰富的理解。 - Imagen 使用了**级联扩散(cascaded diffusion)**方法:基础扩散模型生成 64x64 的图像,第一个超分辨率模型放大到 256x256,第二个超分辨率模型达到 1024x1024。每个阶段都是独立的扩散模型,以文本和(对于上采样器)低分辨率图像为条件。这种级联方式避免了在基础分辨率上建模精细细节,使基础模型能够专注于构图和语义,而上采样器则负责处理纹理和清晰度。 - Imagen 还引入了**动态阈值(dynamic thresholding)**:在每个去噪步骤中,预测的像素值被裁剪到基于百分位数的范围,而不是固定的 $[-1, 1]$ 范围。这可以防止在高引导尺度下出现饱和伪影,这是扩散模型中的常见问题。 ### Parti:大规模自回归 - **Parti**(Pathways Autoregressive Text-to-Image,Yu 等人,2022)以超大尺度复兴了自回归方法。与 DALL·E 类似,它将图像转换为离散 token(使用 ViT-VQGAN),并用 Transformer 顺序生成。但 Parti 使用了 200 亿参数的编码器-解码器 Transformer(基于 Pathways 架构),并证明了自回归模型在充分扩展后可以达到扩散模型的质量。 - Parti 的编码器-解码器架构是与 DALL·E 纯解码器设计的关键区别。文本通过编码器处理;解码器在生成图像 token 时,通过交叉注意力关注编码后的文本。这类似于机器翻译(第 07 章)——你从"文本语言"翻译到"图像语言"。 ### DiT 与基于流匹配的生成 - **扩散 Transformer(DiT)**(Peebles 和 Xie,2023)用纯 Transformer 替换了扩散模型中的 U-Net 主干网络。每个含噪隐空间块被当作一个 token(类似于第 8 章中的 ViT),Transformer 通过自注意力和对文本条件的交叉注意力来处理这些 token。DiT 表明,在扩散任务中,Transformer 的可扩展性比 U-Net 更具可预测性——计算量每翻一倍,FID 分数就会可靠地减半。 - **流匹配(flow matching)**(回顾第 8 章)已成为扩散噪声预测范式之外的一种替代方案。模型不再预测需要减去的噪声 $\epsilon$,而是预测一个速度场 $v_\theta(x_t, t)$,该速度场沿直线路径将样本从噪声传输到数据。**Stable Diffusion 3** 和 **Flux** 采用流匹配和**多模态 DiT(MM-DiT)**架构,其中文本和图像 token 由 Transformer 块通过双向注意力联合处理——两种模态互相关注,而不是文本仅通过交叉注意力作为图像特征的条件。 ![DiT 架构:含噪隐空间块像 ViT 一样被 token 化,由带有自适应层归一化的 Transformer 块处理(用于时间步和类别条件),然后解码回空间隐空间](../images/dit_architecture.svg) ## 文生视频生成 (Text-to-Video Generation) - 文生视频相当于文生图再加上一个严苛的额外约束:**时间连贯性(temporal coherence)**。每一帧必须在内部保持一致(是一张合理的图像),但连续帧之间也必须平滑连接——物体应该自然运动,光照应连续变化,"镜头"应遵循物理上合理的轨迹。可以想象一下绘制一幅风景画和导演一部电影之间的区别。 ### 时间维度的挑战 - 视频引入了图像生成之外的三个挑战。**时间一致性(temporal consistency)**要求物体在各帧之间保持身份不变——第 1 帧中的狗在第 100 帧中应该还是同一条狗。**运动建模(motion modeling)**需要学习物理动态:物体如何运动、重力如何作用、流体如何流动。**计算成本**非常高昂:一段 24 fps、512x512 分辨率的 10 秒视频包含 $10 \times 24 \times 512 \times 512 \times 3 \approx 1.88$ 亿个值,大约是单张图像数据量的 240 倍。 ### Make-A-Video 与延展至视频方法 - **Make-A-Video**(Singer 等人,2022)采用了一种务实的方法:从预训练的文生图模型开始,添加时间层。关键洞察是,你已经拥有了基于数十亿图文对训练的强大文生图模型,你只需要从(未标注的)视频数据中学习运动。 - Make-A-Video 在预训练的空间 U-Net 中插入了**时间注意力(temporal attention)**和**时间卷积(temporal convolution)**层。空间层(在图像上预训练)负责外观,而新的时间层(在视频上训练)负责运动。空间自注意力在每帧内部操作;时间注意力在每个空间位置上跨帧操作。这种分解是高效的,因为时间和空间模式在很大程度上是可分离的。 - 生成流程与 Imagen 的级联方式类似:基础模型生成 64x64 的 16 帧,然后空间和时间超分辨率模型将分辨率升级到最终大小和帧率。帧插值网络用于提高时间平滑性。 ### VideoPoet 与基于 Token 的视频模型 - **VideoPoet**(Kondratyuk 等人,2024)将视频生成统一到语言建模范式之下。所有模态——文本、图像、视频、音频——都被 token 化为离散序列,一个单一的大语言模型(LLM)被训练来跨所有模态自回归地预测 token。这使得零样本能力成为可能:文生视频、图生视频、视频生音频、视频编辑和视频修补都可以从同一个模型中涌现。 - VideoPoet 使用 MAGVIT-v2 编码器(一个来自文件 03 的 3D VQ-VAE)对视频进行 token 化,该编码器联合压缩空间和时间维度。音频使用 SoundStream 进行 token 化。LLM 主干在文本上预训练,然后在多模态 token 序列上微调,学习跨模态的联合分布。 ### Sora 风格的时间扩散 - **Sora**(OpenAI,2024)凭借其生成长时间、连贯、物理合理的视频的能力,将时间扩散带入了主流视野。虽然完整的架构细节尚未公开,但其关键思想是将 DiT 扩展到时空领域:视频帧被分解为**时空块(spacetime patches)**(跨越高度、宽度和时间的三维块),这些块被当作大型 Transformer 的 token 来处理。 - 时空块方法意味着模型将视频作为原生的 3D 信号来处理,而不是一系列 2D 帧。这使得模型能够捕获长程的时间依赖关系——模型可以"提前规划"整个视频时长,而不是逐帧生成。 - Sora 可以通过调整时空块的数量来处理可变的时长、分辨率和宽高比。以数据原生分辨率进行训练(而不是将所有图像裁剪为正方形)可以提高构图和取景质量。 ### Wan:开源视频生成 - **Wan**(Wan 等人,2025)是一个开源视频生成模型系列(1.3B 和 14B 参数),基于 DiT 主干和 3D VAE 时间压缩。Wan 采用**流匹配**而不是传统的 DDPM 风格扩散,学习从噪声到视频隐空间的直线传输路径。3D VAE 在空间和时间上压缩视频(4 倍时间压缩),DiT 以全 3D 注意力处理生成的时空隐空间 token。 - Wan 支持文生视频、图生视频(将静态图像动画化)和视频编辑。14B 模型可以生成长达 5 秒、720p 分辨率的连贯视频,表明当架构和训练方案选择恰当时,开源模型可以接近专有系统的质量。 ![文生视频流程:文本由语言模型编码,时空噪声由关注文本嵌入的时间扩散 Transformer 去噪,由 3D VAE 解码为视频帧](../images/text_to_video_pipeline.svg) ## 文生音频生成 (Text-to-Audio Generation) - 想象一位电影配乐师阅读剧本并为电影配乐。文生音频模型做着类似的事情:给定一段文本描述("伴有大雨和远处雷声的雷暴"),它们生成相应的音频波形。挑战在于弥合文本的离散、符号化本质与声音的连续、时间性本质之间的差距。 ### AudioLM:音频的语言建模 - **AudioLM**(Borsos 等人,2023)通过自回归预测离散音频 token 来生成音频,采用了与 DALL·E 为图像所用的相同语言建模范式。它使用分层 token 结构:**语义 token**(来自自监督模型如 w2v-BERT,回顾第 9 章)捕获高层次内容(说了什么或演奏了什么),而**声学 token**(来自 SoundStream,一种神经音频编解码器)捕获细粒度的声学细节(听起来如何——音色、录音质量)。 - 生成分两个阶段进行。首先,一个 Transformer 在给定可选音频提示的情况下预测语义 token,建立高层次的"内容规划"。其次,另一个 Transformer 以语义 token 为条件预测声学 token,填充声学细节。这种层次结构类似于文生语音流程(第 9 章)——语义 token 扮演音素的角色,声学 token 扮演梅尔频谱图帧的角色。 - AudioLM 可以生成语音接续(给定 3 秒语音,生成接下来的 10 秒)、音乐接续和音效,所有这些都来自一个仅在音频数据上训练的模型(预训练不需要文本标签)。 ### MusicLM:文本条件音乐生成 - **MusicLM**(Agostinelli 等人,2023)将 AudioLM 扩展到文本条件下的音乐生成。它添加了一个文本-音频联合嵌入(来自 **MuLan**,一个在音乐-文本对上训练的类 CLIP 模型)来条件化生成。MuLan 嵌入捕获文本描述的语义含义("带有萨克斯独奏的欢快爵士乐")并指导分层 token 生成。 - MusicLM 以 24 kHz 的频率生成任意时长的音乐,在数分钟长的作品中保持旋律和节奏的连贯性。它还可以用哼唱的旋律(由音高追踪器提取的旋律 token)加上文本描述作为条件,生成完整的编曲,既遵循哼唱的曲调,又符合文本描述的风格。 ### MusicGen:高效单阶段生成 - **MusicGen**(Copet 等人,2023)简化了多阶段方法。MusicGen 不使用独立的语义和声学模型,而是使用一个单一的自回归 Transformer,直接生成来自音频编解码器的多个码本层级。关键创新是**交织码本模式(interleaved codebook pattern)**:MusicGen 并非在进入下一个时间步之前生成该时间步的所有码本层级,而是以某种模式跨码本和时间步交织 token,从而允许对某些码本层级进行并行解码。 - 条件化直接明了:文本由 T5 编码器编码,文本嵌入被前置到音频 token 序列之前(像语言模型中的前缀提示)或通过交叉注意力注入。MusicGen 还支持旋律条件化:参考旋律的色谱图(chromagram,来自第 9 章中讨论的频谱图特征)被编码后与文本条件一起使用。 $$p(a_1, \ldots, a_T) = \prod_{t=1}^{T} \prod_{k=1}^{K} p(a_{t,k} \mid a_{