Learning Pairwise Inter-Plane Relations for Piecewise Planar Reconstruction
Code for the ECCV 2020 paper by Yiming Qian and Yasutaka Furukawa
Getting Started
Clone the repository:
git clone https://github.com/yi-ming-qian/interplane.git
We use Python 3.7 and PyTorch 1.0.0 in our implementation, please install dependencies:
conda create -n interplane python=3.7
conda activate interplane
conda install pytorch==1.0.0 torchvision==0.2.1 cuda90 -c pytorch
conda install -c menpo opencv
pip install -r requirements.txt
Dataset
We create our pairwise plane relationship dataset based on PlaneRCNN. Please follow the instructions in their repo to download their dataset.
Then dowload our relationship dataset from here, and do the following: (1) merge the "scans/" folder with "$ROOT_FOLDER/scans/", (2) place "contact_split/" under "$ROOT_FOLDER/", (3) place "planeae_result" under "$ROOT_FOLDER/".
Training
We have three networks, Orientation-CNN, Contact-CNN, Segmentation-MPN, which are trained separately:
python train_angle.py train with dataset.dataFolder=$ROOT_FOLDER/
python train_contact.py train with dataset.dataFolder=$ROOT_FOLDER/
python train_segmentation.py train with dataset.dataFolder=$ROOT_FOLDER/
Evaluation
Evaluate when input method is PlaneRCNN:
python predict_all.py eval with dataset.dataFolder=$ROOT_FOLDER/ resume_angle=/path/to/orientationCNN/model resume_contact=/path/to/contactCNN/model resume_seg=/path/to/segmentationMPN/model input_method=planercnn
Evaluate when input method is PlaneAE:
python predict_all.py eval with dataset.dataFolder=$ROOT_FOLDER/ resume_angle=/path/to/orientationCNN/model resume_contact=/path/to/contactCNN/model resume_seg=/path/to/segmentationMPN/model input_method=planeae
Two gpus are used for inference. The results will be saved under "experiments/predict/{RUN_ID}/results/". We also provide our pre-trained models here.
Contact
https://yi-ming-qian.github.io/
Acknowledgements
We thank the authors of PlaneRCNN and of PlaneAE. Our implementation is heavily built upon their codes.