安装完OpenFaceswap之后,是不是就迫不及待的想要“见证奇迹”了呢? 都说磨刀不误砍柴工。开始之前请先做一个准备。然后大致了解一下换脸的过程

换脸基本步骤是:

  1. 把视频切成很多图片
  2. 把图片中的人脸提取出来
  3. 通过人脸来训练模型
  4. 通过模型对图片换脸
  5. 把换脸后的图片合成视频

具体的操作过程如下:

1.创建素材目录workspace

创建一个叫workspace的目录用来放你的视频图片等素材。 所谓换脸,就是把张三的脸放到李四头上,或者反过来。所以你需要在workspace下面在创建两个目录A和B。用来放两个人的素材。

最后的目录结构大致如下:

A 里面放的是被换脸的人,A目录下应该有一个被换脸人的视频 FBB.mp4

B 放的是将要去替换别人的人。B目录下应该有一个换人的视频FMT.mp4

Face 目录是从视频里提取的人脸。

Model 为训练的模型目录

Result 为结果目录,替换完的图片和视频都会在这里。

这个目录结构完全可以自己来命名,为了方便讲解和验证请大家也创建一个这样的目录结构。

其实,FBB.mp4和FTM.mp4为换脸的视频素材,必须事先准备好。你可以自己准备,也可以用我从网上收集的两个视频。

网盘地址:

2.  A的人脸截取

点击 VIDEO A 跳出一个串口,选择自己的workspace目录,选中A文件夹中的FBB.mp4

点击 IMAGES A 后面的黄色文件夹图标。选中FBB,然后点击 IMAGES A 。跳出黑色窗口,片刻之后窗口底部出现 press any key to continue…  证明这一部操作成功,在FBB目录下会出现好多图片。

点击 FACES A 后面黄色文件夹,选中Face目录,然后点击FACES A 开始从图片中提取人脸。

点击完后会出现黑色窗口,稍等片刻之后出现进度条。没出现进去条就证明你的电脑环境没有设置好,需要去查看软件安装的章节。

进度条结束之后,会显示Image Found xxx 。 告诉你发现多少张图片,提取了多少个人脸。

此时打开 Face目录,可以看到很多人脸图片,证明人脸提取已经成功。

3. B的人脸截取

B的操作和A是一毛一样,只是选择的视频和目录不同。这里选得是FTM.mp4。目录是B,FTM,Face等。

4. 训练模型

训练模型是一个比较耗时的过程,少则一两天,多则半个月,配置不同,耗时不同。 如果你之前没有穿件Model目录,可以点击黄色文件夹之后选着Create Folder 。如果已经有了就直接选中后Open。

然后点击MODEL开始训练。点击后跳出一个黑色窗口,底部会有一个动态的显示。同时出现一个叫training的预览窗口。

随着时间的推移,预览窗口会发生变化,出现很多人头,训练的过程,就是人脸从模糊变清晰的国产。

上面红色框中的数字是一个训练指标,Loss_A,Loss_B后面的数字越小越好,一般来说当数值小到0.02 或者0.0.1就差不多了,当然你也可以直接看预览图的效果,如果人脸非常清晰了,这个环节就结束了。

为了演示整个过程,我这里只是训练了几分钟,就开始进入下一个环节了。

5. 人脸替换

人脸替换的结果我们保存在Result,所以先通过点击文件夹选中Result ,然后点击Open。

点击 SWAPS开始换脸。跳出黑色窗口,出现进度条。最后出现Done! 就证明转换已经全部完成。

这一个步骤做的事情,就是把B的脸放到A的头上,最终产生的一堆换了脸的图片。

Result目录随便打开一张看一下,脸已经换过去了。我这里由于训练时间超短,所以脸是模糊的。训练久了脸就会变得清晰,看起来就不会这么假了。

6. 导出视频

我们训练的最终目的肯定不是图片换脸,而是视频换脸。所以最后一步,是将图标合成视频。

点击文件夹,选中Result,Save 。

点击 MOVIE ,弹出黑色窗口,片刻之后,出现Press any key to …. 证明合成已经结束。

此时,Result下面出现了一个FBB的视频。

到这里,整个换脸软件的使用就结束了。

刚开始,大家换出来的连肯能都是这一个样子的。 随着 MODEL环节时间的增长,效果会越来越好。除了模型的训练时长之外。最终换脸的效果很大程度取决于A 和B下面的视频素材。

更多关于 AI换脸DeepfakesOpenFaceSwap的问题可以去 Deepfakes中文网。

OpenFaceswap 入门教程(2):软件使用篇!的更多相关文章

  1. Linux Capabilities 入门教程:基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilit ...

  2. Capabilities 入门教程:基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilit ...

  3. Linux Capabilities 入门教程:进阶实战篇

    原文链接:https://fuckcloudnative.io/posts/linux-capabilities-in-practice-2/ 该系列文章总共分为三篇: Linux Capabilit ...

  4. OpenFaceswap 入门教程(1):软件安装篇

    ---恢复内容开始--- 众多换脸软件中,DeepFaceLab其实是安装和使用最方便,更新最快的,但是由于其没有可是化界面,对于很新手来说,可能入门还是有点难度.那么今天就来介绍一款操作极其直观和简 ...

  5. OpenFaceswap 入门教程(3): 软件参数篇!

    OpenFaceswap 的使用可以说是非常简单,只要稍加点拨就可以学会,厉害一点的人根本不需要教程,直接自己点几下就知道了.看了前面安装篇和使用篇.我想大多数人应该会了. 当学会了使用之后,你可能对 ...

  6. Unix/Linux环境C编程入门教程(42) 终端控制篇

    函数介绍 getopt(分析命令行参数) 相关函数 表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ...

  7. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  8. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  9. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

随机推荐

  1. hadoop map 个数 源码分析

    本文转自http://ronxin999.blog.163.com/blog/static/42217920201279112163/

  2. Linux Shell 中数组的语法及应用

    #!/bin/sh## 数组的声明与初始化方法# 先声明后赋值:declare -a arrayarray=(one two three) # 声明并初始化:array_1=(1 2 3 four) ...

  3. xcrun -sdk 选择

    在将FFmpeg编译成IOS版的时候,接触到编译脚本的一段(删减了部分): for ARCH in $ARCHS do if [ "$ARCH" = "i386" ...

  4. InteliJ idea import project 找不到文件结构解决办法

    一.按下列步骤操作:       1. 关闭IDEA,        2.然后删除项目文件夹下的.idea文件夹       3.重新用IDEA工具打开项目: 二.import新项目之后,可能需要等1 ...

  5. Day6 盒模型

    Day6  盒模型  1.一.标准盒模型(w3c盒模型)        1)组成部分:        content + padding + border + margin           内容  ...

  6. mysql数据库初步了解

    一丶数据库服务器丶数据管理系统丶数据库丶表与记录的关系 记录:1 xxxx 3245646546(多个字段的信息组成一条记录,即文件中的一行内容) 表: Student.school,class_li ...

  7. 实现一个Promise.all

    用js自己实现一个Promise.all let promiseAll = (promises) => { return new Promise((resolve, reject) => ...

  8. Vue.js(2.x)之Class 与 Style 绑定

    1.前面看数据绑定时还很困惑v-bind处理class时可以使用json格式的值,为什么换成id.href等其他属性就不行.看了下文档解释后明白了些: 2.对象语法主要有以下三种形式: 1)直接在v- ...

  9. C++ 宏定义的简单使用

    1.定义常量 #define ARRMAX 50 int arr[ARRMAX]; (这种做法不如直接用const来直接定义常量.) 2.代替模板函数或者内联函数,将函数定义成宏.执行效率很快 #de ...

  10. IFEO 映像文件劫持

    “映像劫持”,也被称为“IFEO”(Image File Execution Options) 映像劫持的根本就是被恶意篡改了注册表HKEY_LOCAL_MACHINE\SOFTWARE\Micros ...