前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI换脸FaceFusion的安装和使用

AI换脸FaceFusion的安装和使用

原创
作者头像
Luoyger
修改2024-03-13 12:30:22
4.3K0
修改2024-03-13 12:30:22
举报
文章被收录于专栏:AI技术探索和应用

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,可以让脸部更高清。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 常见问题
    • FFMpeg依赖问题
      • 访问问题
        • DNN库版本不一致
          • 找不到DNN库
          • Web使用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档