【ER-NeRF数字人】手把手教用ER-NeRF实现实时交互数字人

模型介绍

ER-NeRF是一种旨在提高神经辐射场(NeRF, Neural Radiance Fields)技术的效率和实时渲染能力的项目。在训练数字人 模型方面应用广泛。
模型输入:
视频必须为 25FPS,所有帧都包含说话的人。 分辨率应约为 512x512,持续时间约为 1-5 分钟。
模型输出:
一个输入视频中人物数字人模型,可以结合音频进行推理,输出实时
/固定视频。
项目地址:ER-NeRF
优缺点:
优点:训练完成后,推理速度快,可以实现低延迟实时交互,融合大模型技术。
缺点:

  • 1.头部晃动更大,是模型本身存在的问题。
  • 2.对于需要训练全身的数字人需要进行头部贴回原视频。
  • 3.训练长视频比如4分钟左右,会出现嘴巴不动情况,博主还没有解决,建议处理不超过2分钟短视频。

模型对比

Synctalk:模型是ER-NeRF优化模型,但训练过程不稳定,容易出现嘴巴抖动问题,模型对于长发视频模型训练会出现头发断裂现象。个人不建议使用此模型。
项目地址:metahuman-stream

完成定制数字人你可能还需要什么?

CosyVoice: 阿里最新开源音色克隆、文本转语音项目,支持情感控制功能。只需要用户输入3秒左右的人声音频,即可完美克隆音色,功能强大。
项目地址:CosyVoice
metahuman-stream: 项目实现实时交互流式数字人,实现音视频同步对话,基本可以达到商用效果。metahuman-stream结合ER-NeRF训练好的模型,结合Synctalk克隆的音色模型可以较好实现商用数字人项目。
项目地址:metahuman-stream

  • 支持多种数字人模型: ernerf、musetalk、wav2lip
  • 支持声音克隆
  • 支持数字人说话被打断
  • 支持全身视频拼接
  • 支持rtmp和webrtc
  • 支持视频编排:不说话时播放自定义视频

1.克隆项目、安装依赖环境

#选择一个目录克隆项目
cd /home/yjfeng/projects
git clone https://github.com/Fictionarry/ER-NeRF.git
cd ER-NeRF

conda create -n ernerf python=3.10
conda activate ernerf
conda install pytorch==1.12.1 torchvision==0.13.1 cudatoolkit=11.3 -c pytorch
pip install -r requirements.txt
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
pip install tensorflow-gpu==2.8.0
# 重新安装protobuf,使用3.20.3版本
pip uninstall protobuf
pip install protobuf==3.20.3

2.下载面部解析模型

wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_parsing/79999_iter.pth?raw=true -O data_utils/face_parsing/79999_iter.pth

3.准备3DMM所需文件

wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/exp_info.npy?raw=true -O data_utils/face_tracking/3DMM/exp_info.npy
wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/keys_info.npy?raw=true -O data_utils/face_tracking/3DMM/keys_info.npy
wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/sub_mesh.obj?raw=true -O data_utils/face_tracking/3DMM/sub_mesh.obj
wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/topology_info.npy?raw=true -O data_utils/face_tracking/3DMM/topology_info.npy

4.下载3DMM模型

复制01_MorphableModel.mat文件到data_util/face_tracking/3DMM/目录下,再执行下面命令

cd data_utils/face_tracking
python convert_BFM.py
**

5.将要训练人物模型(视频文件)放在data目录下。以data//.mp4明明。例如:chinese.mp4就放在ER-NeRF/data/chinese/chinese.mp4

视频要求(此要求下效果好):
① 帧率:25FPS;
② 每一帧都要是人物说话;
③ 分辨率:512x512;
④ 时长:1-5分钟;
⑤ 人物背景要稳定。

6.使用data_utils/process.py脚本处理视频

python data_utils/process.py data/chinese/chinese.mp4    
task 1:分离视频。生成aud.wav文件。若报错,通常是ffmpeg问题。
task 2:生成一些音频数据,aud.npy文件。若报错,一般是protobuf版本问题。
task 3:提取视频中的每帧图像。生成ori_imgs/XXX.jpg文件,会有很多jpg文件。
task 4:分割人像(语义分割)。生成parsing/XX.png文件,会有很多png文件。
task 5:提取背景图像。生成bc.jpg文件。是人物的背景图片。
task 6:分割出身体部分与生成Ground Truth图片。生成gt_imgs/XXX.jpg和torso_imgs/XXX.png(只有躯干没有人脸的图片)。
task 7:获取人脸各个点位的坐标。生成ori_imgs/XXX.lms。
task 8:获取人脸跟踪数据,这步要训练一个追踪模型,会很慢。生成track_params.pt文件。这部报错通常是pytorch3d的问题,注意cuda版本。
task 9:生成transformers_train.json和transforms_val.json

如果某个任务报错,可以配置环境后使用:

python data_utils/process.py data/<ID>/<ID>.mp4 --task <taskId>
例如(重试任务2):
python data_utils/process.py data/chinese/chinese.mp4 --task 2

7.将生成的aud.npy复制一份,改名aud_ds.npy(源码好像有点问题,需要要这么做,否则下面步骤报错文件不存在)

8.若需要训练的模型有眨眼效果,需要捕获原视频眨眼动作,使用OpenFace生成.csv文件

1.下载OpenFace软件

① 下载OpenFace(Windows版本链接);
② 解压文件,打卡里面的OpenFaceOffline.exe;
③ Record里只勾选Record AUs;
④ 打开chinese.mp4,之后就开始运行。
⑤ 等待运行结束,会在./processd文件夹中生成.csv文件,将其更名为au.csv。
⑥ 将其放在data//文件夹下。

2.在github上面拉取到服务器,自行写脚本运行chinese.mp4,自动生成au.csv

OpenFace项目地址: OpenFace

9.以上步骤均为训练模型数据准备阶段,下面开始训练模型

# 命令1:训练模型100000次,训练后的模型放在trial_chinese目录下
python main.py data/chinese/ --workspace trial_chinese/ -O --iters 100000
# 命令2:在上面训练的基础上,再微调嘴唇,训练125000次,批量大小为32,可根据自己显存调节
python main.py data/chinese/ --workspace trial_chinese/ -O --iters 125000 --finetune_lips --patch_size 32
# 命令3:再把头部模型和躯干融合训练,训练模型200000次,训练后的模型放在trial_chinese_torso目录下,trial_chinese/checkpoints/ngp.pth为上面步骤训练出来的头部模型
python main.py data/chinese/ --workspace trial_chinese_torso/ -O --torso --head_ckpt trial_chinese/checkpoints/ngp.pth --iters 200000

至此,模型已经训练完毕,NeRF/model_chinese_torso/checkpoints/ngp.pth为最终视频所训练出来的数字人模型,可以结合其他应用方式进行模型推理,生成数字人视频。

模型运行测试情况:

  • 模型接受视频要求:25FPS;512*512
  • 测试视频大小:40秒
  • GPU: 数据集准备阶段需要6G显存;训练模型阶段需要6.5G显存
  • 时间:数据集准备时间20分钟;模型训练时间4.5小时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值