点赞再看,支持一下!微信公众号搜索【JackCui-AI】关注一个在互联网摸爬滚打的潜行者

一、人脸

人脸乃人之门面,在这看「颜」的时代,「颜」即正义。

出门前,都会特意看看自己的脸打扮得是否满意,而没有人会特意看看自己的脚趾窝是否干净。

生活中,人脸是人们关注的重点。技术上,人脸同样也是研究者关心的话题。

因为人脸,包含了太多有价值的信息。

颜值高低,相貌美丑,喜怒哀乐,爱恨情仇,尽在其中。

人脸识别、人脸检测、情绪分析、人脸搜索、人脸比对、颜值评分,这琳琅满目的人脸技术,逐渐走进人们的生活。

百变的人脸,也是百变的人生。

仪表堂堂也好,样貌平平也罢,每个人脸的背后,都有一段段岁月,一段段风光,还有那独一无二的人生。

但,你有没有想过,你看到的一张人脸,可能从未存在于这个世界。

「This person does not exist.」

二、ALAE

高清「人脸生成」算法,你知道多少?

曾经风靡一时的 StyleGAN,给人们带来很多震撼,逼真的肖像,你根本分不清,哪张图片是算法生成的。

看一下 StyleGAN v2 人脸生成的效果:

这些人脸,都是算法随机生成的。

有人还特意用 StyleGAN v2 做了一个酷炫的网站,随机生成百变的人脸。

你每刷新一次网页,它都会给你一张随机生成的人脸肖像。

URL:https://thispersondoesnotexist.com/

StyleGAN 很酷炫,但它并不是今天的主角。

最近,刚刚开源,并被 CVPR 2020 顶级会议收录的 ALAE 才是。

ALAE 是一种新型自编码器,全名叫「Adversarial Latent Autoencoder」。

它与 StyleGAN 一样,都是一种无监督方法。不同的是,ALAE 采用的是自编码器(AE),StyleGAN 采用的是生成对抗网络(GAN)。

ALAE 不仅可以随机生成肖像,它甚至可以编辑生成肖像的人脸属性。

你可以改变图像中人脸的性别、年龄、笑容、发质,也可以改变他们的性感程度、丰满程度、嘴唇和鼻子的大小等等。

没错,这是 ALAE 生成的人脸,我们可以调整肖像的性别,看下她的“亲兄弟”可能张什么样?

你甚至可以“控制”她的喜怒,秒变严肃脸或大笑脸。

更妙的是,秒变年龄,看看这美貌容颜。

当然,这属性也不能调节的太“过”,容易出“事故”。

我“裂开”了!

想玩 ALAE 吗?

算法原理、环境搭建、算法测试,一条龙服务,尽在下文!

三、算法原理

想要了解 ALAE,那必须先知道什么是自编码器

自编码器是一种能够通过无监督学习,学到输入数据高效表示的人工神经网络。

输入数据的这一高效表示称为「编码」,其维度一般远小于输入数据,使得自编码器可用于降维。

更重要的是,自编码器可作为强大的「特征检测器」,应用于深度神经网络的预训练。

此外,自编码器还可以随机生成与训练数据类似的数据,这被称作「生成模型」。

编码(就是输入数据的高效表示)是自编码器在一些限制条件下学习恒等函数的副产品。

举个高效的数据表示的例子:

下面有两组数字,哪组更容易记忆呢?

  • 40, 27, 25, 36, 81, 57, 10, 73, 19, 68
  • 50, 25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20

乍一看可能觉得第一行数字更容易记忆,毕竟更短

但仔细观察就会发现,第二组数字是有规律的:偶数后面是其二分之一,奇数后面是其三倍加一(这就是著名的hailstone sequence)。

如果识别出了这一模式,第二组数据只需要记住这两个规则、第一个数字、以及序列长度。如果你的记忆能力超强,可以记住很长的随机数字序列,那你可能就不会去关心一组数字是否存在规律了。

所以我们要对自编码器增加约束来强制它去探索数据中的模式

记忆、感知、和模式匹配的关系在 1970s 早期就被 William Chase 和 Herbert Simon 研究过。

他们发现国际象棋大师观察棋盘5秒,就能记住所有棋子的位置,而常人是无法办到的。

但棋子的摆放必须是实战中的棋局(也就是棋子存在规则,就像第二组数字),棋子随机摆放可不行(就像第一组数字)。

象棋大师并不是记忆力优于我们,而是经验丰富,很擅于识别象棋模式,从而高效地记忆棋局。

和棋手的记忆模式类似,一个自编码器接收输入,将其转换成高效的内部表示,然后再输出输入数据的类似物。

自编码器通常包括两部分:encoder(也称为识别网络)将输入转换成内部表示,decoder(也称为生成网络)将内部表示转换成输出。

如下图所示,左侧为象棋大师的记忆模式,右侧为一个简单的自编码器。

ALAE 就是基于这种原理的新型自编码器。

ALAE 将生成器 G 和判别器 D 分别分解成两个网络:F、G 和 E、D。

同时,参考 StyleGAN,设计了 StyleALAE,也就是我们用于生成人物头像的那块网络结构。

要想更详细的了解 ALAE 的原理,那就得“啃”论文了。

论文地址:https://arxiv.org/pdf/2004.04467.pdf

这里就不堆公式了,容易看困。

四、环境搭建

ALAE 完全开源,可以放心“食用”。

项目地址:https://github.com/podgorskiy/ALAE

可以直接下载 ALAE 项目的 ZIP 包。

或者使用 git clone 下载。

git clone https://github.com/podgorskiy/ALAE

源码下载完成后,开始配置开发环境。

环境搭建,强烈建议使用 Anaconda,无论你是做爬虫也好,还是做深度学习算法也罢,选它准没错!

Anaconda 是一个针对 Python 的开源的包、环境管理器,用了它,安装各种第三方库,一切都变得很简单,再也不必为 pip 安装缺少依赖而头疼。

人生苦短,我用 conda 。

Anaconda 的使用,这里就不多介绍了,毕竟本文不是针对 conda 使用的教程,不懂的读者,可以搜搜 Anaconda 的安装和使用教程。

回归正题。

ALAE 对机器有一定的要求。

首先,你的机器必须有 GPU,并配置好 GUDA 和 cuDNN。

安装 CUDA 需要去官网,找到 NVIDIA 官网,找匹配机器显卡的 CUDA 安装。

CUDA 下载地址:https://developer.nvidia.com/cuda-downloads

比如,我的系统是 Windows,显卡是 RTX 2060 super。那么,我就可以下载并安装 CUDA10。

安装好 CUDA 后,可以在 Anaconda 环境中,直接安装 cuDNN。

conda install cudnn

很简单是吧?

需要注意的是,ALAE 运行需要图形界面,所以如果是 Linux 系统,需要是 Ubuntu 这类有操作界面的。

一个标准的开源项目,都有会 requirements.txt,这里有你需要安装的依赖说明。

ALAE 的依赖:

可以看到,这个项目是使用 pytorch 1.3.0 以上的版本,还用了很多 numpy、sklearn 这些常规库。

这些都很好安装,只需要使用 conda install 安装即可,也可以用 pip install 安装。

这里面有一个“坑”,就是安装 bimpy,bimpy 是 ALAE 运行的图形界面,需要一些系统环境的依赖。

bimpy 项目地址:https://github.com/podgorskiy/bimpy

Windows 需要安装 MSVC 14.0,我已放到我的百度云(提取码:vjw9 ):

链接:https://pan.baidu.com/s/1BbM5jeTc2b7OxYzsxQK3mw

安装好 MSVC 14.0 后,就可以顺利安装 bimpy。

Linux 直接使用 apt-get 安装即可:

sudo apt-get install mesa-common-dev libxi-dev libxinerama-dev libxrandr-dev libxcursor-dev

环境配置完成,就可以开始测试了!

五、算法测试

算法学习,从做好「调包侠」开始。

环境搭建、算法跑通,是「调包侠」的基本素养。

深度学习算法,怎么能少得了 「pre-trained model」。

想要跑效果,还得下载开源的预训练模型。

如果配置了 VPN,采用全局模式,可以直接从 Google Drive 或 备用源下载预训练模型。

在项目工程目录里,直接运行如下命令:

python training_artifacts/download_all.py

可以看下这个下载代码:

可以看到,一共需要下载 7 个 model。如果不能从 Google Drive 下载,会通过 亚马逊 AWS 服务器下载。

但遗憾的是,国内从 AWS 下载可能仅 10 KB。

我把这些 model 上传到了我的百度云(提取码:in5l):

链接:https://pan.baidu.com/s/19GFKLTWu00jB3Qp4lsyAYw

有百度云会员的读者,可以下载。

一共有 4 种预训练模型,bedroom、celeba、celeba-hq256、ffhq,这是针对 4 种数据集的模型。

预训练模型下载好,放到 training_artifacts 下对应的文件夹内即可。

至此,预训练模型准备完毕。

在工程目录,使用如下命令,即可运行项目:

python interactive_demo.py -c ffhq

-c 后接的参数就是选择哪个模型,一共有 bedroom、celeba、celeba-hq256、ffhq 四种可选。

运行之后,你可能看到这样的结果:

结果就是一小条,这是 bimpy 窗口大小的设置问题。

运行一次 interactive_demo.py 之后,工程目录下会生成一个 imgui.ini 文件。

修改 Size 大小到 1500,1024 即可。

运行界面说明:

选择的图片是输入图片,可以理解为「初始化模板」,ALAE 算法会根据「初始化模板」的特征,随机生成一个人物图片。

现有的模板库里,都是外国人,咱们可以自己选一些中国名人的头像,裁剪成 1024 * 1024 的图片。

比如我将刘亦菲的头像,放到了 dataset_samples/faces/realign1024x1024 目录下。

这样算法就可以用刘亦菲的头像作为「初始化模板」,随机生成一个人物图片。

点击「Display Recontruction」生成人物头像。

没看出来哪里像,竟然还有点怪怪的。

而巨石强森,就很神似!有木有!

六、最后

  • 本文算是这个系列的第一篇文章,后续会持续更新更多的,好玩的 AI 项目。
  • 算法原理、环境搭建、算法测试,一条龙服务,快来关注吧!
  • ALAE 算法如果再结合「换脸技术」,想想都刺激!

点赞再看,支持一下!微信公众号搜索【JackCui-AI】关注一个在互联网摸爬滚打的潜行者

百变人脸,趣味容颜,ALAE 人脸玩出新高度!相关推荐

  1. matlab从flove,Matlab玩出新高度,变身表白女友神器_善良995的博客-CSDN博客

    原文作者:善良995 原文标题:Matlab玩出新高度,变身表白女友神器 发布时间:2021-03-19 13:36:02 Matlab还可以这样玩儿?每逢节日愁哭程序员,不知道该送什么给女朋友,在这 ...

  2. 用Python玩百变人脸!趣味容颜,ALAE 人脸玩出新高度!

    1 人脸 人脸乃人之门面,在这看「颜」的时代,「颜」即正义. 出门前,都会特意看看自己的脸打扮得是否满意,而没有人会特意看看自己的脚趾窝是否干净. 生活中,人脸是人们关注的重点.技术上,人脸同样也是研 ...

  3. 百度微笑起航将人脸识别玩出新高度

    2017年1月14日,今年春运序幕缓缓拉开之时,乘坐国航CA1415.CA1416两架航班的乘客发现了一些特别的变化,这两架名为"微笑中国号"的航班上,增加了15台人工智能互动装置 ...

  4. 5620亿参数,最大多模态模型控制机器人,谷歌把具身智能玩出新高度

    关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 机器人越来越像人了!谷歌等的这项 ...

  5. 实人认证玩出新高度,给千年老城注入新生科技力量...

    嵊州,虽然只是浙江省中部偏东地区的一个县级市,但是早在秦汉时这里就开始建县称剡,唐初就曾设立嵊州,至今已经有2150多年历史.这个古老的城市不仅是书法大圣王羲之的故乡,更是中国第二大剧种越剧的起源地, ...

  6. Snapseed玩出新高度,分分钟让你成p图大神! 转

    (,,・∀・)ノ゛嗨呀 小阔爱们! 不知道大家记不记得~ 上周我们的副条发了一篇: <看过他的照片,我才知道什么是创意摄影> 德国仅22岁超现实主义艺术家Justin Peters 创造了 ...

  7. 人人可用的在线抠图,还是AI自动化的那种!北大校友的算法被玩出新高度

    杨净 发自 凹非寺  量子位 报道 | 公众号 QbitAI 现在人人可试可玩的图像分割来了. 在线API,只需输入图片网址,即可自动删除目标背景. 就拿今天凌晨刚夺得欧冠冠军的拜仁来试试手- 然后就 ...

  8. opencv 图像 抠图 算法_人人可用的在线抠图,AI自动化的那种!北大校友算法玩出新高度...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在人人可试可玩的图像分割来了. 在线API,只需输入图片网址,即可自动删除目标背景. 就拿今天凌晨刚夺得欧冠冠军的拜仁来试试手- 然后就变 ...

  9. nginx 转发_除了转发和负载均衡,nginx又一次让他玩出新高度

    点击上方"Java学习之道",选择"关注"公众号 每天10:24,干货准时送达! 来源:https://dwz.cn/JY7SVlZf Nginx应该是现在最火 ...

  10. 北大校友的算法被玩出新高度,AI自动化在线抠图

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 报道 | 公众号 QbitAI AI博士笔记系列推荐 ...

最新文章

  1. 【C语言】复合逻辑运算
  2. 李倩星r语言实战_《基于R的统计分析与数据挖掘》教学大纲
  3. 消息队列重要机制讲解以及MQ设计思路(kafka、rabbitmq、rocketmq)
  4. android进程守护 失效,保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护 1...
  5. [转载] Java基础之构造方法(函数)何时被调用
  6. 物流货代公司管理系统
  7. 洛谷P1274-魔术数字游戏
  8. 初步了解python
  9. MATLAB2021下载安装图文教程
  10. 位图(标量图)与矢量图区别
  11. 外卖小程序邀请入口获取推广路径
  12. 程序员零下20度雪地求婚快冻伤 女友却崩溃了
  13. 【给初学者,大佬见笑】100%成功UEFI安装双硬盘单系统Ubuntu最合理分区安装指南+ubuntu20.04安装
  14. 实测Maven上传jar包到私服的方法归纳
  15. Win10 文件夹删不掉,提示需要来自XXX的权限才能对此文件夹进行更改
  16. filter hid_HID调试工具
  17. 贵大和云大计算机,云南大学和贵州大学哪个实力更强?有哪些优势学科?
  18. 在ThinkPad X280加装M.2硬盘上安装 Ubuntu 18.04.3 填坑记录
  19. JAVA街机雷电,经典街机雷电移植大作――正版雷电
  20. 文献3 基于改进型YOLOv3的SAR图像舰船目标检测

热门文章

  1. 2020-03-13 MySQL 8 绿色安装
  2. Java基础-Java语言简介
  3. 【嵌入式模块】DS18B20 数字温度传感器
  4. 遗传算法求解多约束、多类型车辆、多目标优化的车辆路径问题
  5. Composer Laravel 下载安装
  6. 【uart篇】synopsys uart vip配置使用
  7. VC维(Vapnik–Chervonenkis dimension)
  8. pyside6(1):Qt 资源系统和qrc文件使用
  9. 网络知识:路由器常见故障分析及处理方法
  10. webshell及木马详解