眼前的橘猫由像素显示出来。编码之后,画面变成一组有空间排列、带多个通道的数。生成模型可以在这种紧凑表示上工作,不必每一步都直接处理最终的 RGB 像素。[2]
图里的彩块只是让数值可见。某一层并不专门等于“猫”,某一个数也不天然就是“车轮大小”旋钮。潜变量需要模型共同解释,不能当作一张缩小的照片来阅读。
A PICTURE, IN THREE IDEAS
跟着一只骑车的橘猫,看懂画面背后的三个角色。
今天的主角:一只骑车的橘猫
01 / 潜空间
潜变量(latent)是一份数值表示;这些表示所在的空间,叫潜空间。
高 × 宽 × RGB 通道
高 × 宽 × 潜变量通道
眼前的橘猫由像素显示出来。编码之后,画面变成一组有空间排列、带多个通道的数。生成模型可以在这种紧凑表示上工作,不必每一步都直接处理最终的 RGB 像素。[2]
图里的彩块只是让数值可见。某一层并不专门等于“猫”,某一个数也不天然就是“车轮大小”旋钮。潜变量需要模型共同解释,不能当作一张缩小的照片来阅读。
02 / VAE
VAE(变分自编码器)有两个主要部分:编码器把图像变成潜变量,解码器把潜变量还原为图像。
输入的像素
像素 → 潜变量
图像的内部表示
潜变量 → 像素
目标是近似原图
生成的随机起点
条件参与、多轮更新
仍然是数值表示
潜变量 → 像素
输出最终像素图
重建是把已有图像编码后再解码,结果通常只能近似原图;细小纹理可能在往返中丢失。它不是普通缩放,也不是无损打包。[1][2]
切换到文生图路线会发现:开始时没有原图,模型直接从潜空间噪声生成新的表示,最后使用 VAE 的解码器输出像素。编码器在训练图像处理、图生图等场景里才会用到。
严格说,VAE 编码器通常预测潜变量分布的参数,再从中取得一份潜变量;训练中还会约束这套表示的分布。图上把这些细节缩成了“编码”一步,重点保留它与解码器的分工。[1]
03 / DiT
DiT 是 Diffusion Transformer,一种生成网络架构。它处理潜变量的分块,预测采样更新所需要的量。
Token 是交给 Transformer 处理的一份数值表示。潜变量先分块,再转换为 token;通过注意力机制,不同位置的信息能够相互参考。图里的四块会交换信息,不是各自画好一角,再把四张小照片拼起来。[3]
猫爪与车把、身体与车座之间存在位置关系。这类关系需要生成网络结合条件与学到的规律来处理;使用 DiT 架构本身,并不保证这些位置每次都正确。
生成时还要反复调用网络。点击下方按钮,看清“预测”和“更新”是谁完成的。
最开始是一份噪声
更新后仍是数值
读潜变量、条件与噪声级别
依据预测更新潜变量
更新后的潜变量,再送进 DiT ↶
多轮完成,得到最终潜变量 →
04 / 画面
同一张图可能同时受到多个环节影响。先看职责,再选检查方法。
VAE 的编码与解码会影响重建保真度。用同一张图做一次编码—解码往返,可以观察这一环留下了什么、损失了什么。
生成网络、训练数据、条件和采样都会参与。若内容关系已经错了,单换 VAE 不能保证重新安排好猫爪和车把。
较紧凑的潜表示能减少部分计算负担;压缩方式、通道数和重建能力又影响保真。不能只看“小了多少”来判断画质。
05 / 总结
在哪种表示里工作?
在紧凑的数值表示里。谁把表示变回画面?
解码器;反方向由编码器完成。谁参与生成新的表示?
生成网络预测,采样器据此更新。看到一张 AI 图片,可以沿着这条线回想:中间用潜变量表示,生成网络与采样器不断更新,最后由解码器变成可见像素。三个词描述的是不同环节;弄清这一点,再讨论换哪个组件、怎样改善画面,就有了具体对象。