目录
一、GDR-Net: Geometry-Guided Direct Regression Network for Monocular 6D Object Pose Estimation
期刊 / 会议:CVPR2021 作者 / 机构:Gu Wang, Tsinghua University, BNRist 关键词:位姿估计;端到端 时间:2021 代码:https://github.com/THU-DA-6D-Pose-Group/GDR-Net
1 目标问题
提出一种端到端的位姿估计算法。
2 方法

(1)网络架构
首先向GDR-Net提供256x256的ROI图,预测出三个64x64的中间特征图
- 稠密对应图:将稠密坐标映射对跌倒2D像素坐标上得到,反映了对象的几何形状信息。
- 表面区域注意图:采用最远点采样从中到处,代表了对象的对称性。
- 可见对象掩码
使用一个简单的2D卷积Patch Pnp模块直接从特征图中回归6D对象姿态。Patch PnP模块由三个卷积层组成,然后用两个全连接层用于扁平化特征,最后连个全连接层输出R6D旋转和tSITE平移。
3 思考
本文专注于图像的特征提取和处理工作,实现从单一图片预测位姿的功能。
二、算法复现
2.1 数据集准备
下载BOP数据集和VOC2012数据集,从Onedrive (password: groupji)或者百度网盘(密码: vp58)下载test_boxes,完成后datasets文件夹的结构如下:
datasets/
├── BOP_DATASETS # https://bop.felk.cvut.cz/datasets/
├──tudl
├──lmo
├──ycbv
├──icbin
├──hb
├──itodd
└──tless
└──VOCdevkit
从Onedrive (password: groupji)或者百度网盘(密码10t3)下载预训练模型,并将其放到./output文件夹内。
2.2 环境准备
要求Ubuntu 18.04/20.04, CUDA 10.1/10.2/11.6, python >= 3.7, PyTorch >= 1.9, torchvision
(1)创建虚拟环境
conda create -n gdrnpp python=3.7
conda activate gdrnpp
(2)安装依赖
安装 PyTorch
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=11.3 -c pytorch -c conda-forge
从源码安装 detectron2
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
# (add --user if you don't have permission)
# Or, to install it from a local clone:
git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2
# On macOS, you may need to prepend the above commands with a few environment variables:
CC=clang CXX=clang++ ARCHFLAGS="-arch x86_64" python -m pip install ...
打开 requirements/requirement.txt,注释第30行 torchvision,第35行 pytorch3d, 第48行 pytorch-lightning
安装 Ubuntu 系统依赖和 python 依赖:
sh scripts/install_deps.sh
conda install pytorch-lightning
pip install pytorch3d
(4)编译 fps 的cpp扩展
sh core/csrc/compile.sh
(5)编译egl_renderer的cpp扩展
sh lib/egl_renderer/compile_cpp_egl_renderer.sh
2.3 目标检测算法
从 Onedrive (password: groupji) or BaiDuYunPan(password: aw68)中下载预训练模型。
(1)训练
./det/yolox/tools/train_yolox.sh <config_path> <gpu_ids> (other args)
(2)测试
./det/yolox/tools/test_yolox.sh <config_path> <gpu_ids> <ckpt_path> (other args)
2.4 位姿估计算法
(1)训练
打开core/gdrn_modeling/datasets/lm_pbr.py,注释第190行assert osp.exists(xyz_path), xyz_path
./core/gdrn_modeling/train_gdrn.sh <config_path> <gpu_ids> (other args)
例如:
./core/gdrn_modeling/train_gdrn.sh configs/gdrn/ycbv/convnext_a6_AugCosyAAEGray_BG05_mlL1_DMask_amodalClipBox_classAware_ycbv.py 0
(2)测试
./core/gdrn_modeling/test_gdrn.sh <config_path> <gpu_ids> <ckpt_path> (other args)
例如:
./core/gdrn_modeling/test_gdrn.sh configs/gdrn/ycbv/convnext_a6_AugCosyAAEGray_BG05_mlL1_DMask_amodalClipBox_classAware_ycbv.py 0 output/gdrn/ycbv/convnext_a6_AugCosyAAEGray_BG05_mlL1_DMask_amodalClipBox_classAware_ycbv/model_final_wo_optim.pth
评论