Deepfacelab 小白教程

不小心入了AI换脸的坑,但是感觉AI换脸很有意思,第一次感觉科研使我快乐。

目录

一、AI换脸软件简介

二、Deepfacelab下载安装

三、Deepfacelab Demo实现

四、Deepfacelab 填坑

五、总结


一、AI换脸软件简介

这个没有具体使用过,目前我只使用过Deepfacelab,但是查看各种资料都是说Deepfacelab综合来说是最好用的,可玩度也很高,最重要的是deepfacelab对部署环境没有要求,这个就完全满足我这样的懒人了。。。

下述表格转载于大神博主,其链接为https://blog.csdn.net/u014575897/article/details/85272910。

二、Deepfacelab下载安装

Github源码地址:https://github.com/iperov/DeepFaceLab

预编译好的Windows版本:https://mega.nz/#F!b9MzCK4B!zEAG9txu7uaRUjXz9PtBqg(需要科学上网)

所需环境:windows系统即可,需要强力版本的显卡,毕竟AI就是个又氪又肝的玩意。。。

下载好之后,直接解压就可以了,解压完了一般是如下界面(DeepFaceLabCUDA10.1AVX版本)。

Demo实现之前先学习下解压目录下的各种bat文件的功能(实现将A视频中的人脸替换为B视频中的人脸,下文中都是以A和B来表示):

1)是清空workspace文件夹的,包括切的图片和人脸、模型文件等等。。。

2)和3)都是将视频文件转换为一帧一帧的图像;

4)和 4.X)是将SRC视频文件(即待替换的视频B)的人脸识别出来和进行排序;

5)和 5.X)是将DST视频文件(即待替换的视频A)的人脸识别出来和进行排序;

6)是进行训练;

7)人脸替换(即将分离出来的图片先进行人脸替换);

8)将人脸替换后的图片合成视频;

9)和10)待定。。。

三、Deepfacelab Demo实现

源程序中自带Demo的视频素材,可以直接进行Demo实现。

打开workspace,发现里面有两个视频,分别是data_dst和data_src,对应于上述的A和B,这就是自带的素材。

1.视频解压,双击bat文件中的2) extract images from video data_src3.2) extract images from video data_dst FULL FPS;

功能:你会发现workspace中的data_dst和data_src两个文件夹中有分割好的图像文件;

2.人脸提取,双击bat文件中的4) data_src extract faces S3FD all GPU 和 5) data_dst extract faces S3FD all GPU;

功能:你会发现workspace中的data_dst中的aligned和aligned_debug文件夹中有人脸图片,data_src两个文件夹中的aligned类似。

PS:目前来说一般采用S3FD的人脸识别方法,该方法比较好!老版本貌似只有MT和DLIB的人脸识别方法。

3.训练,双击bat文件中的6) train SAE;接下来,Cmd里面所有的参数选项都是直接按“Enter”键即可,因为默认参数都是优化过的,完全适应于Demo视频(对于其他视频也是比较适用,特别是对于新手来说);

功能:训练人脸对齐模型,那还用说?该模型文件保存于workspace中的model文件夹中,你会发现模型文件有5个“h5”的文件

PS:Deepfacelab这个版本是基于Keras来实现的,所以只能用一个GPU进行训练。如果是新手的话更建议采用H128的方法进行训练。SAE方法更全,最好最灵活的模型,但是相对来说需要对Deepfacelab有深入了解,或者跟我一样用默认参数。。。

warning:CMD默认参数中有一个选项是训练迭代无次数限制(默认参数),即需要人工停止训练,停止标准包括1)Train Preview窗口中的第一行、第二行、第四行和第五行的人脸都比较清晰即可;2)训练窗口中的loss值接近于0.2。如下图二红色方框所示(妈蛋,为了截图打开cmd界面,把训练了12个小时的模型给覆盖了,心碎ing)

停止方法,在Train Preview窗口中按“Enter”键。按"P"键是刷新图片哈,可以实时看到最新训练的效果。

   

4.人脸替换,双击bat文件中的7) convert SAE,Cmd里面第一个参数选项输入“n”,其余也全是按“Enter”键即可。

功能:你会发现workspace中的data_dst中的merged文件夹中有替换好的人脸图片。

PS:训练用的什么方法,人脸替换的步骤就要用相应的方法。Cmd第一个选项就是是否使用UI界面模式,反正我没弄懂,我就是直接不用UI模型就好了。

5.视频转换:双击bat文件中的8) converted to mp4,Cmd里面所有的参数选项都是直接按“Enter”键即可;

功能:你会发现workspace中多了一个result.mp4的视频文件,这就是完成AI换脸的成果了。

 

四、Deepfacelab 填坑

完成上述步骤,你发现其实软件用起来很简单的吧,但是其中会有很多坑,下面一步步说。

1.素材坑。搞深度学习的都知道,样本数据好和算法好两个来选,肯定选样本数据好。因为深度学习这个东西就是“炼丹”,丢进去的都是好东西那么练出来的肯定不会差,所以对于上述步骤2.人脸提取完成后,需要人工进行筛选人脸图片。

解决方法:人工筛选人脸图片,删除掉那些无人脸的图片、颠倒的人脸图片、模糊对焦不好的图片等等,只留下人脸提取好的人脸图片。

2.分辨率大小问题,视频素材分辨率尽可能清晰。

3.模型保存,每训练完一次,把workspace中的model文件夹和分割图片都尽可能单独保存一次,免得model丢失。这是血与泪的教训啊!

五、总结

这部分有博主总结的很好,我就不多自己画图了!(主要是懒。。。)

 

参考文献:

1.https://blog.csdn.net/u014575897/article/details/85272910

2.https://www.deepfakescn.com/(常用AI换脸软件的教程网吧)

最后推荐一波AI换脸学习的QQ群,743285272(主要是免费群,可以白嫖)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Underscore.js 的模板功能

Underscore是一个非常实用的JavaScript库,提供许多编程时需要的功能的支持,他在不扩展任何JavaScript的原生对象的情况下提供很多实用的功能。 无论你写一段小的js代码,还是写一个大型的HTML5应用,underscore都能帮上忙。目前&…

ANSYS——查看剖面图的应力分布云图以及工作平面的相关设置

剖面图和切片图其实差不多,只是切片图只有一个截面,而剖面图是切去一部分保留另一部分模型,不但可以看到截面处应力分布还可以看到剩余模型的应力分布 切片应力云图可见:https://blog.csdn.net/qq_45769063/article/details/106357700 1.剖面云图的查看 首先将工作平面的…

2016.8.2

高端内存映射方式 高端内存映射分为三种:永久映射、临时映射和非连续动态内存映射。高端内存一般是指896MB以上的页框,这段区间内核一般不能直接访问。 1.永久映射 永久内核映射允许内核建立高端页框到内核地址空间的长期映射。它们使用主内核页表中的一…

深度学习之pytorch(三) C++调用

玩深度学习,个人觉得基于anaconda的python适合开发与测试,C适合实际的工程部署!而pytorch官方有编译好的libtorch,特别方便,适合于我这样的伸手党和手残党(win10下编译tensorflow编译了好久都没通过,好忧伤…

ANSYS入门——模态分析步骤与实例详解

目录 一、ANSYS求解模态分析步骤 建模 施加载荷和求解

javascript库之Mustache库使用说明

一、简单示例 代码: 1 function show(t) { 2 $("#content").html(t); 3 } 4 5 var view { 6 title: YZF, 7 cacl: function () { 8 return …

Light OJ 1007

求区间欧拉函数平方和。。。 最后因为longlong 范围爆了WA 了&#xff0c; 0.0 #include<bits/stdc.h> using namespace std; const int maxn 5000000 131; typedef unsigned long long LL;bool Com[maxn]; LL Num[maxn], Prim[maxn / 3]; int Cnt;void INIT() {Num[1]…

MVC架构设计——EF-Code First

详情参考:http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html转载于:https://www.cnblogs.com/shuai7boy/p/5807678.html

机器学习(一) 基于sklearn库的数据集划分(交叉验证)

机器学习中首要环节就是数据集的处理&#xff0c;其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面&#xff1a;数据集划分和数据清理。其中数据集划分是指训练集、验证集和测试集的数据类别划分&#xff1b;数据清理是指数据的清洗、删除等等方面。这两天…

ANSYS——模态分析的理论基础

目录 一、模态分析理论基础 线性与非线性 振动与固有频率 振动方程与振动模态

购物中心潮--我的创业之路

2014年10一个月&#xff0c;我在中国大陆从北我的两个小伙伴跑到最南边中国内地。大半个中国删除更多。早在北京成立购潮商城。2014年11月&#xff0c;购潮商城正式上线。上线当天突破零订单。2014年12月&#xff0c;正式推广市场。渗透大学生校园。2015年2月至今&#xff0c;正…

敏捷项目开源管理软件ScrumBasic(2)- 多项目支持

1.加入Project对象模型 public class Project{[Key][MaxLength(32)]public string ID { get; set; }public string Name { get; set; }public int Order { get; set; }public ICollection<UserStory> Stories { get; set; }public ApplicationUser Creator { get; set; }…

postgresql表和列注释(描述)

2019独角兽企业重金招聘Python工程师标准>>> PostgreSQL添加表和列注释。本文为测试表test&#xff0c;默认无注释。 test# \d关联列表架构模式 | 名称 | 类型 | 拥有者 | 大小 | 描述 -------------------------------------------------public | test | …

ANSYS——模态提取方法简介

目录 block lancoze法 supspace(子空间法) powerdynamics reduced(缩减法) unsymmetric(非对称法) 阻尼法和QR阻尼法

python 使用小知识总结(持续更新ing)

这篇博客主要针对于使用python来进行深度学习/机器学习过程各方面小知识的总结。习惯于使用C这种严谨的语言&#xff0c;改换到python这门相对来说开放式的语言需要很多学习&#xff0c;而作为一个菜鸡&#xff0c;遇到编程问题解决了之后不到一周就会忘记&#xff0c;在此仅作…

Fifth scrum meeting - 2015/10/30

概述 从昨天开始&#xff0c;我们的开发工作终于进入了正轨&#xff0c;由于之前没有mooc服务器API接口&#xff0c;一些工作无法进行。 因为我们团队开始开发较晚&#xff0c;因此我们将开发阶段的截至时间定为了下周五&#xff0c;测试阶段则压缩为下周周六和周日两天。 我们…

计算机加入域 不能访问网络位置 解决办法

计算机加入域 不能访问网络位置 解决办法 启动以下服务 本文转自 onesthan 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/91xueit/1660286&#xff0c;如需转载请自行联系原作者

ANSYS——模态分析的载荷施加问题以及约束的施加问题

本文续自《ANSYS入门——模态分析步骤与实例详解》:https://blog.csdn.net/qq_45769063/article/details/106389171 目录 1.模态分析的激励是从哪里来的?

【effective c++】继承与面向对象设计

1.确定你的public继承塑造出is-a关系 public继承意味着is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived classes对象也都是一个base class对象&#xff0c;反过来不成立。 2.避免隐藏继承而来的名称 c名称查找不考虑类型&#xff0…

Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下&#xff1a; 景物(SCENE)通过镜头&#xff08;LENS&#xff09;生成的光学图像投射到图像传感器(Sensor)表面上&#xff0c;然后转为电信号&#xff0c;经过A/D&#xff08;模数转换&#xff09;转换…