首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >英伟达公布StyleGAN-XL:参数量3倍于StyleGAN3,计算时间仅为五分之一

英伟达公布StyleGAN-XL:参数量3倍于StyleGAN3,计算时间仅为五分之一

作者头像
机器之心
发布于 2022-05-31 13:10:19
发布于 2022-05-31 13:10:19
8160
举报
文章被收录于专栏:机器之心机器之心

选自arXiv

作者:AXEL SAUER

机器之心编译

编辑:蛋酱

StyleGAN-XL 首次在 ImageNet 上实现了 1024^2 分辨率图像合成。

近年来,计算机图形学领域的研究者一直致力于生成高分辨率的仿真图像,并经历了一波以数据为中心的真实可控内容创作浪潮。其中英伟达的 StyleGAN 在图像质量和可控性方面为生成模型树立了新的标杆。

但是,当用 ImageNet 这样的大型非结构化数据集进行训练时,StyleGAN 还不能取得令人满意的结果。另一个存在的问题是,当需要更大的模型时,或扩展到更高的分辨率时,这些方法的成本会高得令人望而却步。

比如,英伟达的 StyleGAN3 项目消耗了令人难以想象的资源和电力。研究者在论文中表示,整个项目在 NVIDIA V100 内部集群上消耗了 92 个 GPU year(即单个 GPU 一年的计算)和 225 兆瓦时(Mwh)的电力。有人说,这相当于整个核反应堆运行大约 15 分钟。

最初,StyleGAN 的提出是为了明确区分变量因素,实现更好的控制和插值质量。但它的体系架构比标准的生成器网络更具限制性,这些限制似乎会在诸如 ImageNet 这种复杂和多样化的数据集上训练时带来相应代价。

此前有研究者尝试将 StyleGAN 和 StyleGAN2 扩展到 ImageNet [Grigoryev et al. 2022; Gwern 2020],导致结果欠佳。这让人们更加相信,对于高度多样化的数据集来说,StyleGAN 可能会从根本上受到限制。

受益于更大的 batch 和模型尺寸,BigGAN [Brock et al. 2019] 是 ImageNet 上的图像合成 SOTA 模型。最近,BigGAN 的性能表现正在被扩散模型 [Dhariwal and Nichol 2021] 超越。也有研究发现,扩散模型能比 GAN 实现更多样化的图像合成,但是在推理过程中速度明显减慢,以前的基于 GAN 的编辑工作不能直接应用。

此前在扩展 StyleGAN 上的失败尝试引出了这样一个问题:架构约束是否从根本上限制了基于 Style 的生成器,或者 missing piece 是否是正确的训练策略。最近的一项工作 [Sauer et al. 2021] 引入了 Projected GAN,将生成和实际的样本投射到一个固定的、预训练的特征空间。重组 GAN 设置这种方式显著改进了训练稳定性、训练时间和数据效率。然而,Projected GAN 的优势只是部分地延伸到了这项研究的单模态数据集上的 StyleGAN。

为了解决上述种种问题,英伟达的研究者近日提出了一种新的架构变化,并根据最新的 StyleGAN3 设计了渐进式生长的策略。研究者将改进后的模型称为 StyleGAN-XL,该研究目前已经入选了 SIGGRAPH 2022

  • 论文地址:https://arxiv.org/pdf/2202.00273.pdf
  • 代码地址:https://github.com/autonomousvision/stylegan_xl

这些变化结合了 Projected GAN 方法,超越了此前在 ImageNet 上训练 StyleGAN 的表现。为了进一步改进结果,研究者分析了 Projected GAN 的预训练特征网络,发现当计算机视觉的两种标准神经结构 CNN 和 ViT [ Dosovitskiy et al. 2021] 联合使用时,性能显著提高。最后,研究者利用了分类器引导这种最初为扩散模型引入的技术,用以注入额外的类信息。

总体来说,这篇论文的贡献在于推动模型性能超越现有的 GAN 和扩散模型,实现了大规模图像合成 SOTA。论文展示了 ImageNet 类的反演和编辑,发现了一个强大的新反演范式 Pivotal Tuning Inversion (PTI)[ Roich et al. 2021] ,这一范式能够与模型很好地结合,甚至平滑地嵌入域外图像到学习到的潜在空间。高效的训练策略使得标准 StyleGAN3 的参数能够增加三倍,同时仅用一小部分训练时间就达到扩散模型的 SOTA 性能。

这使得 StyleGAN-XL 能够成为第一个在 ImageNet-scale 上演示 1024^2 分辨率图像合成的模型

将 StyleGAN 扩展到 ImageNet

实验表明,即使是最新的 StyleGAN3 也不能很好地扩展到 ImageNet 上,如图 1 所示。特别是在高分辨率时,训练会变得不稳定。因此,研究者的第一个目标是在 ImageNet 上成功地训练一个 StyleGAN3 生成器。成功的定义取决于主要通过初始评分 (IS)[Salimans et al. 2016] 衡量的样本质量和 Fréchet 初始距离 (FID)[Heusel et al. 2017] 衡量的多样性。

在论文中,研究者也介绍了 StyleGAN3 baseline 进行的改动,所带来的提升如下表 1 所示:

研究者首先修改了生成器及其正则化损失,调整了潜在空间以适应 Projected GAN (Config-B) 和类条件设置 (Config-C);然后重新讨论了渐进式增长,以提高训练速度和性能 (Config-D);接下来研究了用于 Projected GAN 训练的特征网络,以找到一个非常适合的配置 (Config-E);最后,研究者提出了分类器引导,以便 GAN 通过一个预训练的分类器 (Config-F) 提供类信息。

这样一来,就能够训练一个比以前大得多的模型,同时需要比现有技术更少的计算量。StyleGAN-XL 在深度和参数计数方面比标准的 StyleGAN3 大三倍。然而,为了在 512^2 像素的分辨率下匹配 ADM [Dhariwal and Nichol 2021] 先进的性能,在一台 NVIDIA Tesla V100 上训练模型需要 400 天,而以前需要 1914 天。(图 2)。

实验结果

在实验中,研究者首先将 StyleGAN-XL 与 ImageNet 上的 SOTA 图像合成方法进行比较。然后对 StyleGAN-XL 的反演和编辑性能进行了评价。研究者将模型扩展到了 1024^2 像素的分辨率,这是之前在 ImageNet 上没有尝试过的。在 ImageNet 中,大多数图像的分辨率较低,因此研究者用超分辨率网络 [Liang et al. 2021] 对数据进行了预处理。

图像合成 

如表 2 所示,研究者在 ImageNet 上对比了 StyleGAN-XL 和现有最强大的 GAN 模型及扩散模型的图像合成性能。

有趣的是,StyleGAN-XL 在所有分辨率下都实现了高度的多样性,这可以归功于渐进式生长策略。此外,这种策略使扩大到百万像素分辨率的合成变成可能。

在 1024^2 这一分辨率下,StyleGAN-XL 没有与 baseline 进行比较,因为受到资源限制,且它们的训练成本高得令人望而却步。

图 3 展示了分辨率提高后的生成样本可视化结果。

反演和操纵

同时,还可以进一步细化所得到的重构结果。将 PTI [Roich et al. 2021] 和 StyleGAN-XL 相结合,几乎可以精确地反演域内 (ImageNet 验证集) 和域外图像。同时生成器的输出保持平滑,如下图 4 所示。

图 5、图 6 展示了 StyleGAN-XL 在图像操纵方面的性能:

更多细节可参考原论文。

© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
pandas知识点(基本功能)
1.重新索引 如果reindex会根据新索引重新排序,不存在的则引入缺省: In [3]: obj = Series([4.5,7.2,-5.3,3.6], index=["d","b","a","c"]) In [4]: obj Out[4]: d 4.5 b 7.2 a -5.3 c 3.6 dtype: float64 In [6]: obj2 = obj.reindex(["a","b","c","d","e"]) In [7]: obj2 Out[7]: a -5.3 b
py3study
2020/01/20
4380
Pandas笔记-基础篇
Numpy 数组运算都会保留索引和值之间的链接,但这些操作并不会改变原Series本身(与ndarray的选区操作相对)
Ewdager
2020/07/14
7050
《利用Python进行数据分析·第2版》第5章 pandas入门5.1 pandas的数据结构介绍5.2 基本功能5.3 汇总和计算描述统计5.4 总结
pandas是本书后续内容的首选库。它含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用,如数值计算工具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib。pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理。 虽然pandas采用了大量的NumPy编码风格,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的。而NumPy更适合处理统一的数值数组数据。
SeanCheney
2018/04/24
6.3K0
《利用Python进行数据分析·第2版》第5章 pandas入门5.1 pandas的数据结构介绍5.2 基本功能5.3 汇总和计算描述统计5.4 总结
Pandas-DataFrame基础知识点总结
1、DataFrame的创建 DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。 DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。这里主要介绍这两种方式。 根据字典创建 data = { 'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], '
石晓文
2018/04/11
4.4K0
Pandas-DataFrame基础知识点总结
Python 数据分析(PYDA)第三版(二)
NumPy,即 Numerical Python,是 Python 中最重要的数值计算基础包之一。许多提供科学功能的计算包使用 NumPy 的数组对象作为数据交换的标准接口之一。我涵盖的关于 NumPy 的许多知识也适用于 pandas。
ApacheCN_飞龙
2024/05/24
7320
Python 数据分析(PYDA)第三版(二)
pandasNote2
import numpy as np import pandas as pd from pandas import Series, DataFrame 重新索引 重新索引不会改变原数据 行索引 Series.reindex DF.reindex() 列索引 通过columns关键字指定 obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c']) obj d 4.5 b 7.2 a -5.3 c 3.6 dty
皮大大
2021/03/02
2750
Pandas-Series知识点总结
根据list pandas有两种主要的数据结构,第一种是Series,是一种类似于一维数组的数据结构,它由一组数据以及一组与之相关的数据标签组成。我们可以直接根据list来生成一个Series。
用户1332428
2023/03/28
3700
Pandas-Series知识点总结
Python可视化数据分析05、Pandas数据分析
Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(索引)组成,创建Series对象的语法如下:
红目香薰
2022/11/30
2.7K0
Python可视化数据分析05、Pandas数据分析
Pandas-Series知识点总结
1、Series创建 根据list pandas有两种主要的数据结构,第一种是Series,是一种类似于一维数组的数据结构,它由一组数据以及一组与之相关的数据标签组成。我们可以直接根据list来生成一个Series。 obj = pd.Series([4,7,-5,3]) obj #输出 0 4 1 7 2 -5 3 3 dtype: int64 可以通过index和values属性来获得obj的索引和值 obj.index #RangeIndex(start=0, stop=4,
石晓文
2018/04/11
7140
《利用Python进行数据分析·第2版》第8章 数据规整:聚合、合并和重塑8.1 层次化索引8.2 合并数据集8.3 重塑和轴向旋转8.4 总结
在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析。本章关注可以聚合、合并、重塑数据的方法。 首先,我会介绍pandas的层次化索引,它广泛用于以上操作。然后,我深入介绍了一些特殊的数据操作。在第14章,你可以看到这些工具的多种应用。 8.1 层次化索引 层次化索引(hierarchical indexing)是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以低维度形式处理高维度数据。我们先来看一个简单的例子:创建一个Series,并用一个
SeanCheney
2018/04/24
2.8K0
《利用Python进行数据分析·第2版》第8章 数据规整:聚合、合并和重塑8.1 层次化索引8.2 合并数据集8.3 重塑和轴向旋转8.4 总结
pandas系列9-数据规整
.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
皮大大
2021/03/02
8750
长文:一文掌握Pandas
Pandas是Python数据科学生态中重要的基础成员,功能强大,用法灵活,简单记录之。
用户2183996
2019/03/01
9180
利用Python进行数据分析笔记
本书讲的是利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。我的目标是介绍Python编程和用于数据处理的库和工具环境,掌握这些,可以让你成为一个数据分析专家。虽然本书的标题是“数据分析”,重点却是Python编程、库,以及用于数据分析的工具。这就是数据分析要用到的Python编程。
CtrlX
2023/03/21
5.4K0
利用Python进行数据分析笔记
Python 数据处理:Pandas库的使用
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 数据处理:Pandas库的使用 ---- Python 数据处理:Pandas库的使用 1.Pandas 数据结构 1.1 Series 1.2 DataFrame 2.基本功能 2.1 重新索引 2.2 丢弃指定轴上的项 2.3 索引、选取和过滤 2.4 用 loc 和 iloc 进行选取 2.5
小嗷犬
2022/11/15
24.1K0
pandas教程(一)Series与DataFrame
预备知识:NumPy数组是一个多维数组对象,称为ndarray。其由两部分组成:实际的数据、描述这些数据的元数据
K同学啊
2019/01/22
1.1K0
pandas
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
润森
2019/08/29
8070
pandas
[948]Pandas数据分组的函数应用(df.apply()、df.agg()和df.transform()、df.applymap())
这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
周小董
2021/03/04
2.6K0
数据科学 IPython 笔记本 7.1 Pandas
Series是一维数组对象,包含数据数组和相关的数据标签数组。数据可以是任何 NumPy 数据类型,标签是序列的索引。
ApacheCN_飞龙
2022/07/11
5.4K0
Pandas高级教程之:统计方法
数据分析中经常会用到很多统计类的方法,本文将会介绍Pandas中使用到的统计方法。
程序那些事
2021/07/08
5600
【数据分析可视化】DataFrame的简单数学计算
import numpy as np import pandas as pd from pandas import Series, DataFrame s1 = Series([1,2,3],index=['A','B','C']) s1 A 1 B 2 C 3 dtype: int64 s2 = Series([4,5,6,7],index=['B','C','D','E']) s2 B 4 C 5 D 6 E 7 dtype: int64 # Series相加(
瑞新
2020/07/07
5720
相关推荐
pandas知识点(基本功能)
更多 >
LV.5
这个人很懒,什么都没有留下~
加入讨论
的问答专区 >
1Java工程师擅长4个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档