【Gen6D位姿估计】在Linux环境下的复现日志

写在前面

算法和代码框架均来自港大的课题组
gen6d介绍页面
我只是拿来做一个毕设,答辩结束后会遵循GPL协议开放所有代码
这篇博客仅作为开发日志,记录一下部署过程中的各种问题和解决方法,仅供学习讨论

此外,不得不说,这项工作的识别估计的效果不错,但是效率有点太低了,在GTX1650上处理一帧数据需要1.07秒

笔者环境

模块 版本号
Ubuntu 22.04
CUDA 11.8,
python 3.8
pytorch 2.4.1
pytorch3d 0.7.8
CUB 1.17.2

工作目录gen6d如下:

(base) star@star:~/gen6d$ tree -L 2
.
├── cub-1.17.2
│   ├── CHANGELOG.md
│   ├── cmake
│   ├── CMakeLists.txt
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── cub
│   ├── examples
│   ├── LICENSE.TXT
│   ├── README.md
│   └── test
├── Gen6D
│   ├── align-data
│   ├── assets
│   ├── colmap_script.py
│   ├── compute_align_poses.py
│   ├── configs
│   ├── custom_object.md
│   ├── data
│   ├── dataset
│   ├── estimator.py
│   ├── eval.py
│   ├── LICENSE
│   ├── network
│   ├── predict.py
│   ├── prepare.py
│   ├── __pycache__
│   ├── README.md
│   ├── requirements.txt
│   ├── train
│   ├── train_model.py
│   └── utils
├── pytorch3d-0.7.8
│   ├── build
│   ├── dev
│   ├── docs
│   ├── INSTALL.md
│   ├── LICENSE
│   ├── LICENSE-3RD-PARTY
│   ├── packaging
│   ├── projects
│   ├── pytorch3d
│   ├── pytorch3d.egg-info
│   ├── README.md
│   ├── scripts
│   ├── setup.cfg
│   ├── setup.py
│   ├── tests
│   └── website
└── test.py

26 directories, 26 files

环境配置

基础环境

创建工程文件夹,笔者这里叫做gen6d
执行如下指令:

# 创建虚拟环境
conda create -y -n gen6d python=3.8
# 查看新环境是否安装成功
conda env list
# 激活环境
activate gen6d
# 下载githup源代码到合适文件夹,并cd到代码文件夹内(科学上网)
git clone https://github.com/liuyuan-pal/Gen6D.git
cd Gen6D

删除了requirements.txt中pytorch>=1.7.1、torchvision、pytorch3d和cudatoolkit部分,这些我们单独安装,他们存在一些问题

删除完再执行下面的命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

CUDA

参考我的另一篇文章ubuntu环境下安装cuda
这里推荐11.8版本,其他版本很可能出现兼容性问题

CUB

虽然官方说CUB已经被包含在cuda toolkit中,但是至少在笔者的cuda toolkit里没有CUB,需要单独下载
CUB下载链接,笔者选择的是1.17.2版本,契合11.8的CUDA
下载并放入Gen6D的工作目录
按照下面的步骤添加环境变量

sudo vim ~/.bashrc

# 在文末添加
export CUB_HOME="/home/star/gen6d/cub-1.17.2"

#保存并退出后执行
source ~/.bashrc

pytorch3d

源码地址
安装最新的0.7.8版本即可
将pytorch3d放入工作目录

注意,CSDN上另一篇博客说要:修改setup.py中的extra_compile_args = {“cxx”: [“-std=c++14”]}为extra_compile_args = {“cxx”: [“”]}:
清不要这么做,会报错的

执行如下命令

# 激活虚拟环境
activate gen6d
# 进入到pytorch3D目录下
cd path_to_your_pytorch3d
export CFLAGS="-Wno-strict-prototypes"
set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
# 开始安装
pip install .

下载会持续很久,哪怕用了魔法;笔者回去睡了一觉才完成,也不知道具体多少时间

使用如下程序检查安装是否成功:

import pytorch3d
print(pytorch3d.__version__)

数据集

我们使用官方数据集
主要下载预训练模型gen6d_pretrain.tar.gz,测试数据集genmop.tar.gz,处理后数据集linemod.tar.gz三个包
然后解压到gen6d/Gen6D/data目录下,且注意不要有两级data文件夹

请保证目录和笔者一致,否则不能保证正确运行

(base) star@star:~/gen6d$ tree -L 2
.
├── cub-1.17.2
│   ├── CHANGELOG.md
│   ├── cmake
│   ├── CMakeLists.txt
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── cub
│   ├── examples
│   ├── LICENSE.TXT
│   ├── README.md
│   └── test
├── Gen6D
│   ├── align-data
│   ├── assets
│   ├── colmap_script.py
│   ├── compute_align_poses.py
│   ├── configs
│   ├── custom_object.md
│   ├── data
│   ├── dataset
│   ├── estimator.py
│   ├── eval.py
│   ├── LICENSE
│   ├── network
│   ├── predict.py
│   ├── prepare.py
│   ├── __pycache__
│   ├── README.md
│   ├── requirements.txt
│   ├── train
│   ├── train_model.py
│   └── utils
├── pytorch3d-0.7.8
│   ├── build
│   ├── dev
│   ├── docs
│   ├── INSTALL.md
│   ├── LICENSE
│   ├── LICENSE-3RD-PARTY
│   ├── packaging
│   ├── projects
│   ├── pytorch3d
│   ├── pytorch3d.egg-info
│   ├── README.md
│   ├── scripts
│   ├── setup.cfg
│   ├── setup.py
│   ├── tests
│   └── website
└── test.py

26 directories, 26 files

至此,环境已搭建结束


测试效果

注意要在clone下来的Gen6D项目的目录下执行,如下:

(gen6d)star@star:~/gen6d/Gen6D$ python eval.py --cfg configs/gen6d_pretrain.yaml --object_name genmop/plug_cn

这里是测试充电器的位姿估计,结果保存在~/gen6d/Gen6D/data/vis_final/gen6d_pretrain/genmop/plug_cn目录下

使用自己的数据集

下次补充

你可能感兴趣的:(机器学习--深度学习,位姿估计,linux,运维,人工智能,感知,pytorch)