当你在对话框中输入”一只穿着宇航服的柴犬”,几秒后一张精美的图片就跃然眼前——这就是Stable Diffusion创造的奇迹。但你可能不知道,这个看似简单的过程背后,其实是一场精密的”去噪”艺术。
想象一下,有人把一幅名画反复涂抹成纯粹的随机噪点。Stable Diffusion做的事情正好相反——它学会了如何从这些噪点中还原出清晰的图像。这个学习过程发生在潜空间(latent space),一个比原始图像尺寸小得多的压缩表示空间。这就像是用zip压缩文件,大大降低了计算成本,让普通显卡也能跑起来。
你输入的文字提示并不会直接被模型理解。首先,CLIP或T5这样的文本编码器会把你的描述转换成高维向量。这些向量就像GPS坐标,告诉去噪过程该往哪个方向走。比如”宇航服”会被编码成包含头盔、太空、科技等概念的数学表示。
去噪的主力是U-Net架构,这个对称的神经网络能同时处理图像的局部细节和全局结构。在每一步去噪中,U-Net都会接收当前的噪点图像、文本嵌入和时间步信息,然后预测应该移除多少噪声。有趣的是,模型在训练时看到的都是”标准答案”——它知道添加了多少噪声,所以能学会精确的逆过程。
去噪不是一蹴而就的,通常需要20-50个步骤。调度器(Scheduler)控制着每一步去除多少噪声。DDPM、DDIM或DPM++等不同调度器就像不同的驾驶风格——有的激进,有的平稳,这会直接影响生成速度和质量。
当潜空间的去噪完成后,变分自编码器(VAE)的解码器开始工作,把压缩的潜表示”解压”回完整的像素图像。这个步骤恢复了在压缩过程中丢失的纹理细节,让图片变得生动逼真。
整个过程就像雕塑家的工作:先从随机石块(噪声)开始,根据蓝图(文本提示)逐步凿去多余部分,最后精细打磨出成品。每次点击生成按钮,你都在见证这个精妙的数学舞蹈。
参与讨论
太神奇了,直接生成宇航柴犬!🤩
调度器到底选哪个更快?
普通显卡还能跑?
我之前玩过Stable Diffusion,显存占用真的挺高的。
看着噪声一点点变清晰,感觉像在看科幻特效的制作过程,真是太爽了。
U-Net核心还挺厉害的。
那VAE解码后,细节会不会丢失很多?
其实还有Lora微调功能,能让模型更懂特定风格,真是省了不少手工调参的时间。
我花了整整两天调参,终于让它画出满意的太空柴犬,过程真是又崩又惊喜,感觉自己像在玩魔法。
作者写得太带感,我已经把教程保存下来。
说调度器好说的,实际用起来噪点还会残留,感觉有点夸大。