msraig / pfcnn

Code for the paper "PFCNN: Convolutional Neural Networks on 3D Surfaces Using Parallel Frames" (CVPR 2020).
MIT License
19 stars 6 forks source link

PFCNN: Convolutional Neural Networks on 3D Surfaces Using Parallel Frames

This repository contains the implementation of PFCNN introduced in our CVPR 2020 paper.

Citation

If you find our work useful in your research, please consider citing:

@inproceedings{yang2020pfcnn,
    title={PFCNN: Convolutional Neural Networks on 3D Surfaces Using Parallel Frames},
    author={Yang, Yuqi and Liu, Shilin and Pan, Hao and Liu, Yang and Tong, Xin},
    booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
    pages={13578--13587},
    year={2020}
}

Instalation

The code is divided in two parts: A C++ part for data preprocessing. The C++ part code is in pySurfaceHierarchy folder. Using pybind11, you can bind the C++ part with python part with a 'pyd' file. To compile the code you will also need to install following libraries:

After install these libraries, you need to specify the path to these libraries in pySurfaceHierarchy/CMakeLists.txt Then compile the code with cmake, you will get a 'pySurfaceHierarchy.pyd' file in pySurfaceHierarchy/build/Release folder.

Data Preprocessing

For the Faust Matching Task, run:

python preprocess_data_faust_matching.py
python FaustMatching_dataset.py

For the Faust Scan Regression Task, run:

python preprocess_data_faust_regression.py
python FaustScanRegression_dataset.py

The TFRecord we used for experiments will be uploaded soon.

Train Network

Config the 'tfrecord_path' and file name in the specified args file.

You can follow the example in FaustScanRregression_args.py

For the Faust Matching Task, run:

python FaustMatching.py --config FaustMatching_args

For the Faust Scan Regression Task, run:

python FaustScanRregression.py --config FaustScanRregression_args