简介

NVIDIA在2017年提出的ProGAN解决了生成高分辨率图像(如1024×1024)的问题。ProGAN的关键创新之处在于渐进式训练——从训练分辨率非常低的图像(如4×4)的生成器和判别器开始,每次都增加一个更高的分辨率层。

存在的问题:与多数GAN一样,ProGAN控制生成图像的特定特征的能力非常有限。这些属性相互纠缠,即使略微调整输入,会同时影响生成图像的多个属性。所以如何将ProGAN改为条件生成模型,或者增强其微调单个属性的能力,是一个可以研究的方向。

解决方法:StyleGAN是NVIDIA继ProGAN之后提出的新的生成网络,其主要通过分别修改每一层级的输入,在不影响其他层级的情况下,来控制该层级所表示的视觉特征。这些特征可以是粗的特征(如姿势、脸型等),也可以是一些细节特征(如瞳色、发色等)

利用stylegan2生成的网红人脸(现实中不存在的假脸)

性别转换

stylegan


左边是传统生成器,右边为StyleGAN 生成器,由Mapping network和Synthesis network组成

Mapping network用于将Latent code z 转换为w,用来影响图像的style

Synthesis network用于生成图像

Mapping Network


输入维度为512x1,由8个全连接层组成,输出维度为512x1

z是符合均匀分布或者高斯分布的随机变量,所以变量之间的耦合性比较大,难以控制视觉特征。比如数据集中长头发的人很常见,那么更多的输入值便会映射到该特征上,那么z中其他变量也会向着该值靠近、无法更好地映射其他特征,因此通过Mapping network,生成一个不必遵循训练数据分布的向量w,减少了特征之间的相关性,完成解耦

latent code转换得到w后,经过仿射变换生成A,分别送入Synthesis network的每一层网络,进行控制特征,因为Synthesis network的网络层有18层,通过w生成得到了18个控制向量,用于控制不同的视觉特征

Synthesis network


Synthesis network按照输出维度可以分为4x4,8x8,16x16,32x32,64x64,128x128,256x256,512x512,1024x1024,同时每一个都包含两个卷积层,一个Upsample,一个3x3卷积特征学习,一共包含18层

  • 利用512 * 4 * 4的输入代替传统初始输入
    避免初始输入值取值不当而生成不正常图片
    有助于减少特征纠缠

  • 随机变化(添加噪声noise)

    stylegan通过用噪声 ( noise ) 来影响头发丝、皱纹、肤色等细节部分,为了控制噪声仅影响图片样式上细微的变化, StyleGAN 采用类似于 AdaIN 机制的方式添加噪声(噪声输入是由不相关的高斯噪声组成的单通道数据,它们被馈送到生成网络的每一层)。 即在 AdaIN 模块之前向每个通道添加一个缩放过的噪声,并稍微改变其操作的分辨率级别特征的视觉表达方式。 加入噪声后的生成人脸往往更 加逼真与多样

  • 自适应实例归一化(AdaIN)

此前的风格迁移方法,一种网络只对应一种风格,速度很慢。基于AdaIN可以“self modulate” the generator快速实现任意图像风格的转换

特征图的均值和方差中带有图像的风格信息。所以在这一层中,特征图减去自己的均值除以方差,去掉自己的风格。再乘上新风格的方差加上均值,以实现转换的目的。StyleGAN的风格不是由图像的得到的,而是w生成的

  • 样式混合(通过混合正则化)

进一步明确风格控制(训练过程中使用)

在训练过程中,stylegan采用混合正则化的手段,即在训练过程中使用两个latent code w (不是1个)。通过Mapping network输入两个latent code z,得到对应的w1和w2(代表两个风格),接下来为它们生成中间变量w’。然后利用第一个w1映射转换后来训练一些网络级别,用另一个w2来训练其余的级别,于是便能生成混合了A和B的样式特征的新人脸

第一部分是 Coarse styles from source B,分辨率(4x4 - 8x8)的网络部分使用B的style,其余使用A的style, 可以看到图像的身份特征随souce B,但是肤色等细节随source A;
第二部分是 Middle styles from source B,分辨率(16x16 - 32x32)的网络部分使用B的style,这个时候生成图像不再具有B的身份特性,发型、姿态等都发生改变,但是肤色依然随A;
第三部分 Fine from B,分辨率(64x64 - 1024x1024)的网络部分使用B的style,此时身份特征随A,肤色随B

大致结论:低分辨率的style 控制姿态、脸型、配件 比如眼镜、发型等style,高分辨率的style控制肤色、头发颜色、背景色等style

  • Truncation Trick

** Truncation Trick,截断技巧。从数据分布来说,低概率密度的数据在网络中的表达能力很弱,直观理解就是,低概率密度的数据出现次数少,能影响网络梯度的机会也少,网络学习到其图像特征的能力就会减弱。如何解决该问题呢,truncation trick大致做法如下**

** 首先找到数据中的一个平均点,然后计算其他所有点到这个平均点的距离,对每个距离按照统一标准进行压缩,这样就能将数据点都聚拢了(相当于截断了中间向量

4、StyleGAN系列相关推荐

  1. 年轻的LeCun、吴恩达长啥样?升级版StyleGAN告诉你

    来源:机器之心 来自以色列特拉维夫大学的研究者在生成图像方面又有了新的升级,所用方法在保留源图像身份的同时,在细节编辑上实现了更精细的效果. 英伟达提出的风格迁移模型 StyleGAN 系列,一直是人 ...

  2. 成熟的GAN会自己分析脸部纹理!英伟达StyleGAN团队出新作,网友:竟然还能有突破...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 换脸的GAN,还能有啥突破? 要不,分析个脸部纹理试试. 不得不说,真有点科幻电影的赶脚~ 这是英伟达最新推出GAN--Alias-Free ...

  3. 【每周CV论文推荐】StyleGAN人脸属性编辑有哪些经典论文需要阅读

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 当前人脸图像领域的研究和落地都发展得非常迅速 ...

  4. GAN网络系列博客(三):不受坐标限制的GAN(StyleGAN3)

    目录 1. 概述 2. 连续信号分析 2.1 等变网络层 3. 具体实现 3.1 傅里叶特征和基础简化 3.2 根据连续插值进行的步骤重建 4.实验 总结 Reference 关于StyleGAN系列 ...

  5. stylegan2:analyzing and improving the image quality of stylegan

    StyleGAN 和 StyleGAN2 的深度理解 - 知乎StyleGAN 论文:A Style-Based Generator Architecture for Generative Adver ...

  6. 辞职读博:研究AI设计怪物,从《游戏王》卡牌开始

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 让AI画 ...

  7. 《预训练周刊》第14期:World-GAN:Minecraft 世界的生成模型、CMU博士论文探究可控文本生成...

    No.14 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第14期&l ...

  8. 皮克斯技术指导辞职读博:研究AI设计怪物,从《游戏王》卡牌开始

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 让AI画人脸见得多了,要是让AI画个幻想中的怪物又如何? 来看几个,先是人形的: 再来个兽形的: 还有诡异到说不出来属于什么型的: 你可能会 ...

  9. 【视频课】生成对抗网络经典任务,详解基于GAN的图像生成算法!

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

最新文章

  1. Creative Web Typography Styles | Codrops
  2. CIA困局:天下再无007,AI识别下无处遁行的“特工”们
  3. 趣谈设计模式 | 模板方法模式(Template Method):封装不变部分,扩展可变部分
  4. P2260 [清华集训2012]模积和,P2834 能力测验(二维除法分块)
  5. python字符串的内部函数_Python中字符串中内置函数
  6. MATLAB矩阵的算术运算
  7. 网友投诉顺丰快递员私拆快递物品摆拍、言语骚扰 官方处理来了...
  8. [转载] 利用python对csv文件进行简单的数据分析
  9. WARN No appenders could be found for logger的解决方法
  10. c盘存放文件夹的功能
  11. oracle数据库rtf内容替换,如何将RTF转换为纯文本?
  12. dolphinscheduler2.0.5 HTTP任务类型改造
  13. 离境收心,入于虚无。
  14. 笔记本超薄本14寸,15.6寸,16.1寸对比图
  15. 【魔方攻略】镜面魔方教程(原创)
  16. 【001】C++11允许匿名类型、局部类型作为模板实参
  17. Python 获取 网易云音乐热门评论(python2/python3代码)
  18. 网上书店订单流程c语言源代码,网上书店的设计及实现.doc
  19. 一日一技:用Python做游戏有多简单 (2)
  20. IP反查网站,ip反查接口,旁站查询接口大全,通过IP查域名汇总

热门文章

  1. MotionEvent中getAction、getActionMask、getActionIndex区别
  2. 运算放大器(一):电压跟随器
  3. [siggraph19]《荒野大镖客2》的大气云雾技术(1/4)
  4. C# 取消按钮焦点 (非自定义控件)
  5. zookeeper服务器主动断开与客户端的连接问题
  6. python3 gb2312转utf8_python2和python3字符编码 unicode,utf-8,gb2312相互转换encode,decode...
  7. C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
  8. 这领导当的,你该怎么办?
  9. win7系统浏览器老是自动弹出网页怎么办
  10. html中的if函数,countif函数的使用方法