RAD-NeRF部署教程

1.创建环境并下载到本地

运行环境 Ubuntu 20.04,Pytorch 1.12,CUDA 11.6.2。

conda create -n radnerf python=3.10
conda activate radnerf

git clone https://github.com/ashawkey/RAD-NeRF.git
cd RAD-NeRF

2.安装依赖

打开requirement.txt,删除torch。

vim requirements.txt

RAD-NeRF部署教程_第1张图片

进一步安装依赖

# 对于Ubuntu,pyaudio需要portaudio的支持才能正常工作。
sudo apt install portaudio19-dev

pip install -r requirements.txt

pip install scikit-learn

pip install chardet

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

3.构建扩展模块

# 安装所有扩展模块
bash scripts/install_ext.sh

4.安装pytorch3d

pytorch3d安装

5.下载模型

准备面部解析模型
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

下载失败的话,直接打开模型下载页面,下载AD-NeRF的整个项目到本地,再找到相对应的文件上传至项目文件的对应位置:data_utils/face_parsing/79999_iter.pth

RAD-NeRF部署教程_第2张图片
准备basel面部模型
data_utils/face_tracking文件夹中新建文件夹3DMM

RAD-NeRF部署教程_第3张图片

下载01_MorphableModel.mat

打开网址:https://faces.dmi.unibas.ch/bfm/main.php?nav=1-2&id=downloads

勾选选项并填写资料

RAD-NeRF部署教程_第4张图片

提交之后一封会发一封邮件到邮箱,包含下载地址及账号密码,输入正确后即可下载到tar的压缩文件

RAD-NeRF部署教程_第5张图片

找到压缩文件中的01_MorphableModel.mat并解压

RAD-NeRF部署教程_第6张图片

01_MorphableModel.mat放入项目中的data_utils/face_tracking/3DMM文件夹中

其他文件

从AD-NeRF的data_util/face_tracking/3DMM文件夹中拷贝

exp_info.npy

keys_info.npy

sub_mesh.obj

topology_info.npy

到RAD-NeRF的data_util/face_tracking/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
运行 convert_BFM.py
cd data_utils/face_tracking
python convert_BFM.py
cd ../..

6.视频预处理

搜索data_utils/process.py中函数名为_2D的函数,将_2D更改为TWO_D,保存。

在项目中新建data文件夹,在文件夹里面新建对应的文件夹用于存储预处理文件,将视频放入其中。

RAD-NeRF部署教程_第7张图片

python data_utils/process.py data/ba/ba.mp4

RAD-NeRF部署教程_第8张图片

出现这个错误:未找到data/ba/track_params.pt,说明流程未运行成功,则查看是否成功安装了pytorch3d

# 查看是否有pytorch3d
conda list

无则重新安装

conda install pytorch3d -c pytorch3d

安装完之后再运行,会发现这个错误,查看安装包,发现torch非gpu版本,则重新安装。

RAD-NeRF部署教程_第9张图片

 
  
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

7.音频预处理

下载依赖

访问https://huggingface.co/cpierse/wav2vec2-large-xlsr-53-esperanto(需要魔法)

RAD-NeRF部署教程_第10张图片

下载全部文件,在项目目录中新建文件夹cpierse/wav2vec2-large-xlsr-53-esperanto,将文件放入此文件夹中。

预处理一
python nerf/asr.py --wav data/ba/aud.wav --save_feats

生成aud_eo.npy文件于data/ba

预处理二

新建一个conda环境,pyhton3.7,tensorflow-gpu 1.15.0

conda create -n deepspeech python=3.7

下载deepspeech项目到新的文件夹中

git clone https://github.com/osmr/deepspeech_features

删掉requirement.txt的tensorflow-gpu>=1.15.2,避免不必要的错误

安装依赖

pip install -r requirements.txt

手动安装tensorflow

pip install tensorflow-gpu==1.15.0

安装protobuf

pip install protobuf==3.20.0

下载deepspeech-0_1_0-b90017e8.pb.zip,并将里面的deepspeech-0_1_0-b90017e8.pb解压出来,放入/root/.tensorflow/models

RAD-NeRF部署教程_第11张图片


RAD-NeRF部署教程_第12张图片

将音频文件放入deepspeech的文件夹中

RAD-NeRF部署教程_第13张图片

进行处理

python extract_ds_features.py --input ba/aud.wav

在同目录下得出aud.ds.npy文件,修改名称为aud.npy,拷贝到RAD-NeRF文件目录的/data/ba中,完整的文件数量及名称:

RAD-NeRF部署教程_第14张图片

这就是你定制数字人形象的数据,要基于这些数据去生成数字人。

音频预处理完毕。

8.训练

更新numpy

pip install numpy==1.22.4

执行命令

# 训练(头部)
# 默认情况下,我们会动态从磁盘加载数据。
# 我们也可以将所有数据预加载到CPU/GPU以加快训练速度,但对于大型数据集来说,这会非常占用内存。
# `--preload 0`:从磁盘加载(默认,较慢)。
# `--preload 1`:加载到CPU,需要约70G CPU内存(稍慢)
# `--preload 2`:加载到GPU,需要约24G GPU内存(快速)
python main.py data/ba/ --workspace trial_ba/ -O --iters 200000 --preload 2

# 训练(微调嘴唇,额外进行50000步,在上述命令之后运行!)
python main.py data/ba/ --workspace trial_ba/ -O --iters 250000 --finetune_lips

# 训练(躯干)
# .pth 是 trial_obama 中的最新检查点
python main.py data/ba/ --workspace trial_ba_torso/ -O --torso --head_ckpt .pth --iters 200000

9.推理

nerf/utils.py中495行的_2D函数更名为TWO_D,保存,替换。

将所需要音频进行处理,同上预处理一方法相同,假设想要数字人说话的音频为haha.wav

执行

python nerf/asr.py --wav data/ba/haha.wav --save_feats

生成haha_eo.npy文件于data/ba中,生成完毕后,即可进行推理:

# 使用特定音频和姿势序列进行测试
# --test_train:使用训练集进行测试
# --data_range:使用此范围的姿势和眼睛序列(如果比音频短,会自动镜像和重复)
python main.py data/ba/ --workspace trial_ba_torso/ -O --torso --test --test_train --data_range 0 100 --aud data/ba/haha_eo.npy

推理完毕的视频存于trial_ba_torso/results中。

你可能感兴趣的:(python,人工智能,深度学习)