conda create -n fmnet python=3.8 # create new viertual environment
conda activate fmnet
conda install pytorch cudatoolkit -c pytorch # install pytorch
pip install -r requirements.txt # install other necessary libraries via pipTo train and test datasets used in this paper, please download the datasets from the this link and put all datasets under ../data/
├── data
├── FAUST_r
├── FAUST_a
├── SCAPE_r
├── SCAPE_a
├── SHREC19_r
├── TOPKIDS
├── SMAL_r
├── DT4D_r
├── SHREC20
├── SHREC16
├── SHREC16_testWe thank the original dataset providers for their contributions to the shape analysis community, and that all credits should go to the original authors.
For data preprocessing, we provide preprocess.py to compute all things we need. Here is an example for FAUST_r.
python preprocess.py --data_root ../data/FAUST_r/ --no_normalize --n_eig 200To train the model on a specified dataset.
python train.py --opt options/train/faust.yaml You can visualize the training process in tensorboard.
tensorboard --logdir experiments/To test the model on a specified dataset.
python test.py --opt options/test/faust.yaml The qualitative and quantitative results will be saved in results folder.
An example of texture transfer is provided in texture_transfer.py
python texture_transfer.pyYou can find all pre-trained models in checkpoints for reproducibility.
There were two issues with the partial shape matching experiments on the SHREC'16 dataset related to the training/test splits [Bracha et al. 2023, Ehm et al. 2024]. Below, we provide additional evaluations that substantiate our claims:
| Geo err (x100) | CUTS on CUTS | CUTS on HOLES | HOLES on CUTS | HOLES on HOLES | CUTS on CUTS'24* | HOLES on CUTS'24* |
|---|---|---|---|---|---|---|
| Ours original** | 3.3 | 13.7 | 5.2 | 9.1 | 3.4 | 5.5 |
| Ours new*** | 3.2 | 13.5 | 5.6 | 8.2 | 3.2 | 5.9 |
* CUTS'24 refers to the new test split from [Ehm et al. 2024], the split can be found here.
** Pretrained on TOSCA
*** Pretrained on FAUST + SCAPE + SMAL + DT4D-H, 25 test-time adaptation iterations
The implementation of DiffusionNet is based on the official implementation.
The framework implementation is adapted from Unsupervised Deep Multi Shape Matching.
