Ubuntu20.04+RTX3090复现PointRCNN记录
PointRCNN复现
PointRCNN项目简介
- 有关PointRCNN介绍可以参考东南大学周威博士的解读,PointRCNN 深度解读。
- 论文地址。
- 作者公开的开源代码地址。
CUDA+CUDNN环境配置
有关Ubuntu20.04下CUDA及CUDNN的安装及环境配置可以参考Ubuntu20.04下CUDA及CUDNN详细安装与配置过程。
需要注意的几个点:
-
显卡驱动需要和显卡匹配(已安装适配驱动忽略此条),可以使用指令
lspci | grep -i vga
查看显卡型号,得到显卡的十六进制数字代码,在显卡型号查询查看显卡的具体型号。
确定显卡的型号之后在NVIDIA的官网NVIDIA显卡驱动查询上查询适配的驱动。 -
CUDA尽量安装适配pytorch多版本的CUDA及pytorch版本对应关系,11.0尽量不要装。本人在安装CUDA11.0以及pytorch1.7.0之后仍然报错,
CUDA kernel failed : no kernel image is available for execution on the device.
,存在算力不匹配的问题CUDA算力不匹配。 -
pytorch 不需要安装与原项目中完全一致的版本,选择适配 CUDA 的 pytorch 即可,本人复现环境使用 pytorch1.10 及 CUDA11.3。
-
CUDA 及 CUDNN 的环境变量配置问题。
CUDA_HOME一定要设置为CUDA_HOME=/usr/local/cuda
,否则会出现寻址错误问题。export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda export NUMBAPRO_CUDALIB=/usr/local/cuda/bin export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.soexport NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice/
-
CUDNN查看版本号的指令需要将解压后的cuda/include文件夹下的cudnn_version.h文件复制到usr/local/cuda/include/中。使用
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
查看CUDNN版本号的信息。
PointRCNN复现
- 需要改动的几个文件,可以在 gitee 上下载直接替换相应的文件。详细教程查看 PointRCNN 文件改动。
- plane数据集是可选的,复现过程中若未使用plane数据集,需要将lib\datasets\kitti_rcnn_dataset.py 文件里的279~282行注释掉,禁止调用数据增强函数
apply_gt_aug_to_one_scene(...)
。 - 因为版本等原因,将 pointRCNN/lib/config.py 第39行
__C.RPN.USE_INTENSITY
的值由True
改为False
,__C.RPN.USE_INTENSITY = False
。将 pointRCNN/lib/config.py 第187行yaml.load(f)
改为yaml.safe_load(f)
。
可视化
-
在Python3.x环境下在安装mayavi时,想要运行成功,则需要PyQt、PySide或者wxPython。
-
选择PyQt5组件及依赖安装:
在配置的环境下输入指令conda install pyqt5==5.12.0
安装PyQt5。
系统环境中安装依赖组件。
输入sudo apt install pyqt5*
安装pyqt5的依赖项。
输入sudo apt install qt5-default qttools5-dev-tools
安装qtdesigner。 -
下载可视化项目PointRCNN可视化源码。
扫描二维码关注公众号,回复: 14901583 查看本文章git clone 下载或者直接在 GitHub 上下载源码,与 PointRCNN 项目可以不放在同一文件夹下。
git clone https://github.com/kuixu/kitti_object_vis
cd 到可视化项目的 data 目录下,原教程中指出需要将链接命名为 obj ,但在可视化显示时无法提示文件无法找到,因此选择直接删除可视化项目中的 object 文件,将 PointRCNN 项目下 KITTI 数据集的 object/ 目录直接链接到 data/ 目录下。
cd kitti_object_vis/data ln -s /home/Ubuntu/PointRCNN/data/KITTI/object
-
可视化显示,使用相应的指令进行可视化显示,在终端界面按回车键显示下一张图。
只显示 LiDAR 的真值。python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis
显示雷达和 image 的真值。
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes
数据集较大,指定特定某张图的可视化,加 --ind 100 指定图像编号为 000100.txt 。
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes --ind 100
显示 PointRCNN 的预测值和真值对比,在可视化命令后加 -p 。
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes --ind 6 -p
-
可视化显示损失函数。
进入到 PointRCNN/output/rpn/default 目录下,打开终端,输入指令tensorboard --logdir tensorboard
查看 RPN 网络训练的损失函数。进入到 PointRCNN/output/rcnn/default 目录下,打开终端,输入指令tensorboard --logdir tensorboard
查看 RCNN 网络训练的损失函数。需要先安装 tensorflow-gpu,tensorboard,tensorflow-tensorboard,默认安装最高版本即可。pip install tensorflow-gpu tensorboard tensorflow-tensorboard
致谢
感谢以上各位博主及其他未提到的博主关于 PointRCNN 文章解读以及复现的分享。