deepfake入门了解

author author     2023-05-05     706

关键词:

参考技术A Deepfake,是由“deep machine learning”(深度机器学习)和“fake photo”(假照片)组合而成,本质是一种深度学习模型在图像合成、替换领域的技术框架,属于深度图像生成模型的一次成功应用。

其实该技术最早版本在2018年初就被提出了,当时在构建模型的时候使用了Encoder-Decoder自编解码架构,在测试阶段通过将任意扭曲的人脸进行还原,整个过程包含了:获取正常人脸照片=>扭曲变换人脸照片=> Encoder编码向量 => Decoder解码向量 => 还原正常人脸照片五个步骤。而ZAO在Encoder-Decoder的框架之上,又引入了GAN(生成对抗网络)技术,不但降低了同等条件下的模型参数量和模型复杂度,同时使生成的人脸更为清晰,大大降低了对原图的依赖,显著提升了换脸的效果,而且基于GAN技术的Deepfake改进版已经在Github开源。

尽管「Deepfake」这类应用非常吸引人,但落到实处还是会引发很多的问题,不论是伦理还是隐私。后面我们将介绍生成对抗网络和变分自编码器两种换脸的解决方案,也许大规模应用还能进一步催生效果更好、算力更少的解决方案。

直观而言,GAN 这类生成模型可以生成非常逼真的人脸图像,那么现在需要将某个人的特点迁移到另一张人脸上,这就需要更多的模块来定义需要迁移的位置与特点。

总体上,「Deepfakes」换脸主要分为以下过程:

其中人脸定位已经非常成熟了,一般定位算法可以生成人脸的特征点,例如左右眉毛、鼻子、嘴和下巴等等。人脸转换也就是采用 GAN 或 VAE 等生成模型,它的目标是生成拥有 A 表情的 B 脸。最后的图像拼接则是将人脸融合原图的背景,从而达到只改变人脸的效果。

当然,如果生成 ZAO 这种小视频,那么还需要一帧帧地处理图像,然后再将处理后的结果重新拼接成小视频。

人脸定位也就是抽取原人脸的表情特征,这些特征点大致描述了人脸的器官分布。我们可以直接通过 dlib 和 OpenCV 等主流的工具包直接抽取,但它们一般采用了经典的 HOG 的脸部标记算法。这种算法根据像素亮度差确定一些「箭头」,从而找到人脸显著的特征点。

如上是一些人脸特征点,如果我们想换脸的表情更加真实和准确,那么也可以使用目前主流的人脸识别算法,它利用卷及网络能生成更完美的特征点。但是这类深度模型需要更大的算力,尤其是在处理高分辨率图像时。

首先对于变分自编码器(VAE),我们知道它希望通过无监督的方式将人脸图像压缩到短向量,再由短向量恢复到人脸图像。这样短向量就包含了人脸图像的主要信息,例如该向量的元素可能表示人脸肤色、眉毛位置、眼睛大小等等。

所以如果我们用某个编码器学习所有人,那么它就能学习到人脸的共性;如果再用某个解码器学习特定的某个人,那么就能学习到他的特性。简单而言,当我们用通用编码器编码人脸 A,再使用特定解码器 B 解码隐藏向量,那么就能生成出拥有 A 的人脸表情,但却是 B 人脸的图像。

这就是 VAE 的解决方案,对于 GAN 来说,它会利用抽取的人脸特征点,然后根据生成器生成对应的目标人脸图像。这时候,编码器同样也会将真实的目标人脸编码,并和生成的目标人脸混合在一起。因此,如果判别器不能区分根据某人特征点生成的人脸和真实人脸有什么区别,那么生成的人脸就非常真实了。

如上所示为论文 Few-Shot Adversarial Learning of Realistic Neural Talking Head Models 的解决方案,它只需要几张目标人脸图,就能根据原人脸的特征点生成极其逼真的效果。

知道了如何制作换脸视频,我们还要掌握一些识别换脸视频的技术,因为这些换脸技术给大众带来欢乐的同时,也在被不少人滥用。这种滥用不仅给公众人物造成了困扰,甚至还威胁到了普通大众。

由于用来训练神经网络的图像数据往往是睁着眼睛的,因此 Deepfake 视频中人物的眨眼或不眨眼的方式通常是不自然的。

去年,奥尔巴尼大学(University of Albany)的研究人员发表了一篇论文,提出了一种可以检测这种不自然眨眼的技术。有趣的是,这项技术使用的也是深度学习,和制作假视频的技术是一样的。研究人员发现,利用眨眼视频训练出的神经网络可以在视频中定位眨眼片段,找出非自然眨眼运动的一系列帧。结果发现,Deepfake 视频中人物的眨眼不符合正常的生理学规律,由此可以识别出哪些是原始视频,哪些是 Deepfakes 视频。

每个人都有独特的头部运动(如开始陈述事实时点头)和面部表情(如表达观点时得意得笑),但 Deepfakes 中人物的头部动作和面部表情都是原人物而非目标人物的。

基于此,加州大学伯克利分校的研究者提出了一种检测换脸的 AI 算法。其基本原理是:利用一个人的头部动作和面部表情视频训练一个神经网络,然后拿这个神经网络去检测另一个视频中的人物动作和表情是否属于这个人。模型准确率达到 92%。

(a)原始人物;(b,c)分别是 Deepfake 人物。

论文地址: http://openaccess.thecvf.com/content_CVPRW_2019/papers/Media%20Forensics/Agarwal_Protecting_World_Leaders_Against_Deep_Fakes_CVPRW_2019_paper.pdf

制作换脸视频和识别换脸就像一场猫鼠游戏,造假技术日新月异,打假技术也在不断迭代。但仅在技术层面打击这一技术的滥用是不够的,我们还需要法律的支持。

参考链接: https://www.jiqizhixin.com/articles/2019-08-31-3?from=synced&keyword=deepfake

如何使用deepfakes换脸

如何使用Deepfakes换脸 1.获取deepfakes工具包gitclonehttps://github.com/deepfakes/faceswap.git 2.补齐依赖包:pipinstalltqdmpipinstallcv2pipinstallopencv-contrib-pythonpipinstalldlibpipinstallkeraspipinstallten 查看详情

deepfake/anti-deepfake综述探究(代码片段)

...om/zstar1003/xdu-homework/tree/master/%E8%AE%A4%E7%9F%A5%E8%AE%A1%E7%AE%971Deepfake的来源2017年12月,一位名为“Deepfakes”的用户在全球流量排名第四的国际互联 查看详情

可以提高deepfacelab(deepfake)合成最终视频速度的方法(代码片段)

DeepFaceLab相关文章一:《简单介绍DeepFaceLab(DeepFake)的使用以及容易被忽略的事项》二:《继续聊聊DeepFaceLab(DeepFake)不断演进的2.0版本》三:《如何翻译DeepFaceLab(DeepFake)的交互式合成器》... 查看详情

深度学习系列49:deepfaker

1.效果展示一般地,deepfake可划分为如下四类:重现(reenactment),替换(replace),编辑(editing)和合成(synthesis)。针对人脸的4种类别展示如下:重现和替换的区别是:重现相当于安吉拉宝贝上阵,但... 查看详情

深度学习系列48:deepfaker

1.效果展示一般地,deepfake可划分为如下四类:重现(reenactment),替换(replace),编辑(editing)和合成(synthesis)。针对人脸的4种类别展示如下:重现和替换的区别是:重现相当于安吉拉宝贝上阵,但... 查看详情

谷歌禁止deepfake项目研究

...0c;谷歌悄悄地禁止了其Colaboratory(Colab)服务上的deepfake项目,结束了以深度造假大规模利用资源的情况。Colab是一种在线计算资源,允许研究人员直接通过浏览器运行Python代码,同时使用免费的计算资源,... 查看详情

deepfake换脸真假难辨,马斯克分克已伪装成功

...欢迎的社交媒体平台之一TikTok上,现仍有源源不断的Deepfake视频正在冒出来。Deepfake是对拍摄对象的面部或身体进行了数字化改造,让用户完全变成了另一个人。当然,一般改造完都是相对出名的人。很引人注意的是... 查看详情

apacheflink入门,了解apacheflink

文章目录ApacheFlink入门,了解ApacheFlink1、如何通俗易懂的解释Flink2、Flink3、应用场景4、ApacheFlink特性5、ApacheFlink的分层APIApacheFlink入门,了解ApacheFlink1、如何通俗易懂的解释FlinkFlink主要在协议层面做了各类协议的转换,降低了各... 查看详情

deepfake换脸诈骗怎么破?让他侧个身

Pine发自凹非寺量子位|公众号QbitAIDeepFake被用到了电信诈骗里,该怎么破?让他转过头,看看他的侧脸就好了。DeepFake一直以来都存在着这样一个漏洞:当伪造的人脸完全侧着(转90°)时,真实性就会急... 查看详情

了解和入门注解的应用

1.@Deprecated标示过时的方法publicclassAnnotationTest{publicstaticvoidmain(String[]args){AnnotationTest.sayHello();}@DeprecatedpublicstaticvoidsayHello(){System.out.println("sayHello");}}[email protected 查看详情

egret入门了解

0.前言  这个星期没有什么事做,就想找点技术了解一下。前段时间看过Egret,用来开发HTML5小游戏。一开始以为很麻烦的,但是经过这两天了解了一下,如果用这个游戏引擎来开发一些简单的游戏,还是蛮方便的。为什么会了... 查看详情

ai通过眼睛的反光度,来识别是否deepfake换脸

编译|禾木木出品| AI科技大本营(ID:rgznai100)Deepfake是一种AI换脸工具,现被滥用,从虚假宣传活动到插入一些违法内容,并且篡改后的图像是难以被检测到的。一种新的AI工具提供了一项令人惊讶的简单方法... 查看详情

ansible入门了解

18年的第一篇博客,正好项目中使用ansible,公司新来的人越来越多,需要周五做个分享,正好在自己的博客记录一下。 查看详情

ansible入门了解

18年的第一篇博客,正好项目中使用ansible,公司新来的人越来越多,需要周五做个分享,正好在自己的博客记录一下。 查看详情

html学习一(入门了解)

基础部分---------------------------------一:简介HTML是用来描述网页的一种语言。HTML指的是超文本标记语言(HyperTextMarkupLanguage)HTML不是一种编程语言,而是一种标记语言(markuplanguage)标... 查看详情

了解web—web前端入门(htmlcssjs)(代码片段)

Web入门(浏览器、协议、服务器、标准)通过对Web的了解,入门前端技术。本文主要是通过对浏览器的认识,了解相应背景与入门Web技术编程。文章目录Web入门(浏览器、协议、服务器、标准)1.Web概念概... 查看详情

mybatis入门基础了解

1.开发工具IJIDEA   IJ:IntelliJ:智能的             IDEA:联想craetefromachetype从骨架/模板/原型创建      Artif 查看详情

云原生(三十九)|kubernetes篇之kustomize入门了解(代码片段)

文章目录kustomize入门了解一、kustomize是什么二、用法1、文件结构2、文件内容3、使用4、注意事项5、高级-环境分离 kustomize入门了解一、kustomize是什么Kubernetes本地的配置管理工具,相当于轻量版的helm。官网地址:Kustomize-... 查看详情