This repository includes the source code of the paper DynoSurf: Neural Deformation-based Temporally Consistent Dynamic Surface Reconstruction (ECCV 2024).
Authors: Yuxin Yao, Siyu Ren, Junhui Hou, Zhi Deng, Juyong Zhang, Wenping Wang.
Project Page | Paper | Data
- Release the code.
- Release preprocessed data.
git clone https://github.com/yaoyx689/DynoSurf.git
cd DynoSurf
conda create -n dynosurf python=3.9
conda activate dynosurf
# install pytorch (https://pytorch.org/)
pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
# install pytorch3d (https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md)
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
# install kaolin (https://kaolin.readthedocs.io/en/latest/notes/installation.html)
pip install kaolin==0.14.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-1.13.0_cu116.html
# install other dependencies
pip install -r requirements.txt
Dependencies (click to expand)
- numpy=1.24.4
- torch=1.13.0+cu116
- openmesh=1.2.1
- pytorch3d=0.7.4
- configargparse=1.7
- point-cloud-utils=0.30.4
- pymcubes=0.1.4
- pykdtree=1.3.11
- pymeshlab=2022.2.post4
- tqdm=4.62.3
- kaolin=0.14.0
- pyvista=0.38.5
- tetgen=0.6.2
- open3d=0.17.0
- matplotlib=3.8.2
- tensorboard
- pymeshfix==0.16.2
cd scripts
python run.py
-
If the input point cloud sequence does not provide normals, put the folder of them under
data_source/raw_data/
, compute the normals for them and write them intodata_source/[foldername]
. If the normals are already provided, skip this step.cd process_data python process_raw_data.py [folder_name]
-
Write the input data into a format that can be read by the code.
python gene_json.py [folder_name]
-
Execute training. Change the
folder_name
inscripts/run.sh
and runcd scripts python run.py
-
Resolution: If you want to adjust the resolution of the reconstructed surface, you can adjust the parameter
tet_grid_volume
(around$10^{-8}$ ~$10^{-6}$ ) inconfs/base.conf
, which controls the resolution of the generated tetrahedron. The smaller the value, the higher the resolution. -
Template Frame: If you want to specify the frame index corresponding to the template surface, please modify the
template_idx
inconfs/base.conf
.
The data used in the paper to compare with other methods can be downloaded here. It contains 32 sequences from the AMA dataset, 109 sequences from DFAUST dataset and 89 sequences from DT4D dataset. You can find a description of the data format here.
We also show the evaluation tool in evaluation
, which you can use eval_geometric.py
or eval_geometric_dt4d.py
to calculate the chamfer distance, normal consistent and F-score, and use eval_correspondences.py
to calculate the correspondences errors.
If you find our code or paper helps, please consider citing:
@inproceedings{yao2024dynosurf,
author = {Yao, Yuxin and Ren, Siyu and Hou, Junhui and Deng, Zhi and Zhang, Juyong and Wang, Wenping},
title = {DynoSurf: Neural Deformation-based Temporally Consistent Dynamic Surface Reconstruction},
booktitle = {European Conference on Computer Vision},
year = {2024},
}