Home

Awesome

GS-Pose: Cascaded Framework for Generalizable Segmentation-based 6D Object Pose Estimation

<p align="center"> <img src ="assets/gspose_overview.png" width="640" /> </p>
@inproceedings{cai_2024_GSPose,
    author    = {Cai, Dingding and Heikkil\"a, Janne and Rahtu, Esa},
    title     = {GS-Pose: Cascaded Framework for Generalizable Segmentation-based 6D Object Pose Estimation},
    journal   = {arXiv preprint arXiv:2403.10683},
    year      = {2024},
}

Setup

Please start by installing Miniconda3. This repository contains submodules, and the default environment can be installed as below.

git clone git@github.com:dingdingcai/GSPose.git --recursive
cd GSPose
conda env create -f environment.yml
conda activate gspose

bash install_env.sh

Pre-trained Model

Download the pretrained weights and store it as checkpoints/model_wights.pth.

Demo Example

An example of using GS-Pose for both pose estimation and tracking is provided in notebook.

Datasets

Our evaluation is conducted on the LINEMOD and OnePose-LowTexture datasets.

All datasets are organised under the dataspace directory, as below,

dataspace/
├── LINEMOD_Gen6D
│
├── bop_dataset/
│   ├── lm
│   └── lm_yolo_detection
│
├── onepose_dataset/
│   ├── scanned_model
│   └── lowtexture_test_data
│
└── README.md

Evaluation

Evaluation on the subset of LINEMOD (comparison with Gen6D, Cas6D, etc.).

Evaluation on all objects of LINEMOD using the built-in detector.

Evaluation on all objects of LINEMOD using the YOLOv5 detection (comparison with OnePose/OnePose++).

Evaluation on the scanned objects of OnePose-LowTexture.

Training

We utilize a subset (gso_1M) of the MegaPose dataset for training. Please download MegaPose/gso_1M and MegaPose/google_scanned_objects.zip to the directorydataspace, and organize the data as

dataspace/
├── MegaPose/
│   ├── webdatasets/gso_1M
│   └── google_scanned_objects
...

execute the following script under the MegaPose environment for preparing the training data.

Then, train the network via

Acknowledgement

<!-- - 1. The code is partially based on [GDR-Net](https://github.com/THU-DA-6D-Pose-Group/GDR-Net) and [OVE6D](https://github.com/dingdingcai/OVE6D-pos) . -->