它在整条流水线的什么位置
在原始分辨率上做去噪是算不起的。一张 1024x1024 的图有一百万像素,五秒 24fps 的视频超过一亿。所以扩散模型根本不在像素上工作:编码器先把图压成一张潜空间网格,空间上通常每边缩小 8 倍,全部去噪步骤都在这张网格上跑,最后由解码器还原回像素。
这个安排带来两个后果。主干(UNet 或者扩散 Transformer)从来没见过全分辨率的画面,所以它无法推理比一个潜空间格子更细的东西;而解码器是最后一个碰到每一个像素的模块,于是它对一类很好辨认的瑕疵负全责,这类瑕疵改提示词是改不掉的。
通道数就是细节预算
空间压缩只是一半。每个潜空间格子还带固定数量的通道,这个数字才是细节的真实上限。
早期 Stable Diffusion 系列每格 4 通道;Flux、SD3、Qwen-Image 以及现在的视频家族普遍是 16 通道。空间压缩率没变,每格信息量翻了四倍,差别恰好出现在你能预料到的地方:招牌上的字、首饰、牙齿、睫毛、刺绣、建筑上的细线。2024 年之后的模型突然不太写错短英文单词,重新设计的编解码器和更大的主干各占一半功劳。
这也解释了为什么「直接出大图」和「出小图再放大」不是同一件事。在 1536px 上生成,小特征在去噪期间就分到了更多格子;事后放大只能往已经定型的像素里编细节。
视频多压了一个时间轴
图像编解码器压两个维度,视频压三个。典型的三维因果编解码器在 8x8 空间压缩之上,再把 4 帧输入折成 1 帧潜空间,五秒片子于是变成一个很小的张量,这是视频生成能算得起的唯一原因。
代价体现在时间细节上。比时间窗口更快的运动被平均而不是被解出来,这就是甩镜、旋转的轮子、手势末端的拖影。头发、树叶、织物纹理上的闪烁是同一件事的另一面:解码器在每一帧潜空间上把高频细节重建得略有差异,眼睛把这点差异读成了抖动。
怎么在自己的出图里认出来
学会分辨很有用,因为它决定你该改提示词还是改方案:
- 大特征清楚、小特征发糊:空间压缩。重新构图或者提高分辨率。
- 20 个字符还能认,60 个字符就乱:同一个原因。字少一点、大一点。
- 天空、影棚背景这类平滑渐变上出现网格或棋盘纹:解码器上采样瑕疵。
- 饱和度偏移,通常是红色和肤色偏暖:重建偏差,在调色里修。
- 高反差硬边上的光圈和振铃:也是重建,深底白字最明显。
- 皮肤和布料一律发蜡:高频信息在压缩里丢了。
这些都不吃反向提示词,因为提示词影响的是主干,而瑕疵发生在主干下游。可行的办法都是结构性的:做细节活就挑 16 通道的模型家族,构图上让重要的东西在画面里足够大,分辨率取模型舒适区的上限,颗粒和微反差留给后期,别指望模型给。