首页 > Ai资讯 > Ai知识库 > 换脸软件 FaceFusion 保姆级教程

换脸软件 FaceFusion 保姆级教程

发布时间:2024年06月06日

在制作定制数字人时,有时候为了不侵权,会使用换脸软件将原素材的脸型进行替换,今天一个客户就提出了这样的需求,所以,这里我使用 FaceFusuion 这款软件来进行操作。

FaceFusion 是由 Roop 项目的核心开发者独立发布的,它被官方描述为下一代的人脸交换和增强软件,这个软件可以用于处理图片和视频,可以运行在 GPU CPU 下面。

总体使用起来,界面感觉还挺简单的,如果要求不高的,基本不需要改动什么配置,直接选择源和目标就行了。

 

官网:https://github.com/facefusion/facefusion

要运行这个软件,可以本地安装、Colab、租用云算力都可以,这款软件本身要求不是很高,但是为了更好的体验,有 GPU 的、内存大一些的肯定会更好。

我开始是用的 Colab ,但是毕竟是免费的算力,要不就是 GPU 不够了,要不就是跑着跑着就报错了,不知道是不是我的源文件有点大,开始有 400M, 后面给剪辑了下,减少到 200M了。

但是还是会报那样的错误,后台任务跑到100%后又重新开始了,就是合成不了视频,折腾了大半天,我放弃了。

如果有兴趣的可以玩一下,地址为

· 

https://github.com/facefusion/facefusion-colab

打开这个地址后,再打开colab,执行每个单元格代码就行了,能不能就用,就看有没有算力了。

 

既然免费的不行,那就只能氪金了,我这里用的算力平台是 AutoDL ,它可以按量和时长计费,也能按日、周、月等,还是比较灵活的。

官网地址是:https://www.autodl.com/

打开地址后,有账号的直接登录,没有账号的,自己注册一个账号就行了,很简单

 

因为后续要租用算力,所以可以先提前给账户充下值,至于充多少这个是随便的,只要能够满足你后面租用机器的钱就行了,当然也可以后面再充,这个看自己的。

 

根据界面提示,选择或输入充值金额就行了,支持微信和支付宝等

 

租用算力, 我们点击菜单的 「算力市场」,这里可以选择计费方式,地区,GPU型号等

 

然后从下面找一个自己能接受的价格就行,「芜湖区」、「佛山区」、「内蒙A区」这几个相对较要便宜一些。

 

如果机器可以租的话,上面会显示几个卡可租的字样,比如「1卡可租」,如果显示「已租完」,那么就要稍等一下了,多刷新,就会有其它的卡释放的,除非高峰期,要不然还是好租的,不然可能半天都没有卡可租,这个就只能等了。

租的时候,看自己的要求吧,比如「显存」「内存」还有数据盘的大小,能不能扩容等,还有支持的 CUDA 版本,有些软件对这个会有要求,那么就注意一下就行了。

比如像我这个,我就租了一个这样的,这种自己根据需求来就行了,没有限制。

 

点那个几卡可租的按钮进来,就进行实例的创建,这里就是选择镜像,可以选择「基础镜像」、「社区镜像」等

基础镜像就是只有基本的软件,后面要用的东西,后续自己去安装

社区镜像就是选择别人直接做好的,机器创建好后,可以直接拿来用的

因为FaceFusuion这个,我在社区里面没找到,所以这里我选择的是基础的,只装了一个 Miniconda

 

如果这里没有创建成功,提示没有机器可用,那么也需要等一下了,如果创建成功了,则就直接开机了,在控制台的 「容器实例」中能看到,然后在 「快捷工具」下面找到 JupyterLab」点进去,就进入机器实例内部了

 

进入到机器实例了,这里就可以进行操作了。

 

在操作之前,需要加一个配置,不能访问不了 github 这些站

在终端输入命令

· 

source /etc/network_turbo

 

参考:https://www.autodl.com/docs/network_turbo/

 

 

安装

因为基础镜像有conda了,直接使用。

git clone https://github.com/facefusion/facefusion
conda create -n facefusion2 python=3.11 -y
source /root/miniconda3/bin/activate
conda activate facefusion2
python install.py --skip-venv

 

选择安装 cuda

然后再安装ffmpg

· 

· 

· 

conda install ffmpeg -y
ffmpeg -version

 

在启动之前,可以提前下载好模型,也可以不下载,这个看自己,我这边操作就没有下载,因为感觉执行下来,速度也还行。

· 

· 

· 

wget https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnxwget https://github.com/facefusion/facefusion-assets/releases/download/models/arcface_w600k_r50.onnxwget https://github.com/facefusion/facefusion-assets/releases/download/models/gfpgan_1.4.onnx

 

运行

直接在项目目录运行 run.py ,这里如果没有提前下载模型的话,可能需要等待一下,看到如下的访问地址就可以了。

· 

python run.py --execution-providers cuda --face-swapper-model inswapper_128

 

这里有个小技巧,如果你的目标视频很大的话,可以先通过 AutoDL 先上传到某上文件夹下面,而不是通过界面来上传,有个好处就是如果换脸中途有报错,那么不需要重新上传,只需要运行的时候,指定下路径就行了。

比如

· 

python run.py --execution-providers cuda --face-swapper-model inswapper_128   --source=/tmp/gradio/2c830d29e00280596e3ab670ff6569a32c2ab9de/WechatIMG33.jpg  --target=/tmp/gradio/717e7b728adac28ee0b336c8d2c3e90ea92c5f2b/v1.mp4 --output=/tmp/bbbb.mp4

那么就可以直接读取上传好的文件了。

运行完后,就有一个访问地址,127.0.0.1:7860 这样的,这个地址只能内部访问 ,本来改一个文件就可以创建对外地址的,但是我改了也一样不行。

所以要访问的话,就有如下的两种方式

本地

因为AutoDL 启动的是类似 http://127.0.0.1:7860 这样的地址,这种只能在内部机器访问 ,而且,我在文件

“facefusion/uis/layouts/default.py”里,把 ui.launch(show_api =False,share=True)share = True 加上,也不能创建外网地址,会报错

于是用如下的本地方式

 

在自己本地电脑终端输入下面命令

· 

ssh -CNg -L 7860:127.0.0.1:7860 root@region-9.autodl.pro -p 26370

 

这个命令输入完后,有一个密码,输入界面上显示的那个就行。

然后在本地浏览器输入 http://localhost:7860/ 就能访问了

 外网

 

AutoDL 的机器 里面操作

1 下载文件 https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2 重命名 frpc_linux_amd64_v0.2
3 移动到 /root/miniconda3/envs/facefusion2/lib/python3.11/site-packages/gradio

但是我用这种方式,下载文件,移动到那个目录下,还是一样报错,报

"Could not create share link. Please check your internet connection or our status page: https://status.gradio.app." 

没办法 ,我就用的本地 SSH 的那种方式。

最后,我们打开地址 http://localhost:7860/  后,就看到如下的界面了

 

我这里还出现了一个小插曲,我选择好源和目标后,点那个 start」报如下错误  INVALID_PROTOBUF : Load model from /root/autodl-tmp/facefusion/.assets/models/arcface_w600k_r50.onnx failed:Protobuf parsing failed.

 

整了半天没弄好,把机器重装了也不行,后面我把 arcface_w600k_r50.onnx 这个文件删除一下,再重新下载就行了,就没有这个报错了

文件地址可以在 https://github.com/facefusion/facefusion-assets 这个工程下面去找。

 

 

选择后,就可以看到后台的任务状态了

 

 

OUTPUT」看到生成好的换脸视频后,就表示成功了,可以预览,也可以下载下来。

 

 

 

 

出自:https://mp.weixin.qq.com/s/jQ7Fne7OShuGzqYfN9avaA