This is the official implementation of extended version of CVPR24 paper "Instance-Adaptive and Geometric-Aware Keypoint Learning for Category-Level 6D Object Pose Estimation"
[Arxiv]
The extended version primarily includes the following additions,
We will soon release a preprint about the extended paper where you can find more details.
@inproceedings{lin2024instance,
title={Instance-adaptive and geometric-aware keypoint learning for category-level 6d object pose estimation},
author={Lin, Xiao and Yang, Wenfei and Gao, Yuan and Zhang, Tianzhu},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={21040--21049},
year={2024}
}
The code has been tested with
Some dependencies:
pip install gorilla-core==0.2.5.3
pip install opencv-python
cd model/pointnet2
python setup.py install
Put them under PROJ_DIR/data
and the final file structure is as follows:
data
├── camera
│ ├── train
│ ├── val
│ ├── train_list_all.txt
│ ├── train_list.txt
│ ├── val_list_all.txt
├── real
│ ├── train
│ ├── test
│ ├── train_list.txt
│ ├── train_list_all.txt
│ └── test_list_all.txt
├── segmentation_results
│ ├── CAMERA25
│ └── REAL275
├── camera_full_depths
├── gts
└── obj_models
Download and unzip the dataset from HouseCat6D and the final file structure is as follows:
HOUSECAT6D_DIR
├── scene**
├── val_scene*
├── test_scene*
└── obj_models_small_size_final
python train.py --config config/REAL/camera_real.yaml
python train_housecat6d.py --config config/HouseCat6D/housecat6d.yaml
python test.py --config config/REAL/camera_real.yaml --test_epoch 30
python test_housecat6d.py --config config/HouseCat6D/housecat6d.yaml --test_epoch 150
You can download our training logs, detailed metrics for each category and checkpoints here.
IoU25 | IoU50 | IoU75 | 5 degree 2 cm | 5 degree 5 cm | 10 degree 2 cm | 10 degree 5 cm | |
---|---|---|---|---|---|---|---|
resnet_backbone | 84.3 | 83.8 | 77.6 | 56.2 | 62.3 | 73.4 | 81.2 |
dino_backbone | 84.3 | 84.1 | 80.1 | 57.0 | 64.6 | 75.1 | 84.7 |
IoU25 | IoU50 | IoU75 | 5 degree 2 cm | 5 degree 5 cm | 10 degree 2 cm | 10 degree 5 cm | |
---|---|---|---|---|---|---|---|
resnet_backbone | 94.7 | 94.1 | 91.7 | 77.1 | 82.0 | 85.5 | 91.6 |
dino_backbone | 94.7 | 94.2 | 92.5 | 79.5 | 83.7 | 87.1 | 92.6 |
IoU25 | IoU50 | IoU75 | 5 degree 2 cm | 5 degree 5 cm | 10 degree 2 cm | 10 degree 5 cm | |
---|---|---|---|---|---|---|---|
resnet_backbone | 82.4 | 66.0 | 40.5 | 11.5 | 12.6 | 37.4 | 42.5 |
dino_backbone | 88.1 | 76.9 | 53.0 | 21.3 | 22.1 | 51.3 | 54.3 |
For visualization, please run
python visualize.py --config config/REAL/camera_real.yaml --test_epoch 30
Our implementation leverages the code from these works:
We appreciate their generous sharing.
Our code is released under MIT License (see LICENSE file for details).