FLARE: 快速学习可动画和可重光照的网格化身
Shrisha Bharadwaj · Yufeng Zheng · Otmar Hilliges . Michael J. Black · Victoria Fernandez Abrevaya
ACM图形学汇刊(SIGGRAPH Asia会议论文集),2023
引用
如果您发现我们的代码或论文有用,请按以下方式引用:
@article{bharadwaj2023flare,
author = {Bharadwaj, Shrisha and Zheng, Yufeng and Hilliges, Otmar and Black, Michael J. and Abrevaya, Victoria Fernandez},
title = {FLARE: Fast Learning of Animatable and Relightable Mesh Avatars},
year = {2023},
issue_date = {December 2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {42},
number = {6},
issn = {0730-0301},
url = {https://doi.org/10.1145/3618401},
doi = {10.1145/3618401},
journal = {ACM Trans. Graph.},
month = {dec},
articleno = {204},
numpages = {15},
keywords = {neural rendering, neural head avatars, relighting, 3D reconstruction}
}
环境和设置
详细信息
克隆仓库:
git clone https://github.com/sbharadwajj/flare
cd flare
- 下载FLAME模型,选择FLAME 2020并解压,将
generic_model.pkl
复制到./flame/FLAME2020
环境
- 创建一个conda环境并按如下方式安装pytorch和pytorch3d:
conda create -n flare python=3.9
conda activate flare
conda install pytorch=1.13.0 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
conda install pytorch3d -c pytorch3d
- 按如下方式安装
nvdiffrast
和tinycudann
: 注意在构建tiny-cuda-nn之前必须设置您特定GPU的NVIDIA GPU架构。 这段代码在单个NVIDIA 80GB A100 GPU和NVIDIA RTX A5000 24 GB上进行了测试,两者都具有NVIDIA GPU架构sm_80
。我们使用了cuda 11.7和cudnn 8.4.1。
pip install ninja imageio PyOpenGL glfw xatlas gdown
pip install git+https://github.com/NVlabs/nvdiffrast/
export TCNN_CUDA_ARCHITECTURES="70;75;80"
export NVCC_PREPEND_FLAGS='-ccbin /usr/bin/gcc-9'
pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn#subdirectory=bindings/torch
imageio_download_bin freeimage
pip install gpytoolbox opencv-python trimesh matplotlib chumpy lpips tqdm
数据集
我们遵循IMavatar使用的相同数据格式和预处理。我们捕捉了额外的对象,其中一些预处理过的对象和模型可以在这里找到。
其他对象可以在IMavatar和PointAvatar的代码库中找到。
请参考这一部分来预处理您自己的数据。 请注意,我们遵循OpenGL格式的相机,并在训练过程中直接进行转换。
训练和评估
配置文件:
input_dir
: 设置数据集文件夹的路径working_dir
: 代码库的路径output_dir
: 保存输出的路径- 设置CUDA_HOME路径
训练
python train.py --config configs/001.txt
测试
测试代码保存内在材质的定性结果,再次进行定量评估(训练脚本是自包含的,最终的指标评估在训练后保存),并根据eval_dir
生成重新照明和动画的结果。可以在assets/env_maps
文件夹中添加其他环境贴图。
python test.py --config configs/001.txt
请参考配置文件来调整各个参数:
downsample
: 在训练前对网格进行降采样。在最终论文中,我们不进行降采样(这是默认参数),但为了进一步改善结果,可以使用此参数。upsample_iterations
: 对于最终论文,我们在第500次迭代时进行一次上采样。但如果网格最初被降采样,可以在第1000次迭代时添加额外的上采样步骤。上采样网格可以改善小细节,但如果过度使用也容易产生高频伪影。sample_idx_ratio
: 默认值为1,即采样所有图像。但为了更快地进行调试,可以将其设置为任意第n个值(例如6),以均匀采样每第n(第6)个图像。
GPU要求
我们使用单个NVIDIA 80GB A100 GPU训练我们的模型。通过减少批量大小,可以在内存较小的GPU(例如24 GB)上进行训练。
许可证
此代码和模型仅供非商业科研目的使用,如LICENSE文件中所定义。通过下载和使用代码和模型,您同意LICENSE中的条款。
致谢
对于基于外部来源的函数或脚本,我们在每个文件中单独致谢其来源。 但我们特别受益于Nvdiffrec。如果您觉得我们的工作有帮助,请考虑引用他们的工作bibtex。
其他有帮助的代码库:
查看这个代码库以了解此处遵循的README.md样式。
相关工作
- IMavatar - CVPR 2022
- Neural Head Avatars - CVPR 2022
- PointAvatar - CVPR 2023
- INSTA - CVPR 2023