This code is for our CVPR2021 oral paper: FS-Net: Fast Shape-based Network for Category-Level 6D Object Pose Estimation with Decoupled Rotation Mechanism. If you have any questions, please leave your comments or email me.
OS: Ubuntu 16.04
GPU: 1080 Ti
Programme language: Python 3.6, Pytorch.
If you find our paper link1(arXiv) link2(CVF) or code is useful, please cite our paper:
@InProceedings{Chen_2021_CVPR,
author = {Chen, Wei and Jia, Xi and Chang, Hyung Jin and Duan, Jinming and Linlin, Shen and Leonardis, Ales},
title = {FS-Net: Fast Shape-based Network for Category-Level 6D Object Pose Estimation with Decoupled Rotation Mechanism},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2021},
pages = {1581-1590}
}
Our framework is built on our previous work G2L-Net, with the following Contributions:
-
New latent feature learning
>>> 3D graph convolution based observed points reconstruction(orientation preserved; green are reconstructed, yellow are observed)
-
New rotation representation
>>> Decomposable vector-based rotation representation
-
New 3D data augmentation
>>> Box-cage based, online 3D data augmentation
You can find the main requirements in 'requirement.txt'.
Please download the data.zip here, and the unzip the 'trained_model.zip' under 'yolov3_fsnet/' folder and 'test_scene_1 .zip' under 'yolov3_fsnet/data/' folder.
The trained model for YOLOv3 will be downloaded automatically. We use the 'yolov5l.pt' provided by this git. According to our test, this trained model works well for category 'laptop', you may need to re-train the 2D detect model for other categories.
python yolov3_fsnet/detect_fsnet.py
please note: The code is created and debugged in Pycharm, therefore you may need to change the import head in other
python IDE.
Please note, some details are changed from the original paper for more efficient training.
To generate your own dataset, first use the data preprocess code provided in this git, and then use the code provided in 'gen_pts.py'. The render function is borrowed from BOP, please refer to that git if you have problems with rendering.
For 2D detection training part, please refer to this git
After the data preparation, run the Train.py to train your own model.
We borrow some off-the-shelf codes from 3dgcn, YOLOv3, and BOP. Thanks for the authors' work.