配置PVN3D

对6D位姿估计感兴趣的小伙伴可以加我,拉到位姿估计交流群

传送门

一、环境配置

本文为在Ubuntu20.04-Python3.8环境配置PVN3D并跑通linemod数据集。
本人按照官方给出的“pytorch-1.5”版本进行配置—>官方链接

1.在任意caonda环境中安装python-pcl的方法

这里是在Ubuntu20安装python-pcl的教程。

2.修改系统配置及代码部分

(1)GCC版本回退到GCC7;
(2)更改cuda版本为10.2
(3) 将pvn3d/_ext-src/include/*.h 复制到 pvn3d/_ext-src/src

3.构建conda虚拟环境

(1)创建conda虚拟环境

conda create -n pvn3d python=3.8 -y

conda activate pvned

(2)在虚拟环境中安装pcl

sudo cp -r /usr/lib/python3/dist-packages/pcl ~/anaconda3/envs/pvn3d/lib/python3.8/site-packages/

sudo cp -r /usr/lib/python3/dist-packages/python_pcl-0.3.egg-info ~/anaconda3/envs/pvn3d/lib/python3.8/site-packages/

sudo chmod -R 777 ~/anaconda3/envs/pvn3d/lib/python3.8/site-packages/pcl

sudo chmod -R 777 ~/anaconda3/envs/pvn3d/lib/python3.8/site-packages/python_pcl-0.3.egg-info

(3)安装其他依赖

conda install pytorch==1.5.0 torchvision==0.6.0 cudatoolkit=10.2 -c pytorch -y

pip3 install numpy Cython h5py pyyaml enum34 future scipy sklearn opencv_contrib_python

pip3 install matplotlib transforms3d scikit_image lmdb setuptools cffi easydict plyfile glumpy tqdm

(4)安装pointnet并编译ext

git clone https://github.com/erikwijmans/Pointnet2_PyTorch

cd Pointnet2_PyTorch

pip3 install -r requirements.txt

cd ..

python3 setup.py build_ext

至此,环境就配置好啦!大部分出问题的原因是因为版本的问题,注意版本,就可以少走很多坑。另外,遇到问题的话,可以去这里找,一般都会解决的。

二、训练与评估

1.下载linemod_preprocessed数据

官方提供的数据不好下载,可以用我分享的linemod_preprocessed数据(提取码:wmao),下载好数据以后按照官方步骤软连接一下即可。

2.训练与评估

训练与评估的时候按照官方步骤就可以走通,不再重复赘述,需要说明的是,我利用官方提供的预训练权重运行demo_linemod.sh时,会报找不到权重文件的错误,我就直接简单粗暴地把demo.py的第76行改成了权重所在文件夹的绝对路径。

三、报错与解决

在运行demo_linemod.sh时报错

TypeError: load() missing 1 required positional argument: 'Loader'

answer:

pip show pyyaml

check the version of pyyaml

return:
Name: PyYAML
Version: 6.0
Summary: YAML parser and emitter for Python
Home-page: https://pyyaml.org/
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: /home/ccc/anaconda3/envs/pvn3d1/lib/python3.8/site-packages
Requires: 
Required-by: yacs, mmcv, fvcore, albumentations, omegaconf

然后在终端输入:

pip uninstall pyyaml
pip install pyyaml==5.4.1

done!

question2.

sh demo_linemod.sh

报错

Traceback (most recent call last):
  File "/home/ccc/anaconda3/envs/pvn3d/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/ccc/anaconda3/envs/pvn3d/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/media/ccc/18T/jixiebi/PVN3D/pvn3d/demo.py", line 18, in <module>
    from lib import PVN3D
  File "/media/ccc/18T/jixiebi/PVN3D/pvn3d/lib/__init__.py", line 8, in <module>
    from .pvn3d import PVN3D
  File "/media/ccc/18T/jixiebi/PVN3D/pvn3d/lib/pvn3d.py", line 13, in <module>
    from lib.pointnet2_utils.pointnet2_modules import PointnetFPModule, PointnetSAModuleMSG
  File "/media/ccc/18T/jixiebi/PVN3D/pvn3d/lib/pointnet2_utils/__init__.py", line 8, in <module>
    from . import pointnet2_utils
  File "/media/ccc/18T/jixiebi/PVN3D/pvn3d/lib/pointnet2_utils/pointnet2_utils.py", line 19, in <module>
    from lib.pointnet2_utils import _ext
ImportError: /media/ccc/18T/jixiebi/PVN3D/pvn3d/lib/pointnet2_utils/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaDataInstanceISt7complexIdEEEPKNS_6detail12TypeMetaDataEv

answer:

(1)cd Pointnet2_PyTorch/
(2)pip3 install -r requirements.txt
(3)cd ..    #/meida/ccc/18T/jixiebi/PVN3D
(4)python3 setup.py build_ext
(5)cd pvn3d/
(6)sh demo_linemod.sh

四、一些问题

1.为什么要用 GCC7 ?

 github 中这个代码的运行环境是 ubuntu18.04, 18.04 中默认的 gcc 版本是 gcc7
 没改 gcc 版本编译 ext 时报错,报错信息显示 gcc 版本不兼容,需要更换到 gcc7

2.为什么要把 pvn3d/_ext-src/include/*.h 复制到 pvn3d/_ext-src/src?

_ext-src 中源代码的目录结构是这样

include/xxxx.h 头文件
src/xxxx.cpp 代码文件
但是在 cpp 中引用头文件的方式却没有添加绝对路径,
比如ball_query.cpp中的#include “ball_query.h”, 导致当时编译ext时出现很多找不到头
文件的错误信息。
将 include/*.h 复制到 src/中,使得 ball_query.cpp 和“ball_query.h” 处于同一级文件夹,
这样通过代码中的#include “ball_query.h”就可以找到头文件了。

3.当时我卡在了安装 pointnet 并编译 ext,这个是什么原因造成的?

(1) 代码版本问题,你当时下载的是 master 分支的代码,不是 pytorch-1.5 分支的代码
(2)如第一点的 gcc 问题
(3) 如第二点的头文件找不到的问题
(4) cuda 版本的问题,pytroch1.5 不支持 cuda11

五、关于数据

目前网上关于制作类似于linemod数据集的方法较少,我们的制作数据集的代码不能开源,有数据集制作需求的可以私信联系我。

六、后续

利用自己的数据集做了实验,训练集有649个样本+7万个渲染数据,训练集总共有70649个样本,训练了36个小时零44分钟。训练完成后重新采数据进行测试效果图如下,只能识别出小鸭子,却不能识别出小鸭子的位姿信息,有点迷。。。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

YCB数据集连接,提取码:f0om
参考
[1]https://blog.youkuaiyun.com/kwb2015130086/article/details/118188457
[2]https://hub.fastgit.org/ethnhe/PVN3D/tree/pytorch-1.5
[3]https://blog.youkuaiyun.com/zsssrs/article/details/120054425

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值