在前面的学习中,我们把 SD UNet 网络当成黑盒,不太影响对图片生成大致原理的理解,但在继续学 SD 的过程中,发现 ControlNet、T2I-Adapter、IPAdapter 等这些技术,都是在原 SD 网络模型上以各种方式对网络做修改叠加,要理解这些技术,还是得先了解下 SD UNet 网络结构的一些细节,不然看得很费劲。
SD 模型构成
从之前的学习我们知道,Stable Diffusion 模型里包含了三个组件:CLIP、VAE、UNet,这三个组件的参数和大小分布(来源):
组件 | 参数个数 | 文件大小 | 占比 |
---|---|---|---|
CLIP | 123,060,480 | 492 MB | 12% |
VAE | 83,653,863 | 335 MB | 8% |
UNet | 859,520,964 | 3.44 GB | 80% |
Total | 1,066,235,307 | 4.27 GB | 100% |
整个生图的核心网络就是 UNet。UNet 最初是用于医学图像分割任务而提出来的,但它的特性展现了在图像其他领域的应用潜力,后续经过扩散模型的改进,很好应用在了图像生成上,所以 Stable Diffusion 的 UNet 实际上在原 UNet 网络架构上做了一些改造。
基础 UNet 网络
我们先来看看原 UNet 网络架构: