IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> GAN相关网络用什么归一化方法:BatchNorm?Weight Norm?Layer Norm? -> 正文阅读

[人工智能]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′′?/cin??k?k ?
其中 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] 论文
上面涉及的所有论文,懒得一个个贴了。

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:15:05  更:2022-09-13 11:15:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:11:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计