首发地址:https://yq.aliyun.com/articles/324353

继卷积神经网络(CNN)掀起深度学习的浪潮后,生成对抗网络(GAN)逐渐成为了计算机视觉领域的另一重点关注的神经网络。本文作者于一年前开始第一次尝试使用GAN来完成一些实验,但都会存在一个问题,那就是模型很难训练以及模型的结果不好评估。尽管存在上述的这些问题,GAN仍然在深度学习领域中占据一席之地,这是因为GAN不同于经典的机器学习任务,它能够给许多问题提供新的解决思路。

操作人脸属性(年龄、性别、表情)是一个最著名的语义处理问题。目前市面上有许多这样的应用客户端,大都能够在拍照后更改面部表情。实现这一操作的方法多种多样,但在我看来,GAN是表现最优的方法。

上图选择的这些例子强调了一个问题——GAN也会改变无关的对象。如果你想裁剪一个图像部分,然后对部分图像进行修改后再粘贴回来,那样可能会与周围的背景无法很好地融合,此外这样操作起来也很困难。本文将针对这个问题,探讨解决方法和相关细节。

如何操作?

一种方法是训练另外一个分割模型,可以使用这个模型来生成一个分割掩码,并与生成图像块匹配(比如这篇文献)。当然,收集这样的标签是困难的,此外还必须假设应用语义变化后对象的形状不会发生改变。

另外的一种潜在方法是使用恒等损失函数约束生成器,迫使生成器减少变化。

本文尝试结合上述两种思想来设计一个实验模型,该模型具有以下特点:

  • 使用内置分段的生成器结构;
  • 通过分割掩码将原始图像与新的图像块混合;
  • 整个网络的训练过程是个端到端的过程;
  • 使用L1恒等损失约束生成器并减少改变;

上图是方案框图,期待看到该模型制作出完美的掩膜。

工作情况如何?

上图是挑选出来的一些结果样本,可以看到表现都还不错。在总的数据集中,超过80%及以上的图像表现都足够好。

此外,实验过程中还注意到了一些问题:

  • 如果图像中一个人已经是微笑时,那么它就不需要做出任何的改变;
  • 模型在处理一些极端的头角度时候表现较差;
  • 模型有时候对一些不相关部分仍进行了操作;

从上图可以看到,随着训练的进行,生成器能产生更多的变化。

在最初的迭代周期里,生成器会绘制出越来越逼真的图像。起初,脸部分割掩码近乎完美,但经过一段时间后,模型的结果开始产生显著变化,比如在上图中,模型改变了头发。

一些想法

对上述这种行为的直接感受是一旦生成器开始生成真实的面孔,它就迫使判别器忽略表情并集中于其他区域(微笑停止是主要特征)。

另外一种解释可能是判别器过拟合了(尽管训练集含有十万左右的图像),使用更强的正则化实验可能有助于更好地理解它。

在其它数据集(如马对斑马)上的实验表明了同样的注意力转移现象,生成器最终改变了整幅图像。

实现注意事项

本文实验中应该注意以下几点:

  • 使用CycleGAN方式训练模型;
  • 使用校准后的CelebA数据集
  • 使用PyTorch框架

使用3GB内存的GPU训练4到5天就可以重现本文实验结果(时间评估是基于GPU为GTX1080),本文项目地址:https://github.com/tgeorgy/mgan

作者信息

Georgiy Trofimov,机器学习工程师。

Linkedin: https://www.linkedin.com/in/georgtrof/

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《How to make 100,000 people smile?》,作者:Georgiy Trofimov,译者:海棠,审阅:。

文章为简译,更为详细的内容,请查看原文

翻译者: 海棠

Wechat:269970760
weibo:Uncle_LLD

Email:duanzhch@tju.edu.cn

微信公众号:AI科技时讯

程序员的魔法——用Masking GAN让100,000人都露出灿烂笑容相关推荐

  1. 程序员工资高,但为什么越来越多的人都不再愿意做程序员呢?

    为什么IT行业这么火,各种培训机构层出不穷.很大的一点就是,只需要在写字楼坐着,薪资也高. 有些人喜欢做程序员,是因为他们不光可以通过做这份工作拿到高工资,同时也可以实现他们对技术高境界的追求:而有的 ...

  2. 这些程序员搞笑段子,看了真的笑skr人!

    01.如何区分HTML和HTML5? 02.程序员为什么放弃斗争呢? 因为他没有兵(array)啊. 03.数据库SQL走进了一家NoSQL的酒吧,过了一会儿,它就走了出来.因为找不到桌子(table ...

  3. 一名叫谙忆的程序员在2021年的具体安排《打工人的那些事》

    一名叫谙忆的程序员在2021年的具体安排<打工人的那些事> 文章目录 概述 工作日 工作日每天需要开销的时间 杂事 正经事 周一 周二 周三 周四 周五 周末 每月5天的假期分配 站群维护 ...

  4. 程序员如何赚取人生的第一个 100 万

    每个节日的诞生都是为了让人花钱,比如双十一,比如情人节.圣诞节.但 CSDN 发起的 1024 程序员节,希望从更多角度来为程序员提供价值.比如,众多程序员更如何赚钱,如何创富. 在这样的背景下,CS ...

  5. 程序员如何赚到人生第一个 100 万

    每个节日的诞生都是为了让人花钱,比如双十一,比如情人节.圣诞节.但 CSDN 发起的 1024 程序员节,希望从更多角度来为程序员提供价值.比如,众多程序员更如何赚钱,如何创富. 在这样的背景下,CS ...

  6. 程序员十二时辰果真是够燃!一般人比不了啊~

    黑马程序员视频库 播妞微信号:mm7718mm 传智播客旗下互联网资讯.学习资源免费分享平台 <长安十二时辰>火了 8.6豆瓣高分 2019年度国产剧口碑榜首 节奏紧凑,贴合原著 电影质感 ...

  7. 程序员技术进阶手册(二)

    这次AI浪潮大火有三个原因:一是大数据的发展,二是计算能力的提高,三是深度学习的兴起.作为程序员,我们应该对深度学习多加关心.深度学习的概念源于人工神经网络的研究,如果追溯深度学习的概念还是要回到20 ...

  8. 无监督方法实现C++、Java、Python 代码转换,程序员:出了bug怎么办,两种语言都要看吗?...

    点击上方"视学算法",选择加"星标" 重磅干货,第一时间送达 本文转载自:机器之心  |  参与:魔王 Facebook 提出的无监督代码转换方法 TransC ...

  9. 某网友认为程序员来钱太快!动不动就百万年薪!国内多数人工作一辈子也拿不到百万年薪!程序员:别总盯着行业头部少数人!...

    都说程序员这个行业薪资高,这对程序员而言是一件好事,但其他人可能就会对此心生不满. 最近有人发帖吐槽程序员来钱太快,已经和国内普通工薪阶层脱节了.竟然有人抱怨入职华为九年多才120万,还有些人动不动就 ...

最新文章

  1. 深入浅出Java垃圾回收机制
  2. 非线性求解器Casadi使用简介
  3. 多晴转云h_晴转多云图标和多云图标的区别 求专业人员解释并给图
  4. 简单的Linux扫描仪应用:C语言实现
  5. 如何用12864液晶显示图片和绘制任意函数图象(打点)
  6. 学会理解并编辑/etc/fstab
  7. 数学建模学习笔记——蒙特卡洛模拟
  8. 蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744
  9. java中static关键字的解析
  10. Memetic Algorithm(文化基因算法)
  11. 有幸见到一朵花的绽放
  12. C语言中局部变量和全局变量 变量的存储类别
  13. oracle 层次查询判断叶子和根节点
  14. 使用组策略限制设备使用
  15. php中crypt怎么还原,PHP笔记 —— crypt方法
  16. Nginx源码阅读(gdb 调试nginx文件) -- 解析配置文件
  17. Tomcat session集群
  18. UE4 蓝图文档阅读笔记
  19. ipv6电视直播Android,关于高校电视直播(ipv4ipv6)
  20. Android画图方式

热门文章

  1. JavaScript label语句
  2. 工作中git 操作汇总
  3. MySQL中实现Oracle里面 rank()over ( PARTITION BY ORDER BY) 分类分组功能
  4. doT.js灵活运用之嵌入使用
  5. 分析死锁并处理_整理贴
  6. JQuery中ajax方法访问web服务
  7. fckeditor编辑器上传文件出现invalid Request问题解决
  8. spring 事件监听
  9. 平安京服务器维护不能打字,《决战!平安京》:玩的真的累,我真的是服了这破游戏的举报系统...
  10. pytorch 训练过程acc_pytorch入门练手:一个简单的CNN模型