【CVPR Oral】TensorFlow实现StarGAN代码全部开源,1天训练完

原文:https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2652020138&idx=3&sn=736c1774c0de2a116d55a11b5dbdb4d9&chksm=f121e95bc656604de7ad4f57140a0ad5d9680f06cc264ab44e8572c4877e45c0544f0820f03a&mpshare=1&scene=23&srcid=0613SE7Zf8Vj9sAiSDEOTipn#rd


新智元编译

来源:github

作者:Junho Kim  编译:肖琴

【新智元导读】StarGAN 是去年 11 月由香港科技大学、新泽西大学和韩国大学等机构的研究人员提出的一个图像风格迁移模型,是一种可以在同一个模型中进行多个图像领域之间的风格转换的对抗生成方法。近日,有研究人员将 StarGAN 在 TensorFlow 上实现的全部代码开源,相关论文获 CVPR 2018 Oral。

开源地址:https://github.com/taki0112/StarGAN-Tensorflow

StarGAN 是去年 11 月由香港科技大学、新泽西大学和韩国大学等机构的研究人员提出的一个图像风格迁移模型,是一种可以在同一个模型中进行多个图像领域之间的风格转换的对抗生成方法。近日,有研究人员将 StarGAN 在 TensorFlow 上实现的全部代码开源,相关论文获 CVPR 2018 Oral。

开源地址:https://github.com/taki0112/StarGAN-Tensorflow

作者:Junho Kim

看代码之前,我们先来回顾一下 StarGAN 的原始论文。

StarGAN 对抗生成网络实现多领域图像变换

图像到图像转换(image-to-image translation)这个任务是指改变给定图像的某一方面,例如,将人的面部表情从微笑改变为皱眉。在引入生成对抗网络(GAN)之后,这项任务有了显着的改进,包括可以改变头发颜色,改变风景图像的季节等等。

给定来自两个不同领域的训练数据,这些模型将学习如何将图像从一个域转换到另一个域。我们将属性(attribute)定义为图像中固有的有意义的特征,例如头发颜色,性别或年龄等,并且将属性值(attribute value)表示为属性的一个特定值,例如头发颜色的属性值可以是黑色 / 金色 / 棕色,性别的属性值是男性 / 女性。我们进一步将域(domain)表示为共享相同属性值的一组图像。例如,女性的图像可以代表一个 domain,男性的图像代表另一个 domain。

一些图像数据集带有多个标签属性。例如,CelebA 数据集包含 40 个与头发颜色、性别和年龄等面部特征相关的标签,RaFD 数据集有 8 个面部表情标签,如 “高兴”、“愤怒”、“悲伤” 等。这些设置使我们能够执行更有趣的任务,即多域图像到图像转换(multi-domain image-to-image translation),即根据来自多个域的属性改变图像。

图 1:通过从 RaFD 数据集学习迁移知识,应用到 CelebA 的多域图像到图像转换结果。第一列和第六列显示输入图像,其余列是产生的 StarGAN 图像。注意,图像是由一个单一模型网络生成的,面部表情标签如生气、高兴、恐惧是从 RaFD 学习的,而不是来自 CelebA。

在图 1 中,前 5 列显示了一个 CelebA 的图像是如何根据 4 个域(“金发”、“性别”、“年龄” 和 “白皮肤”)进行转换。我们可以进一步扩展到训练来自不同数据集的多个域,例如联合训练 CelebA 和 RaFD 图像,使用在 RaFD 上训练的特征来改变 CelebA 图像的面部表情,如图 1 最右边的列所示。

然而,现有模型在这种多域图像转换任务中既效率低,效果也不好。它们的低效性是因为在学习 k 个域之间的所有映射时,必须训练 k(k-1)个生成器。图 2 说明了如何训练 12 个不同的生成器网络以在 4 个不同的域中转换图像。

图 2: StarGAN 模型与其他跨域模型的比较。(a)为处理多个域,应该在每两个域之间都建立跨域模型。(b)StarGAN 用单个生成器学习多域之间的映射。该图表示连接多个域的拓扑图。

为了解决这类问题,我们提出了 StarGAN,这是一个能够学习多个域之间映射的生成对抗网络。如图 2(b) 所示,我们的模型接受多个域的训练数据,仅使用一个生成器就可以学习所有可用域之间的映射。

这个想法很简单。我们的模型不是学习固定的转换(例如,将黑头发变成金色头发),而是将图像和域信息作为输入,学习将输入的图像灵活地转换为相应的域。我们使用一个标签来表示域信息。在训练过程中,我们随机生成一个目标域标签,并训练模型将输入图像转换为目标域。这样,我们可以控制域标签并在测试阶段将图像转换为任何想要的域。

我们还介绍了一种简单但有效的方法,通过在域标签中添加一个掩码向量(mask vector)来实现不同数据集域之间的联合训练。我们提出的方法可以确保模型忽略未知的标签,并关注特定数据集提供的标签。这样,我模型就可以很好地完成任务,比如利用从 RaFD 中学到的特征合成 CelebA 图像的面部表情,如图 1 最右边的列所示。据我们所知,这是第一个在不同的数据集上成功地完成多域图像转换的工作。

总结而言,这个研究的贡献如下:

  • 提出 StarGAN,这是一个新的生成对抗网络,只使用一个生成器和一个鉴别器来学习多个域之间的映射,能有效地利用所有域的图像进行训练。

  • 演示了如何通过使用 mask vector 来学习多个数据集之间的多域图像转换,使 StarGAN 能够控制所有可用的域标签。

  • 使用 StarGAN 在面部属性转换和面部表情合成任务提供了定性和定量的结果,优于 baseline 模型

图 3:StarGAN 的概观,包含两个模块:一个鉴别器 D 和一个生成器 G。(a)D 学习区分真实图像和假图像,并将真实图像分类到相应的域。(b)G 接受图像和目标域标签作为输入并生成假图像。 (c)G 尝试在给定原始域标签的情况下,从假图像中重建原始图像。(d)G 尝试生成与真实图像非常像的假图像,并通过 D 将其分类为目标域。

实验结果

图4:CelebA 数据集上面部属性转换的结果对凯勒巴数据集。第1列显示输入图像,后4列显示单个属性转换的结果,最右边的列显示多个属性的转换结果。H:头发的颜色;G:性别;A:年龄

图5:RaFD 数据集上面部表情合成的结果

图6:StarGAN-SNG 和 StarGAN-JNT 在 CelebA 数据集上的面部表情合成结果。

TensorFlow模型的实现

要求:

  • Tensorflow 1.8

  • Python 3.6

> python download.py celebA

下载数据集

> python download.py celebA

训练

  • python main.py --phase train

测试

  • python main.py --phase test

  • celebA 测试图像和你想要的图像同时运行

预训练模型

  • 下载 celebA_checkpoint

结果 (128x128, wgan-gp)

女性

男性

预训练权重:https://drive.google.com/open?id=1ezwtU1O_rxgNXgJaHcAynVX8KjMt0Ua-

训练时间:少于 1 天

硬件:GTX 1080Ti

【CVPR Oral】TensorFlow实现StarGAN代码全部开源,1天训练完相关推荐

  1. CVPR 2019 Oral 亮风台提出端到端投影光学补偿算法,代码已开源

    点击我爱计算机视觉置顶,更快获取CVML新技术 导读:图像增强是一个历久弥新的研究方向,大多数计算机视觉学习者最开始接触的图像平滑.去噪.锐化是增强,现在研究比较多的去雾.去雨雪.暗光图像恢复也是增强 ...

  2. CVPR 2020 Oral 汇总:论文 / 代码 / 解读(更新中)

    在2月24日,CVPR 2020 公布接收论文结果公布,从 6656 篇有效投稿中录取了 1470 篇论文,录取率约为 22%.3月13日,CVPR Oral结果公布了.有大佬已经分享了自己的工作,本 ...

  3. 9行代码提高少样本学习泛化能力! ICLR2021 Oral,代码已开源

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/344531704 介绍一篇我们刚刚发表在ICLR2021 Oral上的一篇少样本学习工作,简单有效 ...

  4. CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 近年来,双摄像头成像系统在智能手机.自动驾驶等领域取得了广泛的应用. 近日,来自国防科技大学等单位的学者提出了新型双目超分辨算法,充分利用了左右图的信息 ...

  5. ECCV18 Oral | MVSNet: 非结构化多视点三维重建网络(高精度高效率,代码已开源)...

    (欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 编者按:本文来自ECCV2018选为Oral的论文,来自香港科技大学和Altizure公司的研究团队提出了一种既高 ...

  6. 2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...

    十三 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 看到这张恐龙化石的动态图片,你肯定会认为是用视频截出来的吧? 然而真相却是--完全由静态图片生成! 没错,而且还是不用3D建模的那种. ...

  7. python 3d图如何改变视角_2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...

    原标题:2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源 原标题:2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源 来源:量子位 O ...

  8. 强烈推荐!最好用的《机器学习实用指南》第二版终于来了,代码已开源!

    早在去年的这个时候,红色石头就发文给大家推荐过一本非常棒的机器学习实用指南书籍<Hands-On Machine Learning with Scikit-Learn & TensorF ...

  9. 声称代码已开源却迟迟没更新,网友等了好几个月,最终一怒之下把作者挂网上...

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI "代码拖更"的经历,不知你遇到过没? 就是你看上了一篇论文或者项目,作者声称代码会开源或者已开源,但你左等右等,每天查查 ...

最新文章

  1. java 句子拆分_java – 将段落拆分为单个句子.我在这里覆盖了所有的基地吗?
  2. FINDCONTROL的详细介绍
  3. Velocity配置优化
  4. html页面头部里的meta
  5. 《卓有成效的程序员》----读书笔记一
  6. 攻防世界-web-bug-从0到1的解题历程writeup
  7. 初识Mysql(part18)--我需要知道的4个关于联结的小知识点
  8. oracle linux6 u盘安装,Oracle Enterprise Linux/Redhat Linux 6.0 U盘安装方法
  9. 火狐查cookie_Firefox 65默认会阻止跟踪Cookie
  10. mongodb实验报告_Dropwizard,MongoDB和Gradle实验
  11. JAVA实现美团电影价格抓取(附代码)
  12. php 修改图像大小,PHP图像大小调整
  13. BayaiM__MySQL错误对照表
  14. 斐波那契数列的递归与迭代写法比较
  15. mathtype 公式字体
  16. 获取当前user的Session状态
  17. bzoj3315:[Usaco2013 Nov]Pogo-Cow
  18. 《挑战程序设计竞赛》 读后感
  19. 1.8Linux下的软件管理
  20. 使用a标签下载文件,解决页面跳转的问题

热门文章

  1. 基于 linux 平台的 libpcap 源代码分析
  2. xampp mysql mac_如何在mac上用终端打开XAMPP自带的MySQL
  3. 大学python选择题题库及答案_大学慕课用Python玩转数据题库及答案
  4. 计算机基础课教学心得,计算机基础教学心得
  5. 云服务器怎么拷贝和删除文件,怎样给云服务器拷贝文件
  6. html footer 布局,详解CSS经典布局之Sticky footer布局
  7. css 图表饼图,仅具有CSS的百分比饼图
  8. centos 6.4 postfix mysql_postfix+dovecot+mysql+extmail安装笔记(基于CentOS 6)
  9. 一款让你轻松在IDEA画图的插件!
  10. Java + Vue 实现的在线考试系统