如何进行AI换脸,AI换脸从 “0“ 到 “1” 详细教程 ——从配置环境开始

news2025/1/16 1:45:12

后续文章读起来可能会影响观看可以前往鄙人博客查看:http://www.anyuer.club/?id=199
前言:
本人吃计算机这口饭的,说实话AI换脸很火的时候自己却没碰,挺吃亏的,最近时间比较充裕,整理了一下AI换脸的一个简单的流程,从 “0” 到 “1” 开始吧

1.环境
win10

64位

NVDRTX 3060

2.打开GPU图形设置
win10设置打开搜索——图形设置

image.png点击开启

image.png

3.环境配置
本AI换脸采用的GAN(计算机生成对抗网络),其中比较优秀的开源工具有 DeepFace (本文采用)

DeepFace :https://github.com/iperov/DeepFaceLab
windows环境下提供两个下载地址,大家可以按照自己的配置按需下载(均需要翻墙):

mega :https://mega.nz/folder/Po0nGQrA#dbbttiNWojCt8jzD4xYaPw
yandex : https://disk.yandex.ru/d/7i5XTKIKVg5UUg
当然了,如果你翻不起墙或者不方便,我这边提供一个RTX 3060的版本

链接:https://pan.baidu.com/s/14dOUh0iaONHHK3jyXtIRbw?pwd=yuer
提取码:yuer
4.安装工具环境
下载完成以后即为如此一个应用程序,直接双击打开

image.png

选择好了路径,直接extract即可,之后好像没啥了,如果有啥一路点确认即可

image.png

5.识别项目结构
我们要做的事情很简单,从一个001.mp4里面提取面部,再把提取出来的脸替换到002.mp4里面去,我们把001.MP4取名为源视频,002.MP4取名为目标视频

—DeepFaceLab_NVIDIA_RTX3000_series
--------_internal
--------workspace #工作路径
----------------data_dst #目标视频图片存储路径——后面会讲到
----------------data_src #源视频图片存储路径——后面会讲到
----------------model #模型保存——后面会讲到
----------------data_dst.mp4 #如上文002.MP4
----------------data_src.mp4 #如上文001.MP4
--------(.*).bat
6.所做事情大概是干什么
从源视频抽帧——把视频一帧一帧换成图片

从抽出来的图片里面提取出面部信息

从目标视频抽帧——把视频一帧一帧换成图片

从目标视频抽出来的帧提取面部信息

利用算法进行训练比如GAN(计算机生成对抗网络等等)

训练完成以后生成面部图片

生成出来的面部进行替换,生成N张图片

把图片合起来,即为生成的视频

还是很空洞,没关系实操一遍就好很简单!

6.2) extract images from video data_src.bat
强调一下是从 2)开始的,大家不用去运行第一个,后面会讲!

运行bat脚本——2) extract images from video data_src.bat

Enter FPS (?:help):
这是让你输入FPS,好像是帧数,如果记不起来可以像我一样,啥都不输入,直接留白,然后回车就会有默认值 0

Output image format (png /jpg ?:help) :
这个是抽帧,看你抽成png 还是 jpg ,你可以输入,但也可以像我一样,留白,啥都不输入,回车也会有默认值png

image.png

所以事情处理完成以后就会出现Done的字样,这个时候再点击关闭就好了

进入文件夹worksho–>data_src 会有很多图像,对!没有错,就是抽出来的人脸

image.png

6.3) extract images from video data_dst FULL FPS.bat
运行脚本——3) extract images from video data_dst FULL FPS.bat

Output image format ( png/jpg ?:help ) :
这个很简单,直接输入刚才选择的类型即可,如果你完全按照我的操作来的,这里直接留白输入回车即可

同样出现了done的字样即为完成

image.png

进入文件夹worksho–>data_dst 也会有很多图像

image.png

6.4) data_src faceset extract.bat
运行脚本——4) data_src faceset extract.bat

Choose one or several GPU idxs (separated by comma).

[CPU] : CPU
[0] : NVIDIA GeForce RTX 3060 Laptop GPU

[0] Which GPU indexes to choose? :
默认留白,输入回车即可

[wf] Face type ( f/wf/head ?:help ) :
默认留白,输入回车即可

[0] Max number of faces from image ( ?:help ) :
默认留白,输入回车即可

[512] Image size ( 256-2048 ?:help ) :
默认留白,输入回车即可

[90] Jpeg quality ( 1-100 ?:help ) :
默认留白,输入回车即可

[n] Write debug images to aligned_debug? ( y/n ) :
默认留白,输入回车即可

image.png

655和654是人脸图片数量

6.5) data_dst faceset extract.bat
运行脚本——5) data_dst faceset extract.bat

Choose one or several GPU idxs (separated by comma).

[CPU] : CPU
[0] : NVIDIA GeForce RTX 3060 Laptop GPU

[0] Which GPU indexes to choose? :
默认留白,输入回车即可

[wf] Face type ( f/wf/head ?:help ) :
默认留白,输入回车即可

[512] Image size ( 256-2048 ?:help ) :
默认留白,输入回车即可

[90] Jpeg quality ( 1-100 ?:help ) :
默认留白,输入回车即可

出现done就完成了

和上一步非常相似,但是如果你进入到

workspace\data_dst\aligned_debug看图片就会看到一些比较新鲜的图片——很明显把人脸突出强调了对吧

image.png
在这里插入图片描述

6.6) train Quick96.bat
运行脚本——6) train Quick96.bat

deepface采用了不少的训练模式,这种就是相对来说不那么吃配置,见效稍微快一点的

Running trainer.

[new] No saved models found. Enter a name of a new model :
这里取个名字,建议取个简单的,主要是自己用来区分,我取名为 yuer 回车输入了

Running trainer.

[new] No saved models found. Enter a name of a new model : yuer
yuer

Model first run.

Choose one or several GPU idxs (separated by comma).

[CPU] : CPU
[0] : NVIDIA GeForce RTX 3060 Laptop GPU

[0] Which GPU indexes to choose? :
默认留白,输入回车即可

当它运行到一定程度以后

image.png

会出现一个新的小窗口,这窗口就是在不停的利用GAN进行训练

这里就是生成图片的预览啦,点击这个窗口,按P可以刷新

上面有介绍,但是我也看不懂了看了个大概

s:保存生成的预览图片
p:刷新生成的预览图片
enter:退出模型训练
image.png

训练了大概三分钟,这个效果还是相对来说不错的

image.png

这个时候可以按enter 退出了

退出以后cmd窗口也会出现done

image.png

6.7) merge Quick96.bat
运行脚本——7) merge Quick96.bat

这次看脚本名字就知道,生成 快速96 ,很明显这次是要生成点图片了。就是将训练的图片换过去,生成新图片

Running merger.

Choose one of saved models, or enter a name to create a new model.
[r] : rename
[d] : delete

[0] : yuer - latest
:
这里可能你出现的不是yuer,因为名字是自定义的,但是latest告诉你的是上一次的训练模型,也就是quick96

可以直接回车,也可以输入0,因为0是默认值

Running merger.

Choose one of saved models, or enter a name to create a new model.
[r] : rename
[d] : delete

[0] : yuer - latest
:
0
Loading yuer_Quick96 model…

Choose one or several GPU idxs (separated by comma).

[CPU] : CPU
[0] : NVIDIA GeForce RTX 3060 Laptop GPU

[0] Which GPU indexes to choose? :
默认留白,输入回车即可

Running merger.

Choose one of saved models, or enter a name to create a new model.
[r] : rename
[d] : delete

[0] : yuer - latest
:
0
Loading yuer_Quick96 model…

Choose one or several GPU idxs (separated by comma).

[CPU] : CPU
[0] : NVIDIA GeForce RTX 3060 Laptop GPU

[0] Which GPU indexes to choose? :
0

Initializing models: 100%|###############################################################| 4/4 [00:00<00:00, 8.87it/s]
====================== Model Summary ======================
== ==
== Model name: yuer_Quick96 ==
== ==
== Current iteration: 734 ==
== ==
-------------------- Model Options --------------------
== ==
== batch_size: 4 ==
== ==
--------------------- Running On ----------------------
== ==
== Device index: 0 ==
== Name: NVIDIA GeForce RTX 3060 Laptop GPU ==
== VRAM: 3.41GB ==
== ==

[y] Use interactive merger? ( y/n ) :
切记,这里输入 n,虽然输入y也可以,但是我不会

[y] Use interactive merger? ( y/n ) : n
Choose mode:
(0) original
(1) overlay
(2) hist-match
(3) seamless
(4) seamless-hist-match
(5) raw-rgb
(6) raw-predict

[1] :
默认留白,输入回车即可

Choose mask mode:
(0) full
(1) dst
(2) learned-prd
(3) learned-dst
(4) learned-prdlearned-dst
(5) learned-prd+learned-dst
(6) XSeg-prd
(7) XSeg-dst
(8) XSeg-prd
XSeg-dst
(9) learned-prdlearned-dstXSeg-prd*XSeg-dst

[1] :
默认留白,输入回车即可

[0] Choose erode mask modifier ( -400…400 ) :
默认留白,输入回车即可

[0] Choose blur mask modifier ( 0…400 ) :
默认留白,输入回车即可

[0] Choose motion blur power ( 0…100 ) :
默认留白,输入回车即可

[0] Choose output face scale modifier ( -50…50 ) :
默认留白,输入回车即可

Color transfer to predicted face ( rct/lct/mkl/mkl-m/idt/idt-m/sot-m/mix-m ) :
默认留白,输入回车即可

Choose sharpen mode:
(0) None
(1) box
(2) gaussian

[0] ( ?:help ) :
默认留白,输入回车即可

[0] Choose super resolution power ( 0…100 ?:help ) :
默认留白,输入回车即可

[0] Choose image degrade by denoise power ( 0…500 ) :
默认留白,输入回车即可

[0] Choose image degrade by bicubic rescale power ( 0…100 ) :
默认留白,输入回车即可

[0] Degrade color power of final image ( 0…100 ) :
默认留白,输入回车即可

[16] Number of workers? ( 1-16 ?:help ) :
默认留白,输入回车即可

image.png

6.8) merged to mp4.bat
运行脚本——8) merged to mp4.bat

最后一步生成视频,把刚才的图片合并成视频

[16] Bitrate of output file in MB/s :
默认留白,输入回车即可

出现done以后

image.png

7.查看生成的视频
workspace文件夹下的result.MP4就是生成的视频文件

因为我是为了写博客,所以训练的时间不够长生成出来的视频效果不太好,大家训练的时候,训练个三五天,生成出来的视频杠杠好!

image.png

8.一些细节

  1. clear workspace.bat——该脚本是用来清理掉之前已经建立的模型,和 workspace 文件夹下面的 data_src 和 data_dst文件夹的所有内容的

如果你在6.7)卡着很久都不动

Use interactive merger? ( y/n ) :
这里你不输入n,输入y

[16] Number of workers? ( 1-16 ?:help ) :
留白回车

等到程序输出完以下信息后

image.png

会出现这个窗口

image.png

按一下Tab,会出现以下预览,这个时候,再Tab回去关闭窗口,cmd控制台窗口也关,再重新运行6.7)脚本,输入n就好了

image.png

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

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

相关文章

Pyecharts 输出到 html 白屏?终极解决方案来了。

问题起因 公司内部网络&#xff0c;想要做个饼图输出到 html 。 找了教程&#xff1a;https://pyecharts.org/#/zh-cn/quickstart 我看教程写得这么规范&#xff0c;直接 CtrlC&#xff0c;CtrlV&#xff0c;百度来的代码怎么可能会有问题嘛&#xff01; 人生处处有惊喜。 样…

SpringBoot中策略模式+工厂模式业务实例(接口传参-枚举类查询策略映射关系-执行不同策略)规避大量if-else

场景 设计模式-策略模式在Java中的使用示例&#xff1a; 设计模式-策略模式在Java中的使用示例_java 策略模式示例_霸道流氓气质的博客-CSDN博客 上面讲了策略模式在Java中的使用示例。 下面看一个在SpringBoot中的实际使用示例。 业务场景: 有多个煤矿&#xff0c;信号灯…

推荐一些非常好用的DNS服务器

推荐一些非常好用的DNS服务器 1、114公共DNS服务器 1&#xff09; 老牌的114DNS&#xff0c;全国三网通用高速&#xff0c;纯净无劫持无需再忍受被强扭去看广告或粗俗网站之痛苦 DNS地址为&#xff1a;114.114.114.114 和 114.114.115.115 2&#xff09;拦截 钓鱼病毒木马网…

三顾茅庐,七面阿里,终拿25k*16offer,我的面试历程

写在片头&#xff1a;声明&#xff0c;勿杠 首先简单说一下&#xff0c;这三次面试阿里并不是一次性去面的&#xff0c;实际上第一次面试时候还在大四&#xff0c;找的实习岗&#xff0c;不太清楚是什么部门&#xff0c;别问我为什么还记得面试题&#xff0c;有记录和复盘的习…

DX算法还原

早在之前作者就写过一篇关于顶象的滑块验证&#xff0c;潦潦草草几句话就带过了。 出于互相学习的想法&#xff0c;给了一个大学生&#xff0c;奈何不讲武德把源码甩群里了&#xff0c;虽然在大佬们眼里不难&#xff0c; 不过拿着别人的东西乱传还是不太好。自认倒霉&#xf…

基于max30102的物联网病房监测系统(传感驱动和数据处理)

目录 一、实物展示 二、主体介绍 三、MAX30102的驱动 四、MAX30102的数据处理 奋斗一个星期&#xff0c;每个引脚都是扒皮焊接然后再把皮包回去的。这几天吸的垃圾气体感觉要少活两年。 一、实物展示 这次吸取上次教训&#xff0c;把线捆起来好多了 二、主体介绍 用的传感…

Python进阶篇

大家好&#xff0c;我是易安&#xff01;今天我们继续Python的学习&#xff0c;内容稍微有些多&#xff0c;不过我会尽可能举一些例子让你理解。 对象比较与拷贝 在前面的学习中&#xff0c;我们其实已经接触到了很多 Python对象比较和复制的例子&#xff0c;比如下面这个&…

【JVM】面试题总结

JVM 1、JVM 的运行时内存区域是怎样的2、堆和栈的区别3、Java 中的对象一定在堆上分配内存吗4、什么是 Stop The World5、JVM 如何判断对象是否存活6、JVM 有哪些垃圾回收算法7、什么是三色标记算法8、新生代和老年代的GC算法9、新生代和老年代的垃圾回收器有何区别10、Java 中…

【SVN】版本控制管理的文件(夹)如何重命名

目录 一、前言二、操作步骤1. 使用SVN重命名&#xff08;SVN rename&#xff09;2. 输入新名称3. 确定重命名4. 立刻进行一次提交&#xff08;commit&#xff09;5. 补充 三、可能遇到的问题1. 情况一2. 情况二3. 情况三 一、前言 如果只是在本地的文件系统中修改SVN中的文件&a…

迈巴赫GLS480升级行政四座,享受霸气豪华老板座

头等舱级后排独立座椅可奉上私人飞机般的旅程体验。无论是美观性还是功能性&#xff0c;商务型中央控制台都可为后排乘客带来巨大优势。例如&#xff0c;在电动开启盖板下方贴心地为乘客提供控温杯座以及储物箱。您可在扶手下方为您的智能手机进行无线感应充电。

亚马逊云科技开启您的云财务管理之旅:云财务运营

亚马逊云科技“开启您的云财务管理之旅”系列内容提出了关于如何启动和实施一个成功的云财务管理CFM战略的建议。云财务管理CFM的三个原则&#xff1a;SEE-查看、SAVE-节省和PLAN-计划。接下来介绍的是第四个阶段&#xff1a;RUN-运营。 在这一阶段&#xff0c;可以了解云财务管…

JavaScript全解析——canvas 绘制图片

●在 canvas 内也是可以直接插入一个图片的 ●如果在 canvas 内想插入一个图片 ○首先要用 js 加载一个图片 ○当图片加载完毕以后, 我们在用 canvas 的 API 把它插入到画布上即可 ●先用 js 加载一张图片出来 const myImg new Image() myImg.sec ./01小锋.png // 准备一个加…

数据结构与算法基础(王卓)(33):折半插入排序、希尔排序

目录 折半插入排序 Project 1: 问题&#xff1a;缺少在插入元素之前的移动元素的操作 Project 2:&#xff08;最终成品、结果&#xff09; 希尔排序 Project 1:&#xff08;个人思路&#xff09; 标准答案&#xff1a;&#xff08;PPT答案&#xff09; 解释说明&#xff…

OpenGL(六)——坐标系统

目录 一、前言 二、空间系 2.1 局部空间 2.2 世界空间 2.3 观察空间 2.4裁剪空间 2.5 正射投影 2.6 透视投影 2.7 屏幕空间 三、透视箱子 3.1 创建模型矩阵 3.2 创建观察矩阵 3.3 创建透视投影矩阵 3.4 修改顶点着色器 3.5 传递变换矩阵 四、旋转的箱子 五、好…

面了一圈,还没拿到offer.....

最近收到很多小伙伴的留言&#xff0c;金三银四过完了一个offer都没收到。还有遇到那种特别喜欢怼人的面试官&#xff0c;直接面到怀疑人生&#xff0c;真是让人费解。。。 其实面试受打击是正常的&#xff0c;关键是要在面试中总结自己的不足&#xff01;提前做好面试准备和技…

java基于知识库的中医药问询系统

本系统主要包含了等系统用户管理、中医药常识管理、科室信息管理、知识库管理多个功能模块。下面分别简单阐述一下这几个功能模块需求。 管理员的登录模块&#xff1a;管理员登录系统对本系统其他管理模块进行管理。 用户的登录模块&#xff1a;用户登录本系统&#xff0c;对个…

简历投了2个月没有面试,看这趋势,不发力是不行了

最近有朋友吐槽&#xff0c;感觉最近好难&#xff0c;简历投了2个月了&#xff0c;面试机会很少&#xff0c;自己每天也费心费力的投&#xff0c;一有新职位就赶紧投&#xff0c;自己也积极的跟人家打招呼&#xff0c;不是看完那边没有回复&#xff0c;要么就是不合适。于是我就…

基于ARM树莓派实现智能家居:语音识别控制,Socket网络控制,火灾报警检测,实时监控

目录 一 项目说明 ① 设计框架 ② 功能说明 ③ 硬件说明 ④ 软件说明 二 项目代码 <1> mainPro.c 主函数 <2> InputCommand.h 控制设备头文件 <3> contrlDevices.h 外接设备头文件 <4> bathroomLight.c 泳池灯 <5> livin…

【GUI】基于Python的文本数据处理(串口解析 0D 0A结尾)

【GUI】基于Python的文本数据处理&#xff08;串口解析 0D 0A结尾&#xff09; 如有串口数据&#xff1a; [37;22mD/NO_TAG [2023-04-24 23:01:06 ] ------------------------------------------------->>>>>> M_DADAT_GET_DAMAGE_INFO [0m 2023/04/24 2…

200左右什么蓝牙耳机比较好?国产200左右蓝牙耳机推荐

随着不少手机厂商取消3.5mm耳机孔&#xff0c;蓝牙耳机便成为了人们外出的最佳选择。最近看到很多人问&#xff0c;200左右什么蓝牙耳机比较好&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款国产的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 …