环境:
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
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
cuda所有版本见链接https://developer.nvidia.com/cuda-toolkit-archive,选择与NVIDIA匹配的cuda版本按网页上教程下载。
sudo sh ./cuda_10.2.89_440.33.01_linux.run
.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。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*
参考教程:https://blog.csdn.net/u012243626/article/details/82469174
pip install cmake==3.13.2.post1
.bashrc
gedit ~/.bashrc
添加以下变量
export PATH="/home/tong/anaconda3/envs/pcdet/lib/python3.6/site-packages/cmake/data/bin:$PATH"
保存后 source 使修改生效
source ~/.bashrc
执行指令:
conda create -n pcdet python=3.7 # 创建python3.7环境
conda activate pcdet # 激活环境
conda install pytorch==1.5.0 torchvision==0.6.0 -c pytorch
可以直接在下载需要的包进行本地安装,下载网址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下载
安装本地包,将下载好的包放入路径/home/tong/anaconda3
,执行指令:
conda install --use-local pytorch-1.5.0-py3.7_cuda10.2.89_cudnn7.6.5_0.tar.bz2
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
>>>
基本按照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"
git clone https://github.com/open-mmlab/OpenPCDet.git
pip install -r requirements.txt
python setup.py develop
下载训练好的模型以及数据集参考readme文档:https://github.com/open-mmlab/OpenPCDet。运行demo参考教程:https://github.com/open-mmlab/OpenPCDet/blob/master/docs/DEMO.md
PV-RCNN训练好的模型文件pv_rcnn_8369.pth:下载链接。将下载好的文件放入文件夹/OpenPCDet/tools
。
kitti官网数据集下载较为困难,可在网盘下载:
链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw
提取码:grys
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
其中:
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