AI换脸FaceFusion的安装和使用

2024-03-13 12:30:22 浏览数 (1)

FaceFusion是一款可以直接换脸的项目,支持图片换脸和视频换脸,且不需要进行模型训练,是roop项目的迭代项目。

Github: https://github.com/facefusion/facefusion

安装

安装文档:https://docs.facefusion.io/installation

代码语言:javascript复制
git clone https://github.com/facefusion/facefusion
conda create -n facefusion2 python=3.11 -y
conda activate facefusion2

cd facefusion
# 该命令运行中需要手动选择安装依赖的类型,建议选择cuda
python install.py

# pip install -r requirements
python run.py

常见问题

FFMpeg依赖问题

若出现FFMpeg依赖找不到,则需要安装FFMpeg,

Conda install该方式的版本不一定是最新的。

代码语言:javascript复制
conda install ffmpeg -y
ffmpeg -version

也可以下载源码编译安装

代码语言:javascript复制
wget http://www.ffmpeg.org/releases/ffmpeg-6.0.tar.xz
tar -xf ffmpeg-6.0.tar.xz
cd ffmpeg-6.0
#执行: ./configure --prefix=/usr/local/ffmpeg
#报错: nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
#安装: yum install yasm
./configure --prefix=/usr/local/ffmpeg
make && make install
cd /usr/local/ffmpeg/bin
./ffmpeg -version

访问问题

若想非本机可访问,则需要修改如下代码,添加server_name属性。

代码语言:javascript复制
# facefusion/uis/layouts/default.py

def run(ui : gradio.Blocks) -> None:
    ui.launch(show_api = False, server_name='0.0.0.0')

DNN库版本不一致

上传图片和视频后运行换脸报错,可能是本地cudnn和代码编译的版本不一致,需要升级本地cudnn版本。

代码语言:javascript复制
2023-10-27 17:39:29.913787: E tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:425] Loaded runtime CuDNN library: 8.2.1 but source was compiled with: 8.6.0.  CuDNN library needs to have matching major version and equal or higher minor version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.

查看本地cudnn版本

代码语言:javascript复制
ls /usr/local/cuda/lib64/libcudnn*

在conda环境中安装高版本的CuDNN,你可以使用以下步骤:

首先,你需要确定你的CUDA版本。因为CuDNN的版本需要与CUDA版本兼容。你可以使用以下命令来查看CUDA的版本:

代码语言:javascript复制
nvcc --version

然后,你可以使用conda search命令来查找可用的CuDNN版本。例如,如果你的CUDA版本是11.0,你可以使用以下命令来查找可用的CuDNN版本:

代码语言:javascript复制
conda search cudnn

运行结果如下:

代码语言:javascript复制
# conda search cudnn
Loading channels: done
# Name                       Version           Build  Channel             
cudnn                          7.0.5       cuda8.0_0  pkgs/main           
cudnn                          7.1.2       cuda9.0_0  pkgs/main           
cudnn                          7.1.3       cuda8.0_0  pkgs/main           
cudnn                          7.2.1       cuda9.2_0  pkgs/main           
cudnn                          7.3.1      cuda10.0_0  pkgs/main           
cudnn                          7.3.1       cuda9.0_0  pkgs/main           
cudnn                          7.3.1       cuda9.2_0  pkgs/main           
cudnn                          7.6.0      cuda10.0_0  pkgs/main           
cudnn                          7.6.0      cuda10.1_0  pkgs/main           
cudnn                          7.6.0       cuda9.0_0  pkgs/main           
cudnn                          7.6.0       cuda9.2_0  pkgs/main           
cudnn                          7.6.4      cuda10.0_0  pkgs/main           
cudnn                          7.6.4      cuda10.1_0  pkgs/main           
cudnn                          7.6.4       cuda9.0_0  pkgs/main           
cudnn                          7.6.4       cuda9.2_0  pkgs/main           
cudnn                          7.6.5      cuda10.0_0  pkgs/main           
cudnn                          7.6.5      cuda10.1_0  pkgs/main           
cudnn                          7.6.5      cuda10.2_0  pkgs/main           
cudnn                          7.6.5       cuda9.0_0  pkgs/main           
cudnn                          7.6.5       cuda9.2_0  pkgs/main           
cudnn                          8.2.1      cuda11.3_0  pkgs/main           
cudnn                       8.9.2.26        cuda11_0  pkgs/main 

根据你的CUDA版本(nvidia-smi命令可查看)和需要的CuDNN版本,

你可以使用conda install命令来安装CuDNN。例如,如果你的CUDA版本是11.0,你想安装CuDNN 8.9.2.26,你可以使用以下命令:

代码语言:javascript复制
conda install cudnn=8.9.2.26

conda的库也可以

代码语言:javascript复制
cp /install/anaconda3-env/envs/facefusion2/lib/libcudnn* /usr/local/cuda-11.0/include/
cp /install/anaconda3-env/envs/facefusion2/include/cudnn* /usr/local/cuda-11.0/lib64/

找不到DNN库

运行推断的时候报错如下:

代码语言:javascript复制
DNN library is not found.

下载最新的cudnn,根据cuda版本选择,如cuda11对对应的8.9.5

代码语言:javascript复制
# https://developer.nvidia.com/cudnn
# 解压编译好的二进制文件夹压缩包
cp include/cudnn* /usr/local/cuda-11.0/include/
cp lib/libcudnn* /usr/local/cuda-11.0/lib64/

Web使用

上传图片和视频

中间SOURCE部分只能上传图片(想换的新脸),TARGET部分可以上传图片和视频(需要被替换的素材)。

右侧PREVIEW部分是换脸的预览图片效果。

右侧的REFERENCE FACE DISTANCE部分是原图和目标素材中的人脸相似程度,用的是欧式距离,值越小表示两者越相似,可以根据实际的相似情况调节该值让换脸更逼真。

默认情况下的换脸后会出现脸部模糊的现象,可以勾选左侧上方的face_enhancer,可以让脸部更高清。

0 人点赞