Advances in Neural Information Processing Systems (NeurIPS 2020). Oral presentation. [Arxiv, PDF, Supp, Project]
Department of Computer Science and Engineering, Michigan State University
The goal of this paper is to learn dense 3D shape correspondence for topology-varying objects in an unsupervised manner.
Figure 1: Given a shape S, PointNet E is used to extract the shape feature code z. Then a part embedding o is produced via a deep implicit function f. We implement dense correspondence through an inverse function mapping from o to recover the 3D shape. (b) To further make the learned part embedding consistent across all the shapes, we randomly select two shapes SA and SB. By swapping the part embedding vectors, a cross reconstruction loss is used to enforce the inverse function to recover to each other.
This code is developed with Python3 and PyTorch 1.1
Dataset
Please refer to data/README
Pretrained models
Please refer to models/README
Evaluation
Please refer to evaluation/README
Training
Our method is trained in three stages: 1) PointNet like encoder and implicit function are trained on sampled point-value pairs via occupancy loss. 2) encoder, implicit function and inverse implicit function are jointly trained via occupancy and self-reconstruction losses. 3) We jointly train encoder, implicit function and inverse implicit function with occupancy, self-reconstruction and cross-reconstruction losses.
## ---------------------- chair ----------------------------- ##
# stage1
CUDA_VISIBLE_DEVICES=0 python train_stage1.py --cate_name chair --epoch 50 --resolution 16 --batch_size 45
CUDA_VISIBLE_DEVICES=0 python train_stage1.py --cate_name chair --epoch 100 --resolution 32 --batch_size 25 --pretrain_model TRUE --pretrain_model_name Corr-49.pth
CUDA_VISIBLE_DEVICES=0 python train_stage1.py --cate_name chair --epoch 300 --resolution 64 --batch_size 7 --pretrain_model TRUE --pretrain_model_name Corr-99.pth
# stage2
CUDA_VISIBLE_DEVICES=0 python train_stage2.py --cate_name chair --epoch 500 --resolution 64 --batch_size 4 --pretrain_model TRUE --pretrain_model_name stage1/Corr-299.pth
# stage3
CUDA_VISIBLE_DEVICES=0 python train_stage3.py --cate_name chair --epoch 1000 --resolution 64 --batch_size 2 --pretrain_model TRUE --pretrain_model_name stage2/Corr-499.pth
Contact
For questions feel free to post here or directly contact the author via liufeng6@msu.edu