做为程序员,不会换脸软件怎么能忍?下面教你们徒手使用 Deepfakes 换脸。python

如何使用 Deepfakes 换脸?git

获取 deepfakes 工具包程序员

git clone https://github.com/deepfakes/faceswap.git

补齐依赖包:github

pip install tqdm

pip install cv2

pip install opencv-contrib-python

pip install dlib

pip install keras

pip install tensorflow

pip install tensorflow-gpu(如机器带有gpu)

pip install face_recognition

收集样本算法

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

另一我的的样本是凯瑞穆里根,因为实在是找图片麻烦,因此直接截取了《The Great Gatsby》里的视频,而后用 ffmpeg 转化为图片,大概有 70 张的样子。框架

面部抓取ide

在收集完样本后,使用以下命令对样本图片进行面部抓取:工具

./faceswap.py extract –i input_folder/ –o output_folder/

作这个的缘由是由于咱们主要关注的是换脸,因此只须要获取脸部的特征,其余环境因素对换脸的影响并不大。

在面部抓取的过程完成后,咱们能够获得全部脸部图片。在此,咱们能够人工筛选一下不合适的样本(以下图中的 49_1.jpg),将之去除。

面部检测算法 HOG

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

严格来讲,其实 HOG 是一个特征,是一种在计算机视觉和图像处理中用来进行物体检测的特征描述因子。HOG 特征结合 SVM 分类器已经被普遍应用于图像识别中。

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

①首先使用黑白来表示一个图片,以此简化这个过程(由于咱们并不须要颜色数据来检测一个脸部)。

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

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

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

若是咱们直接分析这些像素点(也就是按色彩的方式分析),那么那些很是亮的点和很是暗的点,它们的值(RGB 值)确定有很是大的差异。

可是由于咱们在这只关注明亮度改变的方向,因此由有色图和黑白图最终获得的结果都是同样的,这样能够极大简化问题解决的过程。

④可是保存全部这些梯度会是一个较为消耗存储的过程,因此咱们将整个图片分红多个小方块,而且计算里面有多少不一样的梯度。

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

⑤当计算到一个图片的 HOG 特征后,可使用这个特征来对经过训练大量图片得出的 HOG 特征进行比对。若是类似度超过某个阈值,则认为面部被检测到。

开始训练

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

./faceswap.py train -A faceA_folder/ -B faceB_folder -m models/

其中 -m 指定被保存的 Models 所在的文件夹。也能够在命令里加上 -p 参数开启 Preview 模式。

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

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

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

转换人脸

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

./faceswap.py –i input_images_folder/ -o output_images_folder/ -m models/

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

ffmpeg –i video.mp4 output/video-frame-%d.png

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

ffmpeg –i video-frame-%0d.png -c:v libx264 -vf “fps=25, format=yuv420p” out.mp4

下面是两个换脸图(样本 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 的表情。

deepfakes怎么用_手把手教你使用 Deepfakes 换脸相关推荐

  1. 软件_手把手教vscode配置c++,python开发环境

    原创:软件_手把手教vscode配置c++,python开发环境 之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为 ...

  2. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  3. centos7 nginx安装_手把手教你PHP(一) Centos7上的LEMP配置

    相信有些刚刚接触web开发的小伙伴对于服务器上搭建web环境还不太了解,今天手把手教大家搭建lemp的线上环境,您需要做如下一些准备: 阿里云或者其他服务商的云主机一台 云主机已安装Centos 7 ...

  4. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  5. 永磁同步电机驱动视频教程_矢量控制_手把手教你写代码_无感FOC_有感FOC_状态观测器_卡尔曼滤波_慧驱动

    手把手教你驱动永磁同步电机_视频教程 前言 大家在刚开始搞永磁同步电机控制的时候,大部分都是先接触的芯片厂商提供的方案,然后查资料,买芯片厂商的电机套件,买回来后,通电启动,电机顺利的转起来了,然后再 ...

  6. python进行数据预测_手把手教你用Python进行时间序列分解和预测

    原标题:手把手教你用Python进行时间序列分解和预测 作者:Mohit Sharma 翻译:数据派THU-王闯(Chuck) 预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃.时间序列 ...

  7. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  8. python 词云手把手_手把手教你生成炫酷的词云

    前言: 话说,在这个大数据时代,获取信息显得极为容易,可正是如此,我们想要对信息进行直观地了解难度就大了.Excel是一个很好的数据可视化方法,不过有时候我们的数据来源可能并不是一张或者多张Excel ...

  9. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

最新文章

  1. Tensorflow— MNIST数据集分类简单版本
  2. tmux centos 6.3
  3. Fatal error in launcher: Unable to create process using ‘“d:\python3.6\python.exe“ “D:\python3.6\Sc
  4. 互联网1分钟 | 1017
  5. ​超越Transformer!AAAI 2021最佳论文:高效长序列预测模型
  6. mongo oplog 整理
  7. 自定义View 进度条
  8. JavaFX官方教程(六)之带有JavaFX CSS的花式表单
  9. 内存泄漏 和 内存溢出
  10. 机器学习实战(四)逻辑回归LR(Logistic Regression)
  11. 第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链)
  12. comet4j简单应用、文档教程
  13. 磁盘不见了只剩一个c盘_电脑硬盘分区不见了怎么恢复数据?
  14. javascript延时调用函数
  15. 103000大写加零吗_关于支票金额大写规范写零的问题,比如1008712元,100万后要不要加零...
  16. 波士顿大学计算机硕士排名,波士顿大学计算机工程硕士排名第28(2020年TFE Times排名)...
  17. Leetcode575:分糖果
  18. 改变窗口最大化的尺寸
  19. word回车后间距太大_word编辑按回车换行上下间距好大怎么回事
  20. itop使用TF卡烧写uboot

热门文章

  1. 英伟达黄仁勋发布全球最大GPU,超300斤,汽车后备箱大小
  2. 如何用java打印1-100_在java中使用10个线程打印1到100
  3. 2021年R1快开门式压力容器操作最新解析及R1快开门式压力容器操作证考试
  4. 匮乏即是富足,自律产生喜悦_当惊喜与喜悦分开时
  5. 使用mdadm创建raid mdadm命令详解
  6. 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
  7. 车联网各领域头部企业排行榜
  8. 教程 | 阿克曼结构移动机器人的gazebo仿真(二)
  9. 刘可-寂寞才说爱 试听+下载+歌词
  10. 由于找不到VCRUNTIME140.dll,无法继续执行代码问题解决