目录

定制人脸生成

方法一 从源头控制生成图片

方法一优化 取消Z码生成器,改为微调图片生成器

方法二 从生成过程中控制生成图片

方法三 借助InfoGAN的思想修改StyleGAN的架构


定制人脸生成

  这一部分会介绍基于StyleGAN,进一步地做定制人脸生成使用的方法。目前采用过的方法有三种:
第一种是从源头上通过控制生成码Z的分布范围,从而控制生成的人脸类型,这种方法能控制性别、人种、年龄等粗略类型;
第二种方法是在图片生成器的内部,通过特定维度上特征的替换,将引入的目标(模板)人脸的精细风格赋予在生成人脸上,这种方法能控制白皮肤、卷发等精细类型;
第三种方法与前两种思路完全不同,复杂一些但更通用,需要修改StyleGAN的架构,将InfoGAN与StyleGAN结合为Info-StyleGAN,从而实现仅用一个模型就能控制生成图片的类型。


方法一 从源头控制生成图片

定制人脸生成需要3个神经网络,分别是Z码生成器,图片生成器,和图片分类器。它的主要思想是,针对我们想要的特定类型的图片,首先训练出一个对应的图片分类器出来,然后固定住图片生成器与图片分类器,只训练Z码生成器(C是随机向量),从而找到Z码的范围,使得通过该Z码生成的图片,能满足图片分类器的要求,即:找到z的分布使得对应y的得分值最高。

在实际模型搭建中,Z码生成器(Dense Generator)是一个256维到512维的简单全连接网络,图片生成器取用StyleGAN里面的模型,图片分类器是一个已训练好的类型分类器(譬如男/女分类器等,用CNN就能达到比较好的效果)。损失函数方面有两个组成部分,一部分是(找到z)让y的得分值越高越好,另一部分是让z的熵越大越好(即z有多样性)。由于实际的训练只需训练三个全连接层,所以epoch数无需太高。

  最后,每对应一个不同的图片分类器,就会训练出一个对应的Z码生成器。在人脸定制中演示的模型,就是准备了多种Z码生成器,和一个图片生成器,然后根据用户的选择指定对应的Z码生成器,从而实现定制人脸生成。

方法一优化 取消Z码生成器,改为微调图片生成器

  在后续的实验中发现,对于某些分类器来说,训练出的Z码生成器是不太稳定的。举一个例子,如果希望指定生成黑种人或者白种人脸,上述方法可以实现,但是如果用同样的方法训练生成黄种人脸,就很难稳定生成。造成这种现象的原因是,黄种人界于白、黑种人之间,它的特点标志不清晰,因此Z码生成器很难找到一个Z码的区域,能够稳定生成黄种人脸。为了改善这一情况,我们可以考虑取消Z码生成器,改为微调图片生成器。

  1. 如上图所示,首先用图片分类器将原始数据集中的目标图片挑选出来(譬如黄种人脸),制作成新的训练集(New Dataset),如果数据集数目很少时还可以用ADA的方法做数据增强。
  2. 接下来,在新的数据集下训练图片生成器,其初始化参数为StyleGAN的预训练模型参数,训练状态建议回复至第10000个kimg处(见代码),因为此时已经进入了1024*1024分辨率的微调阶段,然后持续训练即可。

接下来展示一段在黄种人脸生成器的训练过程中的人脸迁移情况。

  如上图所示,从左至右为同一生成码在训练过程中生成图片的变化。可以看出,随着训练的进行,原本对应生成非黄种人的生成码,逐渐变成了生成黄种人的样子。


方法二 从生成过程中控制生成图片

  不过上述方法,只能从大体上控制生成图片的类型,因为图片分类器的制作成本通常比较高(需要大量含标签数据),所以图片分类器的划分角度一般较为宽泛(譬如男/女,老/少,黑/白等),不宜过细。所以,如果我们希望定制的人脸类型能更精细的话,只能考虑追求一些更简便的处理,不妨关注一下StyleGAN生成器的内部结构。

  可以看出,其实真正决定StyleGAN生成图片类型的,在于控制生成网络的18个特征码(它们分别控制的特征类型已在图中标出)。于是,现在我们希望能更精细控制生成图片的类型,就可以考虑用已有图片的特征码,对其进行替换,从而让其具有被替换图片的特定特征。

  譬如在上面这个例子中,用模板照片的5,6,7,8维特征码对原始的生成图片进行替换,就会得到一张新的生成图片,其具有模板人脸的精细特征,例如黄皮肤、黑头发、黑眼睛等等。而如果选择不同维度的特征码进行替换,新图片得到的特征也会不一样。不过在我的实验中,一般建议替换5,6,7,8维,因为替换更低的维度会让生成效果不稳定,而替换更高的维度会让生成效果不明显。最终,多做几次尝试就能找到合适的模板以及合适的维度替换方案,比如在人脸定制中展示的小男孩样例,就是用这样的方法生成的。


方法三 借助InfoGAN的思想修改StyleGAN的架构

  前面两种方法虽然能实现定制生成,但是由于每一种分类都是单独一个模型,这不利于进一步扩展。我们希望能构造一个通用模型,它能够实现所有定制化的需求。因此,我们借助InfoGAN的思想,将Info信息引入StyleGAN的生成器中,构造出新的具有语义限制的生成器。

  如上图所示,新的生成器输入info向量-c和噪音向量-z,其中c控制人脸类型,而z决定人脸样貌。生成图片X同时被传给判别器和分类器,其中判别器的作用是保证生成图片的清晰与逼真度,分类器的作用是保证生成图片的类别符合向量c的控制——因为它从生成图片中提取出一个新的向量,这个向量要与c尽可能一致,而c包含的信息仅有图像类别,所以只有生成图片也符合图像类别的情况下,提取出的向量才能与c一致,更详细的证明请参阅InfoGAN。最后分类器与判别器共用大部分参数,只保留最后几层参数不一致。


以上信息均来自:研究笔记

StyleGAN如何定制人脸生成相关推荐

  1. 【seeprettyface.com】高颜值人脸生成·诞生篇

    戳右边地址进入:www.seeprettyface.com ---------------------- 高颜值人脸生成·诞生篇   研究生成模型很长时间了,忍不住用GAN来画一些好玩的作品.现在挑选 ...

  2. 【视频课】StyleGAN人脸生成与年龄表情编辑:原理与实践

    前言 要问当前人脸图像领域最火的技术是什么?当然是假人脸的伪造生成与各种人脸属性编辑,下面这些图都是生成的人脸图,是不是足够以假乱真?反正通过肉眼我是看不出真假的. 另一方面,这几年里人脸属性编辑的技 ...

  3. 人脸生成的最强算法——《StyleGAN》论文解析

    今天我们来看一篇人脸生成的论文,这个算法我愿称之为业界最强. 来自英伟达的styleGAN,全名<A Style-Based Generator Architecture for Generat ...

  4. 人脸生成对抗+人脸识别流程+insightface

    一.人脸生成对抗 传统的DeepFake 需要大量的原始数据,并且要经过好几天的训练才能达到高质量的效果. 黎颢团队提出,将DeepFake和他此前做的怕GAN结合到一起,做了一个新系统.不需要大量训 ...

  5. StyleGAN v1 :用于生成高质量图像数据的生成对抗方法

    StyleGAN是2018年的一篇文章,目前已经被TPAMI收录,该方法能够生成高质量的图像数据并且做到了高层特征可控,v1的主要工作在于设计了一个style-based生成器,其中包括了styles ...

  6. Amazon SageMaker使用自编码器完成人脸生成

    一.前言 最近受邀参与了亚马逊云科技[云上探索实验室]活动,体验了一下Amazon SageMaker平台,训练了一个人脸的自编码器.对比本地的训练时间,速度提升比较明显.本文将围绕Amazon Sa ...

  7. 通过Clocking Wizard定制和生成一个IP核(MMCM)(Virtex7)(ISE版)

    目录 定制过程 准备进入定制页面 第一页 Clocking features 第二页 第三页 Selecting Optional Ports 第四页 第五页 第六页 定制过程 准备进入定制页面 首先 ...

  8. Mybatis生成器插件扩展,定制方法生成,list参数生成

    Mybatis生成器插件扩展,定制方法生成 public Criteria andNameIsEmpty() {addCriterion("`name` = ''");setCri ...

  9. 人脸生成识别 Towards Pose Invariant Face Recognition in the Wild

    Towards Pose Invariant Face Recognition in the Wild Motivation 姿态变化是人脸识别中的一个关键问题,现有的姿态不变人脸识别技术可以概括为: ...

最新文章

  1. Python 之 matplotlib (八)Bar
  2. 度量.net framework 迁移到.net core的工作量(转)
  3. [云炬创业基础笔记]第五章创业机会评估测试6
  4. android datepicker使用方法,android中DatePicker和TimePicker的使用方法详解
  5. 向数组添加元素 java_java如何向数组里添加元素
  6. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件
  7. 文件摆渡是什么意思_数据摆渡是什么意思?如何确保安全性?
  8. Ubuntu18.04报错:bin/bash: prebuilts/misc/linux-x86/bison/bison: cannot execute binary file解决
  9. jq遍历的基础语法之一
  10. EmEditor中正则表达式
  11. js刷新当前页面的5种方式
  12. django html 插入网页背景图片
  13. GTX1650Super和GTX1060哪个好?
  14. Docker学习之数据卷操作:Day4
  15. [有机化学] 简单有机物的英文命名法
  16. selenium控制浏览器获取数据(java 版本)
  17. 三年来我听过的耳机——顺便侃侃我的观念
  18. T507修改分区方法-Linux、Android系统适用
  19. OpenCV学习三:Mat类详解
  20. How to deploy the apk file on your Android Phon...

热门文章

  1. 绑定方法与非绑定方法
  2. C++语言(11)——C++类成员函数调用分析
  3. Kafka Producer 发送消息源码阅读
  4. 单一指责原则(Single Responsibility Principle) SRP
  5. 数据库的增删改查和使用流程
  6. 图解Sharepoint2007部署(下):安装sharepoint2007、创建sharepoint2007站点
  7. 中国股市暴涨暴跌全记录
  8. input里面只有name属性 可以用id定位么_Selenium元素定位 提高篇 CSS定位元素
  9. mipi和isp处理_图像信号处理 (ISP) 流水线
  10. 信息学奥赛一本通 2035:【例5.2】平移数据