Home

Awesome

PSGMN

code for paper "Pseudo-Siamese Graph Matching Network for Textureless Objects' 6D Pose Estimation". If you find this code useful for your research, please consider citing our paper with the following BibTeX entry.

@ARTICLE{psgmn,
  author={C. {Wu} and L. {Chen} and Z. {He} and J. {Jiang}},
  journal={IEEE Transactions on Industrial Electronics}, 
  title={Pseudo-Siamese Graph Matching Network for Textureless Objects' 6D Pose Estimation}, 
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TIE.2021.3070501}}

Installation

  1. Set up the python environment:

    conda create -n psgmn python=3.7
    conda activate psgmn
    

    install torch 1.5 built for cuda 10.1

    conda install pytorch==1.5.0 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
    

    install pytorch_geometric

    pip install torch-scatter==latest+cu101 -f https://pytorch-geometric.com/whl/torch-1.5.0.html
    pip install torch-sparse==latest+cu101 -f https://pytorch-geometric.com/whl/torch-1.5.0.html
    pip install torch-cluster==latest+cu101 -f https://pytorch-geometric.com/whl/torch-1.5.0.html
    pip install torch-spline-conv==latest+cu101 -f https://pytorch-geometric.com/whl/torch-1.5.0.html
    pip install torch-geometric
    

    install other requirements

    pip install -r requirements.txt
    

    compile the cuda extension

    cd csrc
    python setup.py build_ext --inplace 
    
  2. Set up datasets: Download datasets which are formatted by PVNet:

    (1). linemod

    (2). occlusion linemod

    Download the simplified mesh models for each object here. Unzip the file and copy it to linemode dataset.

    Make soft links to the datasets.

    ROOT=/path/to/gsgmn
    cd $ROOT
    mkdir data
    cd data
    ln -s /path/to/linemod linemod
    ln -s /path/to/occlusion_linemod occlusion_linemod
    

Training

Take the training on ape as an example. run

python main_psgmn.py --class_type ape --train True

Testing

Testing on Linemod

We provide the pretrained models of objects on Linemod, which can be found at here.

Take the testing on ape as an example.

  1. Download the pretrained model of ape and put it to $ROOT/model/ape/200.pkl.
  2. Test:
    python main_psgmn.py --class_type ape --eval True
    python main_psgmn.py --class_type ape --occ True --eval True