欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 层归一化详解及在 Stable Diffusion 中的应用分析

层归一化详解及在 Stable Diffusion 中的应用分析

2025/4/16 8:16:32 来源:https://blog.csdn.net/qq_43069203/article/details/147055724  浏览:    关键词:层归一化详解及在 Stable Diffusion 中的应用分析

在深度学习中,归一化(Normalization)技术被广泛用于提升模型训练的稳定性和收敛速度。本文将详细介绍几种常见的归一化方式,并重点分析它们在 Stable Diffusion 模型中的实际使用场景。


一、常见的归一化技术

名称归一化维度应用场景简要说明
LayerNorm对每个样本的所有特征进行归一化NLP、Transformer与 batch 无关,适合变长序列建模
BatchNorm对 batch 内同一通道归一化CNN、分类任务对 batch size 敏感,推理需处理均值/方差
InstanceNorm对每个样本的每个通道归一化图像生成、风格迁移类似 BatchNorm,但作用于单样本
GroupNorm将通道分组后归一化图像生成、小 batch 任务不依赖 batch size,稳定性强
RMSNorm仅使用标准差归一化大语言模型(LLM)简化版 LayerNorm,计算高效
PixelNorm对每个像素位置的通道归一化GAN 中使用较多提升生成图像稳定性

二、Stable Diffusion 中的归一化方式分析

Stable Diffusion 是一种基于 U-Net + Transformer + CLIP 的扩散模型,不同模块中使用了不同的归一化策略:


1. GroupNorm —— Stable Diffusion 中最常见的归一化方式

  • 应用位置:U-Net 中的 DownBlock、UpBlock、ResNetBlock 等
  • 示例代码
 self.norm = nn.GroupNorm(num_groups=32, num_channels=in_channels)

原因
• BatchNorm 对 batch size 非常敏感,但 SD 的训练往往使用 较小的 batch size(如 GPU 限制)。
• GroupNorm 在小 batch 下也能保持稳定性。
效果
• 保持特征分布稳定,促进训练收敛。
• 比 InstanceNorm 表现更好,尤其在高分辨率任务中。

2. LayerNorm —— 用于 Transformer 和文本编码器(CLIP)

  • 应用位置:CLIPTextTransformer(文本编码器)、交叉注意力模块(Cross-Attention)
  • 示例代码
 self.layer_norm = nn.LayerNorm(hidden_size)

• 特点:
• 不依赖 batch,适合处理变长文本输入
• Transformer 架构中标准配置

3. InstanceNorm —— 在 Stable Diffusion 中很少使用

• 说明:
• 主要出现在早期的图像生成模型(如风格迁移)
• 在 SD 的主干结构中几乎未使用

4. BatchNorm —— 不适合 Stable Diffusion

• 原因:
• 对 batch size 敏感
• 推理时存在均值/方差不一致的问题
• 在 SD 中已被 GroupNorm 替代

三、各模块归一化使用对比表

模块名称使用归一化类型理由与说明
U-Net 主干✅ GroupNorm稳定性高,不依赖 batch size,适合高分辨率图像训练
CLIP 文本编码器✅ LayerNorm变长文本输入友好,标准 Transformer 配置
VAE 模块✅ GroupNorm / ⚠️ LayerNorm编码器多为 GroupNorm,部分结构中可能引入 LayerNorm
Cross-Attention 模块✅ LayerNorm常用于融合图像-文本信息前的标准化处理
InstanceNorm❌ 极少使用早期图像风格迁移常用,SD 中效果一般
BatchNorm❌ 基本不用对小 batch size 不友好,推理阶段稳定性差


四、Stable Diffusion 源码结构中的归一化分析

以 HuggingFace diffusers 实现为例,Stable Diffusion 的核心网络模块及其归一化使用情况如下:
├── UNet2DConditionModel (图像生成核心网络)
│ ├── DownBlock2D / UpBlock2D
│ │ └── ResnetBlock2D --> 使用 GroupNorm
│ ├── CrossAttentionBlock --> 使用 LayerNorm
├── AutoencoderKL (VAE 编码器/解码器)
│ └── 使用 GroupNorm(部分 block 中有 LayerNorm)
├── CLIPTextModel (文本编码器)
│ └── Transformer --> 使用 LayerNorm

五、网络结构图(可视化归一化位置)

接下来是 Stable Diffusion U-Net 的简化结构图,我们用 ✅ 标出使用 GroupNorm 的地方,用 🧠 标出使用 LayerNorm 的地方:

          ┌────────────┐│ Text Input │└─────┬──────┘│🧠 CLIPTextModel (LayerNorm)│Cross-Attention Block🧠 LayerNorm + Attention│┌──── Encoder (DownBlocks) ────┐│   ResNetBlock2D + GroupNorm ││   ResNetBlock2D + GroupNorm │└────────────┬───────────────┘│MiddleBlock: ResNet + Attn✅ GroupNorm + 🧠 LayerNorm│┌──── Decoder (UpBlocks) ─────┐│   ResNetBlock2D + GroupNorm ││   ResNetBlock2D + GroupNorm │└────────────┬───────────────┘│Final conv layer

总结

  • Stable Diffusion 主要采用 GroupNormLayerNorm,分别用于图像(U-Net、VAE)和文本(CLIP)处理模块;
  • 避免使用 BatchNormInstanceNorm,主要因为对 batch size 敏感或表达能力受限;
  • 归一化策略是 SD 成功的稳定性关键之一,合理选择不同模块的归一化方式有助于模型更高效、更稳定地训练和推理;
  • 如果你在构建自己的扩散模型或进行微调(如 LoRA、ControlNet),建议保留原有归一化配置,避免误用 BN 或 IN 导致生成质量下降。

欢迎关注我持续更新关于 Stable Diffusion、扩散模型、图像生成的系列干货文章!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词