AI换脸技术再创新高度,DeepMind发布的VQ-VAE二代算法有多厉害?

作者 | beyondma

转载自CSDN网站

近日DeepMind发布VQ-VAE-2算法,也就是之前VQ-VAE算法2代,这个算法从感观效果上来看比生成对抗神经网络(GAN)的来得更加真实,堪称AI换脸界的大杀器,如果我不说,相信读者也很难想象到上面几幅人脸图像都是AI自动生成出来的。

不过如此重要的论文,笔者还没看到专业性很强的解读,那么笔者就将VQ-VAE-2算法分为VQ,VAE,VQVAE2三部分来介绍原理,权当抛砖引玉。

什么是VQ

VQ是vector quantisationk(一般译作矢量量化)的缩写,他的主要思想是通过k-means算法进行聚类,将相近的点全部近似点簇的重心,从而在不损失太多信息的情况下对输入进行压缩。

k-means聚类算法:我在之前博客《终于把软微BING搜索-SPTAG算法的原理搞清了(https://blog.csdn.net/BEYONDMA/article/details/90578111)

也曾经介绍过k-means算法。算法先随机指定选取K个点做为初始聚集的簇心,分别计算每个样本点到 K个簇核心的余弦距离,找到距离最近的核心点,将它归属到对应的簇,所有点都归属到簇之后, M个点就分为了 K个簇。之后重新计算每个簇的重心,将其定为新的“核心”,重复上述步骤直到新核心不再改变为止或者改变距离达到一定值后中止。那么最终的K个簇就是最终的聚类结果。

k-means算法试图最小化失真,其定义为每个观测向量与其主质心之间距离的平方之和。通过迭代地将观测结果重新分类为星系团,并重新计算中心体,直到得到一个中心体稳定的构型,从而达到最小值。

那么VQ实际就是先把输入的图像进行-means聚类,完成后只保留最终留下的K个簇质心,簇上的其它点全部近似化为质心来进行存储,用这样的方式来进行压缩。

什么是VAE

VAE是variational auto encoding(一般译作变分自动编码),不过笔者感觉译为隐变更自动编码可能更贴切。VAE的主要思想是他认为图像、声音等信息是由多个隐变量(latent arrtibute),比如对于人的面部图像来说就由笑容,肤色、发色、发型等变量决定,那么VAE网络就先把图像中的笑容,肤色、发色、发型等变量识别出来,然后将这些变量传递给解码器生成图像。具体工作原理图如下:

VQ-VAE1代算法整体的工作方式

简单来讲VQ-VAE1代算法,在Encoder层计算latent arrtibute(隐向量)的向量族z,然后传递给隐层,在隐层按照刚刚所述的VQ算法进行压缩,然后输出给Decoder进行生成,其具体原理见下图。

如果要进行换脸,那么只要将人脸A的Encoder进行编码计算latent arrtibute(隐向量),然后输出给FaceB的Decoder进行生成即可完成。

VQ-VAE2代算法的更新

VQ-VAE2代其实总体和1代差别不大,主要将latent arrtibute(隐向量)分为top和bottom两层,其中top层记录整体细节主要是明亮度、色调等信息,而bottom层主要记录细节信息,从实际效果上看甚至包括了发丝、瞳孔等超级细微的层面。具体原理图如下:

VQ-VAE-2将AI换脸的技术提升到了真假难辩的高度

我在之前的博客《终于把AI换脸的原理搞清了》(https://blog.csdn.net/BEYONDMA/article/details/88365203)曾经介绍过deepfakes等项目的原理,不过之前那些换脸算法对于细节的把握程度远远达不到VQ-VAE-2的程度,从DeepMind的论文中可以看到,其生成效果之好、分辨率之高已经到达了刷新了笔者的认知极限。所以笔者最后也再次呼吁,不要将AI换脸技术用在歪路上。

附件VAVAE2论文原址:

https://arxiv.org/pdf/1906.00446.pdf

原文链接:

https://blog.csdn.net/BEYONDMA/article/details/91129700

本文分享自微信公众号 - AI科技大本营(rgznai100)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

SAP S/4HANA生产订单的BAdI增强点之Initialize方法

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog....

11530
来自专栏Jerry的SAP技术分享

代码重构那些事儿

大家好,这是我今天演讲的目录,分Java,JavaScript,ABAP三门编程语言来讲述。

11050
来自专栏Jerry的SAP技术分享

遇到npm install的错误,多比较比较npm的版本

如果从github上clone一个项目下来,同样的npm install命令,在你同事那里工作,但是你本地不行,除了检查目录C:\Users<user>\App...

20740
来自专栏Jerry的SAP技术分享

关于Tomcat如何处理Open Redirect的问题

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

14860
来自专栏开发之途

重拾Kotlin(10)-类型的检查与转换

在许多情况下,不需要在 Kotlin 中使用显式转换操作符,因为编译器跟踪不可变值的 is 检查以及显式转换,并在需要时自动插入安全的转换

7240
来自专栏Jerry的SAP技术分享

SAP Hybris代码里随处可见的@Scope("tenant")是什么意思

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

15120
来自专栏Jerry的SAP技术分享

一些使用javap反编译出来的结果分析

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

14840
来自专栏Android技术分享

Android笔记:在原生App中嵌入Flutter

Terminal进入到项目根目录,执行flutter create -t module ‘module名字’例如:flutter create -t modul...

22440
来自专栏Jerry的SAP技术分享

SAP ABAP老司机平时是怎么做代码审查的

In line 27:strange callstack.Why from API layer directly to local class level? ...

12620
来自专栏Jerry的SAP技术分享

关于SAP UI5 CRM Reuse Fiori应用的代码审查

If we open the target folder: What is exactly the usage of these four parts?

6920

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励