环境
系统:win10
VS版本:2019
python版本: 3.10.8
cuda版本: 11.7
cuDNN: 8.5
tensorflow-gpu==2.8.0
PyTorch: torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0
MinGW-w64: 8.1
此配置经过实践是没问题的,也可以探索其他版本可行性。
环境安装过程
1、VS
安装注意事项,注意勾选红圈的组件,其他默认安装就行
2、cuda
下载地址:cuda V11.7
直接默认安装即可
3、cuDNN
下载地址:cuDNN8.5
然后将解压后的文件放入之前cmd找到的cuda路径下, 解压之后,
lib里的文件放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib
bin里的文件放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
include 里的文件放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include
配置环境变量:
cuda 其他环境变量安装的时候会自动添加,手动添加如下变量
4、tensorflow-gpu
安装过程中出现一个错误
No matching distribution found for tf-estimator-nightly==2.8.0.dev2021122109
经过查询得知使用的python清华源,没有这个包,预先使用其他源安装一下
pip install -i https://pypi.doubanio.com/simple/ tf-estimator-nightly==2.8.0.dev2021122109
5、PyTorch
直接使用如下命令安装:
pip install torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu117
PS :本人安装了torch的版本2.2.2、2.2.0,在编译ER-NeRF下四个组件的时候,报错,经过源博主建议,使用cuda11.7+粗DNN8.5,正常编译。
6、安装OpenFace
此处为获取人物眨眼数据,安装参考点击查看
安装完成后,启动OpenFaceOffline.exe,直接打开file菜单选择视频,进行视频分析。
分析完成后在目录下processed文件夹。找到csv后缀文件就是我们要的文件了。复制到ernerf下打他目录,修改名称为au.csv待用
7、安装ffmpeg
这里下载的版本是:ffmpeg-master-latest-win64-gpl
下载列表:https://github.com/BtbN/FFmpeg-Builds/releases 官网下载编译好的二进制文件。链接地址:ffmpeg
下载完成后解压,在环境变量path中添加解压的ffmpeg目录下bin目录路径。
8、gcc安装
MinGW-w64 官方网站的地址是:http://mingw-w64.org
这里下载的是
9、pytorch3d安装
这里安装的是pytorch3d-0.7.4版本,此处版本选择需要跟PyTorch对应,具体参考官网给出的版本支持情况选择。
先设置临时环境变量,然后在执行安装命令。
#设置环境变量
set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
# 进入pytorch3d-0.7.4目录,
py setup.py install
ER-NeRF项目编译
下载代码
https://github.com/Fictionarry/ER-NeRF.git
安装项目依赖
py install -r requirements.txt
编译依赖插件
在项目中,需要编译项目目录下四个插件:raymarching、\freqencoder、\gridencoder、\shencoder
依次cd到对应目录下,执行如下命令,安装即可
py setup.py install
PS :一定要cuda11.7+cuDNN8.5,这里有定制代码,其他版本编译不通过。
至此项目环境完成
#模型安装
1、人脸解析模型
下载人脸解析模型79999_iter.pth放到data_utils/face_parsing/这个目录 下载地址:人脸模型
2、头部姿态估计模型
下载四个头部姿态估计模型到data_utils/face_tracking/3DMM/
https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/exp_info.npy
https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/keys_info.npy
https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/sub_mesh.obj
https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/topology_info.npy
3、01_MorphableModel.mat模型
下载01_MorphableModel.mat模型到data_utils/face_trackong/3DMM/目录 从Basel Face Model 3下载2009DMM模型,需要填写信息接收下载账号密码,正常填写即可。地址:https://faces.dmi.unibas.ch/bfm/main.php?nav=1-1-0&id=details
4、运行时所需模型下载
四个运行时需要的模型,下载后放到C盘:用户.cache\torch\hub\checkpoints文件夹下,没有文件夹可以先建。
https://download.pytorch.org/models/resnet18-5c106cde.pth
https://www.adrianbulat.com/downloads/python-fan/s3fd-619a316812.pth
https://www.adrianbulat.com/downloads/python-fan/2DFAN4-cd938726ad.zip
https://download.pytorch.org/models/alexnet-owt-7be5be79.pth
5、语音特征提取模型
GITHUB下载deepspeech-0_1_0-b90017e8.pb放到系统C盘:用户.tensorflow\models目录下,第一次运行可能没有这个目录,那就自己创建一个
训练过程
主要任务内容如下:
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/sp/1.mp4 --task 1
python data_utils/process.py data/sp/1.mp4 --task 2
python data_utils/process.py data/sp/1.mp4 --task 3
python data_utils/process.py data/sp/1.mp4 --task 4
python data_utils/process.py data/sp/1.mp4 --task 5
python data_utils/process.py data/sp/1.mp4 --task 6
python data_utils/process.py data/sp/1.mp4 --task 7
python data_utils/process.py data/sp/1.mp4 --task 8
python data_utils/process.py data/sp/1.mp4 --task 9
任务跑完之后,检查ER-NeRF\data\sp文件夹下生成的数据是否正常,同时原本的aud.npy重新命名成aud_ds.npy
PS 任务8时长半小时左右。下面的训练任务耗时间都比较长
#头部
#python main.py data/sp/ --workspace trial_sp/ -O --iters 100000 --asr_model wav2vec/ deepspeech
python main.py data/sp/ --workspace trial_vrh/ -O --iters 100000
#嘴型
python main.py data/sp/ --workspace trial_vrh/ -O --iters 125000 --finetune_lips --patch_size 32
#身体 trial_vrh/checkpoints/ngp_ep0152.pth 模型路径为嘴型训练完成后得到的模型,自己根据实际填写
python main.py data/sp/ --workspace trial_vrh_torso/ -O --torso --head_ckpt trial_vrh/checkpoints/ngp_ep0152.pth --iters 200000
到此训练完成,得到我们最终需要的模型:
推理见下文。
附(每个软件版本兼容性选择):
cuda和cuDNN版本兼容性清单:https://docs.nvidia.com/deeplearning/cudnn/latest/reference/support-matrix.html#id19
cuda和PyTorch版本兼容性清单: https://pytorch.org/get-started/previous-versions/#wheel-6
Pytorch和pytorch3d版本兼容性清单:https://github.com/facebookresearch/pytorch3d/releases
参考来源:
https://github.com/Fictionarry/ER-NeRF
https://blog.csdn.net/matt45m/article/details/133700108