/Motion2VecSets

Motion2VecSets: 4D Latent Vector Set Diffusion for Non-rigid Shape Reconstruction and Tracking

Primary LanguagePython

🐎Motion2Vecsets: 4D Latent Vector Set Diffusion for Non-rigid Shape Reconstruction and Tracking

Wei Cao1* · Chang Luo1* · Biao Zhang2
Matthias Nießner1 · Jiapeng Tang1

1Technical University of Munich · 2King Abdullah University of Science and Technology
(* indicates equal contribution)

CVPR 2024

Arxiv PDF Project Page Youtube Video

[Arxiv] [Paper] [Project Page] [Video]

teaser We present Motion2VecSets, a 4D diffusion model for dynamic surface reconstruction from sparse, noisy, or partial point cloud sequences. Compared to the existing state-of-the-art method CaDeX, our method can reconstruct more plausible non-rigid object surfaces with complicated structures and achieve more robust motion tracking.

pipeline

Given a sequence of sparse and noisy point clouds as inputs, labeled as Pt for t from 1 to T, Motion2VecSets outputs a continuous mesh sequence, labeled as Mt for t from 1 to T. The initial input frame, P1 (top left), is used as a condition in the Shape Vector Set Diffusion, which yields denoised shape codes, S, for reconstructing the geometry of the reference frame, M1 (top right). Concurrently, the subsequent input frames, Pt for t from 2 to T (bottom left), are utilized in the Synchronized Deformation Vector Sets Diffusion to produce denoised deformation codes, Dt for t from 2 to T, where each latent set, Dt, encodes the deformation from the reference frame, M1, to each subsequent frame, Mt.

denoising

Install

Install the environment following scripts/init_environment.sh, to install with cuda 11.0, use the command bash scripts/init_environment.sh

Data preparation and Pretrained models

You can find the data preparation scripts in /home/liang/m2v/dataset/dataset_generate or you can directly download the preprocessed dataset.

For pretrained models, you can directly put them in the ckpts directory, and there are two subfolders DFAUST and DT4D for two datasets respectively, you can get them from the Google Drive.

Training and evaluation

You can run the training with the following command, here we use the DFAUST dataset as an example. For DT4D dataset you may just change the path of config file.

# Shape
python core/run.py --config_path ./configs/DFAUST/train/dfaust_shape_ae.yaml # Shape AE
python core/run.py --config_path ./configs/DFAUST/train/dfaust_shape_diff_sparse.yaml # Diffusion Sparse Input
python core/run.py --config_path ./configs/DFAUST/train/dfaust_shape_diff_partial.yaml # Diffusion Partial Input

# Deformation
python core/run.py --config_path ./configs/DFAUST/train/dfaust_deform_ae.yaml # Deformation AE
python core/run.py --config_path ./configs/DFAUST/train/dfaust_deform_diff_sparse.yaml # Diffusion Sparse Input
python core/run.py --config_path ./configs/DFAUST/train/dfaust_deform_diff_partial.yaml # Diffusion Partial Input

For evaluation, you can run the following command:

python core/eval.py --config_path ./configs/DFAUST/eval/dfaust_eval_sparse.yaml # Test Sparse Unssen Sequence
python core/eval.py --config_path ./configs/DFAUST/eval/dfaust_eval_sparse.yaml --test_ui # Test Sparse Unssen Individual

python core/eval.py --config_path ./configs/DFAUST/eval/dfaust_eval_partial.yaml # Test Partial Unssen Sequence
python core/eval.py --config_path ./configs/DFAUST/eval/dfaust_eval_partial.yaml --test_ui # Test Partial Unssen Individual

Demo

You can run demo/infer.py to get the predicted mesh sequence for the inputs located in demo/inputs, before running the demo, you need to download the pretrained models and put them in the ckpts directory.

Citation

@inproceedings{Wei2024M2V,
    title={Motion2VecSets: 4D Latent Vector Set Diffusion for Non-rigid Shape Reconstruction and Tracking},
    author={Wei Cao and Chang Luo and Biao Zhang and Matthias Nießner and Jiapeng Tang},
    booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
    url={https://vveicao.github.io/projects/Motion2VecSets/},
    year={2024}
} 

Reference

This project is based on several wonderful projects: