代码地址:
https://github.com/sshaoshuai/PointRCNN
项目原始测试环境:
Linux (tested on Ubuntu 14.04/16.04)、Python 3.6+、PyTorch 1.0
自测通过环境:
Ubuntu 16.04、Python 3.7.6 in Anaconda、Pytorch 1.2 + CUDA 9.2
Python 3.7.6 in Anaconda安装
官方指南:https://docs.anaconda.com/anaconda/install/linux/
具体步骤:
-
在https://www.anaconda.com/products/individual#linux 网页最下方下载Linux Python 3.7版安装包
-
在安装路径,例如Downloads下,执行如下命令进行安装:
bash ~/Downloads/Anaconda3-2020.02-Linux-x86_64.sh -
后续根据操作提示进行操作即可完成安装
Pytorch 1.2 + CUDA 9.2安装
查看本机的CUDA及cuDNN版本:https://www.cnblogs.com/wuliytTaotao/p/11453265.html#%E6%9F%A5%E7%9C%8B-cudnn-%E7%89%88%E6%9C%AC
最新版Pytorch:https://pytorch.org/get-started/locally/
历史版本Pytorch(1.0.0以上):https://pytorch.org/get-started/previous-versions/
注:我环境所安装的CUDA版本为9.1,cuDNN版本为7602(即7代)。亲测可以运行CUDA 9.2对应的Pytorch 1.2。
具体步骤:
-
找到历史版本Pytorch 1.2.0+CUDA 9.2
-
在终端执行如下命令安装(需要先完成Anaconda的安装):
conda install pytorch1.2.0 torchvision0.4.0 cudatoolkit=9.2 -c pytorch -
如果下载安装缓慢,请使用科学上网并在网络压力较小的时间段进行安装
KITTI 3D object detection数据集下载
数据集官网:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
所需数据集:
velodyne:http://www.cvlibs.net/download.php?file=data_object_velodyne.zip
calib:http://www.cvlibs.net/download.php?file=data_object_calib.zip
label_2:http://www.cvlibs.net/download.php?file=data_object_label_2.zip
image_2:http://www.cvlibs.net/download.php?file=data_object_image_2.zip
大文件推荐使用axel下载,如axel -n -4 http://www.cvlibs.net/download.php?file=data_object_image_2.zip
PointRCNN安装及运行
安装及配置依照https://github.com/sshaoshuai/PointRCNN即可
运行Quick Demo:
python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 1 --eval_mode rcnn --set RPN.LOC_XZ_FINE False
运行过程开始时如发生以下错误:
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found
需使用以下命令升级libstdc++:
sudo apt-get install libstdc++6
参考https://blog.csdn.net/u011961856/article/details/79644342
运行效果:
eval: 100%|██| 3769/3769 [14:27<00:00, 4.35it/s, mode=EVAL, recall=11972/14385]
2020-07-23 12:20:28,906 INFO final average detections: 6.777
2020-07-23 12:20:28,907 INFO final average rpn_iou refined: 0.000
2020-07-23 12:20:28,907 INFO final average cls acc: 0.000
2020-07-23 12:20:28,907 INFO final average cls acc refined: 0.000
2020-07-23 12:20:28,907 INFO total roi bbox recall(thresh=0.100): 13689 / 14385 = 0.951616
2020-07-23 12:20:28,907 INFO total roi bbox recall(thresh=0.300): 13573 / 14385 = 0.943552
2020-07-23 12:20:28,907 INFO total roi bbox recall(thresh=0.500): 13314 / 14385 = 0.925547
2020-07-23 12:20:28,907 INFO total roi bbox recall(thresh=0.700): 10093 / 14385 = 0.701634
2020-07-23 12:20:28,907 INFO total roi bbox recall(thresh=0.900): 52 / 14385 = 0.003615
2020-07-23 12:20:28,907 INFO total bbox recall(thresh=0.100): 13687 / 14385 = 0.951477
2020-07-23 12:20:28,907 INFO total bbox recall(thresh=0.300): 13582 / 14385 = 0.944178
2020-07-23 12:20:28,907 INFO total bbox recall(thresh=0.500): 13423 / 14385 = 0.933125
2020-07-23 12:20:28,907 INFO total bbox recall(thresh=0.700): 11972 / 14385 = 0.832256
2020-07-23 12:20:28,907 INFO total bbox recall(thresh=0.900): 2340 / 14385 = 0.162669
2020-07-23 12:20:28,908 INFO Averate Precision:
Car AP@0.70, 0.70, 0.70:
bbox AP:96.9105, 89.5363, 88.7473
bev AP:90.2124, 87.8930, 85.5194
3d AP:89.1975, 78.8519, 77.9140
aos AP:96.90, 89.41, 88.54
Car AP@0.70, 0.50, 0.50:
bbox AP:96.9105, 89.5363, 88.7473
bev AP:97.0919, 89.8143, 89.3379
3d AP:97.0522, 89.7723, 89.2525
aos AP:96.90, 89.41, 88.54
用kitti_object_vis对结果可视化
https://github.com/kuixu/kitti_object_vis
https://blog.csdn.net/tiatiatiatia/article/details/97765165 (步骤3.2不需要链接后重命名为obj,直接用kitti的object即可)
注:
无需创建新的conda环境,直接在原始环境安装opencv, pillow, scipy, matplotlib(这部分应该已经预装了)及mayavi(conda install mayavi -c conda-forge)
test installation时若发生cv2.so: undefined symbol: PyCObject_Type错误,可将/opt/ros/kinetic/lib/python2.7/dist-packages/下的cv2.so改名为cv2_ros.so,参考
https://blog.csdn.net/qq_33591712/article/details/84757017
https://stackoverflow.com/questions/43019951/after-install-ros-kinetic-cannot-import-opencv?newreg=1fc9099ecd744c83adf801f027971739
效果评价
- 运行结果的各项指标与原论文中呈现的结果一致;
- 对于车辆的识别,PointRCNN常常出现误判,但漏判的情况不算太多;
- 由于项目提供的pretrained模型仅针对车辆进行训练,目前无法用肉眼确认PointRCNN对行人及自行车的识别率;