当前位置:网站首页>stylegan2:analyzing and improving the image quality of stylegan
stylegan2:analyzing and improving the image quality of stylegan
2022-06-23 15:08:00 【Kun Li】
StyleGAN 和 StyleGAN2 的深度理解 - 知乎StyleGAN 论文:A Style-Based Generator Architecture for Generative Adversarial Networks 源码:https://github.com/NVlabs/stylegan 效果:人脸生成效果 生成的假车效果: 生成的假卧室效果: 效果视频(建议…
https://zhuanlan.zhihu.com/p/263554045【论文译文】StyleGAN2_bupt_gwy的博客-CSDN博客_stylegan2论文译文仅供参考!原文是pdf,想下载的话可以戳:http://www.gwylab.com/pdf/stylegan2_chs.pdfhttps://blog.csdn.net/a312863063/article/details/103550022stylegan2核心是解决stylegan1留下的液滴伪影问题,stylegan1有两个核心点,latent w和分层输入,stylegan2核心是要解决stylegan1中的伪影现象,对生成器架构进一步做了解耦和重设计,也确实更优雅了。
abstract:
探索和分析一些特征伪影的原因,重新设计了生成器归一化方法,重新审视progressive growing,并对生成器施加了正则化,以在从latent code到图像的映射中鼓励更好的质量。
1.introduction
StyleGAN的显著特征是其非常规的生成器体系结构。映射网络f不再将输入的潜在编码z仅馈送到网络的开头,而是将其转换为中间的潜在编码w。然后仿射变换生成控制图层的样式,并通过自适应实例归一化(AdaIN)参与合成网络g进行合成。 另外,通过向合成网络提供额外的随机噪声图来促进随机变化。这是对stylegan的综述,基本非常到位。
许多观察者已经注意到由StyleGAN [3]生成的图像中的特征伪影。我们确定了造成这些伪影的两个原因,并描述了消除这些伪影的体系结构和改进的训练方法。首先,我们研究了常见的斑点状伪像的起源,并发现生成器创建它们是为了规避其体系结构中的设计缺陷。在第2节中,我们重新设计了生成器中使用的归一化,该归一化消除了伪像。其次,我们分析了与渐进式增长相关的伪影[23],该伪影在稳定高分辨率GAN训练方面非常成功。我们提出了一个可实现相同目标的替代设计-即训练从关注低分辨率图像开始,然后逐渐将焦点转移到越来越高的分辨率-而不在训练期间更改网络拓扑结构。这种新设计还使我们能够合理地理解所生成图像的有效分辨率,该分辨率实际上低于预期值,从而导致了网络容量的增加(第4节)。这是本文的核心内容,解决stylegan1留下来的伪影问题。
生成网络的图像质量的定量分析是个挑战性的方向,Frechet初始距离(FID)测量了inceptionv3分类器的高维特征空间中两个分布的密度差异。但最近有证明FID基于分类器网络,改网络侧重于纹理而不是形状,这些度量不能准确的捕获图像质量的左右防止,PPL度量是一种估计潜在空间插值质量的方法。

2.removing normalization artifacts
我们首先观察到StyleGAN生成的大多数图像都呈现出类似于水滴的特征性斑点状伪像。如图1所示,即使液滴在最终图像中可能不明显,它也会出现在生成器的中间特征图中(见底部1)。异常开始出现在64×64分辨率附近,并出现在所有特征图中,并且在更高的分辨率下变得越来越强。这种持续出现的伪像令人困惑,因为判别器应该能够检测到它。
问题出在AdaIN上,该运算可分别归一化每个特征图的均值和方差,他会对每个量级的特征图中发现的信息进行破坏,液滴伪像是生成器故意将信号强度偷偷经过实例归一化的结果,可以主导统计数据的强大的局部尖峰,生成器可以像其他地方一样有效的缩放信息,当从生成器中删除归一化,则液滴伪像会完全消失。一句话,归一化导致了液滴伪像的产生,原因可能是在每一层的归一化破坏了信号。
2.1 generator architecture revisited

图2.我们重新设计了StyleGAN合成网络的架构。(a)原始StyleGAN,其中A表示从W学习的仿射变换,产生样式向量,而B表示噪声广播操作。(b)完整细节相同的图。在这里,我们将AdaIN分解为显式归一化后再进行调制,然后对每个特征图的均值和标准差进行操作。我们还对学习的权重(w),偏差(b)和常数输入(c)进行了注释,并重新绘制了灰色框,以便每个框都激活一种样式。激活函数(Leaky ReLU)总是在添加偏置后立即应用。(c)我们对原始架构进行了一些改动,这些改动在正文中是有效的。我们从一开始就删除了一些多余的操作,将b和B的相加移到样式的有效区域之外,并仅调整每个要素图的标准偏差。(d)修改后的体系结构使我们能够用“解调”操作代替实例归一化,该操作适用于与每个卷积层相关的权重。
上面这组图的演进很重要,第一张stylegan的原始图,2b是对stylegan的生成器的详解图,AdaIN被分解成两个部分,归一化和调解,原始的stylegan在样式块内施加了偏置和噪音,即上图中的b和B,它们在conv之后,归一化之前,把这些操作移到样式快之外,在未标准化数据上操作,也可以获得预测效果,并且,再次更改之后,仅对标准差进行标准化和调制即可,不需要对mean均值进行调制了。如上图中c所示。
2.2 Instance normalization revisited
还是上图这张图,液滴现象是由归一化产生的,我们在生成器架构进行了改进,对b和B的位置进行了移动,去掉了mean值,但是归一化操作依然存在。而且实例归一化很重要,如何在保留样式特定比例的效果的同时松弛它呢?style mixing是stylegan有能力去控制生成图的一个重要的能力,style mixing通过将不同的latent w在推理时送入到不同层,在实践中,风格调制可以将某些特征图放大一个数量级或更多。 为了使style mixing发挥作用,我们必须在每个样本的基础上明确抵消这种放大。我们也可以简单删除归一化,但这样特定效果的控制就很难实现了。实际上失去了stylegan的可控制性。现在,我们提出了一种替代方法,该方法在保留控制性的同时删除伪像。就是上图中d这种方式。实际上采用了权重归一化的方法。

其实到这里,stylegan2就结束了,stylegan1和stylegan2的风格是类似,后面还是有很多讨论和实验细节,但是总的来说,stylegan1有两个核心点,latent w和分层输入,stylegan2核心是要解决stylegan1中的伪影现象,对生成器架构进一步做了解耦和重设计,也确实更优雅了。
3.Image quality and generator smoothness
尽管GAN度量标准(例如FID或Precision and Recall(P&R))成功地捕获了生成器的许多方面,但它们仍然在图像质量上处于盲点。我们认为,明显的不一致的关键在于要素空间的特定选择,而不是FID或P&R的基础。最近发现,使用ImageNet [35]训练的分类器倾向于将决策更多地基于纹理而不是形状[11],而人类则强烈关注形状[28]。这在我们的上下文中是有意义的,因为FID和P&R使用分别来自InceptionV3 [39]和VGG-16 [39]的高级特征,这些特征是通过这种方式进行训练的,因此可以预期偏向于纹理检测。这样,具有强烈的猫的纹理的图像可能看起来彼此更相似,比人类观察者所在意的细节还要强,从而部分损害了基于密度的度量(FID)和多方面的覆盖度量(P&R)。

我们观察到了感知的图像质量和感知路径长度(PPL)之间的有趣关系[24],该指标最初是通过测量在潜在空间中的小扰动下生成的图像之间的平均LPIPS距离来量化从潜在空间到输出图像的映射平滑度的指标[49]。再次参考图13和14,较小的PPL(平滑的生成器映射)似乎与较高的整体图像质量相关,而其他指标则看不到该变化。 图4检验了这种相关性是更紧密的。
我看mmgeneration中stylegan系列的评测指标也是3个,FID,PR和PPL。
4.progressive growing revisited
StyleGAN使用的Progressive growth会有一些缺点,如下图,当人脸向左右偏转的时候,牙齿却没有偏转,即人脸的一些细节如牙齿、眼珠等位置比较固定,没有根据人脸偏转而变化,造成这种现象是因为采用了Progressive growth训练,Progressive growth是先训练低分辨率,等训练稳定后,再加入高一层的分辨率进行训练,训练稳定后再增加分辨率,即每一种分辨率都会去输出结果,这会导致输出频率较高的细节,如下图中的牙齿,而忽视了移动的变化。

使用Progressive growth的原因是高分辨率图像生成需要的网络比较大比较深,当网络过深的时候不容易训练,但是skip connection可以解决深度网络的训练,因此有了下图中的三种网络结构,都采用了skip connection,三种网络结构的效果也进行了实验评估,如下下图.

从指标ppl开始,后面基本就是训练策略和实践中的讨论,后面有时间也值得一看。
边栏推荐
- mysql 系列:总体架构概述
- Volatile~ variables are not visible under multithreading
- Important knowledge of golang: timer timer
- 快速排序的簡單理解
- JS create an array (literal)
- The idea and method of MySQL master-slave only synchronizing some libraries or tables
- Important knowledge of golang: waitgroup parsing
- 【opencv450】椒盐噪声demo
- 为什么高通滤波器也能变成微分器?
- Analysis of graphical level-1 programming problem of Electronic Society: cat and mouse
猜你喜欢

mysql 系列:总体架构概述

12 BeautifulSoup类的初始化

MQ消息中间件理论详解

Introduction to the push function in JS

变压器只能转换交流电,那直流电怎么转换呢?

进销存软件排行榜前十名!

JSON——学习笔记(消息转换器等)

The "shoulder" of sales and service in the heavy truck industry, Linyi Guangshun deep ploughing product life cycle service

Important knowledge of golang: mutex

Half wave loss equal thickness and equal inclination interference
随机推荐
System design and analysis - Technical Report - a solution for regularly clearing verification code
Matlab| sparse auxiliary signal denoising and pattern recognition in time series data
Sectigo(Comodo)证书的由来
快速排序的简单理解
How can genetic testing help patients fight disease?
PHP 2D array insert
FPGA 常用缩写及单词在工程领域内的意义
volatile~多线程下变量不可见
Important knowledge of golang: mutex
mysql 系列:总体架构概述
MIPI C-PHY协议你了解吗?手机高速接口之一
JS里的数组
The meaning of FPGA abbreviations and words in engineering field
Mysql database - log management, backup and recovery
32. compose beautiful touch animation
进销存软件排行榜前十名!
C. Phoenix and Towers-Codeforces Global Round 14
Redis缓存三大异常的处理方案梳理总结
直播间源码在开发前期必须做的工作及开发步骤
Origin of sectigo (Comodo) Certificate