GDRNPP_BOP2022 Project Overview
The GDRNPP_BOP2022 project boasts a significant achievement, having emerged as the winner in most categories of the BOP Challenge 2022 held at ECCV 2022. This repository offers the necessary code and models for engaging with the project's outcomes and methodologies.
Dataset Preparation
For those interested in exploring the GDRNPP_BOP2022 project, an essential step is setting up the required dataset. This involves downloading 6D pose datasets available on the BOP website and acquiring background images from VOC 2012. Additionally, it is necessary to download the test_bboxes
, accessible via OneDrive or BaiDuYunPan with respective passwords.
The downloaded data should be organized in a specific directory structure as shown below:
datasets/
├── BOP_DATASETS
├── tudl
├── lmo
├── ycbv
├── icbin
├── hb
├── itodd
└── tless
└── VOCdevkit
Model Setup
Acquiring the pre-trained models is another vital part of this project. They are retrievable from Onedrive or BaiDuYunPan and should be placed within the ./output
folder.
System Requirements
The following system requirements should be met:
- Operating Systems: Ubuntu 18.04/20.04
- CUDA Version: 10.1/10.2/11.6
- Python Version: 3.7 or later
- PyTorch: Version 1.9 or later
- Additional installation of
detectron2
from its source is necessary. - Install other dependencies using the script
sh scripts/install_deps.sh
. - Compile required C++ extensions by executing
sh ./scripts/compile_all.sh
.
Detection with Yolox
Yolox is employed as the detection method in this project, enhanced with stronger data augmentation techniques and the ranger optimizer.
Training
Pre-trained models, crucial for the training process, are downloadable from Onedrive and should be placed in pretrained_models/yolox
. The training can be initiated using the following command syntax:
./det/yolox/tools/train_yolox.sh <config_path> <gpu_ids> (other args)
Testing
For testing purposes, use:
./det/yolox/tools/test_yolox.sh <config_path> <gpu_ids> <ckpt_path> (other args)
Pose Estimation Features
This project distinguishes itself from GDR-Net (CVPR2021) in several ways, primarily through the use of stronger domain randomization, a revamped network architecture using a Convnext backbone, and dual mask heads.
Training
Initiate training with the following command:
./core/gdrn_modeling/train_gdrn.sh <config_path> <gpu_ids> (other args)
Testing
To test the model:
./core/gdrn_modeling/test_gdrn.sh <config_path> <gpu_ids> <ckpt_path> (other args)
Pose Refinement
To improve the estimated pose, depth information is utilized with two methods: fast refinement and iterative refinement.
- For fast refinement, a comparison of rendered and observed object depth is employed:
./core/gdrn_modeling/test_gdrn_depth_refine.sh <config_path> <gpu_ids> <ckpt_path> (other args)
- For iterative refinement, refer to the details on the pose_refine branch.
Acknowledgements
If GDRNPP is used in any research, the provided BibTeX entries are recommended for citation to acknowledge contributors Xingyu Liu et al. in the respective research work.