GAN相关网络用什么归一化方法:BatchNorm?Weight Norm?Layer Norm?

一、问题背景

问题是这样的,在做一个图像生成的任务中(基于GAN),出现了局部噪声的问题,表现为下图所示,在和几位老师傅交流之后,推测是因为BN的问题。关于BatchNorm、LayerNorm、InstanceNorm、WeightNorm等介绍移步大佬博客
图像生成出现局部噪声
那么怎么解决呢?参考StyleGAN2中,使用EqualConv2d替换掉Conv+BN的方式解决(经过实验,使用Layer Norm也能避免此问题)。EqualConv2d其实就是在初始化参数的时候,对卷积参数进行一次缩放处理。公式如下:
w i j k ′ = w i j k ′ ′ / c i n ∗ k ∗ k w'_{ijk}=w''_{ijk} / \sqrt{c_{in}*k*k} wijk=wijk′′/cinkk
其中 c i n c_{in} cin表示输入通道数,k表示卷积核尺度,代码在这里;在对卷积参数进行缩放之外,通过对卷积的处理使得输出恢复到单位标准差:
w i j k = w i j k ′ / ∑ i , k ( w i j k ′ ) 2 + ϵ w_{ijk}=w'_{ijk}/\sqrt{\sum_{i,k}(w'_{ijk})^2+\epsilon} wijk=wijk/i,k(wijk)2+ϵ
其实这一段比较好理解,带入到卷积运算公式之后,再求方差可以把卷积参数带来的方差变化给约掉,也就是卷积参数不会导致特征的整体方差发生变化,代码在这里

那么问题来了,到底什么时候用BN?什么时候用Weight Norm?什么是时候用Layer Norm呢?

二、先从StyleGAN说起

2.1 StyleGAN中的问题

StyleGAN用于生成图像的,通过输入不同的噪声,控制生成的图像具备不同特征,比如性别、头发、肤色等。虽然StyleGAN的效果很好,但是在生成图像时会存在『水滴状』噪声问题,如下图所示。
在这里插入图片描述

2.2 StyleGAN2

StyleGAN2提到StyleGAN中采用AdaIN进行归一化,导致出现这个问题的,将AdaIN去掉之后这个问题就没有了,然后又提出第一章介绍的权重解调来实现特征的归一化。AdaIN最开始提出用于风格迁移任务中,代码在这里。计算公式如下:
A d a I N ( x , y ) = σ ( y ) x − μ ( x ) σ ( x ) + μ ( y ) AdaIN(x,y)=\sigma(y)\frac{x-\mu(x)}{\sigma(x)}+\mu(y) AdaIN(x,y)=σ(y)σ(x)xμ(x)+μ(y)
其中x表示源图像,y表示风格,也就是AdaIN可以将x图像迁移到y中风格中。用直白的语言说就是统一不同图像风格的变化,而BN、IN、LN是从不同纬度对特征分布进行统一。

三、不同网络及任务使用的归一化方法

下面对一些经典的算法进行统计,主要是图像、GAN相关算法,也涉及少量的文本、语音相关的内容。

算法任务网络结构归一化方式卷积备注
StyleGAN图像生成StyleGAN上采样AdaIN普通卷积
StyleGAN2图像生成StyleGAN2上采样Weight Demodulate普通卷积
AdaIN图像风格迁移VGGUNetAdaIN普通卷积
IN图像风格迁移VGGUNetAdaIN普通卷积
MobileFSGAN换脸MobileFSGANUNetG:BN;D:spectral_norm普通卷积
单阶段-多阶段检测相关目标检测、分类ResNet等下采样BN普通卷积
SegNet语义分割VGGUNetBN普通卷积
FCN语义分割FCN下采样-普通卷积
DenseNet图像分类、检测DenseNet下采样BN普通卷积轻量化
MobileNet图像分类、检测MobileNet下采样DepthWiseConv轻量化
ShuffleNet图像分类、检测ShuffleNet下采样GNGroup Conv轻量化
Weight Normalization图像分类、生成--WN-
Transformer文本Transformer-LN-
deepspeech语音RNN-BN普通卷积

四、分析各种归一化应用情况

4.1 BN

最常见的归一化方法,在目标检测、图像分类任务中使用的骨干网络中(如ResNet相关,ResNet、ResNext、ResNeSt等)。对于GAN相关的网络用的比较少,但是也有一些算法会用。
缺点:计算mean、var时受mini-batch影响,容易引入噪声,尤其是在GAN相关的算法中,可能会出现水滴状的问题。
注意:在图像分类、检测、分割等任务中,往往使用预训练模型,所以即使batchsize=1也不会导致太差的结果。

4.2 LN

针对单个样本,不受mini-batch影响,在RNN系列模型用的比较多,NLP任务中常用。

4.3 IN

对于图像而言,有点像是对每个像素进行归一化,用于风格迁移中。

4.4 WN

不依赖数据的统计量,感觉有点类似于万金油。BN、LN都是基于特征的统计量,而WN是对权重进行处理的。

4.5 GN

常用于分组卷积或分组相关运算中。

4.6 DepthWiseConv

不用norm,猜测其实每个卷积都是独立的,不像普通卷积一样进行多个纬度的累加,所以输出特征比较稳定。猜想普通卷积多个纬度相加,特征值可能会出现变化比较大的情况,所以需要各种norm给拉回来,利用网络优化,而DWC就一个小卷积核,不怕不怕。

引用:
[1] BN、LN、IN、GN等介绍
https://zhuanlan.zhihu.com/p/33173246
https://zhuanlan.zhihu.com/p/115949091
[2] 论文
上面涉及的所有论文,懒得一个个贴了。

即兴写的不免有很多疏漏,若有问题欢迎交流!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值