[3D检测系列-PointRCNN] 复现PointRCNN代码
1.下载代码
2.准备数据集
(1)使用官网提供的数据集格式
(2)使用软连接
3.检测结果
4.结果可视化
(1)仅显示 LiDAR
(2)显示 LiDAR 和图像
(3)显示具有特定索引的 LiDAR 和图像
(4)显示带有modified LiDAR file附加点云标签/标记的 LiDAR 作为第 5 维
先附上环境配置:
Ubuntu18.04
python3.6
pytorch 1.8.0 torchvision 0.9.0 cuda 11.1
(这几个先不急着装,后面有教程) mayavi 4.7.1 vkt 8.2.0 traits 6.2.0 traitsui 7.2.1 PyQt5 5.15.2
1.下载代码
https://github.com/sshaoshuai/PointRCNN
Pytorch版本的代码、直接进github下载,这一步应该不需要过多解释。
如果有不会下载的可以直接打开一个终端,输入一下代码
git clone https://github.com/sshaoshuai/PointRCNN
!!!!注意 !!!!
!!!代码下载完后是不完善的!!!
不然会报以下错误:No moudle named 'iou3d_cuda'
pointnet2_lib打开的话是空的,这个时候需要在github中把这个文件夹单独打开,把里面的东西下载下来,然后放在本地代码文件夹里面去。然后还需要运行以下代码来安装一些工具:
sh build_and_install.sh
错误1:
error: command 'gcc' failed with exit status 1
解决方法:进入一下目录:~/pointnet2_lib/pointnet2/src/ ----->将文件中所有cpp文件的的THCState_getCurrensStream(state) 全部改为 c10::cuda::getCurrentCUDAStream()
错误2:
解决方法:进入一下目录:~/lib/utils/roipool3d/src/roipool3d.cpp ----->将文件中的AT_CHECK 改为 TORCH_CHECK
2.准备数据集
(1)使用官网提供的数据集格式
首先需要下载KITTI数据集,官网的话大家就不用尝试了因为根本下不下来。有个大佬直接上传在百度云盘里面的大家可以在他里面下载一下。KITTI数据集下载(百度云)(作者都不容易大家可以给别人也点个赞支持支持!!)
然后官网的数据集结构如下:
可能有些小白不太明白(我尽量讲明白大佬们见谅,可自行跳过),可以参考我的如下:
(2)使用软连接
因为在跑PointRCNN之前,我先跑过PointPIllars所以为了避免重新拷贝一份,可以直接用软连接。将PointPillars里面的数据集直接连接到这里来。
在PointRCNN的data/KITTI文件夹下:
ln -s (PointPillars数据集的路径) object
object代表的是创建的文件夹名字,最好就取这个名字,不然要修改代码。 而且数据集的路径是包含training和testing的根目录。然后就会生成一个object文件就OK了。
3.检测结果
利用作者的预训练模型可以直接检测,将模型放在tools下面,他的是外网下载不下来。我上传到CSDN了:----PointRCNN预训练权值-----
接下里开始检测:
python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 4 --eval_mode rcnn --set RPN.LOC_XZ_FINE false
错误1:
TypeError: load() missing 1 requered positional argument : ‘Loader’
解决方法:
pip install pyyaml==5.1
开始了!!!!现在就开始等!!
大约等10分钟后:
检测结果放在以下路径下:
PointRCNN/output/rcnn/default/eval/epoch_no_number/val/final_result/
4.结果可视化
克隆可视化工具:
git clone https://github.com/kuixu/kitti_object_vis.git
克隆后在data文件中也要像上面2.(2)一样设置一个软连接。可以把他的object删了后重新弄一次。接着需要一些依赖:(记得用镜像不然慢的不得鸟!!!)
pip install opencv-python pillow scipy matplotlib pyside2
然后需要使用conda来安装mayavi,这个不能用pip我也不知道为什么....但是这里确实用pip的话基本上用不了....不知道为什么
conda install mayavi
然后在kitti_object_vis文件中打开终端:
(1)仅显示 LiDAR
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis
此时可能出现以下错误:
错误1:ModuleNotFoundError: No module named 'vtkIOParallelPython'
解决方法:
conda install jsoncpp=1.8.3
pip install pyface==7.3.0
然后继续我们的代码出现一下界面:(大功告成!!)在终端按一次回车就可以查看下一张图
然后以下还有其他几种不同的显示方法:(具体的可查看源码的github kitti_object_vis)
(2)显示 LiDAR 和图像
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes
(3)显示具有特定索引的 LiDAR 和图像
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes --ind 1
(4)显示带有modified LiDAR file
附加点云标签/标记的 LiDAR 作为第 5 维
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --pc_label
自己写的所以有点复杂,但是至少能完成嘿嘿。如果各位有优化欢迎评论区讨论!!