![](https://i-blog.csdnimg.cn/blog_migrate/3ef9c5a6f6501fb5635b74db018c3f80.png)
假如现有6张图片x1,x2,x3,x4,x5,x6,每张图片在CNN的某一卷积层有6个通道,也就是6个feature map。
上图中,从C方向看过去是指一个个通道,从N看过去是一张张图片。每6个竖着排列的小正方体组成的长方体代表一张图片的一个feature map。蓝色的方块是一起进行Normalization的部分。
Batch Normalization
BN作用于一个batch
![](https://i-blog.csdnimg.cn/blog_migrate/5c0a43795eb70601de46aac199e7ac40.png)
适用范围:
BN适用于判别模型中,比如图片分类模型。因为BN注重对每个batch进行归一化,从而保证数据分布的一致性,而判别模型的结果正是取决于数据整体分布。但是BN对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布;
计算:
沿着通道计算每个batch的均值u
沿着通道计算每个batch的方差σ^2
对x做归一化,x’=(x-u)/开根号(σ^2+ε)
加入缩放和平移变量γ和β ,归一化后的值,y=γx’+β
![](https://i-blog.csdnimg.cn/blog_migrate/63600621004772c1fc2167a946b6bbf5.png)
Layer Normalization
LN是指对同一张图片的同一层的所有通道进行Normalization操作。
![](https://i-blog.csdnimg.cn/blog_migrate/2386f7b29b62eeb08bacdd63165511e9.png)
Instance Normalization
IN是作用于单张图片。对一个批次中单个图片进行归一化,而不是像batch normaliztion一样对整个批次的所有图片进行归一化,提取出平均值等。
![](https://i-blog.csdnimg.cn/blog_migrate/609dbfd71883db126f9f8c2d7e214fe3.png)
适用范围:
IN适用于生成模型中,比如图片风格迁移。因为图片生成的结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,在风格迁移中使用Instance Normalization不仅可以加速模型收敛,并且可以保持每个图像实例之间的独立。
计算:
沿着通道计算每张图的均值u
沿着通道计算每张图的方差σ^2
对x做归一化,x’=(x-u)/开根号(σ^2+ε)
加入缩放和平移变量γ和β ,归一化后的值,y=γx’+β
![](https://i-blog.csdnimg.cn/blog_migrate/0cfe50bf27f9919410bbc8246e8e3e2a.png)
论文:https://arxiv.org/abs/1607.08022
Github:https://github.com/DmitryUlyanov/texture_nets
Group Normalization
![](https://i-blog.csdnimg.cn/blog_migrate/c0eed456444309627a44e14dafb3cce8.png)
GN是指对同一张图片的同一层的某几个(不是全部)通道一起进行Normalization操作。这几个通道称为一个Group。
参考: