运行环境 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
打开requirement.txt,删除torch。
vim requirements.txt
进一步安装依赖
# 对于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
# 安装所有扩展模块
bash scripts/install_ext.sh
pytorch3d安装
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
data_utils/face_tracking
文件夹中新建文件夹3DMM01_MorphableModel.mat
打开网址:https://faces.dmi.unibas.ch/bfm/main.php?nav=1-2&id=downloads
勾选选项并填写资料
提交之后一封会发一封邮件到邮箱,包含下载地址及账号密码,输入正确后即可下载到tar的压缩文件
找到压缩文件中的01_MorphableModel.mat
并解压
将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
cd data_utils/face_tracking
python convert_BFM.py
cd ../..
搜索data_utils/process.py
中函数名为_2D
的函数,将_2D更改为TWO_D,保存。
在项目中新建data文件夹,在文件夹里面新建对应的文件夹用于存储预处理文件,将视频放入其中。
python data_utils/process.py data/ba/ba.mp4
出现这个错误:未找到data/ba/track_params.pt
,说明流程未运行成功,则查看是否成功安装了pytorch3d
# 查看是否有pytorch3d
conda list
无则重新安装
conda install pytorch3d -c pytorch3d
安装完之后再运行,会发现这个错误,查看安装包,发现torch非gpu版本,则重新安装。
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
访问https://huggingface.co/cpierse/wav2vec2-large-xlsr-53-esperanto(需要魔法)
下载全部文件,在项目目录中新建文件夹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
下
将音频文件放入deepspeech的文件夹中
进行处理
python extract_ds_features.py --input ba/aud.wav
在同目录下得出aud.ds.npy
文件,修改名称为aud.npy
,拷贝到RAD-NeRF文件目录的/data/ba
中,完整的文件数量及名称:
这就是你定制数字人形象的数据,要基于这些数据去生成数字人。
音频预处理完毕。
更新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
将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
中。