云端部署FaceFusion-AI换脸
写在最前面:有些步骤可能需要魔法 号称***“Next generation face swapper and enhancer ”***的Facefusion 上周发布了2.2.1 版本。虽然对显卡要求没有以前的roop 和deepfake 那么夸张,但是GTX1650 跑起来还是比较吃力,所以决定云端部署。 这次依然是选择了老朋友恒源云,如果有动手能力也可以尝试白嫖Colab。 项目地址:https://github.com/facefusion/facefusion 官方文档:https://docs.facefusion.io/ 这次创建镜像的时候选择的是PyTorch >2.0.0 >Cuda11.8.0 刚好符合项目需求。 一、文件下载 1 2 3 4 5 6 #安装cli curl -L https://download.gpushare.com/download/gpushare-cli-linux -o /usr/local/bin/gpushare-cli chmod u+x /usr/local/bin/gpushare-cli #验证是否安装成功 gpushare-cli version 这一步是为了后续的文件传输,具体可以参考我之前的博客:https://fallen.wang/p/sovits/ 然后下载模型文件:此链接由Bilibili用户 @AI百晓生 提供 https://pan.baidu.com/s/1U_vsRu9ILHn9FQ_5iph-YQ?pwd=f86f *这是为Windows 系统准备的,Linux 只需要下载其中的models.7z即可* 将项目clone 到本地: 1 git clone https://github.com/facefusion/facefusion 如果因为众所周知的原因导致clone 失败,请使用魔法,或者自行搭建异次元通道,当然也可以下载压缩包到本地手动上传: 1 2 3 4 5 6 7 8 9 10 11 12 cd /hy-tmp #上传项目压缩包然后解压 unzip facefusion-master.zip #创建模型目录,注意以.开头的文件夹是隐藏的 cd facefusion-master mkdir .assets #下载模型文件 gpushare-cli baidu down models.7z #解压,注意文件约6G需要使用7za命令解压 7za x /usr/local/bin/models.7z #将解压后的models文件夹移动至/.assets内 mv /models /hy-tmp/facefusion-master/.assets 二、环境部署 Python 该项目使用的是Python3.10 ,而恒源云的Ubuntu 自带的是Python3.8 ,因此需要升级: 1 2 3 4 5 6 7 8 9 10 11 #更新包列表 sudo apt update #安装依赖项 sudo apt install -y software-properties-common #添加Python3.10 的PPA 到源列表中 sudo add-apt-repository ppa:deadsnakes/ppa #若提示‘Press [ENTER] to continue or Ctrl-c to cancel adding it’则按回车 #安装Python3.10 sudo apt install -y python3.10 #验证 Python3.10 --version FFmpeg 1 apt install ffmpeg 若询问是否继续输入y cURL 1 apt install curl 若询问是否继续输入y 虚拟环境 接着创建虚拟环境: 1 2 cd /hy-tmp/facefusion-master python3.10 -m venv venv 此时却出现了这样一条报错: Error: Command ‘[’/hy-tmp/venv/bin/python3.10’, ‘-m’, ’ensurepip’, ‘–upgrade’, ‘–default-pip’]’ returned non-zero exit status 1. 此时已经创建了venv ,报错是因为缺少ensurepip 模块,具体原因尚不清楚。 1 2 3 4 5 6 #先把刚刚的venv删掉 rm -rf venv #重新创建不带pip的venv python3.10 -m venv --without-pip venv #激活虚拟环境 source venv/bin/activate 三、安装项目 1 python install.py 报错:ModuleNotFoundError: No module named ‘inquirer’ 尝试pip 却依然报错。 查阅了官方discord后发现也有人遇到过类似问题,版主给出的解决方法是: 1 python -m pip install --upgrade pip 这时却提示缺少pip ,因为刚刚创建虚拟环境的时候留了一个伏笔--without-pip venv。手动装一个: 1 2 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py 安装了最新版pip 之后就可以运行 install.py了。 因为显卡是N卡,所以按方向键选择cuda,选择两次。 耐心等待脚本执行完毕。 大致看一眼没有报错便可进入下一步。 1 python run.py 当出现Running on local URL: http://127.0.0.1:7860时即为成功启动了。此时服务器端访问127.0.0.1:7860即可,但是毕竟服务器端没有图形化界面,所以可以在launch()函数里设置share=True以获得可供外网访问的链接:不过我个人更喜欢配置一个端口转发。 以xshell为例,连接至实例时需要提供主机、端口、用户和密码,这些都可以在控制台界面找到。 点击登录指令的复制按钮,得到如下信息: ssh -p 41624 root@i-2.gpushare.com 其中41624 为端口,root 为用户,i-2.gpushare.com 为主机,密码则单独列出。 新建会话,填写主机和端口,然后在侧边选项卡里找到SSH > 隧道> 添加,如图示填写: 其中侦听端口可随意填写。 以ROOT 身份登录,输入密码,成功建立会话后在本地浏览器中输入127.0.0.1:8888即可访问web-ui。 BTW,该项目引用了开源的NSFW 检测,具体代码位于/facefusion/content_analyser.py,可以尝试调整probability值。