写点什么

如何用机器学习生成拟真人脸图片?

——使用 DCGAN 技术生成真实人脸

  • 2019-09-09
  • 本文字数:1748 字

    阅读完需:约 6 分钟

如何用机器学习生成拟真人脸图片?

本文中的用于生成虚拟人脸图片的机器学习网络是 Generative Adversarial Networks(GAN)生成对抗网络中的一个应用,Deep Convolutional Generative Adversarial Networks (DCGAN)深度卷积生成式对抗网络。



首先来看一个问题,以下这些面孔中,有哪些是真实存在的?



他们是真的吗?


答案将在文末揭晓,首先先让我们看看如何利用对抗网络生成的虚拟人脸。


深度卷积生成式对抗网络(DCGANs)


作者另一篇文章,利用对抗网络完成卡通图片生成,包含了对抗网络 GAN 的一些基本知识,方便初学者查看。作者同时将这个研究项目分享到了GitHub,以及可以云端运行的Kaggle


本文中提到的人脸图片生成与卡通图片生成技术都是依据 Redford 等人在 2015 年发布的论文《深度卷积生成网络的无监管学习》。具体模型大致如下



作为机器学习过程中重要的一环,原始数据集,作者选用了CelebA中真实明星照片,并进一步进行裁剪加工为 128x128 大小、仅留下人脸部分的照片。


这项实验研究的目的可以描述为,通过机器学习的不断训练,使生成器与判别器形成一种类似“竞争”的关系,两个网络互相抗衡损失,最终到达一个完美的平衡点。那么对于下列损失函数来说,这样的平衡点在哪里呢?


def model_loss(input_real, input_z, output_channel_dim):    g_model = generator(input_z, output_channel_dim, True)
noisy_input_real = input_real + tf.random_normal(shape=tf.shape(input_real), mean=0.0, stddev=random.uniform(0.0, 0.1), dtype=tf.float32) d_model_real, d_logits_real = discriminator(noisy_input_real, reuse=False) d_model_fake, d_logits_fake = discriminator(g_model, reuse=True) d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_real, labels=tf.ones_like(d_model_real)*random.uniform(0.9, 1.0))) d_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake, labels=tf.zeros_like(d_model_fake))) d_loss = tf.reduce_mean(0.5 * (d_loss_real + d_loss_fake)) g_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake, labels=tf.ones_like(d_model_fake))) return d_loss, g_loss
复制代码


在理想的状态下,最终的均衡状态应满足:


  1. 生成的样本图像最够真实并且接近于真实图像分布。

  2. 判别器收敛到 0.5-50%的正确率使得判别器分辨不出样本是生成的还是真实的。

  3. 生成器收敛到 1.0-100%的正确率使得所有生成图片都足够真实,可以骗过判定器。


训练过程


根据最终状态可以得出以下的超参数:


DATASET_SIZE = 100000IMAGE_SIZE = 128NOISE_SIZE = 100LR_D = 0.00004LR_G = 0.0002BATCH_SIZE = 64EPOCHS = 60BETA1 = 0.5WEIGHT_INIT_STDDEV = 0.02EPSILON = 0.00005
复制代码


经过 60 个训练周期后,最终损失情况如下:



训练结果并不完美,但是依然可以看出判别器的损失接近于 0.5,而生成器的损失平均接近于 1.0,并且,随着训练周期的增加,生成的样本图片质量也有显著的提高。这 60 个训练周期是在特斯拉 K80 GPU(Kaggle 云端)上进行的,总共运行时长约为 100 小时。


结论


最终生成的的高保真的样本图片如下,



大部分的人脸看起来拟真度都相当的高,只有一少部分显得有些畸形,在眼镜等一些细节上也有些瑕疵,但总体来说,在考虑训练过程中资源有限的情况下,它的表现还是非常令人满意的。


展望未来


通过这个人脸生成的研究项目,可以证明使用生成对抗网络生成逼真的人脸图片是绝对有可能的。即使是在这种训练资源有限的情况下,还是可以生成足以以假乱真的图片。那么在更大、更先进的研究实验室里,完全可以生成质量更高、分辨率更清晰的图片。


题外话,科技的发展让这些拟真度非常高的虚假人脸生成更加容易,在面对这些面孔的时候我们也应该抱有更高的警戒心。


回到文初的问题,这几张图片全部都是由尖端科技 StyleGAN 生成的虚假照片。


原文链接:


Face Generator - Generating Artificial Faces with Machine Learning


2019-09-09 14:534101
用户头像

发布了 233 篇内容, 共 158.4 次阅读, 收获喜欢 227 次。

关注

评论

发布
暂无评论
发现更多内容

【设计模式-前端】单例模式深刻理解和实现

归子莫

前端 设计模式 js 8月月更

运动健康服务场景事件订阅,让应用推送“更懂用户”

HarmonyOS SDK

兴盛优选:时序数据如何高效处理?

TDengine

数据库 tdengine 时序数据库

Netty进阶 -- WebSocket长连接开发

Bug终结者

8月月更

从滴滴被罚款事件思考企业数据治理问题

墨天轮

大数据 滴滴 数据治理 数据安全

CCF大会腾源会专场即将召开,聚焦基础软件与开发语言未来发展

腾源会

开源 腾源会

SAP ABAP 里存在 Java List 这种集合工具类么?CL_OBJECT_COLLECTION 了解一下

汪子熙

设计模式 迭代器模式 SAP abap 8月月更

Go-Excelize API源码阅读(七)—— CopySheet(from, to int)

Regan Yue

开源 源码阅读 8月日更 8月月更

ABAP应用服务器的HTTP响应状态码(Status Code)

汪子熙

前端开发 HTTP web开发 SAP 8月月更

如何解决 “主节点故障恢复的自动化” 问题?

八点半的Bruce.D

AS北京站如约而至!发布参会感想有机会获得官方周边奖励

InfoQ写作社区官方

热门活动 ArchSummit

阿里云 Hologres助力好未来网校实时数仓降本增效

阿里云大数据AI技术

数据分析 数据治理 数据安全

面试官:Redis Zset的实现为什么用跳表,而不用平衡树?

程序员小毕

Java redis 程序员 面试 后端

分析 Flink 任务如何超过 YARN 容器内存限制

移动云大数据

Flink 平台

开源一夏 | 使用 CSS 的水波文本动画(免费代码)

海拥(haiyong.site)

开源 8月月更

有了阿里这5份Java架构师手册,学习起来轻松多了!

冉然学Java

Java 算法 java面试 性能调优实战 并发架构设计思想

python工程化配置方式

芥末拌个饭吧

8月月更

深度解析佛萨奇,Forsage魔豹联盟系统开发方案(源码部署)

开发微hkkf5566

巧用自定义函数,文本控件秒变高速缓存

明道云

如何设计一组会出现死锁(Deadlock)的ABAP程序

汪子熙

操作系统 SAP abap 8月月更 ABAP死锁

开源一夏 |卷王必备学习的MyBatis-Plus用法~

叶秋学长

开源 mybaits 8月月更

易观分析:银行零售业务实现智能化营销还需突破七大关键点

易观分析

零售 银行 智能化营销

突破次元壁垒,让身边的玩偶手办在屏幕上动起来!

HarmonyOS SDK

阿里架构师首发:80W字微服务架构手册GitHub上杀疯了

冉然学Java

Java 编程 程序员 架构 微服务

从普通程序员晋升到架构师需要掌握哪些技术,这份37W字Java高性能架构用13个章节彻底讲明白了

Java永远的神

Java 程序员 面试 程序人生 架构师

7月月更开奖啦!快来看看你中奖了吗?

InfoQ写作社区官方

热门活动 7月月更

基于 TLS 1.3的百度安全通信协议 bdtls 介绍

百度Geek说

安全

TiSpark 原理之下推丨TiDB 工具分享

PingCAP

TiDB

使用脚手架 快速开发 React组件 npm包 (基于TSDX)

HullQin

CSS JavaScript html 前端 8月月更

直播预告 | Authing 如何打造云原生 SaaS 产品架构?

Authing

如何用机器学习生成拟真人脸图片?_AI&大模型_Greg Surma_InfoQ精选文章