Skip to content

媒体生成

Stable Diffusion 原理

Stable Diffusion(SD)是当前最流行的开源图像生成模型。它的核心思想不是直接在像素空间生成图像,而是在低维的潜空间(Latent Space)中进行扩散和去噪,大幅降低了计算开销。

SD 的训练过程分三个阶段。第一阶段,VAE(Variational Autoencoder)将高分辨率图像压缩到低维潜空间。训练好的 VAE 编码器将 512×512×3 的图像压缩为 64×64×4 的潜表示,压缩比 48 倍,这意味后续的扩散过程只需要在极小的空间上操作。解码器负责将潜表示还原为像素图像。第二阶段,U-Net 在潜空间上学习去噪:从一张纯噪声图出发,模型逐步预测并去除噪声,最终还原出清晰的潜表示。U-Net 是带跳跃连接的编码器-解码器结构,引入了注意力机制(Attention),能够理解图像中的全局依赖关系。第三阶段,CLIP 文本编码器将文本提示词转换为语义向量,注入 U-Net 的交叉注意力层,使模型能够根据文字描述控制生成内容。

生成过程是训练的逆过程:从随机噪声开始,U-Net 在每一步预测噪声并去除,经过几十步迭代后得到干净的潜表示,最后 VAE 解码器将其还原为图像。去噪步数(Steps)越多图像质量越高,但生成时间也越长,通常 20-50 步是质量与速度的平衡点。

采样器

采样器(Sampler)决定了去噪过程中每一步的具体算法。DDIM(Denoising Diffusion Implicit Models)是最基础的采样器,速度较快但细节表现一般。Euler 和 Euler a 是最常用的采样器,Euler 是确定性的(相同参数生成相同结果),Euler a 带有随机性(每次生成略有不同),两者在速度和质量上都比较均衡。DPM++ 2M 是近年推出的高质量采样器,在 20 步左右就能达到很好的效果,是目前 SDXL 的推荐选择。LCM(Latent Consistency Models)是加速技术,能将步数压缩到 4-8 步而保持可接受的质量,适合对生成速度要求高的场景。

采样器选择的经验:追求质量用 DPM++ 2M Karras(步数 25-35),追求速度用 LCM 或 Euler a(步数 4-10),追求确定性用 Euler(相同种子生成相同结果,适合测试和调试)。

ControlNet

ControlNet 是 SD 生态中最重要的控制技术,它允许用户通过额外的条件图(如边缘图、姿态图、深度图)精确控制生成图像的结构和构图。训练时,ControlNet 的编码器分支锁定原始 SD 的参数,只训练一个零卷积(Zero Convolution)连接的新编码器,学习条件图到潜空间的映射。推理时,ControlNet 的输出与 SD 的 U-Net 输出相加,在保持原图语义的同时遵循控制信号。

常见的 ControlNet 模型包括 Canny Edge(边缘检测,控制轮廓)、OpenPose(人体姿态,控制人物动作)、Depth(深度图,控制空间结构)、Segmentation(语义分割,控制区域归属)。多 ControlNet 叠加使用(如同时使用 Canny + OpenPose)可以实现更精细的控制,但需要合理分配各 ControlNet 的权重。

ComfyUI

ComfyUI 是基于节点式工作流的 AI 图像生成工具。与 WebUI 的线性表单界面不同,ComfyUI 将生成流程拆分为独立的节点(加载模型、文本编码、采样、解码),用户通过连线组合节点来构建 pipeline。这种设计将生成过程完全可视化,每个环节都可以独立替换和调参,也方便复用和分享复杂的工作流。

ComfyUI 的优势在于灵活性和性能。它的节点系统支持自定义扩展,社区贡献了数百个插件(如 AnimateDiff 动画生成、IP-Adapter 风格迁移、InstantID 人脸定制)。ComfyUI 的显存管理比 WebUI 更高效,通过模型自动卸载和按需加载,在 6-8GB 显存的显卡上也能运行 SDXL,这使得它成为硬件受限用户的首选。工作流可以导出为 JSON 文件分享,其他人导入后直接运行,降低了复杂 pipeline 的使用门槛。