算法和代码框架均来自港大的课题组
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
参考我的另一篇文章ubuntu环境下安装cuda
这里推荐11.8版本,其他版本很可能出现兼容性问题
虽然官方说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
源码地址
安装最新的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目录下
下次补充