Skip to content

mit-aera/DeepPCGF

Repository files navigation

6D Object Pose Estimation with Pairwise Compatible Geometric Features

Table of Content

Overview

This work addresses the problem of 6-DoF pose estimation under heavy occlusion. We propose an end-to-end deep neural network model recovering object poses from depth measurements. The proposed model enforces pairwise consistency of 3D geometric features by applying spectral convolutions on a pairwise compatibility graph.

Overview

6D Object Pose Estimation with Pairwise Compatible Geometric Features
Muyuan Lin, Varun Murali, and Sertac Karaman

Getting Started

Prerequisites

  • Tested on Ubuntu 16.04, GeForce GTX 1080, NVIDIA-SMI 410.129

Installation

  • Clone this repo:
git clone --recursive https://github.com/mit-aera/DeepPCGF 
  • Install Python 3.7+, [PyTorch](http://pytorch.org and) 1.4 and other dependencies (e.g., torchvision).

    • For Conda users, you can create a new Conda environment using conda env create -f environment.yml.
  • Install MinkowskiEngine

(Make sure you follow installation instructions in the commit e2cfe490 of MinkowskiEngine)
git clone https://github.com/StanfordVL/MinkowskiEngine
cd MinkowskiEngine 
git checkout e2cfe490ee5edb078e8fedd9766609daf2d5129a
conda activate pcgf
python setup.py install
  • Download pretrained models, unzip the directory and move 'LineMOD' and 'OcclusionLineMOD' folders under '../checkpoints'.

Datasets

Training

conda activate pcgf
python train.py --name LineMOD \
  --model pcgf \
  --image_based true \
  --dataset LineMOD \
  --data_path ../data/Linemod_preprocessed \
  --voxel_size 0.003  \
  --geometric_check gcn \
  --gpu_ids 0 \
  --mu 100

Evaluation

Evaluation on LineMOD dataset:

conda activate pcgf 
python test.py --name LineMOD \
  --model pcgf \
  --image_based true \
  --dataset LineMOD \
  --data_path ../data/Linemod_preprocessed \
  --voxel_size 0.003  \
  --geometric_check gcn \
  --gpu_ids 0 \
  --select_pts 50 

Evaluation on Occlusion LineMOD dataset:

conda activate pcgf 
python test.py --name OcclusionLineMOD \
  --model pcgf \
  --image_based true \
  --dataset LineMODOcclusion \
  --data_path ../data/Linemod_occlusion \
  --voxel_size 0.003  \
  --geometric_check gcn \
  --gpu_ids 0 \
  --select_pts 50 

Citation

If you use this code for your research, please cite our paper.

@inproceedings{lin20216d,
  title={6D Object Pose Estimation with Pairwise Compatible Geometric Features},
  author={Lin, Muyuan and Murali, Varun and Karaman, Sertac},
  booktitle={2021 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={10966--10973},
  year={2021},
  organization={IEEE}
}

Acknowledgements

This work was partly funded by Ferrovial S.A.