openpcdet环境配置及demo运行

openpcdet环境配置及demo运行

环境:

  • cuda 10.2.89
    查看版本: cat /usr/local/cuda/version.txt
  • python 3.7.0
  • cudnn 7.6.5
    查看版本: cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
  • pytorch 1.5.0
  • torchvision 0.6.0

1. 安装 Nvidia 驱动

nvidia 驱动版本与cuda版本匹配,版本不匹配安装pcdet时会报错RuntimeError: The NVIDIA driver on your system is too old (found version 9000)

官网 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

驱动安装教程:https://blog.csdn.net/weixin_42423743/article/details/111397034
openpcdet环境配置及demo运行_第1张图片

2. 安装cuda 10.2 和 cudnn 7.6.5

2.1 cuda安装包下载

cuda所有版本见链接https://developer.nvidia.com/cuda-toolkit-archive,选择与NVIDIA匹配的cuda版本按网页上教程下载。

openpcdet环境配置及demo运行_第2张图片

2.2 安装 cuda 10.2

  • 进入.run文件所在文件夹,运行:
sudo sh ./cuda_10.2.89_440.33.01_linux.run

openpcdet环境配置及demo运行_第3张图片

  • 配置.bashrc文件
sudo gedit ~/.bashrc

添加:

    export PATH="/usr/local/cuda/bin:$PATH"
    export CPATH="/usr/local/cuda/include:$CPATH"
    export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
    export CUDA_HOME=/usr/local/cuda-10.2
  • 重启终端或执行:
source ~/.bashrc 
  • 安装完成,使用nvidia-smi 检查GPU,nvcc -V 检查CUDA。

2.3 安装 cudnn 7.6.5

  • cudnn安装包下载链接:http://people.cs.uchicago.edu/~kauffman/nvidia/cudnn/,这里下载的是cudnn-10.2-linux-x64-v7.6.5.32.tgz,解压后执行下面指令将文件复制保存至指定路径:
sudo cp cuda/include/cudnn.h    /usr/local/cuda-10.2/include 
sudo cp cuda/lib64/libcudnn*    /usr/local/cuda-10.2/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h   /usr/local/cuda/lib64/libcudnn*
  • 安装完成运行cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2,出现如图结果:
    openpcdet环境配置及demo运行_第4张图片

3. 安装annoconda3

参考教程:https://blog.csdn.net/u012243626/article/details/82469174

4. 安装cmake>=3.13.2

  • 安装spconv对cmake版本有要求,安装方法为:
  pip install cmake==3.13.2.post1
  • 把cmake路径添加到 .bashrc
   gedit ~/.bashrc

添加以下变量

 export PATH="/home/tong/anaconda3/envs/pcdet/lib/python3.6/site-packages/cmake/data/bin:$PATH"

保存后 source 使修改生效

 source ~/.bashrc

5. 安装Python3.7 pytorch1.5.0 torchvision0.6.0

5.1 这些环境使用annoconda配置

执行指令:

conda create -n pcdet python=3.7  # 创建python3.7环境
conda activate pcdet # 激活环境
conda install pytorch==1.5.0 torchvision==0.6.0 -c pytorch

5.2 某些功能包下载较慢

可以直接在下载需要的包进行本地安装,下载网址https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/。官网下载网址:https://anaconda.org/
这里以pytorch为例,除此外还本地安装了cudatoolkit-10.2.89-hfd86e86_1.tar.bz2和torchvision-0.6.0-py37_cu102.tar.bz2。
pytorch 1.5.0下载
openpcdet环境配置及demo运行_第5张图片
安装本地包,将下载好的包放入路径/home/tong/anaconda3,执行指令:

conda install --use-local pytorch-1.5.0-py3.7_cuda10.2.89_cudnn7.6.5_0.tar.bz2

5.3 安装成功验证:

tong@tong-ThinkPad-X1-Extreme:~$ python
Python 3.6.5 (default, Dec 14 2020, 15:58:40) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import torchvision
>>> print(torch.__version__)
1.5.0
>>> print(torchvision.__version__)
0.6.0
>>> 

6. 安装 spconv

基本按照github上步骤即可完成 参考网页 https://github.com/traveller59/spconv

   git clone https://github.com/traveller59/spconv.git --recursive
  • 需要安装 pybind11

    cd spconv/third_party

    删除空 pybind11 文件夹,执行:

    git clone https://github.com/pybind/pybind11.git
    cd pybind11
    git checkout -b 3b1dbeb
  • 编译安装 spconv v1.2
   cd spconv
   python setup.py bdist_wheel
   cd dist
   pip install spconv_xxx_xxx.whl

重装spconv时 注意需要修改.whl文件的名字 例如将版本由spconv-1.2.1修改为spconv-1.2.0 否则与原spconv同名 则被系统默认为同一版本 不能进行安装。

  • 若出现报错nvcc fatal: unknown '-Wall' 注释文件 中包含 -Wall 的两行代码 并重新执行

Caffe2Targets.cmake 文件路径如下

~/anaconda3/envs/pcdet/lib/python3.6/site-packages/torch/share/cmake/Caffe2/Caffe2Targets.cmake

两行代码如下:

(line 73) INTERFACE_COMPILE_OPTIONS "-Wall;-Wextra;-Wno-unused-parameter;-Wno-missing-field-initializers;-Wno-write-strings;-Wno-unknown-pragmas;-Wno-missing-braces;-fopenmp"

(line 93) INTERFACE_COMPILE_OPTIONS "-Wall;-Wextra;-Wno-unused-parameter;-Wno-missing-field-initializers;-Wno-write-strings;-Wno-unknown-pragmas;-Wno-missing-braces"

7. 安装 pcdet

  • 下载:
git clone https://github.com/open-mmlab/OpenPCDet.git
  • 安装依赖包
pip install -r requirements.txt 
  • 安装 PCDet
python setup.py develop

8. 运行demo

下载训练好的模型以及数据集参考readme文档:https://github.com/open-mmlab/OpenPCDet。运行demo参考教程:https://github.com/open-mmlab/OpenPCDet/blob/master/docs/DEMO.md

8.1 下载训练好的模型

PV-RCNN训练好的模型文件pv_rcnn_8369.pth:下载链接。将下载好的文件放入文件夹/OpenPCDet/tools

8.2 下载数据集

kitti官网数据集下载较为困难,可在网盘下载:

  链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw
  提取码:grys

8.3 执行指令

pip install mayavi
python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml     --ckpt pv_rcnn_8369.pth     --data_path /home/tong/app/OpenPCDet/object/training/velodyne/000000.bin

其中:

  • –cfg_file: .yaml配置文件
  • –ckpt:为训练好的.path 模型文件
  • –data_path:为检测的数据.bin文件

8.4 报错

1)运行报错

 ImportError: Could not import backend for traitsui.  Make sure you
        have a suitable UI toolkit like PyQt/PySide or wxPython
        installed.

安装 PyQt5:

 pip install PyQt5 -i https://pypi.doubanio.com/simple/

2) 运行报错

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /home/tong/anaconda3/lib/python3.7/site-packages/torch/lib/libtorch_python.so)
  • 首先查看/anaconda3/lib/libstdc++.so.6这个文件中关于GLIBCXX的信息:
(base)  tong@tong-ThinkPad-X1-Extreme ~/app/OpenPCDet/tools(master)$ strings ~/anaconda3/lib/libstdc++.so.6 | grep 'CXXABI'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.10
CXXABI_1.3.3

包含 CXXABI_1.3.11

  • 其次查看/usr/lib/x86_64-linux-gnu/libstdc++.so.6这个文件中关于GLIBCXX的信息:
(base)  tong@tong-ThinkPad-X1-Extreme ~/app/OpenPCDet/tools(master)$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_TM_1
CXXABI_FLOAT128

不包含 CXXABI_1.3.11

  • 方法一
    将文件/anaconda3/lib/libstdc++.so.6.0.24复制进路径/usr/lib/x86_64-linux-gnu/,并建立其至/usr/lib/x86_64-linux-gnu/libstdc++.so.6的软链接。执行代码如下:
sudo cp ~/anaconda3/lib/libstdc++.so.6.0.24 /usr/lib/x86_64-linux-gnu/
sudo rm -rf /usr/lib/x86_64-linux-gnu/libstdc++.so.6
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
  • 方法二
    .bashrc文件中添加语句:
export LD_LIBRARY_PATH=/home/pioneer2_6/anaconda3/envs/pcdet/lib

检查:

(base)  tong@tong-ThinkPad-X1-Extreme ~/app/OpenPCDet/tools(master)$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.10
CXXABI_1.3.3

你可能感兴趣的:(linux)