Ubuntu 22.04从零开始安装Openpcdet 0.6.0——详细记录过程(含4090+CUDA11.8)

一、前言

A、云平台安装和本地安装的差异:
之前在几个云平台上的1w算力豆已经用光了,所以这次本地选择本地安装Pcdet

两者安装过程有很大差异,因为九天毕昇云平台使用的是CUDA10.1,且没办法改动,导致pcdet 只能安装0.3.2,且只能选择较低的版本的第三方库:torch1.6.0,spconv:1.2.1(相当难安装)。

九天毕昇云平台安装过程,详见我之前的博客:

九天毕昇”云平台:python3.7+CUDA10.1+torch1.6.0+spconcv1.2.1安装OpenPCDet全流程_空持千百偈,不如吃茶去的博客-CSDN博客主要在云平台上搭建OpenPCDet环境https://blog.csdn.net/weixin_44013732/article/details/126030624


B、改动:

本地安装可以选择更多的CUDA版本,本次安装遵循以下博客做以改动(因为他安装的是pcdet0.5.2,咱们是pcdet0.6.0):

ubuntu 18.04 从零开始复现 OpenPCDet 训练kitti数据集并评估 可视化 损失函数 ​​​​​​icon-default.png?t=N7T8https://blog.csdn.net/jin15203846657/article/details/122735375


本文全程记录安装过程,部分过程可能因为手滑而关掉对话框,没有记录到,或者有其他问题,需要各位自己去搜一下(ง •_•)ง。


废话不多说,现在开始准备安装:

1、PCDET 0.6.0版本配置:

	显卡:4090和1660s(两个环境都安装了,没有问题)
	CUDA :11.1
	spconv:spconv-cu111 2.1.25
	python:3.8(最低要求)
	torch:1.9.1+cu111 (最低要求)
	torchvision:0.10.1+cu111 (最低要求)
	

 配置时,需要注意以下几点:

①不能使用python3.7安装:我尝试过python3.7安装pcdet,但是里面第三方库‘av2’最少需要python3.8版本以上:

提示到:Requires-Python >=3.8,说明没有适配python3.7的‘av2’。

②不能使用torch1.9.1以下的版本安装,否则安装korina时会遇到如下提示:

上面是安装完torch1.8.1的提示:kornia 0.6.12 requires torch>=1.9.1。是因为它的requirement.txt文件中要求torch>=1.9.1

当然,你也可以选择安装低版本的kornia进行安装,我没有尝试过。


2、相关文件

本次所有相关的安装文件打包好了,省的跳来跳去:

百度云icon-default.png?t=N7T8https://pan.baidu.com/s/1POcv5KO-nQQgBcKra1mdIg?pwd=6666

有些文件是用不到的,你们看着选就可以,下面会讲到。


二、安装过程
  

1、安装Ubuntu

参照:Ubuntu安装详细教程

Ubuntu镜像文件在这里:Ubuntuicon-default.png?t=N7T8https://pan.baidu.com/s/1xoy4Kp995B7E6Q4LXyqW4g?pwd=6666%C2%A0

镜像官网:Ubuntu桌面系统镜像

这里,我安装的Win11+Ubuntu22.04双系统。 


2、Ubuntu驱动

(1)检查驱动

首先检查一下自己的电脑,是否可以使用驱动,命令如下:

nvidia-smi

 如果显示是这样的,可以直接跳过整个步骤2

报错结果如果没有驱动,则报错结果大致如下:

NVIDIA-SMI has failed because it couldn’t communicate with the NIVIDIA driver. 

Make sure that the latest NVIDIA driver is installed and running.

(2)安装驱动driver

我们使用Ubuntu自带的:“软件与更新”去安装:

①进入“软件与更新”。

  ②附加驱动中,可以选择nvidia-driver-525。

 具体多少得,如果driver版本过高,可能会导致WiFi适配器不能使用,具体可参照:④。

③重启一下,就可以用啦( ̄▽ ̄)"

 参考:Ubuntu20.04下CUDA、cuDNN的详细安装与配置过程(图文)

④报错:没有WIFI适配器

如果driver安装完后,发现WIFI适配器不见了:

 说明driver安装的版本过高WIFI驱动与driver不适配。因为没网了,所以需要重新安装Ubuntu,选择合适的版本的driver再次尝试。

我参考了非常多的博客,结果都没有成功,目前想到最快的方法就是重装了(。﹏。*)。


3、安装gcc-9和g++-9

(1)检测

使用以下指令,检查是否有gcc编译器:

gcc -v

如果有,确保gcc版本在1.10.0以下:

 例如gcc-9就可以。

有些小伙伴可能使用的是系统提示的指令:

sudo apt-get install gcc

这会安装成最新版本gcc-13版本。

注:若不是10版本以下的,则后面很可能会报错(并不是百分之百会报错,因人而异)。现在选择不安装也没关系,等后面出问题了再说。

当然,如果没有安装gcc的话,可以跟着下面的步骤先安装一下。


(2)安装gcc和gcc++

安装gcc-9:

sudo apt-get install gcc-9

安装g++-9:

sudo apt-get install g++-9

这里不采用系统提示的指令去安装:

sudo apt-get install gcc

sudo apt-get

这样安装固然方便,但是apt-get会自动安装最新的版本,这样会和pcdet0.6.0冲突。

详情见安装OpenPCDet遇到的问题的第32号问题:安装pcdet时报错:subprocess.CalledProcessError: Command ‘[‘which‘, ‘g++‘]‘ returned non-zero exit status 1.


(3)软链接

sudo ln -s /usr/bin/gcc-7 /usr/bin/gcc

sudo ln -s /usr/bin/g++-7 /usr/bin/g++


(4)检查版本

使用以下指令,检查是否有gcc编译器:

gcc -v

跳转到第(1)步。


4、安装Anconda

(1)下载Anconda文件

百度云

这个文件夹下的就是anconda文件。


(2)进入安装包所在目录,使用bash指令进行anaconda安装

bash Anaconda3-5.3.1-Linux-x86_64.sh


(3)查看安装结果:

conda info 

 安装成功


(4)官方安装文件及参考

清华源镜像:

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

参考博客:

ubuntu系统安装Anaconda与使用入门_ubuntu安装anaconda_张维鹏的博客-CSDN博客


5、安装cuda

(1)下载CUDA文件

进入百度云网盘,CUDA文件位置如下所示:

 这里就放着CUDA安装文件:cuda_11.1.0_455.23.05_linux.run


如果不想用百度云,下面是官方网站:

CUDA官方网站:CUDA Toolkit Archive | NVIDIA Developer

CUDA文件官方下载地址:

https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run


(2)运行安装程序

sudo sh cuda_11.1.0_455.23.05_linux.run

接着按下contine:

 开始安装,输入accept
 

最后在选择安装项目的时候,不要选择driver,因为我们已经在第1步安装过了,免得driver又需要重新适配一下。


 若出现下面的问题:

Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

加入--override即可,例如:

sudo sh cuda_10.2.89_440.33.01_linux.run --override

参考:Linux安装CUDA GCC版本不兼容_cuda 10.2 gcc_氵文大师的博客-CSDN博客


(3)配置环境变量

①查看环境配置文件:

vim ~/.bashrc

②加入配置变量

export CUDA_HOME=/usr/local/cuda

export PATH=$PATH:/usr/local/cuda/bin  

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64  

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64

以上变量都需要加,如果不加变量,nvcc -V查不出来cuda版本,而且后续安装可能还有各种各样的错误。 

③更新

source ~/.bashrc

④最后用nvcc -V检查版本,得到以下界面

注意:如果仍然显示:找不到命令 “nvcc”,

下面可能会提示:

sudo apt install nvidia-cuda-toolkit

尽量不要用上面的命令去安装,有人踩过坑

上面这个问题,说明没有更新source ~/.bashrc,抑或是没有采用合适的软链接,大家可以根据各自情况来查询。


(4)cudnn安装

①解压

文件也在百度云,解压指令:

tar zxvf cudnn-11.1-linux-x64-v8.0.5.39.tgz

②进入到cuda文件夹下

③ 执行指令进行复制文件:

sudo cp include/cudnn*.h /usr/local/cuda/include/  #没*的话后面会报错

sudo cp lib64/lib* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

④建立软链接

cd /usr/local/cuda/lib64/

sudo chmod +r libcudnn.so.8.0.5

sudo ln -sf libcudnn.so.8.0.5 libcudnn.so.8

sudo ln -sf libcudnn.so.8 libcudnn.so

sudo ldconfig  

若是有下面的错误:

对于不是符号链接的文件,执行以下操作:

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.org

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.org

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.org

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.org

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.org

sudo mv /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.org

然后执行:

sudo ldconfig

⑤查看cudnn版本

执行下面指令,进行查看

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

如果出现下面的情况: 

 解决办法是用下面的命令即可正确查看cudnn版本

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

如果显示:

 说明安装正常。


(5)参考博客

ubuntu 18.04 从零开始复现 OpenPCDet 训练kitti数据集并评估 可视化 损失函数


6、配置pcdet环境

(1)创建虚拟环境(无需安装包,Anconda自动安装python):

conda create -n Openpcdet python=3.8

(2)激活环境

conda activate Openpcdet

(3)安装torch、torchvision

①下载文件

百度云:找到以下文件夹,放着torch、torchvision安装包

②安装

使用pip指令实现本地安装

pip install torch-1.9.1+cu111-cp38-cp38-linux_x86_64.whl torchvision-0.10.1+cu111-cp38-cp38-linux_x86_64.whl

③测试

先输入python进入环境,输入以下指令:

import torch    # 如正常则静默
torch.__version__ #查看torch版本
import torchvision
torchvision.__version__ #查看torchvision版本
torch.cuda.is_available() #正常的话返回“True”
a = torch.Tensor([1.])    # 如正常则静默
a.cuda()    # 如正常则返回"tensor([ 1.], device='cuda:0')"
from torch.backends import cudnn # 如正常则静默
cudnn.is_acceptable(a.cuda())    # 如正常则返回 "True"

显示可以正常使用:

 ④官方下载网站

如果不想用百度云,下面是官方下载网站:

torch下载网站:https://download.pytorch.org/whl/torch_stable.html

torch 1.9.1(python3.8):https://download.pytorch.org/whl/cu111/torch-1.9.1%2Bcu111-cp38-cp38-linux_x86_64.whl

torchvision 0.10.1(python3.8):

https://download.pytorch.org/whl/cu111/torchvision-0.10.1%2Bcu111-cp38-cp38-linux_x86_64.whl


(4)安装sponcv稀疏卷积库

安装spconv2.0+,直接使用清华源安装即可:

pip install spconv-cu111


(5)安装pcdet第三方库

①下载Openpcdet-master

②配置 requirement.txt

进入到\OpenPCDet-master文件夹下,根据requirement.txt文件,下载第三方库:

pip install -r requirements.txt

我更改了requirement.txt里的参数(原因后面讲到):

整体下来应该没有任何报错:

 ③安装pcdet

执行以下指令:

python set.py develop

当安装过程是这种的颜色的代码时:

且过程中没有报错,说明它在build。

安装完成:

​ 

 


(6)报错

下来是“美好的”报错时间o( ̄┰ ̄*)ゞ:

你们中间遇到的各种问题,可以参考我写的另一篇博客:

安装OpenPCDet遇到的问题icon-default.png?t=N7T8https://blog.csdn.net/weixin_44013732/article/details/130658821

用法:Ctrl+F,搜索你们想问的问题即可,如果没有的话,就是目前我没有碰到。


三、测试程序

1、下载数据集

有数据集的可以用自己的数据集,没有数据集的,我给你们提供一个编译好的小数据集

kitti小型数据集icon-default.png?t=N7T8https://pan.baidu.com/s/175VowZs0goXZe8ZKUJ5XDg?pwd=6666

大数据集

kitti大型数据集icon-default.png?t=N7T8https://pan.baidu.com/s/1C1gz9GmYIaFUHlA4C--Q0w?pwd=6666
 


2、训练

①进入到tools文件夹下:

/PointCloudDet3D/tools

②执行:

python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml

测试结果如下:

 开始训练喽~

③可选择训练的模型

可以通过tools文件夹下的cigs目录找到想要训练的模型,以pointpillars举例。

路径:/OpenPCDet-master/tools/cfgs/kitti_models/

接着改变一下输入指令就行: 

python train.py --cfg_file cfgs/kitti_models/pointpillars.yaml


3、测试程序

①下载文件

说明:如果训练完后,会生成一个pth文件,在

/home/xyy/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt/里面。

为方便大家直接测试功能,我给大家下载了PVRCNN的权重文件供大家测试:

pv-rcnn训练权重icon-default.png?t=N7T8http://xn--https-bl8js66z7n7i//pan.baidu.com/s/1t5IkmrcLM-xtUMElTlnrSg?pwd=6666%20%20%E6%8F%90%E5%8F%96%E7%A0%81%EF%BC%9A6666%20%20--%E6%9D%A5%E8%87%AA%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E8%B6%85%E7%BA%A7%E4%BC%9A%E5%91%98V5%E7%9A%84%E5%88%86%E4%BA%AB下载文件后将文件pv_rcnn.pth放到

/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt/pv_rcnn_.pth

目录下:

 


 ②测试推理

使用指令:

python test.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 1 --ckpt /home/xyy/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt/pv_rcnn_.pth --save_to_file

说明:

a.路径

test是在训练完成的基础上进行的,通过对训练的pth文件进行加载测试数据,路径为/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_*.pth

b.指令格式

指令格式为:python test.py --cfg_file +cig中预训练模型位置(yaml文件) --batch_size 1 --ckpt +预训练权重位置(pth文件)  --save_to_file

除了yaml路径外,还需要加入pth数据的位置,一般都放在output中(train后才会生成,否则木有文件数据)


测试结果为:

③下载预训练权重

可以下载其他模型的权重文件,以pointpillars举例:

 网址:https://github.com/open-mmlab/OpenPCDet

找到你想要的模型去下载下来,放到上面的文件夹里就行。


 

4、可视化

A.Open3D

①安装

利用pip指令进行安装

pip install open3d

测试open3d是否可用:

 没有报错就是可以使用,如果是因为版本的问题,也会出现奇奇怪怪的bug

 例如,上面这个是使用open3d-0.11报出的bug,最后默认系统安装最新版本open3d-0.17.0就没啥毛病。

②测试

执行指令:

python demo.py --cfg_file /home/xyy/OpenPCDet-master/tools/cfgs/kitti_models/pv_rcnn.yaml --ckpt /home/xyy/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt/pv_rcnn_.pth --data_path /home/xyy/OpenPCDet-master/data/kitti/testing/velodyne/000001.bin

说明:

a.指令格式

指令格式为:python test.py --cfg_file +cig中预训练模型位置(yaml文件) --batch_size 1 --ckpt +预训练权重位置(pth文件) --data_path +点云bin文件的位置


测试结果:


B.Mayavi

 ①安装

用pip指令进行安装:

pip install vtk # vtk用的9.2.6
pip install mayavi #mayavi用的4.8.1
pip install PyQt5 # 5.15.9

②测试

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt /output/kitti_models/pv_rcnn/default/pv_rcnn_.pth --data_path ../data/kitti/testing/velodyne/000008.bin

说明:

a.指令格式

指令格式为:python test.py --cfg_file +cig中预训练模型位置(yaml文件) --batch_size 1 --ckpt +预训练权重位置(pth文件) --data_path +点云bin文件的位置


测试结果:


C.同时安装mayavi和open3d情况下,如何选择执行

进入到/OpenPCDet-master/tools/demo.py文件下:

②将里面的import部分做以改动:

a. 如果要使用open3d,则不用改动

b. 如果使用mayavi,则把“try”到”except“部分删掉,并取消首行缩进即可。


D.参考

安装mayavi:三维目标检测之OpenPCDet环境配置及demo测试

Open3D和mayavi切换:OpenPCDet安装及其3D检测算法实现


四、4090安装过程

4090安装和实现过程与1660一致,我用了同样的方法安装了4090上的Pcdet0.6.0,也可以跑。


五、各种报错

你们中间遇到的各种问题,可以参考我写的另一篇博客:

安装OpenPCDet遇到的问题icon-default.png?t=N7T8https://blog.csdn.net/weixin_44013732/article/details/130658821

用法:Ctrl+F,搜索你们想问的问题即可,如果没有的话,就是目前我没有碰到。

猜你喜欢

转载自blog.csdn.net/weixin_44013732/article/details/130651896