Star-GAN阅读笔记

  • Summary
  • Contribution
  • Related Work
  • Approach and Model Architecture
  • Implement
  • Experiments
  • Code

Summary

之前传统的GAN只能在两个域之间做图像转换(例如Cycle-GAN),如果要在多个域之间做图像转换,则需要N(N-1)对生成器/鉴别器。然而Star-GAN仅使用一个生成器/判别器,就完成了多个域之间的图像转换,它的训练单元为[图像, 域标签],训练数据集为拥有多标签的同一数据集(甚至可以多个数据集)。

Contribution

  • 提出了StarGAN,这是一种新型的生成对抗网络,它仅使用一个生成器和一个鉴别器就可以从所有域的图像进行有效训练,从而学习多个域之间的映射。
  • 演示了如何利用掩码向量方法成功地学习多个数据集之间的多域图像翻译,该方法使StarGAN能够控制所有可用域标签。
  • 提供有关使用StarGAN进行面部属性转移和面部表情合成任务的定性和定量结果,显示其优于基准模型的优势。

Related Work

  • 生成对抗网络
  • 条件生成对抗网络
  • 图像到图像的翻译

Approach and Model Architecture

作者开门见山,先给了个结果图

对于方法部分,作者原文一句话讲得挺明白的:我们的生成器没有学习固定的翻译,而是将图像和领域信息都作为输入,并学会了将图像灵活地翻译为相应的领域。也就是说,训练的数据为[图像, 域标签]。其中“领域”可以由one-hot vector或者二进制表示。

作者展示了Star-GAN与传统多域方法的对比图

作者提出的Star-GAN训练了从输入图像x到c域输出图像y的一个生成器,其中这个c域是随机产生的,这可以使得图像x到各个域都能够轻松转换

作者介绍了损失函数

  • 鉴别器的损失函数

    • 对抗损失函数 Ladv=Ex[log⁡Dsrc(x)]+Ex,c[log⁡(1−Dsrc(G(x,c)))]\mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))]Ladv​=Ex​[logDsrc​(x)]+Ex,c​[log(1−Dsrc​(G(x,c)))]
    • 域分类损失函数 Lclsr=Ex,c′[−log⁡Dcls(c′∣x)]\mathcal{L_{cls}^r}=\mathbb{E}_{x,c'}[-\log D_{cls}(c'|x)]Lclsr​=Ex,c′​[−logDcls​(c′∣x)]
    • 最终损失 LD=−Ladv+λclsLclsr\mathcal{L_D}=-\mathcal{L}_{adv}+\lambda_{cls}\mathcal{L}_{cls}^rLD​=−Ladv​+λcls​Lclsr​
  • 生成器的损失函数
    • 对抗损失函数 Ladv=Ex[log⁡Dsrc(x)]+Ex,c[log⁡(1−Dsrc(G(x,c)))]\mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))]Ladv​=Ex​[logDsrc​(x)]+Ex,c​[log(1−Dsrc​(G(x,c)))]
    • 域分类损失函数 Lclsf=Ex,c[−log⁡Dcls(c∣G(x,c))]\mathcal{L_{cls}^{f}}=\mathbb{E}_{x,c}[-\log D_{cls}(c|G(x,c))]Lclsf​=Ex,c​[−logDcls​(c∣G(x,c))]
    • 重构损失 Lrec=Ex,c,c′[∣∣x−G(G(x,c),c′)∣∣1]\mathcal{L}_{rec}=\mathbb{E}_{x,c,c'}[||x-G(G(x,c),c')||_1]Lrec​=Ex,c,c′​[∣∣x−G(G(x,c),c′)∣∣1​]
    • 最终损失 LG=Ladv+λclsLclsf+λrecLrec\mathcal{L_G}=\mathcal{L}_{adv}+\lambda_{cls}\mathcal{L}_{cls}^f+\lambda_{rec}\mathcal{L}_{rec}LG​=Ladv​+λcls​Lclsf​+λrec​Lrec​

作者在实验中设定了λcls=1\lambda_{cls}=1λcls​=1以及λrec=10\lambda_{rec}=10λrec​=10。

值得一提的时,Star-GAN跟Cycle-GAN的损失函数其实是几乎一致的:对抗损失约束D和G,循环一致性(重构损失)约束G,不用的是Star-GAN多了一个约束D,G的“域分类损失函数”,由于Cycle-GAN只有两个域,所以不需要这个。

对于ccc,由于在不同数据集,标签会有所缺失,作者提出了one-hot和二进制的表示方法,其中c^=[c1,...,cn,m]\hat{c}=[c_1,...,c_n,m]c^=[c1​,...,cn​,m]cic_ici​是一个二进制数,代表第iii个数据集标签的情况,相当于是一个状压的向量,对于没有其他数据集标签的图像,那些对应数据集的ccc为000即可。在训练生成器的过程中,生成器会忽略未指定的标签,转而着重训练显示给定标签上。对于鉴别器的辅助分类器,分类器仅对有标签的那个数据集的所有标签的分类错误降到最低,不关注其他数据集标签。

Implement

这篇论文是在WWW-GANGANGAN提出之后的,所以其对抗损失函数

Ladv=Ex[log⁡Dsrc(x)]+Ex,c[log⁡(1−Dsrc(G(x,c)))]\mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))]Ladv​=Ex​[logDsrc​(x)]+Ex,c​[log(1−Dsrc​(G(x,c)))]

被改进为

Ladv=Ex[Dsrc(x)]−Ex,c[DsrcG(x,c)]−λg,pEx^[(∣∣▽x^Dsrc(x^)∣∣2−1)2]\mathcal{L_{adv}}=\mathbb{E}_x[D_{src}(x)]-\mathbb{E}_{x,c}[D_{src}G(x,c)]-\lambda_{g,p}\mathbb{E}_{\hat{x}}[(||\bigtriangledown_{\hat{x}}D_{src}(\hat{x})||_2-1)^2]Ladv​=Ex​[Dsrc​(x)]−Ex,c​[Dsrc​G(x,c)]−λg,p​Ex^​[(∣∣▽x^​Dsrc​(x^)∣∣2​−1)2]

具体原理是啥来着,自动编码生成器遵循KL距离,生成对抗网络遵循JS散度,它们都存在一个问题:当随机初始的分布和真实分布不重叠时,KL距离和JS散度无法有效衡量“距离”,所以找不出优化方向,失去导数。而Wasserstein距离能够克服这个问题。

λgp\lambda_{gp}λgp​根据经验设定为10。

网络结构方面,Star-GAN也沿用了Cycle-GAN的大体结构,值得注意的是,Pix2pix-GAN在生成器上选用了UNet结构,鉴别器上选用了PatchGAN结构,Cycle-GAN以及这篇提出的Star-GAN都继承了这个传统。

Experiments

Star-GAN比较对象有DIAT、Cycle-GAN、IcGAN,它们都能实现多个域之间图像转换,有的可能只能两个域互相转换,但是在每两个域间使用就可以实现多个域转换。本次比较实验在CelebA和RaFD数据集上进行,它们都是比较权威的人脸数据集。

在CelebA数据集实验对比如下

定量评估方式也是AMT,一个人工评价的平台,结果从单属性和多属性指标上看起来是Star-GAN远远领先

在RaFD数据集实验对比如下

在四个模型中测试不同表情生成情况如下,Star-GAN显示出了最自然的表情。作者认为,StarGAN在图像质量上的优势是由于其来自多任务学习设置的隐式数据增强效果。 RaFD图像包含相对较小的样本大小,例如每个域500张图像。在两个域上进行训练时,DIAT和CycleGAN一次只能使用1000张训练图像,而StarGAN可以在所有可用域中总共使用4000张图像进行训练。这使StarGAN可以正确学习如何保持生成的输出的质量和清晰度。

定量评估方面,作者使用ResNet-18在RaFD数据集上进行表情分类的训练,再用这个训练好的网络来测试四种网络生成表情图像的分类精度,以此来定量评估生成表情的真实性,结果是Star-GAN生成的表情判错率最少。

Star-GAN还有一个优点就是对于多域的图像转换问题,其只需要一个生成器和一个鉴别器对,十分节省模型参数。

在CelebA和RaFD数据集实验对比如下

SNG表示在RaFD数据集上训练,JNT表示在CelebA和RaFD数据集上联合训练,结果表明联合训练比单独训练效果好,因而可以使用联合训练改善少数据单独训练的生成效果。


作者为了证明掩码即x^\hat{x}x^确实起到了作用,进行了如下对比实验:第一组掩码设定RaFD即控制包清的数据集,第二组则是设定CelebA即跟表情无关数据集。

实验证明,在掩码控制表情数据集时生成效果很好,掩码控制非表情数据集时,会改变该数据集中的属性而不是表情属性。作者采用的one-hot以及二进制状压确实起到了应该有的作用。

Code

Star-GAN的代码主要参考了。。。未完待续

Star-GAN阅读笔记相关推荐

  1. 深度学习超分辨率综述阅读笔记(翻译)

    深度学习超分辨率综述阅读笔记(翻译) https://arxiv.org/abs/1902.06068 摘要:图像超分辨率(SR)是计算机视觉中增强图像和视频分辨率的一类重要图像处理技术.近几年来,图 ...

  2. CYCADA: cycle-consistent adversaial domain adaption阅读笔记

    CYCADA: cycle-consistent adversaial domain adaption阅读笔记 目录 CYCADA: cycle-consistent adversaial domai ...

  3. 基于深度学习的表面缺陷检测方法综述-论文阅读笔记

    //2022.3.2日阅读笔记 原文链接:基于深度学习的表面缺陷检测方法综述 (aas.net.cn) 个人对本篇综述内容的大致概括 论文首先介绍了表面缺陷检测中不同场景下的成像方案,主要根据表面颜色 ...

  4. CVPR2019|Depth-Aware Video Frame Interpolation【论文阅读笔记】

    CVPR2019|Depth-Aware Video Frame Interpolation[论文阅读笔记] 作者 相关链接 1.前言 2.介绍 3.算法 4.实验 作者 Wenbo Bao, Wei ...

  5. ”AE-OT A NEW GENERATIVE MODEL BASED ON EXTENDED“阅读笔记

    "AE-OT A NEW GENERATIVE MODEL BASED ON EXTENDED SEMI-DISCRETE OPTIMAL TRANSPORT"阅读笔记 来源:IC ...

  6. A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记

    A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记 //2022.1.7 日下午16:00开始阅读 双阶段检测器示意图 单阶段检测器 ...

  7. 《Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks》阅读笔记

    <Context Encoders: Feature Learning by Inpainting>阅读笔记 摘要 我们提出了一种基于上下文的像素预测驱动的无监督视觉特征学习算法.类似于自 ...

  8. DGP 论文阅读笔记

    DGP 论文阅读笔记 论文题目:Exploiting Deep Generative Prior for Versatile Image Restoration and Manipulation Ex ...

  9. Small Object Detection using Context and Attention(论文阅读笔记)

    Small Object Detection using Context and Attention 论文阅读笔记 出处:2021 International Conference on Artifi ...

  10. BigGAN-论文阅读笔记

    BigGAN-论文阅读笔记 论文地址:Large Scale GAN Training for High Fidelity Natural Image Synthesis-ReadPaper论文阅读平 ...

最新文章

  1. 分分钟搭建Oracle环境
  2. CSP认证201703-2 学生排队[C++题解]:模拟
  3. 红杉中国合伙人刘星:新零售新在哪里?
  4. 什么是python函数_Python之什么是函数
  5. mapperscan注解_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解
  6. 工业机器人用铸铁牌号_锻钢牌号表示方法你了解么?
  7. opencv-api filter2D
  8. LOJ 2743(洛谷 4365) 「九省联考 2018」秘密袭击——整体DP+插值思想
  9. 你真的需要那么多报表么?| 专栏
  10. smtp服务器组件,配置exchange Smtp服务器
  11. android wifi 抓sniffer log
  12. 网络操作系统与分布式操作系统的区别
  13. matlab数据取整方法小结
  14. RT-Thread定时器
  15. 电脑自带的cmd/Powershell连接远程服务器(实用技巧)
  16. SparkStreaming的背压机制
  17. html网页左侧背景,CSS设置html网页背景图片 CSS设置网页背景颜色
  18. 湖北武汉施工员报考排给水和电气的施工方法建筑七大员报考
  19. Mybatis的学习
  20. php语言的应用领域,探讨主要的PHP应用领域

热门文章

  1. 【C语言作业】一个数如果恰好等于它的因子之和,这个数就称为完整数。例如6的因子为1、2、3,而6=1+2+3,因此6是完数,编程找出1000之内的所有完整数
  2. 最大连通分支Giant Component
  3. python将二维数组升为一维数组 或 二维降为一维
  4. eclipse的复活
  5. Python3自然语言(NLTK)——语言大数据
  6. win10计算机安全模式怎么,Win10进入安全模式的多种方法
  7. Brainfuck与Ook!编程语言解析与解密
  8. java用线程做小球碰撞_多线程之碰撞小球
  9. VMware 虚拟机 Nat 模式无法上网
  10. HTML、js实现图片绕中心旋转