GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

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

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

2019 年 9 月 09 日

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

本文中的用于生成虚拟人脸图片的机器学习网络是 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 年 9 月 09 日 14:532460
用户头像

发布了 34 篇内容, 共 78415 次阅读, 收获喜欢 58 次。

关注

评论

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

淘宝的商品中心和类目体系是怎么设计的

邴越

阿里 模型 电商 架构· 业务

一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群

刘悦的技术博客

flask k8s kubectl Docker Desktop gunicorn

LeetCode题解:529. 扫雷游戏,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

滴滴夜莺二次开发全搞定

滴滴云

开源 监控 滴滴夜莺 夜莺监控 运维平台

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

阿里巴巴云原生

人工智能 容器 运维 云原生 k8s

原来这就是大厂的MySQL主从复制、读写分离及高可用方案!

云流

MySQL 数据库 架构

腾讯云TcaplusDB获新加坡MTCS最高等级安全认证

TcaplusDB

数据库 nosql 数据安全 数据管理 tencentdb

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

今年我读了四个开源项目的源码,来分享下心得

yes

源码 面试 后端

太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己

Crud的程序员

Java 程序员 架构

开放下载!解锁 Serverless 从入门到实战大“橙”就

阿里巴巴云原生

云计算 Linux Serverless 开发者 云原生

源码阅读范例!终于有人把JDK源码精髓收录成册,全网开源了

程序员小毕

Java 源码 程序员 jdk 面试

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用

图扑物联助力打造现代化智能港口

一只数据鲸鱼

物联网 工业4.0 组态软件 智慧港口

2021全新iOS学习方向

ios 逆向

零基础实现Java直播(一):集成

ZEGO即构

🌏 超详细 DNS 协议解析

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

基于SpringBoot开源项目JeeSite的持续交互介绍

Java王路飞

Java 程序员 面试 项目 springboot

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

阿里大佬手码的SpringCloud+Alibaba笔记开源了,堪称保姆式教学

Crud的程序员

spring 程序员 架构

基于SpringBoot的微服务架构与K8S容器部署实践

云流

Java 架构 微服务

架构师week10总结

Geek_xq

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

一周信创舆情观察(1.25~1.31)

统小信uos

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者社区

华为云

28天总结

张老蔫

28天写作

《iOS面试简历技巧解析》

ios 面试

徒手撸一个Spring Boot中的starter

田维常

springboot

PM必备自我管理工具整理

做人没有梦想和咸鱼有什么区别

项目管理 PM

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