当前位置: 首页 > news >正文

基于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的发生;

第二:当发生报错时,一定要耐心,不要看到大串英文就头疼,仔细看报错信息,其实很多报错信息就是解决办法;

第三:实在解决不了 ,就把报错信息,只截取最后错误的关键信息进行网页搜索,这样可以大大提高搜到类似问题的可能性;

关于这个模型,它的输入端是:视频+音频。基本原理是在音频的驱动下,逐帧修改原视频中的每一帧,使其符合音频中的口型。

该模型的训练资料大多来自英文语料,所以对英文音频效果较好。

我尝试将一张图片改成视频后,再输入该模型基本实现了:让图片动起来说话的效果,但整个视频的分辨率不高,口型和音频的匹配度较好。由于原始是图片,除嘴部外,其余部分是静态的,导致最终合成的视频,面部的其他细节不够好。

以下是输入的图片,和让图片说话的效果,人物说出的声音就无法展示了。


http://www.mrgr.cn/news/69184.html

相关文章:

  • 课程——决赛3# 传智
  • 【Python模拟websocket登陆-拆包封包】
  • WEB服务器实现(药品商超)
  • 一、HTML
  • 使用Axios函数库进行网络请求的使用指南
  • Android 无签名系统 debug 版本APK push到设备引起的开机异常问题分析(zygote进程)
  • CSS-盒模型
  • Linux——入门
  • 拓扑排序(C++类封装+数组模拟队列和邻接表)
  • of 操作函数——获取设备树节点
  • 概念井喷时代:什么样的产品才是真正的云产品?哪一些在浑水摸鱼
  • JS 循环语句
  • sql注入绕过,超详细!!
  • 力扣题库——75.颜色分类
  • 计算结构加法3+2
  • java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector问题解决
  • 提升内容质量的五大关键策略
  • 家用云相册方案探索之Immich
  • 鸿蒙进阶篇-type、typeof、类
  • Java基于小程序公考学习平台的设计与实现(附源码,文档)
  • 配置拦截器时Bean注入失败的解决方案
  • 课程讲解--深入探究二分算法
  • springboot给不同用户动态定制请求结果思路
  • 敏感词过滤方案
  • vite构建的react程序放置图片
  • 【2】GD32H7xx 串口Idle + DMA接收不定长数据