找回密码
 立即注册
查看: 552|回复: 2

[其他技术] 如何进行AI换脸,AI换脸从 "0" 到 “1” 详细教程 ——从配置环境开始

[复制链接]
发表于 2023-5-17 21:52:41 | 显示全部楼层 |阅读模式

前言:
本人吃计算机这口饭的,说实话AI换脸很火的时候自己却没碰,挺吃亏的,最近时间比较充裕,整理了一下AI换脸的一个简单的流程,从 "0" 到  "1" 开始吧

1.环境
win10
64位  
NVDRTX 3060

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

1.png

点击开启

2.png

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

游客,如果您要查看本帖隐藏内容请回复


4.安装工具环境
下载完成以后即为如此一个应用程序,直接双击打开

3.png

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

4.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

5.png

所以事情处理完成以后就会出现Done的字样,这个时候再点击关闭就好了
进入文件夹worksho-->data_src 会有很多图像,对!没有错,就是抽出来的人脸

6.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的字样即为完成

7.png

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

8.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 ) :
默认留白,输入回车即可

9.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看图片就会看到一些比较新鲜的图片——很明显把人脸突出强调了对吧

10.png

11.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? :
默认留白,输入回车即可

当它运行到一定程度以后

12.png

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

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

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

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

13.png

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

14.png

这个时候可以按enter 退出了
退出以后cmd窗口也会出现done

15.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-prd*learned-dst
(5) learned-prd+learned-dst
(6) XSeg-prd
(7) XSeg-dst
(8) XSeg-prd*XSeg-dst
(9) learned-prd*learned-dst*XSeg-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 ) :
默认留白,输入回车即可


16.png


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

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

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

出现done以后


17.png


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

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


18.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 ) :
留白回车

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


19.png

会出现这个窗口

20.png

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

21.png






上一篇:通过挂载阿里云盘,把手机存储空间扩展到2000G【详细教程】
下一篇:如何给电脑微信进行多开教程
回复

使用道具 举报

发表于 2023-5-17 23:27:49 | 显示全部楼层
1111111111111111
回复

使用道具 举报

发表于 2023-6-4 22:12:19 | 显示全部楼层
6666666667676767
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|27CaT资源论坛

GMT+8, 2024-6-2 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表