赞
踩
ER-NeRF是基于NeRF用于生成数字人的方法,可以达到实时生成的效果。
- cd D:\Projects\
- git clone https://github.com/Fictionarry/ER-NeRF
- cd D:\Projects\ER-NeRF
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
- 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
在data_utils/face_tracking文件夹中新建文件夹3DMM
下载01_MorphableModel.mat
勾选选项并填写资料,提交之后一封会发一封邮件到邮箱,包含下载地址及账号密码,输入正确后即可下载到tar的压缩文件,解压后将01_MorphableModel.mat放入项目中的 data_utils/face_tracking/3DMM 文件夹中
运行 convert_BFM.py
- cd data_utils/face_tracking
- python convert_BFM.py
下载deepspeech-0_1_0-b90017e8.pb.zip,并将里面的deepspeech-0_1_0-b90017e8.pb解压出来,放入/root/.tensorflow/models下
Releases · osmr/deepspeech_features · GitHubRoutines for DeepSpeech features processing. Contribute to osmr/deepspeech_features development by creating an account on GitHub.https://github.com/osmr/deepspeech_features/releases
cp deepspeech-0_1_0-b90017e8.pb /root/.tensorflow/models
docker pull nvcr.io/nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04
docker run --gpus all -it --name ernerf -v D:\Projects\ER-NeRF:/ernerf nvcr.io/nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04
- apt-get update -yq --fix-missing \
- && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
- pkg-config \
- wget \
- cmake \
- curl \
- git \
- vim
-
- # 对于Ubuntu,pyaudio需要portaudio的支持才能正常工作。
- apt install portaudio19-dev
- wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- sh Miniconda3-latest-Linux-x86_64.sh -b -u -p ~/miniconda3
- ~/miniconda3/bin/conda init
- source ~/.bashrc
- conda create -n ernerf python=3.10
- conda activate ernerf
- pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
- pip install -r requirements.txt
-
- conda install pytorch==1.12.1 torchvision==0.13.1 cudatoolkit=11.3 -c pytorch
- conda install -c fvcore -c iopath -c conda-forge fvcore iopath
- conda install pytorch3d==0.7.4 -c pytorch3d -c pytorch -c conda-forge
- conda install ffmpeg
- pip install tensorflow-gpu==2.8.0
- pip install numpy==1.22.4
- pip install opencv-python-headless
- pip install protobuf==3.20.0
- conda create -n ernerf python=3.10
- conda activate ernerf
下载地址:
https://developer.nvidia.com/cuda-toolkit-archivehttps://developer.nvidia.com/cuda-toolkit-archive注意版本对应关系,选择下载11.8。
安装完成,使用下面命令查看:
nvcc -V
下载地址:
https://developer.nvidia.com/rdp/cudnn-downloadhttps://developer.nvidia.com/rdp/cudnn-download
选择“Download cuDNN v8.9.7 (December 5th, 2023), for CUDA 11.x”->“Local Installer for Windows (Zip)”。
然后将解压后的文件放入cuda路径下
下载地址:
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/选择“MinGW-W64 GCC-8.1.0”->“x86_64-posix-seh”。
解压后把bin配置到环境变量path。
- conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
- pip install -r requirements.txt
- pip install tensorflow-gpu==2.8.0
- pip install protobuf==3.20.0
下载0.7.4版本
- cd pytorch3d
- python setup.py install
- pip install ./raymarching
- pip install ./gridencoder
- pip install ./freqencoder
- pip install ./shencoder
将视频放在 data/<ID>/<ID>.mp4 路径下
视频必须为 25FPS,所有帧都包含说话的人。 分辨率应约为 512x512,持续时间约为 1-5 分钟。
运行脚本以处理视频
python data_utils/process.py data/<ID>/<ID>.mp4
分布处理视频
python data_utils/process.py data/<ID>/<ID>.mp4 --task x
在训练和测试时可以指定音频功能的类型。
python data_utils/process.py data/<ID>/<ID>.mp4 --asr wav2vec
相当于单独调用了下面的指令进行处理
DeepSpeech
- python data_utils/deepspeech_features/extract_ds_features.py --input data/<name>.wav
- # save to data/<name>.npy
Wav2Vec
- python data_utils/wav2vec.py --wav data/<name>.wav --save_feats
- # save to data/<name>_eo.npy
https://github.com/TadasBaltrusaitis/OpenFace/wiki/Windows-Installationhttps://github.com/TadasBaltrusaitis/OpenFace/wiki/Windows-Installation下载解压后,文件夹里面有个OpenFaceOffline.exe,启动GUI界面。
以管理员身份打开PowerShell 输入:
set-executionpolicy remotesigned
选择Y 然后电脑上就可以执行自己编写的脚本文件。
在OpenFaceOffline.exe的同级文件夹下有一个叫download_models.ps1的文件,选中download_models.ps1文件,右击鼠标选择“使用PowerShell运行”,能够自动下载模型。
勾选OpenFaceOffline->Record->Record AUs,选择视频,最终文件会在processed文件夹。
将文件复制到ernerf/data/obama目录,重新命名成au.csv,把原本的aud.npy重新命名成aud_ds.npy。
首次运行需要一些时间来编译 CUDA 扩展。
- # 头部训练
- python main.py data/obama/ --workspace trial_obama/ -O --iters 100000
-
- # 微调嘴型动作
- python main.py data/obama/ --workspace trial_obama/ -O --iters 125000 --finetune_lips --patch_size 32
-
- # 身体训练
- # 导入上一步生成的头部模型,模型路径和名称按自己环境生成的结果
- python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --head_ckpt <head>.pth --iters 200000
如果asr使用wav2vec进行模型训练,可以加上--asr_model参数
- # 头部训练
- python main.py data/obama/ --workspace trial_obama/ -O --iters 100000 --asr_model cpierse/wav2vec2-large-xlsr-53-esperanto
-
- # 微调嘴型动作
- python main.py data/obama/ --workspace trial_obama/ -O --iters 125000 --finetune_lips --patch_size 32 --asr_model cpierse/wav2vec2-large-xlsr-53-esperanto
-
- # 身体训练
- # 导入上一步生成的头部模型,模型路径和名称按自己环境生成的结果
- python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --head_ckpt trial_obama/checkpoints/ngp_ep0078.pth --iters 200000 --asr_model cpierse/wav2vec2-large-xlsr-53-esperanto
将所需要音频进行处理,同上预处理一方法相同,假设想要数字人说话的音频为aud.wav。
python nerf/asr.py --wav data/obama/aud.wav --save_feats
生成aud_eo.npy文件于data/obama中,生成完毕后,即可进行推理:
- # 使用特定音频和姿势序列进行测试
- # --test_train:使用训练集进行测试
- # --data_range:使用此范围的姿势和眼睛序列(如果比音频短,会自动镜像和重复)
- python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --test --test_train --data_range 0 100 --aud data/obama/aud_eo.npy
推理完毕的视频存于trial_obama_torso/results中。
报错:
This caused an overflow, meaning output may be incomplete. To solve, try increasing max_faces_per_bin / max_points_per_bin, decreasing bin_size, or setting bin_size to 0 to use the naive rasterization.Bin size was too small in the coarse rasterization phase.
解决方案:
修改data_utils\face_tracking\render_3dmm.py
在raster_settings中添加bin_size = 0
- raster_settings = RasterizationSettings(
- image_size=(self.img_h, self.img_w),
- blur_radius=np.log(1.0 / 1e-4 - 1.0) * sigma / 18.0,
- faces_per_pixel=2,
- perspective_correct=False,
- bin_size = 0,
- )
报错:
ValueError: Found array with 0 sample(s) (shape=(0, 2)) while a minimum of 1 is required by NearestNeighbors.
解决方案:
检查data/obama/parsing 这个文件夹下的图片有没有空白的,如果有需要重新裁剪视频。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。