这个网络实际在算什么
每一个去噪步骤只问一件事:给定这张带噪的潜空间图和当前时间步,里面有多少噪声。UNet 就是回答这个问题的网络。它把带噪的潜空间图一路向下推过若干卷积块,每一级空间尺寸减半、通道数变宽,穿过瓶颈层,再一路上采样回原来的尺寸。上行的每一级都会把下行同分辨率的特征图接回来,这条跳连接就是它形状和名字的来源。
下行路径在建立抽象,同时丢掉空间精度;跳连接负责把这份精度还回去。没有跳连接,输出会是一张看着合理但和输入毫无关系的图。同一套设计之所以也统治了分割、超分、深度估计,原因就在这里。
文字条件是通过塞在各块内部的交叉注意力层进来的,而自注意力只出现在较低分辨率的层级,因为注意力开销随 token 数平方增长,2022 年在全分辨率上跑注意力是算不起的。
这个结构的长处和代价
卷积是局部的,而且平移等变。这个偏置对质感是天赐的:皮肤、锈迹、织物纹理、树叶、颗粒都很自然。但它对任何需要一次性看清整张画布的任务都是负担。
那个时代的经典失败几乎都出自这一条。数不清数量,因为没有一层在全分辨率上同时看见五个物体。长提示词丢从句,因为文字只在少数几个注入点接触画面。写不对字,因为字母本质是全局关系问题,被伪装成了质感问题。「红杯子在笔记本左边」这类空间指令也只能被解成一种大致氛围。
分辨率是另一个约束。主干在什么尺寸上训练就在什么尺寸上会构图,离得太远它就开始复制:两个头、两条地平线、长画幅底部又出现一遍主体。SDXL 用尺寸和裁切偏移做条件缓解了这件事,但没有消除。
为什么整个生态都长成主干的形状
真正有实际影响的一点是:大家依赖的工具链,定义权在主干内部结构手里。
- LoRA 把低秩更新注入指定块的注意力投影矩阵,脱离它拟合时的层名,文件就没有意义。
- ControlNet 复制编码器那一半,喂进深度图、骨架或者边缘图,再把输出加回跳连接。这个注入点本身就是这个架构的特性。
- 局部重绘版本改了输入通道数,好让掩膜能和潜空间图拼在一起。
- AnimateDiff 和第一代视频模型是在原有空间块之间插入时间注意力层,这就是早期片段只有一两秒的原因:时间是焊上去的,不是设计进去的。
Transformer 赢了之后怎么选模型
新一代家族把主干换成了扩散 Transformer:统一的块、对全部潜空间 token 做完整注意力、文字和画面在同一个注意力操作里处理。这个改动换来了更好的提示词遵循、能认的字、变分辨率和长得多的视频,而且它随参数和数据规模增长的方式是旧结构给不出的。
比较务实的建议是别把这件事当质量排序,当工具链问题看。如果你的活依赖某个特定微调、一叠风格适配器、或者已经存在的精确结构控制,卷积主干家族会更快更省地把事情做完。如果你需要长提示词被完整照做、画面里出现能读的文字、或者一个不常规的画幅,Transformer 架构的模型一趟就能做到旧架构要靠工作流拼出来的效果。