前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Deepfakes 换脸教程!

Deepfakes 换脸教程!

作者头像
业余草
发布于 2019-09-06 01:21:54
发布于 2019-09-06 01:21:54
5.2K0
举报
文章被收录于专栏:业余草业余草

这两天,ZAO 太火了。而它的背后却是 Deepfakes,作为程序员,我们很有必要来体验一把 Deepfakes !

这篇文章,就简单的写一下 Deepfakes 的使用教程!感兴趣的,赶紧来上手体验吧!

获取deepfakes工具包

补齐依赖包

收集样本

这里我选用的是新垣结衣的样本,费了好半天,下了100张图片:

另外一个人的样本是凯瑞穆里根,由于实在是找图片麻烦,所以直接截取了《The Great Gatsby》里的视频,然后用ffmpeg转化为图片,大概有70张的样子。

面部抓取

在收集完样本后,使用 ./faceswap.py extract –i input_folder/ –o output_folder/ 命令对样本图片进行面部抓取。

做这个的原因是因为我们主要关注的是换脸,所以只需要获取脸部的特征,其他环境因素对换脸的影响并不大。

在面部抓取的过程完成后,我们可以得到所有脸部图片。在此,我们可以人工筛选一下不合适的样本(如下图中的49_1.jpg),将之去除。

面部检测算法HOG

这里简单提一下脸部特征提取算法HOG(Histogram of Oriented Gradient)。

严格来说,其实HOG是一个特征,是一种在计算机视觉图像处理中用来进行物体检测的特征描述因子。

HOG特征结合SVM分类器已经被广泛应用于图像识别中。

此处脸部检测的一个简单过程如下:

a、首先使用黑白来表示一个图片,以此简化这个过程(因为我们并不需要颜色数据来检测一个脸部)。

b、然后依次扫描图片上的每一个像素点 。对每个像素点,找到与它直接相邻的像素点。然后找出这个点周围暗度变化的方向。

例如下图所示,这个点周围由明到暗的方向为从左下角到右上角,所以它的梯度方向为如下箭头所示

c、在上一个步骤完成后,一个图片里所有的像素点均可由一个对应的梯度表示。这些箭头表示了整个图片里由明到暗的一个趋势。

如果我们直接分析这些像素点(也就是按色彩的方式分析),那么那些非常亮的点和非常暗的点,它们的值(RGB值)肯定有非常大的差别。

但是因为我们在这只关注明亮度改变的方向,所以有有色图和黑白图最终得到的结果都是一样的,这样可以极大简化问题解决的过程。

d、但是保存所有这些梯度会是一个较为消耗存储的过程,所以我们将整个图片分成多个小方块,并且计算里面有多少不同的梯度。

然后我们使用相同梯度最多的方向来表示这个小方块的梯度方向。这样可以将原图片转化为一个非常简单的表现方式,并以一种较简单的方法抓取到面部的基本结构。

e、当计算到一个图片的HOG特征后,可以使用这个特征来对通过训练大量图片得出的HOG特征进行比对。如果相似度超过某个阈值,则认为面部被检测到。

开始训练

在提取两个人脸的面部信息后,直接使用下面命令开始进行模型的训练:

其中 -m 指定被保存的models所在的文件夹。也可以在命令里加上-p 参数开启preview模式。

在训练过程中,可以随时键入Enter停止训练,模型会保存在目标文件夹。

训练使用的深度学习框架是tensorflow,它提供了保存checkpoint 的机制(当然代码里必须用上)。

在停止训练后,以后也可以随时使用上面的命令读取之前训练得出的权重参数,并继续训练。

转换人脸

在训练完模型后(损失值较低),可以使用以下命令对目标图进行换脸:

此处的例子是找的一个视频,所以我们可以先用下面的命令将一个视频以一个固定频率转化为图片:

然后执行转换人脸操作。最后将转换后的人脸图片集合,合成一个视频:

下面是两个换脸图(样本A 110张图片,样本B 70张图片,训练时间6小时):

嗯…效果不咋样… 建议大家可以增大样本量,并延长训练时间。

转换人脸的过程

下面简单的聊一下转换人脸的过程。

这里用到了AutoEncoder(一种卷积神经网络),它会根据输入图片,重构这个图片(也就是根据这个图片再生成这个图片):

这里 AutoEncoder模型做的是:首先使用encoder将一个图片进行处理(卷积神经网络抽取特征),以一种压缩的方式来表示这个图片。然后decoder将这个图片还原。

具体在deepfakes中,它用了一个encoder和两个decoder。在训练的部分,其实它训练了两个神经网络,两个神经网络都共用一个encoder,但是均有不同的decoder。

首先encoder将一个图片转化为面部特征(通过卷积神经网络抽取面部的细节特征)。然后decoder 通过这个面部特征数据,将图片还原。

这里有一个error function(loss function)来判断这个转换的好坏程度,模型训练的过程就是最小化这个loss function(value)的过程。

第一个网络只训练图片A,第二个网络只训练图片B。encoder学习如何将一个图片转化为面部特征值。

decoder A用于学习如何通过面部特征值重构图片A,decoder B用于学习如何通过面部特征值重构图片B。

所以在训练时,我们会将两个图片均送入同一个encoder,但是用两个不同的decoder还原图片。

这样最后我们用图片B获取到的脸,使用encoder抽取特征,再使用A的decoder还原,便会得到A的脸,B的表情。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
安全测试工具(连载2)
AWVS即Acunetix WVS,全称Acunetix Web Vulnerability Scanner,它是一款常用的WEB应用程序安全测试工具,该工具可以对任何可通过WEB浏览器访问的和遵循HTTP/HTTPS规则的WEB站点和WEB应用程序进行扫描。本书介绍的BurpSuite版本为Version:11.0.170951158。
顾翔
2019/12/12
1K0
安全测试工具(连载2)
使用Rational AppScan应对Web应用攻击
  互联网的发展历史也可以说是攻击与防护不断交织发展的过程。目前,全球因特网用户已达 13.5 亿,用户利用网络进行购物、银行转账支付和各种软件下载,企业用户更是依赖于互联网构建他们的核心业务,对此,Web 安全性已经提高一个空前的高度。
全栈程序员站长
2022/08/27
5290
一起聊聊工作中的功能安全测试
Tech    导读   本文旨在站在测试开发工程师的角度将功能安全测试归入日常测试中,简单剖析了功能安全测试与功能测试的异同点以及SDL中各环节的职责所在,同时分析了针对不同的安全场景如何进行功能安全测试用例的设计。通过本文,读者可以对SDL有一个简单明了的理解,针对SDL中各个环节,产研测的职责和关注点是什么都能有一个明确的概念。通过阅读本文,可以重点关注如何结合实际功能安全点设计符合需求的功能安全测试用例。 00前言    测试开发工程师一直想将安全测试真正融入测试工作中,在测试工作
京东技术
2022/03/04
1.2K0
热饭面试复习:【安全测试相关】-完
安全测试假设问题产生是由于黑客行为,有极高的针对性;常规测试相关的只有脏数据,属于用户不小心造成的。
我去热饭
2022/05/19
3870
如何做好软件安全测试?
在做测试过程中,我们的软件产品在安全性方面考虑了多少?应该如何测评一个软件到底有多安全? 这个软件因为涉及客户商业上重要的信息资料,因此用户关心的核心问题始终围绕“这个软件安全吗”。一个由于设计导致的
企鹅号小编
2018/02/07
4.6K0
如何做好软件安全测试?
漏洞扫描工具AppScan安装及功能简单使用
AppScan是一款Web应用安全测试工具,采用黑盒测试的方式,可以扫描常见的web应用安全漏洞。
网络安全自修室
2022/12/06
4.5K1
漏洞扫描工具AppScan安装及功能简单使用
web安全测试必须注意的五个方面
随着互联网的飞速发展,web应用在软件开发中所扮演的角色变得越来越重要,同时,web应用遭受着格外多的安全攻击,其原因在于,现在的网站以及在网站上运行的应用在某种意义上来说,它是所有公司或者组织的虚拟正门,所以比较容易遭受到攻击,存在安全隐患。
宜信技术学院
2019/06/28
5320
『渗透测试基础』| 什么是渗透测试?有哪些常用方法?如何开展?测试工具有哪些?优势在哪里?
虫无涯
2023/12/04
1.7K2
面试中经常问的安全测试问题
  我刚开始接触安全测试的时候,想的最多就说那种在昏暗的灯光下,带着神秘面具的黑客,对着键盘噼里啪啦一顿猛如虎的操作,然后长舒一口气,最后来了句yes,完美收工!
周辰晨
2021/12/01
6160
面试中经常问的安全测试问题
11款常用的安全测试工具
一款安全漏洞扫描工具,支持Web和移动,现在安全测试做漏洞扫描非常适用,它相当于是"探索"和"测试"的过程,最终生成很直观的测试报告,有助于研发人员分析和修复通常安全测试工具用这个,扫描一些安全漏洞,用起来比较方便,网上资料比较多,适合很多测试同学用,资料广阔,大家可以尝试下。
测试邦
2019/09/16
10.1K0
菜鸟浅谈——web安全测试
2)在挖漏洞挣外快时,注意不要使用安全扫描或暴力破解软件对上线网站进行扫描或攻击。不要对上线网站造成破坏,不要去获取网站的数据库信息等。否则等待的不是money,而是牢狱啦~~
顾翔
2020/09/23
1.4K0
菜鸟浅谈——web安全测试
安全测试工具(连载3)
RationalAppScan(简称 AppScan)是一个产品家族,它包括众多的应用安全扫描产品,从开发阶段的源代码扫描的AppScan source edition,到针对WEB应用进行快速扫描的AppScan standard edition,以及进行安全管理和汇总整合的 AppScan enterprise Edition 等。我们经常说的AppScan是指的桌面版本的AppScan,即AppScan standard edition。其安装在Windows操作系统上,可以对网站等Web应用进行自动化的应用安全扫描和测试。本书介绍的AppScan版本为V9.0.3.10。
顾翔
2019/12/12
9900
安全测试工具(连载3)
web安全测试_web测试的主要测试内容
Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求
全栈程序员站长
2022/09/29
1.2K0
web安全测试_web测试的主要测试内容
安全测试工具(连载1)
在本书上卷中介绍了软件安全测试,本章介绍软件安全测试工具。软件安全测试工具不像性能测试工具,类型比较多,由于每个产品的功能比较多,本书仅对关键用法进行介绍,进一步的使用方法请读者参考产品的官方文档或网站。
顾翔
2019/12/12
1.1K0
安全测试工具(连载1)
ChatGPT回答关于软件测试问题
软件测试是指对计算机软件进行验证和验证,以确保其符合预期的质量标准。软件测试的主要目的是发现软件中的错误和缺陷,并确保软件在发布之前能够正常运行。
顾翔
2024/09/10
1440
ChatGPT回答关于软件测试问题
Appscan工具之环境搭建
它是由IBM公司开发的一款在web应用程序渗透测试舞台上使用最广泛的工具,有助于专业安全人员进行Web应用程序自动化脆弱性评估。AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-injection)、跨站点脚本攻击(cross-site scripting)、缓冲区溢出(buffer overflow)及最新的 Flash/Flex 应用及 Web 2.0 应用曝露等方面安全漏洞的扫描。接下来,让我们进入appscan的里程
用户6367961
2019/09/29
2.6K0
安全测试工具sqlmap
在周四的测试运维试听课程中,芒果给大家介绍了安全测试工具sqlmap的使用,这里我们来做个小总结。
Criss@陈磊
2019/12/05
1.7K0
安全测试工具sqlmap
聊一聊接口的安全测试如何进行的?
接口安全测试主要是确保API或Web服务在传输和存储数据时的安全性,防止数据泄露、篡改或未经授权的访问。
漫谈测试
2025/05/20
1880
聊一聊接口的安全测试如何进行的?
软件测试之安全怎么做?
扫描?在很多人的眼中,做安全的就是整天拿个工具在哪里做扫描操作,使用各种不同的工具做扫描。是的,扫描是安全测试的很重要的一部分,扫描可以快速有效的发现问题。扫描工具的易用性、方便性决定了重要地位。但是扫描工具的局限性、程序的不够灵活等缺点也是显而易见的。不管是扫描报告的分析、漏洞的深度挖掘、测试的组织等等的工作都离不开安全测试人员,所以只能说扫描工具减轻了测试人员的工作量,是安全测试的一种手段。
小黑同学
2020/08/17
2.3K0
安全测试 —— 你了解WEB安全测试吗?
  之前在知乎上回答了一个朋友的提问,是关于安全测试相关面试题的,在回答之余让我也不禁想起了自己还在做软测执行的日子。趁着兴起,和团队里的安全测试小伙伴交流了一下,写下了这篇文章,也希望能帮助到更多正在安全测试道路上前行的小伙伴。
Austin_zhai
2023/10/18
8690
安全测试 —— 你了解WEB安全测试吗?
推荐阅读
相关推荐
安全测试工具(连载2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档