云服务器试用 DeepFaceLab(带图形桌面)
AI 脸型融合工具,用于直播美颜,影视特效
DeepFaceLab 是一款专业级的面部替换工具,常应用于电影制作、直播美颜、视频娱乐等,它通过后训练实现特定脸部的高精度替换,效果至今仍然是开源软件中最好的。
目前已经在趋动云服务器上配置好了带图形桌面的版本,方便大家可以对照融合效果图来调节参数。以下链接可以免实名注册并送算力点试用:
注册链接:https://growthdata.virtaicloud.com/t/xK
登陆后进入项目链接:https://open.virtaicloud.com/web/project/detail/648894789974482946

点击右上角运行一下,确定克隆项目和数据到自己工作空间,点击立即运行,启动开发环境后点右上角进入开发环境。
首先在左边进入scripts 文件夹,然后右边打开终端。由于 DeepFaceLab 需要用到命令行交互来设置参数,可以通过复制粘贴下面每一步的 bash 命令到终端来运行脚本。也可以一步步参照这个视频教程操作:https://www.bilibili.com/video/BV1xFSLBGE6o

(1)清空工作目录
进入 /gemini/code/scripts 文件夹, 运行第一个脚本 1_clear_workspace.sh 清空工作目录 /gemini/code/workspace 文件夹。
第一步(清空工作目录):bash 1_clear_workspace.sh

(2)上传两个视频
准备 一个待替换面部的视频 命名为 data_dst.mp4,还有一个 要换成的目标人脸的视频命名为 data_src.mp4,这里示例需要是单个人物完整露脸的视频,这里直接使用项目文件夹 /gemini/code 下自带的两个视频做测试。
第二步:将 data_dst.mp4 和 data_src.mp4 放到 workspace 目录下。

(3)分帧目标视频
继续在 /gemini/code/scripts 路径运行下面命令,将要换成的目标人脸视频,拆分成帧,在 /workspace/data_src 文件夹下得到 序列帧图片。
第三步(分帧目标人脸视频):bash 2_extract_image_from_data_src.sh
(4)分帧原视频
将要换成的原人物视频,拆分成帧,在 /workspace/data_dst 文件夹下得到 序列帧图片。
第四步(分帧原视频):bash 3_extract_image_from_data_dst.sh

(5)上传或复制底模
deepfacelab 需要在别人已经训练好的底模基础上,再训练特定人物面部之间的替换,底模(也叫底丹)可以去b站或者相关论坛搜别人免费分享的,这里准备了一份底模放在了 /gemini/code/model 文件夹下,运行下面命令可以复制模型文件到 工作目录 workspace/model。
第五步(复制底模到工作目录):cp /gemini/code/model/* /gemini/code/workspace/model

(6)提取目标视频人脸
接下来是从上面的图像中 提取 data_src 和 data_dst 视频中的人脸部分,放到 /gemini/code/workspace/data_src/aligned 和 workspace/data_dst/aligned 文件夹下,懂行的人士也可以在本地电脑用其他工具切脸和筛选后再把人脸图像上传到这俩目录中。继续在 /gemini/code/scripts 路径运行下面命令:
第六步(切出目标视频人脸):bash 4_data_src_extract_faces_S3FD.sh
(7)提取原视频人脸
第七步(切出原视频人脸):bash 5_data_dst_extract_faces_S3FD.sh

(8)启动训练
接下来运行 scripts 脚本文件夹中的 6_train_SAEHD_no_preview.sh 开始使用上面的切脸图片继续训练模型,运行下面脚本后会出现询问参数选项,第一个是底模选择 [0] DFD224F - latest 第二个是选择显卡 [0] : B1.gpu.medium,紧接着要注意会出现 Press enter in 2 seconds to override model settings. 此时立马按 Enter 键可以进入更多选项设置(否则就会跳过并按默认的参数来),在后续的选项中,我们只需要注意修改(1) Write preview history(是否保存预览图像): 选择 y;(2) Batch_size 大小:根据选用的显卡配置来,24G显存可以填入 12-16左右,后面开始训练后不会崩溃出现 killed 就可以。(3)Enable pretraining node,预训练模式,要选择 n 。
第八步(启动训练模型):bash 6_train_SAEHD_no_preview.sh
训练开始后,[17:32:01][#147829][0228ms][0.0508][0.0946] 显示的几个数字是时间,迭代次数、每次用时,src 的损失值,dst 的损失值,当我们看到 src 的损失值不再下降后,就可以按一下 Ctrl+c 停止训练并保存模型(这里的底模已经对演示视频训练好了,可以直接停止进行测试)。可以在 /gemini/code/workspace/DFD224F_SAEHD_history 文件夹下查看当前训练效果的预览图像。有些专业教程还分好几阶段不断调参训练,这里略过。


(9)启动桌面来调试融合
使用训练好的模型,来融合原视频图像中的人脸,合成图像需要慢慢调参来让新脸的边缘和色彩与原人物背景融合,所以需要有图形化界面对照着看效果,这里给 linux 配置了 Web VNC 图形化桌面,并通过浏览器实现远程桌面访问。运行 /gemini/code/启动vnc界面.sh 即可启动桌面(需要按提示设置一个密码其他默认),并在右侧添加一个 6080 端口,然后通过 外部连接访问(选择 vnc.html 页面,输入密码进入 linux 桌面)。
第九步命令(启动桌面):bash /gemini/code/启动vnc界面.sh

进入桌面后,打开命令行窗口,进入脚本目录:cd /gemini/code/scripts 然后 启动运行脚本 7_merge_SAEHD.sh 。该命令也会出现几个选项,前两个选 0,第三个选 y,第四个根据CPU核心数来,可设为80-90,就会出现熟悉的合成界面来调整合成参数。

第九步命令(启动合成面板):bash 7_merge_SAEHD.sh
这里介绍一下必要的操作方式:按 Tab 键切换到图像预览,再按键盘上方的 -/+ 放大缩小,按键盘上方的 1-5 调整覆盖方式(默认用 overlap);按 x 调整遮罩模式,按 e/d 调整 blur mask ,即边缘羽化效果,调到80。按 w/s 调整erode mask 即遮罩大小(越小越接近目标但容易不贴合原脸)调到35。按 c 颜色转换方式,这里 mkl-m 方式更贴合原图像一些。以上参数不固定,让新面部看起来跟背景融合即可,然后按 Shift+?(把当前帧的配置)向后覆盖直到最后一帧, 按 > 查看下一帧,最后按 Shift+> 应用到后面全部帧,即可在 /gemini/code/workspace/data_dst/merged 文件夹中查看到合成后的全部图像序列。


(10)导出融合后视频结果
合成所有图像(即给所有原视频图像替换融合)后,最后回到项目scripts 路径下执行下方命令合并成视频结果, 在 /gemini/code/workspace 文件夹下得到 result.mp4 视频。可以在趋动云项目左侧文件管理栏中点击右键下载。
第十步(导出MP4):bash 8_merged_to_mp4.sh
出现选项 Bitrate of output file in MB/s 按默认16比特来确认就行

最后用完记得回到趋动云项目界面,点击右上角停止并销毁以节省算力。该项目仅用于合规的学习研究。
更多推荐
所有评论(0)