论文分享:GAN-Control 论文笔记

简介

在这里插入图片描述
论文名称:GAN-Control: Explicitly Controllable GANs
项目链接:https://alonshoshan10.github.io/gan_control/
论文地址:https://arxiv.org/abs/2101.02477
发表时间:2021.1.7

  • 2021年新鲜出炉的一篇文章,主要工作是实现了对StyleGAN的特征解耦,实现了对生成图像的特征的显性控制。
  • 区别于其他文章的地方在于:提出了一个可拓展的框架,并且效果非常好。

1 摘要

提出一个框架,训练GAN与显式控制生成的图像。能够控制生成的图像通过设置精确的属性,如年龄,姿势,表情等。

  • 大多数编辑生成图像的方法都是通过利用标准GAN训练后隐式获得的潜在空间解纠缠特性来实现部分控制。这些方法能够更改某些属性的相对强度,但不能显式设置它们的值。
  • 在最近提出的方法中,旨在对人脸进行显式控制,利用可变的3D人脸模型,使GANs具有细粒度的控制能力。所以与以往方法不同的是,这种控制不受限于可变形的3D人脸模型参数,并且可以扩展到人脸领域之外。
  • 使用对比学习,获得了具有明确分解隐空间的GAN。这种分解被用来训练控制编码器,将人类可解释的输入映射到合适的隐向量,从而允许显式的控制。
  • 人脸领域,研究人员展示了对身份、年龄、姿势、表情、头发颜色和照明的控制,还演示了框架在画像和狗图像生成领域的控制能力,证明了新的方法在质量和数量上都达到了SOTA。

2 基础:StyleGAN 框架

StyleGAN是一个生成高清图像的深度学习算法,目前主要运用在人脸生成领域,且效果非常好。目前学术界的一种研究方向是对StyleGAN的控制变量(潜变量)进行编辑或解释,使该生成器能生成可控的人脸照片。 详情请见:https://github.com/NVlabs/stylegan2

在这里插入图片描述
GAN-Control和其他方法一样,是对StyleGAN框架中的全连接层框架进行了修改。只不过GAN-Control让每个可编辑的属性都对应了一个八层的全连接层,具体后面介绍。

GAN-Control 的差异点:

  • 可以编辑年龄(这些3D模型目前无法改变的属性)
  • 能将相同的框架应用到不同但相似的域,例如绘画或动物脸。

3 改进:GAN-Control

在这里插入图片描述

  1. 在第一阶段,构建每一个batch的每个属性都有一对隐向量,共享一个相应的子向量。 除了对抗性损失外,该批图像中的每张图像都会以对比的方式,逐个属性地与其他所有图像进行比较,并考虑到它的子向量是相同还是不同。
  2. 在第二阶段,编码器被训练成将可解释的参数映射到合适的隐向量。
  3. 在推理阶段,是通过将第k个编码器输入设置为所需值,实现对属性k的显式控制。

GAN-Control利用开源的属性鉴别器对生成的图片提取特征,计算距离。用到的鉴别器有:

  • ID: ArcFace embedding vector outputs are compared using the cosine distance.
  • Pose: HopeNet yaw, pitch and roll outputs are compared using L1.
  • Expression: each model output of the ESR ensemble is concatenated to a vector and compared using L1.
  • Illumination: R-Net output is compared using L1.
  • Age: Dex outputs are compared using L1.
  • Hair color: We compute masks for the hair regions ofthe generated images using PSPNet.

4 对比学习:Adversarial loss

距离函数:Mk(xx)为鉴别器输出的特征,

d k ( I i , I j ) = dist ⁡ ( M k ( I i ) , M k ( I j ) ) d_{k}\left(\mathcal{I}_{i}, \mathcal{I}_{j}\right)=\operatorname{dist}\left(M_{k}\left(\mathcal{I}_{i}\right), M_{k}\left(\mathcal{I}_{j}\right)\right) dk(Ii,Ij)=dist(Mk(Ii),Mk(Ij))

然后由距离函数构成对比损失 Adversarial loss,具体符号的意义可看原论文。
该loss的目的是,使具有相同属性图片,在该属性上的距离越小越好。不同属性则越大越好。例如,当为同一个人时,生成的图像就应该具有相同的人脸识别ID。

l k ( z i , z j ) = { 1 C k + max ⁡ ( d k ( I i , I j ) − τ k + , 0 ) , z i k = z j k 1 C k − max ⁡ ( τ k − − d k ( I i , I j ) , 0 ) ,  otherwise  l_{k}\left(\mathbf{z}_{i}, \mathbf{z}_{j}\right)=\left\{\begin{array}{ll}\frac{1}{C_{k}^{+}} \max \left(d_{k}\left(\mathcal{I}_{i}, \mathcal{I}_{j}\right)-\tau_{k}^{+}, 0\right), & \mathbf{z}_{i}^{k}=\mathbf{z}_{j}^{k} \\ \frac{1}{C_{k}^{-}} \max \left(\tau_{k}^{-}-d_{k}\left(\mathcal{I}_{i}, \mathcal{I}_{j}\right), 0\right), & \text { otherwise }\end{array}\right. lk(zi,zj)={Ck+1max(dk(Ii,Ij)τk+,0),Ck1max(τkdk(Ii,Ij),0),zik=zjk otherwise 

最后在将batch中图片两两之间的每个属性的loss汇总。

L c = ∑ z i , z j ∈ B i ≠ j ∑ k = 1 N l k ( z i , z j ) L_{c}=\sum_{\mathbf{z}_{i}, \mathbf{z}_{j} \in B \atop i \neq j} \sum_{k=1}^{N} l_{k}\left(\mathbf{z}_{i}, \mathbf{z}_{j}\right) Lc=i=jzi,zjBk=1Nlk(zi,zj)

5 生成效果:真实感强、解耦充分

  • 年龄和姿势的控制
    在这里插入图片描述

  • 光线、表情和头发颜色的控制
    在这里插入图片描述

  • 在图画数据上的控制,效果还算不错。
    在这里插入图片描述

6 总结:效果不错

本人的理解是,该方法相当于增加了多个不同属性的鉴别器,然后使编码器对该属性进行对抗,从而使编码器将各特征解开纠缠。该框架的效果确实不错,而且提出的框架可以进行拓展,所以我觉得该论文非常不错。

最后推荐大家看一下他的演示视频,效果很惊艳。
https://alonshoshan10.github.io/gan_control/

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值