模型与参数

UNet:撑起 Stable Diffusion 时代的主干网络

又称 unet, u-net, unet architecture, 去噪主干, 卷积主干

UNet 是扩散模型里负责「这一步该去掉多少噪声」的网络:一条卷积下采样路径、一条上采样路径,同分辨率之间用跳连接对接。它是 2022 到 2024 年图像生成的标准主干,LoRA 和 ControlNet 之所以长成今天这个样子,也是被它的结构决定的。

这个网络实际在算什么

每一个去噪步骤只问一件事:给定这张带噪的潜空间图和当前时间步,里面有多少噪声。UNet 就是回答这个问题的网络。它把带噪的潜空间图一路向下推过若干卷积块,每一级空间尺寸减半、通道数变宽,穿过瓶颈层,再一路上采样回原来的尺寸。上行的每一级都会把下行同分辨率的特征图接回来,这条跳连接就是它形状和名字的来源。

下行路径在建立抽象,同时丢掉空间精度;跳连接负责把这份精度还回去。没有跳连接,输出会是一张看着合理但和输入毫无关系的图。同一套设计之所以也统治了分割、超分、深度估计,原因就在这里。

文字条件是通过塞在各块内部的交叉注意力层进来的,而自注意力只出现在较低分辨率的层级,因为注意力开销随 token 数平方增长,2022 年在全分辨率上跑注意力是算不起的。

这个结构的长处和代价

卷积是局部的,而且平移等变。这个偏置对质感是天赐的:皮肤、锈迹、织物纹理、树叶、颗粒都很自然。但它对任何需要一次性看清整张画布的任务都是负担。

那个时代的经典失败几乎都出自这一条。数不清数量,因为没有一层在全分辨率上同时看见五个物体。长提示词丢从句,因为文字只在少数几个注入点接触画面。写不对字,因为字母本质是全局关系问题,被伪装成了质感问题。「红杯子在笔记本左边」这类空间指令也只能被解成一种大致氛围。

分辨率是另一个约束。主干在什么尺寸上训练就在什么尺寸上会构图,离得太远它就开始复制:两个头、两条地平线、长画幅底部又出现一遍主体。SDXL 用尺寸和裁切偏移做条件缓解了这件事,但没有消除。

为什么整个生态都长成主干的形状

真正有实际影响的一点是:大家依赖的工具链,定义权在主干内部结构手里。

  • LoRA 把低秩更新注入指定块的注意力投影矩阵,脱离它拟合时的层名,文件就没有意义。
  • ControlNet 复制编码器那一半,喂进深度图、骨架或者边缘图,再把输出加回跳连接。这个注入点本身就是这个架构的特性。
  • 局部重绘版本改了输入通道数,好让掩膜能和潜空间图拼在一起。
  • AnimateDiff 和第一代视频模型是在原有空间块之间插入时间注意力层,这就是早期片段只有一两秒的原因:时间是焊上去的,不是设计进去的。

Transformer 赢了之后怎么选模型

新一代家族把主干换成了扩散 Transformer:统一的块、对全部潜空间 token 做完整注意力、文字和画面在同一个注意力操作里处理。这个改动换来了更好的提示词遵循、能认的字、变分辨率和长得多的视频,而且它随参数和数据规模增长的方式是旧结构给不出的。

比较务实的建议是别把这件事当质量排序,当工具链问题看。如果你的活依赖某个特定微调、一叠风格适配器、或者已经存在的精确结构控制,卷积主干家族会更快更省地把事情做完。如果你需要长提示词被完整照做、画面里出现能读的文字、或者一个不常规的画幅,Transformer 架构的模型一趟就能做到旧架构要靠工作流拼出来的效果。

这个效果的提示词

一条能稳定出效果的起点。主体和场景可以换,技术性的那几句留着。

Two people shaking hands in a warehouse doorway, wide shot, hard afternoon sunlight, single subject per side of frame

试一下:UNet

打开生成器,参数已经预填好。

常见问题

它和扩散模型是一回事吗?
不是。扩散是训练和采样的流程,主干是这个流程反复调用去估噪声的那个网络。把主干换成 Transformer,得到的仍然是扩散模型,这也正是这两年发生的事。
为什么老模型出长条构图会长出两个头?
卷积主干是在某个固定训练分辨率上学会构图的。画布比它熟悉的尺寸高很多或宽很多时,它倾向于把主体重复一遍来填满多出来的空间,而不是把场景延伸出去。解法是按训练比例出图再外扩,或者换成原生支持变分辨率的模型。
LoRA 和 ControlNet 能跨主干用吗?
不能,这一点最容易踩。LoRA 是针对特定层拟合出来的一小组权重差值,ControlNet 是编码器那一半的可训练副本,两者都被具体结构绑死。SDXL 的 LoRA 挂在 Transformer 架构的模型上完全没有作用。适配器永远是按家族分的。
提示词遵循度上,卷积主干和 Transformer 差在哪?
差得很明显。卷积主干里文字只在少数几个分辨率层通过交叉注意力进来,大部分层只看局部区块;新一代的联合注意力让文字 token 和画面 token 全程互相看见,这就是招牌能认字、长提示词不再大段丢失的原因。
现在还有必要用它吗?
作为前沿架构已经过时,作为在用的基础设施远没有。风格适配器、局部重绘工作流、结构控制这些最深的生态仍然长在它上面,而且在小分辨率上又快又便宜。按生态和成本选,别按架构新旧选。

相关术语