一句话定义:InstanceNorm 以单个样本的单个通道为单位,用该通道自身在空间维度上的均值和方差进行标准化;不同样本之间、不同通道之间互不影响。
它是怎么算的
一张特征图的形状通常记作 N×C×H×W(批大小、通道数、高、宽)。InstanceNorm 只沿着 H 和 W 两个方向计算统计量,于是每个样本的每个通道都得到一组独立的 μ 和 σ,输出就是 (x−μ)/σ,再视实现决定是否乘上可学习的缩放 γ 和平移 β;很多场景(尤其风格迁移)会直接关掉仿射参数,因为接下来就是要抹掉这些统计信息。
打个比方:把每个颜色通道想成一锅汤。BatchNorm 是把整批图片的红色通道倒进一个大锅统一调咸淡,下多少盐取决于同批其他图片;InstanceNorm 是每张图、每个通道各起一锅,各调各的,跟邻居毫无关系。好处很直接:batch size 设成 1 也能正常训练,而且训练与推理行为完全一致,不像 BatchNorm 那样要维护滑动平均的全局统计量。
和相邻概念的区别
| 方法 | 统计量取自哪些维度 | 依赖 batch? | 典型用途 |
|---|---|---|---|
| BatchNorm | N、H、W(每个通道一组) | 是 | 分类网络,batch 较大的场景 |
| AI 词典:LayerNorm">LayerNorm | C、H、W(每个样本一组) | 否 | Transformer、序列建模 |
| InstanceNorm | H、W(每个样本每个通道一组) | 否 | 风格迁移、图像生成 |
| GroupNorm | 通道分组后的 H、W | 否 | 检测分割等小 batch 任务 |
为什么风格迁移爱用它
减均值、除标准差这一步,等于强行把每个通道的分布拉成固定的形状,而“整张图偏亮还是偏暗、对比度是强是弱、色调偏冷还是偏暖”这类全局统计信息,恰好就藏在这些均值和方差里。图像的“风格”很大程度上正是这种低阶统计量。于是风格迁移的经典做法是:先用 InstanceNorm 把内容图和风格图的这些统计信息都剥掉,只留下结构,再把风格图的 μ 和 σ 注入回内容特征(AdaIN 这类方法就是这个思路)。
代价与现实意义
同一枚硬币的背面是:InstanceNorm 会连同对比度一起抹掉。如果你的任务需要保留绝对亮度、整体对比度或色彩强弱——比如某些图像复原、医学影像、遥感,以及任何要求输出与输入保持同一强度尺度的场景——这一刀可能把有用信号也切走了,此时 GroupNorm 甚至不做归一化反而更稳。另外,它只用一张图的空间位置估统计量,当 H×W 很小(比如高倍下采样后的深层特征)时,估出来的方差噪声大甚至接近 0,需要把 eps 调大,或改用 GroupNorm。要不要用它,先问一句:我希望网络看见“这张图有多亮多重口”,还是只想让它看见“结构长什么样”。
