Face Aging with Conditional Generative Adversarial Network 论文笔记

2017.02.28 

Motivation:

  本文是要根据最新的条件产生式对抗玩网络(CGANs)来完成,人类老年照片的估计。

  主要是做了一下两个事情:

    1. 根据年龄阶段,进行照片的老年估计,用 acGAN 网络来完成;

    2. 提出一种 隐层变量优化算法(latent vector optimization approach),允许 acGAN 可以重构输入人脸图像,与此同时,保留原本人脸的个体。

    

  猛地一看,这个流程图,其实是挺迷惑人的,我感觉。

  按照上述流程图,来看看作者想要达到什么效果:

  1. 首先给定一张输入图像 x ,假设年龄记为 y0,找到一个最优的隐层向量 z*,使得可以产生一个重构的人脸 x-,尽可能的和初始的人脸尽可能的相似。

  2. 给定一个目标年龄 $y_{target}$,产生一张结果人脸图像 $x_{target} = G(z*, y_{target})$,简单的完成年龄的切换。

  其实,这个文章是做了这么一个事情:

  结合 条件产生式对抗网络 和 隐层向量之间的loss 来完成整个网络的训练。

  首先,作者是在给定一张图像的基础上,进行人脸的老化估计。作者这里考虑了 输入随机 noise 对最终结果的影响。

    自己随机的产生了一堆 noise Z,然后在条件--->> 年龄这个标签的条件下,利用对抗网络生成许多伪造的 image ;

    由于是自己根据 noise z 生成的,这里相当于是 已经有了 groundtruth,我们训练一个 encode 网络,将输入的人脸图像,估计其 编码后的 向量 z* ;

    通过不断地训练,可以得到 能够预测图像隐层编码的网络 Encoder 。

  

  其次,我们文章的一个很重要的卖点在于,可以保持生成图像和输入图像是 相同的身份,是同一个人,那么,这里是怎么做到的呢?

    因为我们知道,GAN 生成的数据,一般都是看起来有模有样,但是实际上是很难控制输出什么的。

    本文之所以可以做到这一点,就是因为,在生成图像的过程中,加入了隐层变量 z 之间的 loss,即:

    

    这样在生成图像过程中,考虑生成的图像和原始输入图像之间的隐层向量 z 之间的差距,尽可能的小,就可以将这个事情 model 的非常好!

  总结起来就是,在生成图像的过程中,首先学习一个编码网络,可以预测图像的隐层变量。然后在 GAN 过程中,加入这个 loss,作为衡量输出图像质量好坏的一个标准。

  这样,生成的人脸图像,不但可以尽可能的和原始图像保持是同一个人,另外,又可以,在条件 年龄的基础上,生成对应年龄阶段的人脸图像。

  

  大致就是这么个流程。有任何疑问,请发邮件与我联系! wangxiaocvpr@foxmail.com

Face Aging with Conditional Generative Adversarial Network 论文笔记的更多相关文章

  1. 论文阅读:Single Image Dehazing via Conditional Generative Adversarial Network

    Single Image Dehazing via Conditional Generative Adversarial Network Runde Li∗ Jinshan Pan∗ Zechao L ...

  2. StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记

    StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks  本文将利 ...

  3. 论文笔记之:Conditional Generative Adversarial Nets

    Conditional Generative Adversarial Nets arXiv 2014   本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈 ...

  4. 论文阅读之:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

    Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network  2016.10.23 摘要: ...

  5. ASRWGAN: Wasserstein Generative Adversarial Network for Audio Super Resolution

    ASEGAN:WGAN音频超分辨率 这篇文章并不具有权威性,因为没有发表,说不定是外国的某个大学的毕业设计,或者课程结束后的作业.或者实验报告. CS230: Deep Learning, Sprin ...

  6. Speech Super Resolution Generative Adversarial Network

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/10874993.html 论文作者:Sefik Emre Eskimez , Kazuhito K ...

  7. 生成对抗网络(Generative Adversarial Network)阅读笔记

    笔记持续更新中,请大家耐心等待 首先需要大概了解什么是生成对抗网络,参考维基百科给出的定义(https://zh.wikipedia.org/wiki/生成对抗网络): 生成对抗网络(英语:Gener ...

  8. GAN Generative Adversarial Network 生成式对抗网络-相关内容

    参考: https://baijiahao.baidu.com/s?id=1568663805038898&wfr=spider&for=pc Generative Adversari ...

  9. Conditional Generative Adversarial Nets

    目录 引 主要内容 代码 Mirza M, Osindero S. Conditional Generative Adversarial Nets.[J]. arXiv: Learning, 2014 ...

随机推荐

  1. html5-文本属性

    /*p{color: red;width: 50%;text-align: center;background: blue;}p{text-align: end;}p{text-align: end; ...

  2. C-Cow Sorting (置换群, 数学)

    Farmer John's N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow has a uniqu ...

  3. hdu5294 网络流+dijskstr

    题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那个人只有通过最短路径才能追上终点的那个人,而终点的那个人能切断任意路径. 第一问——终点那人要使起点那人不能 ...

  4. 反射(I)

    反射获取属性和属性值 let item = DoctorGroup() guard let dic = InterfaceTests.obtainValues(subObject: item) els ...

  5. Groovy常用编程知识点简明教程

    概述 Groovy 是一门基于JVM的动态类型语言,可以与 Java 平台几乎无缝融合(与Java代码一样编译成字节码). 使用 Groovy ,可以增强 Java 应用的灵活性和可扩展性,提升开发效 ...

  6. springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法

    springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法 @SpringBootApplication public class Sen ...

  7. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  8. brctl 命令详解

    安装网桥管理工具包:bridge-utile ```# yum install bridge-utils -y``` ```使用brctl命令创建网桥br1```# brctl addbr br1`` ...

  9. Navicat连接MySQL8.0亲测有效

    今天下了个 MySQL8.0,发现Navicat连接不上,总是报错1251: 原因是MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错. 试了很多种方法,终于找到一种可以实现的: 更 ...

  10. spark读取hbase形成RDD,存入hive或者spark_sql分析

    object SaprkReadHbase { var total:Int = 0 def main(args: Array[String]) { val spark = SparkSession . ...