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

简介:

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

64e1583235d1cc54121d5212b58b0e7203fed78a

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

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

81efd219c499e843eb5c545ac971b19a8e110da9

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

如何操作?

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

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

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

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

aae4af211ef6ccab71a6b6001afe2306e89fb729

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

工作情况如何?

97db4ee2dcb96c785b9f33ce3cb50c624f90628f

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

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

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

2a3c4ef8984ebf95ce0e1993ba0efd222ed6047e

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

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

一些想法

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

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

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

实现注意事项

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

  • 使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 

Email:duanzhch@tju.edu.cn

微信公众号:AI科技时讯

157f33dddfc596ede3681e0a2a0e7068dc288cc1

目录
相关文章
|
消息中间件 存储 监控
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
959 0
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
|
SQL 存储 NoSQL
CQL基本语法介绍|学习笔记
快速学习CQL:CQL基本语法介绍
CQL基本语法介绍|学习笔记
|
IDE Java 开发工具
解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (D:/JAVA)
解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (D:/JAVA)
1237 0
|
10月前
|
传感器 供应链 数据挖掘
量子计算与环境保护:可持续发展的工具
量子计算作为21世纪的前沿技术,不仅在信息技术领域引发革命,还在环境保护和可持续发展方面展现了巨大潜力。本文探讨了量子计算在模拟复杂环境系统、优化能源利用、监测环境变化等方面的应用,以及面临的挑战和未来展望,揭示了量子计算在推动绿色转型中的关键作用。
|
关系型数据库 MySQL Linux
error: Failed dependencies: libncurses.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 libtinfo.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 如何解决?
error: Failed dependencies: libncurses.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 libtinfo.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 如何解决?
1874 3
|
消息中间件 缓存 前端开发
评论系统如何不崩溃?揭开海量评论背后的技术秘密
小米介绍了一种高效处理海量新闻评论的技术方案。面对突发新闻带来的评论潮,通过采用消息队列异步入库、读写分离以及热点缓存等技术,不仅能有效减轻数据库压力,还能保证用户快速查看最新评论。消息队列如Kafka或RabbitMQ可缓存评论请求,后台异步处理入库,避免数据库过载。读写分离则通过主从数据库架构分散读取负载,配合热点评论的缓存机制进一步提升访问速度。这套架构确保了系统的稳定性和响应速度,适用于高并发的评论处理场景。
219 0
|
存储 缓存 存储控制器
FMC&FSMC
FMC&FSMC
329 0
|
数据采集 机器学习/深度学习 算法
数据治理之参考数据与主数据管理
最近凑巧参与了一次某行业的业务共创会议,期间讨论到了主数据系统,还有我们该如何参与主数据系统建设的话题。说实话,我一直以为我不会有机会参与到主数据与参考数据系统的话题中去,所以,又去把DAMA的书籍翻了翻。顺便也重新思考了一下主数据与参考数据这个数据治理的课题。
3077 1
数据治理之参考数据与主数据管理
|
Web App开发 JavaScript API
监听Dom大小变化之ResizeObserver
在以前如果我们想要监听`dom`元素的大小变化,我们是没有对应的 api 可以使用的,在此之前我们都是只能监听浏览器窗口的大小变化,于是衍生出很多的 hack 方法,比如 resize 事件
1432 0
|
Linux Shell
CentOS7下重建grub并恢复系统的故障案例
CentOS7下重建grub并恢复系统的故障案例
926 0
CentOS7下重建grub并恢复系统的故障案例

热门文章

最新文章