前言
1.真人视频三维重建数字人源码是基于NeRF改进的RAD-NeRF,NeRF(Neural Radiance Fields)是最早在2020年ECCV会议上的Best Paper,其将隐式表达推上了一个新的高度,仅用 2D 的 posed images 作为监督,即可表示复杂的三维场景。
如果对该项目感兴趣或者在安装的过程中遇到什么错误的的可以加787501969,大家一起探讨。
NeRF其输入稀疏的多角度带pose的图像训练得到一个神经辐射场模型,根据这个模型可以渲染出任意视角下的清晰的照片。也可以简要概括为用一个MLP神经网络去隐式地学习一个三维场景。
NeRF最先是应用在新视点合成方向,由于其超强的隐式表达三维信息的能力后续在三维重建方向迅速发展起来。
2.NeRF使用的场景有几个主流应用方向:
新视点合成:
物体精细重建:
城市重建:
人体重建:
3.真人视频合成
通过音频空间分解的实时神经辐射谈话肖像合成
一、训练环境
1.系统要求
我是在win下训练,训练的环境为win 10,GPU RTX 3080 12G,CUDA 11.7,cudnn 8.5,Anaconda 3,Vs2019。
2.环境依赖
使用conda环境进行安装,python 3.10
#下载源码
git clone https://github.com/ashawkey/RAD-NeRF.git
cd RAD-NeRF
#创建虚拟环境
conda create --name vrh python=3.10
activate vrh
#pytorch 要单独对应cuda进行安装,要不然训练时使用不了GPU
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
#安装所需要的依赖
pip install -r requirements.txt
3.windows下安装pytorch3d,这个依赖还是要在刚刚创建的conda环境里面进行安装。
git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d
python setup.py install
安装pytorch3d很慢,也有可能中间报错退出,这里建议安装vs 生成工具。Microsoft C++ 生成工具 - Visual Studiohttps://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
二、数据准备
1.从网上上下载或者自己拍摄一段不大于5分钟的视频,视频人像单一,面对镜头,背景尽量简单,这是方便等下进行抠人像与分割人脸用的。我这里从网上下载了一段5分钟左右的视频,然后视频编辑软件,只切取一部分上半身和头部的画面。按1比1切取。这里的剪切尺寸不做要求,只是1比1就可以了。
2.把视频剪切项目参数设置成1比1,分辨率设成512*512。
3.数据长宽按512*512,25fps,mp4格式导出视频。
4.把导出的数据放到项目目录下,如下图所示, 我这里面在data下载创建了一个与文件名一样的目录,然后把刚刚剪切的视频放进目录里面。
视频数据如下:
三、人脸模型准备
1.人脸解析模型
模型是从AD-NeRF这个项目获取。下载AD-NeRF这个项目。
git clone https://github.com/YudongGuo/AD-NeRF.git
把AD-NeRF项目下的data_utils/face_parsing/79999_iter.pth复制到RAD-NeRF/data_utils/face_parsing/79999_iter.pth 。
或者在RAD-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
2.basel脸部模型处理
从AD-NeRF/data_utils/face_trackong项目里面的3DMM这个目录复制到Rad-NeRF/data_utils/face_trackong里面
移动到的位置:
或者是在Rad_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
## prepare basel face model
# 1. download `01_MorphableModel.mat` from https://faces.dmi.unibas.ch/bfm/main.php