前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >由生成模型到domain迁移:GAN、CGAN、StarGAN、CycleGAN、AsymmetricCycleGAN

由生成模型到domain迁移:GAN、CGAN、StarGAN、CycleGAN、AsymmetricCycleGAN

作者头像
天天P图攻城狮
发布2018-12-17 18:24:24
4.1K0
发布2018-12-17 18:24:24
举报
文章被收录于专栏:天天P图攻城狮天天P图攻城狮

最近看一篇CVPR2018文章PairedCycleGAN: Asymmetric Style Transfer for Applying and Removing Makeup有感。总结一下GAN做domian transfer的思路脉络。

Base knowledge

Generative Adversarial Nets (GAN) :

GAN是一种训练生成模型的方法,包括两个互相对抗的模型:一个生成模型G用于拟合样本数据分布和一个判别模型D用于估计输入样本是来自于真实的训练数据还是生成模型G。生成器通过映射函数把噪声映射到数据空间,而判别器的输出是一个标量,表示数据来自真实训练数据而非G的生成数据的概率。

G和D非线性的映射函数,例如多层感知机等。

上图左边表示对于判别模型D,如果输入为真实的训练数据,那么模型最终的输出应该接近于1。上图右侧表示如果判别模型的输入为由G生成的样本,那么D的最终输出应该期望接近于0。

GAN模型没有损失函数,优化过程是一个“二元极小极大博弈(minimax two-player game)”问题,下面是模型的价值函数:

下图是GAN loss的实际代码拆解图:

输入T/F图片对,输出loss。D/G loss 交替训练

The key point is:

  1. Loss descent principle for both G and D
  2. When update G, we have fixed the D, the vice versa

Conditional GAN

给GAN模型加入一些条件约束,也就有了本文的工作Conditional Generative Adversarial Nets(CGAN)。在生成模型G和判别模型D中同时加入条件约束y来引导数据的生成过程。条件可以是任何补充的信息,如类标签,其它模态的数据等,这样使得GAN能够更好地被应用于跨模态问题,例如图像自动标注。

上图所示是CGAN的结构。

把噪声z和条件y作为输入同时送进生成器,生成跨域向量,再通过非线性函数映射到数据空间。

把数据x和条件y作为输入同时送进判别器,生成跨域向量,并进一步判断x是真实训练数据的概率。

在MNIST上以数字类别标签为约束条件,最终根据类别标签信息,生成对应的数字。

Applacation

图像转换或者图像的风格转换,顾名思义,是指把一副图像A按照另一幅 图像B的模式/风格进行转换的一个操作,例如 “白天->黑夜”,“晴天->雨天”等等;

Papers

在深度学习的方法广泛应用以后,使用深度学习方法比较早做这件事的就是使用CNN框架来做的,也就是2016cvpr的一篇文章“Image style transfer using convolutional neural networks”基于深度卷积神经网络的方法。当时出来的时候也比较火,也有一些方法在此类方法上的改进。

随着生成对抗网络(GAN)这种在图像生成上具有天生强大能力的网络结构的出现,使用GAN方法做图像生成又成为了一个比较流行的方法。列举几个截止到目前使用GAN为基础的方法:

  • pix2pix GAN (1611)
  • CycleGAN (1703)
  • DiscoGAN (1703)
  • PAN( Perceptual Adversarial Networks)感知GAN (1706)
  • StarGAN (1711)

这些方法的最终效果上可能都是为了进行图像转换,实现的形式不同而已。包括最近出来的StarGAN。

先简单看下各类方法一个效果:

Gatyes?et.al. 祖师爷风格迁移的开山之作

pix2pix GAN

CycleGAN

DiscoGAN

PAN

StarGAN

Details

pix2pix GAN

先来看看第一篇文章pix2pix GAN,文章全名“Image-to-Image Translation with Conditional Adversarial Networks”

文章的框架如图所示:

来看一下这个框架,整个框架依托cGAN的思想,判别网络的输入是一个两张图组成给的数据结构,可以认为是图+label,可能有人会奇怪,这里的label为什么是一张图,这怎么是cGAN呢,我们前面说过,条件GAN接受的条件并不一定都是低维度的数值,也可以是广义的label,这里就可以认为右边的那个白色的图就是label,如果我们常见的GAN的判别器的输入是一个rgb三通道的图像的话,这里就好比输入的是一个6通道的两个图叠加的图。那么为什么要这么做呢?主要的原因应该还是为了满足生产器,其次是为了使得网络可以有效的训练。

可以看一下上述的判别器部分,此时我们白色的图像充当着噪声的功能,也就是可以把白色图像经过生成器变成黑色的图,同时黑色的图和白色的图叠加作为假样本来训练。这样我们可以发现,对于这一次的真假样本,因为白色的图(好比是label)是一样的,要想使得判别器无法判别真假,那么生成的黑色的图必须尽可能的与真样本的黑色的图像相似才满足条件吧,这也是为什么要把黑白两者叠加在一起作为样本输入的原因。

试想一下,假如只把黑色的当做真假判断条件而没有白色的,那么当把白色A图像送入生成器后,可能生成了黑色B图像,这个时候,黑色A与黑色B对于判别器来说都是真样本,所以判别器很容易没有误差了而生成器也是错的,达不到把白A生成白B的目的。

基于此可以看到这篇文章使用cGAN来实现图像转换的合理性,那么整个的目标函数可以表示如下:

G的构造

下面来看一下这个G是如何构造的,文章中展示了两种图像生成图像的典型结构,一个是自编码结构,一个是改进的U-Net结构:

图像的patch实验

这篇文章中另一个小的结构点是实验了PatchGAN的方式,也就是对于生成器或者判别器,不是以整个图像整个图像的当做输入,而是以小的patch来进行的。把一副图像划分为N*N个patch后,对于每一块进行上述的那个操作。可以发现当N=1的时候,相当于逐像素进行了,当N=256(图像大小为256的话),就是一幅图像一幅图像的操作。当然文章的实验发现当N=70的时候,效果最好。

其实当N是某一个固定块的一个最大的好处是,可以由小的图像生成大的图像,因为反正你都是对块进行操作的。比如你的原始图像都是256256的,每7070一个块进行的。训练的模型,假如有一个1000*1000的图像需要转换,是不是也可以转换,只需要把1000转成多个70的块,每个块单独转换即可。

CycleGAN

domain transfer 神作 论文:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks17

作者提出了一种unpaired的无监督训练方法实现domain transfer。核心就是GAN Adversarial Loss + Consistency Loss。主要是后者实现解放unpaired 训练集的限制:

Star-GAN

要引入多domain,必须引入指向domain的监督。于是作者在判别网络中引入一个对domain分类的分类器。

生成网络采用cycleGAN形式。本文提出的网络结构:

作者将loss分成三部分:

c 代表target domian,c′ 代表original domain

但是做实验发现,会有一些鬼脸生成。这个可以尝试PGGAN的方法。

Asymmetric CycleGAN

妆容迁移的一篇文章

CVPR_2018: PairedCycleGAN: Asymmetric Style Transfer for Applying and Removing Makeup

主要结构继承CycleGAN,加了一个知道general domain transfer 的一个 Discriminator。

作者提到,CycleGAN也可以胜任makeup(妆容)迁移的任务,但是生成出来的太过于genreal:

“CycleGAN could in principle learn to apply a general make-you-look-good makeup to a no-makeup face, but it would not replicate a specific example makeup style.” “A second challenge, specific to our makeup problem, is that people are highly sensitive to visual artifacts in rendered faces”

人们对于妆容迁移苛刻、细致的追求导致一些传统的color transfer、style transfer的方法产生的 artifacts (like painting style) 不能容忍。所以,善于脑补(高度feature抽象与生成)的GAN会起到一些帮助作用。但是,某些时候我们做妆容迁移或者人脸属性编辑的时候,我们只想更改某一个部位的apperence,而不改变其他的部位。一般的GAN会将不该改变的部分迁移到source图片上,这并不是理想的结果。

CycleGAN可以解决这个问题。作为一个强化版双向conditional GAN,它拥有前向生成网络G与反向生成网络F,相应的,拥有监督两个domain的Discriminator Dx与Dy。Dx与Dy起到至关重要的作用,Dx区分 x? 与 x′ , 而Dy区分 y 与 y′?

?。这驱使两个Generator向正确的domain生成图片。

但是问题来了,在相对精细的妆容迁移任务上,GAN的diversity的弊端显的明显。意思是如何让CycleGAN适应任意风格的makeup输入、并且生成的图片不要有artifacts?从StarGAN的思路受到启发,可以设计一个多分类器Discriminator,来指导Gernerator生成多种风格的makeup。但是这样只能是有限种类的makeup。如何可以做到arbitrary makeup输入都可以迁移?本文提出用一个“*an auxiliary discriminator DS, which decides whether a given pair of faces wear the same makeup.”*这样的化巧妙的将范化任意种类的任务转换成判断一pair是否是一样的style这样的问题。甩锅给判别器,只要你train data里面有足够多的style 类型。

效果:

作者简介:Chaos?, 天天P图 iOS 工程师


文章后记 天天P图是由腾讯公司开发的业内领先的图像处理,相机美拍的APP。欢迎扫码或搜索关注我们的微信公众号:“天天P图攻城狮”,那上面将陆续公开分享我们的技术实践,期待一起交流学习!

加入我们 天天P图技术团队长期招聘: (1)?深度学习(图像处理)研发工程师(上海) 工作职责

  • 开展图像/视频的深度学习相关领域研究和开发工作;
  • 负责图像/视频深度学习算法方案的设计与实现;
  • 支持社交平台部产品前沿深度学习相关研究。

工作要求

  • 计算机等相关专业硕士及以上学历,计算机视觉等方向优先;
  • 掌握主流计算机视觉和机器学习/深度学习等相关知识,有相关的研究经历或开发经验;
  • 具有较强的编程能力,熟悉C/C++、python;
  • 在人脸识别,背景分割,体态跟踪等技术方向上有研究经历者优先,熟悉主流和前沿的技术方案优先;
  • 宽泛的技术视野,创造性思维,富有想象力;
  • 思维活跃,能快速学习新知识,对技术研发富有激情。

(2) AND / iOS 开发工程师? (3) 图像处理算法工程师 期待对我们感兴趣或者有推荐的技术牛人加入我们(base 上海)!联系方式:ttpic_dev@qq.com

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-17,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 天天P图攻城狮 微信公众号,前往查看

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

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Base knowledge
    • Generative Adversarial Nets (GAN) :
      • Conditional GAN
      • Applacation
        • Papers
        • Details
          • pix2pix GAN
            • G的构造
            • 图像的patch实验
          • CycleGAN
            • Star-GAN
              • Asymmetric CycleGAN
                • 作者简介:Chaos?, 天天P图 iOS 工程师
                相关产品与服务
                人脸识别
                腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com