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

ubuntu 18.04 复现OpenPCDet

前言:

我已经装好了nvidia460.91.03版本驱动,并且也装了10.1版本的cuda。
但由于OpenPCDet中要装spconv(巨坑的库),10.2以上版本的cuda才能pip安装2.0版本的spconv,不然老版本的spconv太难装了(踩坑无数)。所以为了避开spconv太难安装,我选择用高版本的cuda,后续配环境的话直接pip岂不香

所以第一步就是 多版本cuda安装/切换 (非多版本cuda的谨慎借鉴哈!)

  1. 下载11.1版本的cuda run文件(官方下载网址 有其他很多版本)
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run

(再多一句,wget不想用的话,可以直接把wget后面(即https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run)的网址复制到浏览器,就可以下载了。该方法适合任何wget带网址的下载)

然后就是安装11.1版本的cuda。首先在sudo sh cuda_11.1.0_455.23.05_linux.run后选择continue,然后输入accept,进入安装选项cuda installer
这里面的X代表选择,按enter键取消X消失(即不选择)。
我因为装过驱动了,所以驱动那个选项不选,其他全选了,然后就是选install,进行安装,一会就安装好了。

此时cuda11.1安装完毕,然后就是在~/.bashrc里面添加路径

原本只装一个版本的话,路径添加如下:

export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export CUDA_HOME=/usr/local/cuda-10.1

多版本的话需要换种写法,如下:

export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

nvcc -V后还是10.1,这是因为软连接还没有变,所以接下来就是换软连接。

sudo rm -rf /usr/local/cuda                                      #删除之前创建的软链接
sudo ln -s /usr/local/cuda-11.1  /usr/local/cuda      #创建新 cuda 的软链接

此时再换个终端nvcc -V,就会变为cuda11.1。

然后就是安装cudnn (cudnn官方下载地址)
然后选择和cuda版本相匹配的版本,这里因为我要为cuda11.1装cudnn,所以我选的是cudnn-11.1-linux-x64-v8.0.5.39.tgz
下载之后解压:

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

然后就是:

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*

然后建立cudnn的软连接

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

在这里插入图片描述


至此,多版本cuda并存/切换完成。
后面开始配OpenPCDet环境

在这里插入图片描述

1. 创建虚拟环境

conda create -n pcdet python=3.7

安装pytorch、torchvision和torchaudio
(注意版本匹配问题,不然容易出各种问题,尽量使用我这套版本,很多人用都没问题的,我用的版本:torch1.8.1+cu111 torchvision0.9.1+cu111 torchaudio==0.8.1):

whl轮子下载地址 推荐用
官网下载地址(但这种方法下载很慢,巨慢的,建议第一种)

我就用的是whl安装的,在whl轮子下载地址里面找到匹配版本的torch和torchvision,然后cd到下载目录pip安装他们

在这里插入图片描述


再安装torchaudio==0.8.1(因为我没看到它,笑死,可能眼小把!)

在这里插入图片描述


然后验证下成功与否和能用否:

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"

在这里插入图片描述


然后就是重头戏了!!!!安装spconv!!!

前面我们说过,10.2以上的cuda可以直接pip安装spconv如下:

pip install spconv-cu111   #我的cuda是11.1,自己根据cuda版本来选择spconv版本

在这里插入图片描述


安装完成(是不是很简单啊?哈哈哈!)

在这里插入图片描述


然后验证安装的spconv能用不:

import spconv.pytorch as spconv

在这里插入图片描述


哈哈,无误!!!

至此,OpenPCDet还差一小部分就OK了。

克隆OpenPCDet

git clone https://github.com/open-mmlab/OpenPCDet.git

然后安装pcdet库和一些依赖。

python setup.py develop

接下来就等把,会需要一段时间,其中scikit-image llvmlite等库 比较难下载(应该是外网的原因,科学上网应该可以轻松解决),容易超时报错(本人试了两次都超时),解决方法(拿scikit-image举个例子,其他的类同):

在这里插入图片描述


打开上面圈起来的网址,然后本地下载(确实好慢,下了十来分钟),下载完毕后在离线安装

在这里插入图片描述


再接着来

python setup.py develop

成功后如下图;

在这里插入图片描述

再贴一张conda list 图:

在这里插入图片描述


接下来就是准备训练拉!

首先就是准备数据(数据格式如下图)和生成数据的一些信息:

python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


接下来就可以训练模型了,cd到tools下面:

python train.py --cfg_file ./cfgs/kitti_models/pointpillar_pyramid_aug.yaml  --batch_size 4 --epochs 50

训练中的亚子

在这里插入图片描述


训练结束后会自动评估最后一个模型,然后是下面的亚子:

在这里插入图片描述


在这里插入图片描述


训练结束后,我们来demo一下看看效果:

首先安装可视化工具mayavi(这次方法不太对,总有错误,正确方法看文章最后,有正确安装方法

pip3 install mayavi 

(可以尝试下pip install mayavi 后续的错或许就没了呢?后续发现貌似先安装VTK,在安装mayavi就好了,具体可以看我下面最后有详细介绍

静等安装完成,然后测试下能用不:

python
import mayavi

在这里插入图片描述


发现一切正常,心中窃喜,赶紧输入可视化命令:

python demo.py --cfg_file ./cfgs/kitti_models/pointpillar_pyramid_aug.yaml --ckpt /home/juzhen/OpenPCDet/output/cfgs/kitti_models/pointpillar_pyramid_aug/default/ckpt/checkpoint_epoch_50.pth --data_path /home/juzhen/OpenPCDet/data/kitti/testing/velodyne/000517.bin(其中的ckpt和点云数据路径根据自己的情况改下)

然后报错ModuleNotFoundError: No module named ‘importlib_resources’:

在这里插入图片描述

那就安装呗:pip install importlib_resources

成功后继续可视化,傻眼了,又错ModuleNotFoundError: No module named 'vtkCommonCorePython'

在这里插入图片描述


这次pip安装不了了,尝试解决,未果!不明白为啥,那就放弃用mayavi。 改用open3d

pip install open3d 

太慢,取消掉重新来
在后面添加镜像源

pip install open3d -i https://pypi.tuna.tsinghua.edu.cn/simple

芜湖,速度起飞!

在这里插入图片描述


然后安装完成测试;

在这里插入图片描述


没问题,继续可视化(心想总可以了把?),然而…报错ImportError: numpy.core.multiarray failed to import

那就继续克服困难把,找了半天,可算有个方法可行了(大致就是有多个numpy把)。。。。

pip show numpy
pip uninstall numpy

在这里插入图片描述


卸载numpy1.20.0,然后再pip show numpy

在这里插入图片描述


果然还有一个版本的numpy1.19.2(这个貌似是创建虚拟环境的时候安装的),后面安装pcdet0.5.2的时候,貌似又装了(依稀记得的哈!)
卸载它!远离它!!!!
这时候pip show numpy 彻底没了,那我就再装回numpy1.20.0

在这里插入图片描述

然后就是见证奇迹的时刻,继续可视化!!

python demo.py --cfg_file ./cfgs/kitti_models/pointpillar_pyramid_aug.yaml --ckpt /home/juzhen/OpenPCDet/output/cfgs/kitti_models/pointpillar_pyramid_aug/default/ckpt/checkpoint_epoch_50.pth --data_path /home/juzhen/OpenPCDet/data/kitti/testing/velodyne/000517.bin(再说一次,注意路径哈)

在这里插入图片描述


OK,可视化木得问题啦,稍微开心下!

后面我又去看了下损失函数的图像:

pip install tensorboardX
pip install tensorflow

然后在/home/juzhen/OpenPCDet/output/cfgs/kitti_models/pointpillar_pyramid_aug/default/tensorboard(也就是events.out.tfevents.文件夹下)打开终端激活pcdet的虚拟环境,输入:

tensorboard --logdir=/home/juzhen/OpenPCDet/output/cfgs/kitti_models/pointpillar_pyramid_aug/default/tensorboard

在这里插入图片描述


右键打开红色框网址,查看训练过程中的损失函数可视化:

在这里插入图片描述


从图上可以看出损失函数并没有平滑的收敛,这是因为图片上显示的是每个batch的loss,不是epoch的loss,想看epoch的loss需要自己加点代码(我还没弄),加完后如下如所示(图片是别人的借用下。上面是每个epoch的loss图,很平滑。下面是openpcdet原始loss):

在这里插入图片描述

至此,完结。撒花!!

注:
后续我又重装了一遍,可视化使用的是mayavi工具包。下面我记录下mayavi的使用记录!**使用了不同的安装命令**
在你的虚拟环境下

pip install vtk==8.1.2
pip install mayavi
python
import mayavi

在这里插入图片描述


看起来和我前面一样,估计还会有错,果然,我用的时候提示:

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

解决方法:

pip install pyside2

在这里插入图片描述


然后就再试一下:

在这里插入图片描述

O了,木的问题!!!

以上内容仅为自己学习记录,原创不易。转载请标明出处,拜谢!!!

原文地址:https://blog.csdn.net/jin15203846657

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预编译版,总体过程感觉还是挺简单的,但是由于在网上找的参考资料并没有和自己遇到的情况完全一样的,所以把自己的安装过程记录下来,方便和自己一样的后来人进行安装,同时也自己作个记录留作备忘。其实预编译版的CARLA本身几乎不用什么命令行进行安装,主要步骤只有解压缩和拷贝文件,和极少的命令行安装操作。但是相关依赖以及其它的CARLA所使用的一些工具需要一起安装好,下面一起来看看安装步骤吧。_ubuntu22.04安装carla
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载Ubuntu 20 安装包_ubuntu20下载
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装rally, pip3 install -r requirements.txt 时提示如下: 说明openssl 已安装。解决:1. pip3 install --upgrade pip , 结果输出如下 ..._error: command '/usr/bin/gcc' failed with exit code 1
文章浏览阅读1.1k次。自己刚踩坑装好的W11 WSL2 miniconda_wsl2 cuda
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standalone的,会有一点区别(不识别 下面的 -localhost no)上面的命令会在~/.vnc/目录下生成一个 passwd文件。具体端口号,可以查看vncserver -list返回结果中的RFB PROT。作用是vncserver启动的时候运行这些命令,把桌面程序启动起来。如果希望用某个用户比如 demo登录,就用su切换到这个用户。桌面版默认就已安装,服务器版需要手动安装,并启动。关闭某个会话可以用下面的命令。远程地址输入ip:port。查看全部的vnc会话。_ubuntu vncserver
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主要是连接一个远程的code-server服务,code-server服务安装在什么系统,调用的就是什么系统的环境,如这里使用ubuntu进行安装code-server,那使用的就是ubuntu环境,如需要go,python,java开发,需要在Ubuntu安装相关环境,创建的文件夹和项目也是在Ubuntu里面.这种方式其实在访问vscode的时候利于可以随时随地进行连接使用,且不受设备影响。
安装Ubuntu上超好用的终端Terminator。通过添加软件源、更新源、安装Terminator等步骤完成。
文章浏览阅读1.1k次,点赞83次,收藏74次。不要嫌弃Ubuntu的单调的终端界面啦,快来试试这些有意思的命令_ubuntu系统有趣的玩法
文章浏览阅读2.5k次。在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。通过上面的信息可以看到,/dev/vda2 目录下还剩余45G,那么就可以把swap文件生成在/dev/vda2目录下。在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。# bs 为块的大小,count 创建多少个块。# 执行命令后,删除创建的swap目录即可。#把生成的文件转换成 Swap 文件。2、创建一个swap文件。_ubuntu20修改swap大小
文章浏览阅读2.9k次,点赞2次,收藏10次。记录RV1126的SDK编译错误,以及解决处理_command exited with non-zero status 1
文章浏览阅读1.1w次,点赞22次,收藏101次。【记录】ubuntu20.04安装nvidia显卡驱动_ubuntu20.04安装nvidia显卡驱动
文章浏览阅读727次,点赞6次,收藏27次。在嵌入式Linux开发过程中,可能遇到uboot无法通过nfs服务从Ubuntu下载系统镜像(TTTTTT)的问题。如果你使用的是较新版本的Ubuntu,那么其**默认内核将不支持nfs2**!而**uboot仅支持到nfs2**,因此我们需要修改系统内核以及nfs配置文件,开启nfs2服务。**此问题非常棘手**,因为问题出现的时间太近,并且使用的人少。由于是2023年后才出现的问题,**chatgpt也无法解答**!本文参考网络上多篇博客资料,是解决此问题的最新办法。
ubuntu系统下安装软件的方法有多种,包括使用apt工具、deb软件包安装、源码编译安装以及通过软件中心安装。还有一种以 .run 后缀的软件包也可以在ubuntu系统下安装。具体的安装方法可以通过百度搜索来获取。
文章浏览阅读814次。本篇目的:Xubuntu如何安装pkg-configpkg-config是一个计算机软件包,用于帮助开发人员查找、定位和使用依赖库。它通常用于构建软件时,开发人员需要指定程序所依赖的外部库的位置和版本信息。使用pkg-config,开发人员可以很容易地查找、检索和导出这些依赖库的信息,从而简化了软件的构建过程。_ubuntu中怎么下载pkg-config
文章浏览阅读2k次。ubuntu创建共享文件夹_ubuntu20.04共享文件夹
文章浏览阅读2.9k次,点赞74次,收藏73次。对于有长期远程桌面需求的用户,建议将cpolar套餐升级到专业套餐,支持配置固定的公网TCP端口,且带宽也会相应的增大,支持更高效便捷的远程桌面连接Ubuntu系统。【cpolar内网穿透支持http/https/tcp协议,支持永久免费使用,不限制流量,无需公网IP,也不用进入路由器设置,操作简单。隧道创建成功后,点击左侧仪表盘的状态——在线隧道列表,查看xrdp隧道的所生成的公网TCP端口地址,复制下来。,使用cpolar内网穿透映射3389端口,生成公网TCP端口地址,实现在公网环境下,_ubuntu 局域网桌面
文章浏览阅读3.2k次。而在linux的ubuntu版本中,又多出两类用户:安装ubuntu系统的源用户xxx,其与root具有相同权限,仅在执行命令时,前面加sudo。在ubuntu中,用命令deluser username可以直接删除用户账号及家目录,而用centos7中的命令userdel -r username才能达到同样目的。在ubuntu中,没有moduser命令,centos7中的usermod修改用户信息的命令,同样可以用在ubuntu中。在系统中,创建新的用户或称为账号,一般需要多步操作。_ubuntu创建一个新用户
文章浏览阅读1.6w次,点赞4次,收藏23次。系统的许多日志文件都存储在 /var/log 目录中。你可以使用 ls /var/log 命令来列出可用的日志文件。/var/log/Xorg.0.log:包含 X 服务器的日志信息(图形界面)。打开DASH,搜索日志或者log,打开app,这个是/var/log的界面版。这将显示系统日志的末尾,并提供有关系统崩溃和错误的信息。/var/log/kern.log:包含内核日志信息。/var/log/dmesg:包含开机时的日志信息。/var/log/syslog:包含系统日志信息。_ubuntu查看系统日志
文章浏览阅读857次。首先将source.list复制为source.list.bak备份,然后将source.list内容改为需要的镜像源列表即可。Ubuntu采用apt作为软件安装工具,其镜像源列表记录在/etc/apt/source.list文件中。本节均为 Ubuntu 20.04 的镜像源列表。若为其他版本,将所有focal更改为其他版本代号即可。_apt 国内源