VideoReTalking是一种新系统,可以根据输入音频编辑真实世界的谈话头部视频的面孔,即使具有不同的情感,也能生成高质量和口型同步的输出视频。我们的系统将这个目标分解为三个连续的任务:
(1)具有规范表情的面部视频生成。
(2)音频驱动的口型同步。
(3)面部增强以提高照片真实感。
给定一个会说话的视频,他可以使用表达式编辑网络,根据相同的表达式模板修改每一帧的表情,从而生成一个带有规范表达式的视频。然后,该视频与给定的音频一起被馈送到口型同步网络以生成口型同步视频。最后通过身份感知人脸增强网络和后处理来提高合成人脸的照片真实感。
一:安装Ubuntu22的服务器版本
1、安装编译环境
Ubuntu22安装后,打开ssh服务,并配置好一个终端。
#安装gcc和g++
sudo apt update
sudo apt install gcc g++
#查看版本
gcc --version
g++ --version
2、禁用Nouveau
#首先,编辑黑名单配置。
vim /etc/modprobe.d/blacklist.conf
#在文件的最后添加下面两行。
blacklist nouveau
options nouveau modeset=0
#然后,输入下面的命令更新并重启。
update-initramfs -u
reboot
3、安装Nvidia计算卡,本例中我使用了P40 24G计算卡,就以此为例进行配置
#重启后输入下面的命令验证是否禁用成功,成功的话这行命令不会有输出。
lsmod | grep nouveau
#安装Nvidia驱动,首先使用apt卸载已有的ubuntu自带的Nvidia驱动,命令如下。
apt-get purge nvidia*
#上传驱动文件至服务器,进入驱动所在路径,赋予执行权限,并执行安装命令
chmod +x NVIDIA-Linux-x86_64-535.86.05.run
#运行驱动程序软件
./NVIDIA-Linux-x86_64-535.86.05.run
安装后可以执行nvidia-smi来验证是否安装成功如下图:
4、安装Nvidia cuda
根据上图的提示,cuda最大可以支持12.1,我们就安装cuda12.1版本
#安装相关依赖
apt-get install zlib1g
#下载cuda12.1
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
#付给文件执行权限
chmod +x cuda_12.1.0_530.30.02_linux.run
#执行安装
sudo sh cuda_12.1.0_530.30.02_linux.run
配置启动环境
#直接将文件写在.bashrc里面
PATH=$PATH:/usr/local/cuda/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
#使生效,也可以重启服务器。
source ~/.bashrc
验证cuda是否安装成功
5、安装cuDNN
下载地址:
https://developer.nvidia.com/rdp/cudnn-archive
文件是2023年8月发布的,文件名:cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
#解压缩
xz -d cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar
#考贝相关文件夹到相关目录:
cp /root/cudnn-linux-x86_64-8.9.4.25_cuda12-archive/include/cudnn.* /usr/local/cuda/include/
cp /root/cudnn-linux-x86_64-8.9.4.25_cuda12-archive/lib/* /usr/local/cuda/lib64
#给相关目录付权限
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
6、安装anaconda,并设备国内源
#设置清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#将anaconda文件上传至服务器,例如我使用的是这个版本:Anaconda3-2023.09-0-Linux-x86_64.sh
chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh
#安装anaconda
bash Anaconda3-2023.09-0-Linux-x86_64.sh
二:环境准备
#克隆项目软件
git clone https://github.com/vinthony/video-retalking.git
cd video-retalking
conda create -n video_retalking python=3.10
conda activate video_retalking
#安装pytorch支持的CUDA 12.1
pip3 install torch torchvision torchaudio
接下来安装相关依赖
安装之前我们先修改一下requirements.txt文件的依赖版本:
basicsr==1.4.2
kornia==0.5.1
face-alignment==1.3.4
ninja==1.10.2.3
einops==0.4.1
facexlib==0.2.5
librosa==0.9.2
dlib==19.24.0
gradio>=3.7.0
numpy==1.23.1
opencv-contrib-python
opencv-python
scikit-image
修改后保存,开始执行安装。
conda install ffmpeg
pip install -r requirements.txt
假如报如下错误
ERROR: No matching distribution found for tb-nightly
pip install -i https://mirrors.aliyun.com/pypi/simple/ tb-nightly
然后再执行requirements.txt
pip install - r requirements.txt
直到不报错为止。
三:下载相关模型
1、下载预训练模型
https://drive.google.com/drive/folders/18rhjMpxK8LVVxf7PI6XwOidt8Vouv_H0?usp=share_link
无法下载,找国内的镜像站下载,或github发行版下载训练好的模型。
https://github.com/OpenTalker/video-retalking/releases/tag/v0.0.1
把这些文件下载下来,放到一个文件夹,起名叫:checkpoints。
注意:BFM.zip要解压出来。
2、把weights权重文件考到下面目录(两个文件),这两个文件也可以不用下面的方法,运行时会自动下载,但下载的速度太慢了,所以这里直接拷贝了。
/root/anaconda3/envs/video_retalking/lib/python3.10/site-packages/facexlib/weights/
需要考贝checkpoint文件(两个文件)至
/root/.cache/torch/hub/checkpoints/
3、在项目目录新建一个“temp”文件夹,在temp文件夹中分别新建一个“video”文件夹和“audio”文件夹,分别用来存放用来对嘴型的视频文件和音频文件的临时文件。
# mkdir temp
# cd temp
# mkdir video
# mkdir audio
4、配置网页版
修改webUI.py,其中IP地址是你的服务真实地址,你要根据实际情况来写。
vim webUI.py
#修改最后一句:
demo.queue().launch(server_name='192.168.29.197', server_port=7860, share=True, inbrowser=True)
运行网页版:
python webUI.py
然后打开浏览器
http://192.168.29.197:7860
5、命令行方式
python inference.py --face examples/face/1.mp4 --audio examples/audio/1.wav --outfile results/1_3.mp4
以上文件均为项目本身自带的测试视频和音频。
四:报错处理
报错1:ModuleNotFoundError: No module named 'cv2'
pip install opencv-python opencv-contrib-python
报错2:ERROR: CMake must be installed to build dlib
#缺少cmake编译器,执行安装cmake
conda install CMake