基于Video-ReTalking的AI数字人模型部署
1、模型原理
模型原理部分可参考文章:AI数字人:最强声音驱动面部表情模型VideoReTalking-CSDN博客
本文重点记录模型部署过程中遇到的问题。
2、模型下载
项目地址:GitHub - OpenTalker/video-retalking: [SIGGRAPH Asia 2022] VideoReTalking: Audio-based Lip Synchronization for Talking Head Video Editing In the Wild
论文地址:https://arxiv.org/pdf/2211.14758.pdf
文章作者提供了训练好的模型,我们拿来直接使用部署即可。原链接是在goole云盘的,国内下载较慢,这里我把它共享到百度网盘了,需要的可以下载:
链接: https://pan.baidu.com/s/1LdquSu7QhUQcl9RSznBN7w?pwd=rx68 提取码: rx68 复制这段内容后打开百度网盘手机App,操作更方便哦。
下载之后,将其解压,放在项目同一目录文件夹下即可。
3、环境搭建
注意:这里强烈推荐利用anaconda搭建一个和作者版本一样的虚拟环境,这样可以避免很多问题(debug大佬当我没说)。
git clone https://github.com/vinthony/video-retalking.git
cd video-retalking
conda create -n retalking python=3.8
conda activate retalking
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
上面是作者给的安装方式,不过pytorch从官网下载会很慢,大家可以尝试下面推荐的离线安装模式。
3.1采用离线方式安装pytorch:
离线安装包链接:download.pytorch.org/whl/torch_stable.html
找到需要下载的版本:
pytorch版本——1.9.0版本,windows版本,python3.8:
以及torchvision。
之后可以创建虚拟环境:
conda create -n your_env_name python=3.8
激活虚拟环境:
activate your_env_name
使用cd指令转移到刚才下载的torch和torchvision安装包的目录。如果跨盘跳转失败了,可以使用 "cd /d D:\"的方式强制跳转。
先安装torch,在安装torchvision:
之后测试是否安装成功:
3.2安装requirements中的库
接着安装requirement.txt中的软件包。
这里推荐展开一个一个安装,且安装时建议严格按作者的要求来,安装对应版本。我在实验过程中出现了很多问题,但有时候修改安装包的版本就没有问题了。
作者给出的requirements如下:
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.4
这里给出我部署成功时所有库版本信息,大家可以参考一下,当出现某个问题时,可以尝试将那个库改成我这里的版本,可能就解决问题了。
在安装每个库时可参考指令:
pip install basicsr==1.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
后面的镜像源也可以尝试一下:阿里云的链接: -i https://mirrors.aliyun.com/pypi/simple
记得我是使用阿里云的链接成功的。
3.2.1安装basicsr时可能出现的问题
在安装basicsr时可能出现的一个问题是:要求python>=3.9而导致basicsr安装不上,但我们安装的python是3.8。
可能出现的报错情况是:
Looking in indexes: Simple Index Collecting basicsr==1.4.2 (from -r requirements.txt (line 1)) Downloading https://pypi.tuna.tsinghua.edu.cn/packages/86/41/00a6b000f222f0fa4c6d9e1d6dcc9811a374cabb8abb9d408b77de39648c/basicsr-1.4.2.tar.gz (172 kB) Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [52 lines of output] running egg_info...
....
********************************************************************************
Requirements should be satisfied by a PEP 517 installer.
If you are using pip, you can try `pip install --use-pep517`. ********************************************************************************
...
This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output.
note: This is an issue with the package mentioned above, not pip. hint: See above for details.
通过实验,python3.8版本也是可以安装上,你可以尝试这些步骤来解决这个问题:
修改setuptools版本(这也是原作者的版本):
pip install setuptools==68.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
在安装包时添加指令:--use-pep517
例如:
pip install --use-pep517 basicsr==1.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
此外,如果安装过程中出现了一系列红字,提示需要一系列依赖包时,也需要使用pip指令先安装那些依赖包(做实验时没有保留截图,所以不能展示实际情况)。
3.2.2安装dlib时可能出现的一个问题
在安装dlib包时可能发生的错误:
....
Preparing metadata (setup.py) ... done Building wheels for collected packages: dlib Building wheel for dlib (setup.py) ... error
error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully.
│ exit code: 1 ╰─> [7 lines of output] running bdist_wheel running build running build_py running build_ext
ERROR: CMake must be installed to build dlib [end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for dlib Running setup.py clean for dlib Failed to build dlib ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (dlib)
这提示我们一定要先安装CMake,才能安装成功。
这么操作下来,应该都能安装成功。
3.2.3安装ffmpeg时可能出现的一个问题
安装ffmpeg时可能出现的问题:
最后除了requirement中的库,还需要安装ffmpeg,安装方法同上。不过需要注意,安装好后,需要把ffmpeg.exe添加到环境变量(不会的话这个可以去查),否则最后程序运行的时候还是会出现问题。
如何查询ffmpeg.exe的位置,我是使用everything这个软件查询到的,不太清楚你们的位置会不会和我一样。
4、运行
在环境配置好之后,在命令行输入一下指令就可以运行啦。
这个模型的输入端是视频和音频,具体的参数可以参考源码修改。此外运行时如果显存不够可以修改batch_size大小。
# 运行代码
python inference.py --face examples/face/1.mp4 --audio examples/audio/1.wav --outfile results/1_3.mp4
5、结果和总结
第一:严格安装作者提供的各个库版本来,可以减少很多bug的发生;
第二:当发生报错时,一定要耐心,不要看到大串英文就头疼,仔细看报错信息,其实很多报错信息就是解决办法;
第三:实在解决不了 ,就把报错信息,只截取最后错误的关键信息进行网页搜索,这样可以大大提高搜到类似问题的可能性;
关于这个模型,它的输入端是:视频+音频。基本原理是在音频的驱动下,逐帧修改原视频中的每一帧,使其符合音频中的口型。
该模型的训练资料大多来自英文语料,所以对英文音频效果较好。
我尝试将一张图片改成视频后,再输入该模型基本实现了:让图片动起来说话的效果,但整个视频的分辨率不高,口型和音频的匹配度较好。由于原始是图片,除嘴部外,其余部分是静态的,导致最终合成的视频,面部的其他细节不够好。
以下是输入的图片,和让图片说话的效果,人物说出的声音就无法展示了。