This is a PyTorch implementation of the Siggraph Asia 2022 Paper "An Implicit Parametric Morphable Dental Model".
git clone https://github.com/cong-yi/DMM.git
cd DMM
conda create -n dmm python=3.9
conda activate dmm
pip install -r requirements.txt
Our training data follows the dataset structure used in DeepSDF but adapt it for dental data with semantic labels and tooth centroids. The structure is as follows:
<data_source_name>/
avg_centroids.txt
SdfSamples/
<instance_name>.npz
<instance_name>.pkl
where <instance_name>.npz
and <instance_name>.pkl
are samples and centroids respectively.
Subsets of the unified data source can be reference using split files, which are stored in a simple JSON format. For examples, see examples/splits/
.
python train_dmm.py -e ./examples/upper_dmm
You can download the pre-trained models from drive and put it under the subfolder examples/upper_dmm
.
To generate the reference shapes:
python generate_meanshapes.py -e ./examples/upper_dmm
To reconstruct dental scans:
python reconstruct.py -e ./examples/upper_dmm -d ./test_data --iters 300 --lr 1e-3 -s examples/splits/test_split.json
Due to the protocol governing the usage of our clinical data, distribution to the public is not allowed. However, I have converted a publicly available 3D dental model into SDF sampling data, complete with teeth numbering, for the purpose of conducting a simple test (put the data under the subfolder test_data
). This test data example, together with the reference shapes, serves as the reference for data alignment.
If you find DMM useful for your research, please cite our paper:
@article{zhang2022dmm,
author = {Zhang, Congyi and Elgharib, Mohamed and Fox, Gereon and Gu, Min and Theobalt, Christian and Wang, Wenping},
title = {An Implicit Parametric Morphable Dental Model},
year = {2022},
issue_date = {December 2022},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {41},
number = {6},
issn = {0730-0301},
url = {https://doi.org/10.1145/3550454.3555469},
doi = {10.1145/3550454.3555469},
journal = {ACM Trans. Graph.},
month = {nov},
articleno = {217},
numpages = {13},
}
This code repo is heavily based on DeepSDF, SIREN and DIF-Net. And users can train their own network on the data from the MICCAI Challenge. Thanks for these great projects.