【深度学习】StyleGANv2 2019 论文,Analyzing and Improving the Image Quality of StyleGAN
StyleGAN论文: 《A Style-Based Generator Architecture for Generative Adversarial Networks》
论文:https://arxiv.org/abs/1812.04948
代码: https://github.com/NVlabs/stylegan
StyleGANv2论文: 《Analyzing and Improving the Image Quality of StyleGAN》
论文:https://arxiv.org/abs/1912.04958
代码: https://github.com/NVlabs/stylegan2
此篇是StyleGANv2。
文章目录
- Abstract
- 1. Introduction
- 2. Removing normalization artifacts
- 2.1. Generator architecture revisited
- 2.2. Instance normalization revisited
Abstract
基于样式的生成对抗网络架构(StyleGAN)在数据驱动的无条件生成图像建模方面取得了最先进的结果。我们揭示并分析了其特征性的一些伪影,并提出了对模型架构和训练方法的改进来解决这些问题。
特别地,我们重新设计了生成器的归一化,重新审视了渐进增长,并对生成器进行正则化,以鼓励从潜在代码到图像的映射具有良好的条件。除了提高图像质量外,这种路径长度正则化器还带来了额外的好处,使得生成器变得更容易反演。这使得我们能够可靠地将生成的图像归因于特定的网络。此外,我们还可视化了生成器如何利用其输出分辨率,并确定了一个容量问题,促使我们训练更大的模型以获得额外的质量改进。总体而言,我们改进的模型在无条件图像建模领域重新定义了现有的分布质量度量以及感知图像质量方面的技术水平。
1. Introduction
生成方法,尤其是生成对抗网络(GAN)[16]生成的图像的分辨率和质量正在迅速提高[23, 31, 5]。目前,用于高分辨率图像合成的最先进方法是StyleGAN [24],它已被证明可以可靠地适用于各种数据集。我们的工作集中在修复其特有的伪影并进一步提高结果质量。
StyleGAN [24]的独特之处在于其非传统的生成器架构。它并不只是将输入潜在代码z 2 Z传送到网络的开始,而是首先将其通过映射网络f转换为中间潜在代码。然后,通过自适应实例归一化(AdaIN)[21, 9, 13, 8]通过仿射变换产生控制合成网络g层的样式。
此外,通过向合成网络提供附加的随机噪声映射,有助于实现随机变化。已经证明[24, 38]这种设计使得中间潜在空间W比输入潜在空间Z要少纠缠得多。在本文中,我们仅关注W的所有分析,因为从合成网络的角度来看,它是相关的潜在空间。
许多观察者已经注意到StyleGAN生成的图像中的特征性伪影[3]。我们确定了这些伪影的两个原因,并描述了架构和训练方法上的变化来消除它们。首先,我们研究了常见的斑点状伪影的产生原因,并发现生成器为了规避其架构中的设计缺陷而产生了这些伪影。在第2节中,我们重新设计了生成器中使用的归一化,从而消除了这些伪影。其次,我们分析了与渐进增长[23]相关的伪影,该方法在稳定高分辨率GAN训练方面非常成功。我们提出了一个实现相同目标的替代设计——训练始于低分辨率图像,然后逐渐将焦点转移到更高分辨率——而在训练过程中不改变网络拓扑。这种新设计还使我们能够对生成的图像的有效分辨率进行推理,结果发现它比预期的要低,从而激发了容量增加的动机(第4节)。
对使用生成方法生成的图像质量的定量分析仍然是一个具有挑战性的课题。Frechet Inception Distance(FID)[20]度量了InceptionV3分类器[39]高维特征空间中两个分布的密度差异。
Precision and Recall(P&R)[36, 27]通过明确地量化与训练数据相似的生成图像的百分比以及可以生成的训练数据的百分比,提供了额外的可见性。我们使用这些指标来量化改进。
无论FID还是P&R都基于分类器网络,最近已经证明这些网络更关注纹理而不是形状[12],因此这些度量标准不能准确地捕捉图像质量的所有方面。我们观察到感知路径长度(PPL)度量标准[24],最初被引入作为估计潜在空间插值质量的方法,与形状的一致性和稳定性相关。基于这一点,我们对合成网络进行正则化,以倾向于平滑映射(第3节),并在质量方面取得明显的改进。为了应对其计算开销,我们还提议较不频繁地执行所有正则化,观察到这样做不会影响有效性。
最后,我们发现,通过使用新的、路径长度正则化的StyleGAN2生成器,将图像投影到潜在空间W中的效果要明显好于原始的StyleGAN。这使得更容易将生成的图像归因于其源头(第5节)。
我们的实现和训练模型可在 https://github.com/NVlabs/stylegan2 获取。
2. Removing normalization artifacts
我们首先观察到,由StyleGAN生成的大多数图像都展示出类似水滴的特征性伪影。如图1所示,即使在最终图像中水滴可能不明显,它仍存在于生成器的中间特征映射中。这种异常从64×64的分辨率开始出现,在所有特征映射中都存在,并且在更高分辨率下逐渐变得更加明显。这种一致性伪影的存在令人困惑,因为鉴别器应该能够检测到它。
我们将问题指向了AdaIN操作,该操作单独对每个特征映射进行均值和方差归一化,从而可能破坏特征之间幅度相关性中的任何信息。我们假设水滴伪影是生成器有意地通过实例归一化绕过信号强度信息的结果:通过创建一个强烈的局部尖峰来主导统计数据,生成器可以有效地在其他地方按其意愿缩放信号。我们的假设得到了支持,当从生成器中移除归一化步骤(如下所述)时,水滴伪影完全消失。
2.1. Generator architecture revisited
首先,我们将修改StyleGAN生成器的若干细节,以更好地支持我们重新设计的归一化。
这些变化本身在质量指标方面要么没有影响,要么具有微小的积极作用。
图2a显示了原始的StyleGAN综合网络g [24],图2b则通过显示权重和偏差,并将AdaIN操作分解为其两个组成部分:归一化和调制,将图表扩展到了完整细节。这使我们可以重新绘制概念上的灰色框,以便每个框表示网络中一个样式处于活动状态的部分(即“样式块”)。有趣的是,原始的StyleGAN在样式块内应用了偏差和噪声,从而使它们的相对影响与当前样式的幅度成反比。我们观察到,通过将这些操作移出样式块,它们在规范化数据上运行,可以获得更可预测的结果。此外,我们注意到,在此更改之后,仅对标准偏差进行归一化和调制已足够(即不需要均值)。将偏差、噪声和归一化应用于恒定输入也可以安全地移除,而不会观察到明显的缺陷。此变体如图2c所示,将成为我们重新设计的归一化的起点。
2.2. Instance normalization revisited
StyleGAN的主要优势之一是通过样式混合来控制生成的图像,即在推断时为不同层提供不同的潜在变量w。
实际上,样式调制可能会使某些特征映射放大一个数量级甚至更多。为了使样式混合正常工作,我们必须在每个样本的基础上明确抵消这种放大效应,否则后续层将无法对数据进行有意义的操作。
如果我们愿意牺牲特定于尺度的控制(见视频),我们可以简单地去除归一化,从而消除伪影,同时还略微改善了FID [27]。
现在,我们将提出一种更好的替代方案,既消除了伪影,又保留了完全可控性。主要思想是基于传入特征映射的期望统计信息进行归一化,但不强制执行。
图2:我们重新设计了StyleGAN综合网络的架构。 (a) 原始的StyleGAN,其中A表示从W学习得到的样式的可学习仿射变换,B是一个噪声广播操作。 (b) 具有完整细节的相同图表。在这里,我们已将AdaIN分解为显式的归一化,然后是调制,两者都在每个特征映射的均值和标准偏差上进行操作。我们还标注了学习得到的权重(w),偏差(b)和恒定输入©,并重新绘制了灰色框,使得每个框中只有一个样式处于活动状态。激活函数(渗漏ReLU)总是在添加偏差后立即应用。© 我们对原始架构进行了几处变更,这些变更在正文中有所解释。我们在开始时删除了一些冗余操作,将b和B的添加移到样式的活动区域之外,并仅调整每个特征映射的标准偏差。(d) 修改后的架构使我们能够用“解调”操作替换实例归一化,我们将这个操作应用于与每个卷积层相关联的权重。
回想一下,在图2c中,一个样式块由调制、卷积和归一化组成。让我们首先考虑调制接着卷积的效果。调制根据传入的样式对卷积的每个输入特征映射进行缩放,这实际上可以通过缩放卷积的权重来实现:
其中,w和w’分别是原始和调制后的权重,si是与第i个输入特征映射相对应的缩放因子,j和k分别枚举卷积的输出特征映射和空间足迹。
现在,实例归一化的目的基本上是从卷积输出特征映射的统计数据中消除s的影响。我们观察到,可以更直接地实现这一目标。假设输入激活是具有单位标准偏差的独立同分布随机变量。经过调制和卷积后,输出激活的标准偏差为:
即,输出是由相应权重的L2范数缩放的。随后的归一化旨在将输出恢复为单位标准偏差。根据方程式2,如果我们通过1/σj来缩放(“解调”)每个输出特征映射j,则可以实现这一目标。或者,我们可以再次将其融入卷积权重中:
其中,ε是一个小常数,用于避免数值问题。
现在,我们已经将整个样式块烘焙到了一个单一的卷积层中,其权重根据s使用方程1和方程3进行调整(图2d)。与实例归一化相比,我们的解调技术较弱,因为它是基于信号的统计假设而不是特征映射的实际内容。类似的统计分析在现代网络初始化器中广泛使用[14, 19],但我们不知道它以前曾被用作依赖数据的归一化的替代方法。我们的解调也与权重归一化[37]相关,后者在对权重张量重新参数化的过程中执行了相同的计算。以前的研究已经确定在GAN训练的背景下,权重归一化是有益的[43]。
我们的新设计消除了特征性伪影(图3),同时保留了完全可控性,如附带的视频所示。FID基本上没有受到影响(表1,A、B行),但精确度和召回率之间有明显的变化。我们认为这通常是可取的,因为可以通过截断将召回率转换为精确度,然而相反的情况并不成立[27]。在实际应用中,我们的设计可以通过使用分组卷积高效实现,详细信息请参见附录B。为了避免在方程3中考虑激活函数,我们对激活函数进行缩放,以保留预期的信号方差。
相关文章:

【深度学习】StyleGANv2 2019 论文,Analyzing and Improving the Image Quality of StyleGAN
StyleGAN论文: 《A Style-Based Generator Architecture for Generative Adversarial Networks》 论文:https://arxiv.org/abs/1812.04948 代码: https://github.com/NVlabs/stylegan StyleGANv2论文: 《Analyzing and Improving …...

【AI模型系列】火力全开!百度文心3.5三大维度、20项指标国内问鼎!
目录 写在前面 详细介绍 综合性能评估结果 安全合规方面 写在前面 近日,清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》(下文简称“报告”)。 报告显示百度文心一言在三大维度20项指标中综合评分国内第一,…...

C++ 多态性——运算符重载
**多态是指同样的消息被不同类型的对象接收时导致不同的行为。**所谓的消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。 使用同样的“”,就实现了整数之间、浮点数之间、双精度浮点数之间的加法࿰…...

Java设计模式---工厂方法(Factory Method)模式
说明 工厂方法(Factory Method)模式是一种工厂模式,也叫多态性工厂(Poloymorphic Factory)模式。 工厂方法模式涉及如下角色: 抽象工厂角色:给出具体工厂角色必须实现的接口。具体工厂角色&a…...

MySQL的关键指标及采集方法
MySQL 是个服务,所以我们可以借用 Google 四个黄金指标的思路来解决问题。 1、延迟 应用程序会向 MySQL 发起 SELECT、UPDATE 等操作,处理这些请求花费了多久,是非常关键的,甚至我们还想知道具体是哪个 SQL 最慢,这样…...

协程怎么解释?Python 中的协程如何实现?Celery 的协程并发引擎如何实现?
文章目录 1. 协程怎么解释?2. 为什么叫协程?3. coroutine 怎么读?4. asyncio 和 gevent 怎么实现协程?4. celery 并发引擎是什么?如何改为协程?5. 一个 celery 服务是否可以同时使用多个不同的引擎? 1. 协…...

Linux:shell脚本:基础使用(2)
test命令 格式1:test 条件表达式 格式2:[ 条件表达式 ] (前后至少应有一个空格) 常用的测试操作符 -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否…...

Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器
Canonical 公司最近发布了 Mir 2.14,这是该项目的最新版本。 Mir 2.14 在 Wayland 方面通过 ext-session-lock-v1 协议增加了对屏幕锁定器 (screen lockers) 的支持,并最终支持 Wayland 拖放。此外还整合了渲染平台的实现,放弃了之前在 Raspb…...

合规管理,企业生存之本!这4大方法,助你规避风险
当下,合规管理已成为企业必修的一门学问。无论是上市公司还是民营企业,都面临着日益严苛的监管合规要求。然而,许多企业在在应对频繁更新的合规要求时,仍然手忙脚乱,合规工作参差不齐。 专家分析认为,企业合规困境的主要症结在于,业务运转过程中产生了大量证明文件,但企业对其…...

码云 Gitee + Jenkins 配置教程
安装jdk 安装maven 安装Jenkins https://blog.csdn.net/minihuabei/article/details/132151292?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132151292%22%2C%22source%22%3A%22minihuabei%22%7D 插件安装 前往 Manage Jen…...

Java重启
Java启动! 前言祖师爷高斯林老爷子冯诺依曼 注释单行注释多行注释文档注释 标识符***【硬性规则】******【软性建议】*** 关键字结尾 前言 其实我在写这篇文章的时候已经完整地学过一遍Java校招需要掌握的大部分知识了,但是在最近找实习的过程中,我发现自己对于一些只是还是模…...

ReactNative 学习笔记
学习使用的开发工具 编译器 VSCode 开发语言工具 TypeScript 重要程度分类 一般 这个程度的知识点主要是达到熟练掌握即可,不用太深入研究和学习。 重要 这个程度的知识点主要是达到熟练掌握,并且内部的原理切要熟记,因为会关联到其他的知…...

小研究 - MySQL 数据库下存储过程的综合运用研究
信息系统工程领域对数据安全的要求比较高,MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中,而角色与权限设计不仅关乎数据库中数据保密性的性能高低,也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时…...

CentOS 7 构建 LVS-DR 群集 nginx负载均衡
1、基于 CentOS 7 构建 LVS-DR 群集。 DS(Director Server):DIP 192.168.231.132 & VIP 192.168.231.200 [root132 ~]# nmcli c show NAME UUID TYPE DEVICE ens33 c89f4a1a-d61b-4f24-a260…...

ESP32学习笔记(52)————三轴加速度ADXL345使用(SPI方式)
一、简介 ADXL345 是一款 ADI 公司推出的基于 iMEMS 技术的超低功耗3轴加速度计,分辨率高(13位),测量范围达 16g。数字输出数据为 16 位二进制补码格式,可通过 SPI(3线或4线) 或 I2C 数字接口访问。ADXL345 非常适合移动设备应用。它可以在倾…...

Camunda 7.x 系列【4】 Camunda Modeler 功能介绍
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 下载安装2. 功能介绍2.1 欢迎界面2.2 工具栏2.3 小地图2.4 流程配置2.5 小工具栏2.6 启动…...

呼叫中心系统管理和优化的关键指标
呼叫中心系统是企业客户服务的重要组成部分,通过电话、邮件、社交媒体等渠道与客户进行沟通和交互。如何管理和优化呼叫中心系统,提高客户满意度和工作效率,是每个企业都需要关注和解决的问题。以下是呼叫中心系统管理和优化的关键指标。 1. …...

UML箭头汇总
参考:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html 1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言。 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图ÿ…...

【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析
本章节主要讲解点亮LED的基本原理,以及GPIO框图的讲解。 如何点亮LED(输出) 首先我们查看原理图,观察电路图中LED的连接情况,如下图可以看出我们的板子中LED一端通过限流电阻连接的PB0另一端连接的是高电平VCC…...

高效管理,PDM系统与BOM系统携手合作
在现代制造业中,PDM系统(Product Data Management,产品数据管理)和BOM系统(Bill of Materials,物料清单管理)都扮演着关键的角色。PDM系统负责产品数据的统一管理,而BOM系统则专注于…...

Elasticsearch 使用scroll滚动技术实现大数据量搜索、深度分页问题 和 search
基于scroll滚动技术实现大数据量搜索 如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scroll滚动查询,一批一批的查,直到所有数据都查询完为止。 scroll搜索会在第一次搜索的时候,保存一个当时的视…...

了解Swarm 集群管理
Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…...

【Docker】Docker私有仓库的使用
目录 一、搭建私有仓库 二、上传镜像到私有仓库 三、从私有仓库拉取镜像 一、搭建私有仓库 首先我们需要拉取仓库的镜像 docker pull registry 然后创建私有仓库容器 docker run -it --namereg -p 5000:5000 registry 这个时候我们可以打开浏览器访问5000端口看是否成功&…...

基于arcFace+faiss开发构建人脸识别系统
在上一篇博文《基于facenetfaiss开发构建人脸识别系统》中,我们实践了基于facenet和faiss的人脸识别系统开发,基于facenet后续提出来很多新的改进的网络模型,arcFace就是其中一款优秀的网络模型,本文的整体开发实现流程与前文相同…...

C#设计模式(15)命令模式(Command Pattern)
命令模式(Command Pattern) 命令模式是一种数据驱动的设计模式,属于行为型模式类别。请求被包装在一个对象中作为命令,并传递给调用对象。调用对象寻找可以处理该命令的合适对象,并将命令传递给相应的对象,…...

快速排序和qsort函数详解详解qsort函数
💕是非成败转头空,青山依旧在,几度夕阳红💕 作者:Mylvzi 文章主要内容:快速排序和qsort函数详解 前言: 我们之前学习过冒泡排序,冒泡排序尽管很方便,但也存在一些局限性…...

搭建 elasticsearch8.8.2 伪集群 windows
下载windows 版本 elasticsearch8.8.2 以下链接为es 历史版本下载地址: Past Releases of Elastic Stack Software | Elastic windows 单节点建立方案: 下载安装包 elasticsearch-8.8.2-windows-x86_64.zip https://artifacts.elastic.co/download…...

C++ 运算符重载为成员函数
运算符重载实质上就是函数重载,重载为成员函数,他就可以自由访问本类的数据成员。实际使用时,总是通过该类的某个对象来访问重载的运算符。 如果是双目运算符,左操作数是对象本身的数据,由this指针指出,右…...

51单片机程序烧录教程
STC烧录步骤 (1)STC单片机烧录方式采用串口进行烧录程序,连接的方式如下图: (2)所以需要先确保USB转串口驱动是识别到,且驱动运行正常;是否可通过电脑的设备管理器查看驱动是否正常…...

Linux C++ 链接数据库并对数据库进行一些简单的操作
一.引言(写在之前) 在我们进行网络业务代码书写的时候,我们总是避免对产生的数据进行增删改查,为此,本小博主在这里简历分享一下自己在Linux中C语言与数据之间交互的代码的入门介绍。 二.代码书写以及一些变量和函数的…...