OpenPCDet 踩坑实录

在了解自动驾驶中的环境感知,看了些基于点云的目标检测,想看看具体有怎样的效果,于是选择OpenPCDet这个看起来集成方法又多,文档又全的开源项目,此处为GitHub地址。

于是点进去,看了下要求

OpenPCDet 踩坑实录_第1张图片

具体的说明很简单

OpenPCDet 踩坑实录_第2张图片

就是克隆代码,安装依赖项,安装spconv,以及安装pcdet,这里着重说明一下安装spconv。

我自己的环境是Ubuntu18.04,python3.7,CUDA10,pytorch1.3,注意pytorch版本要CUDA一致,安装pytorch的时候会自动安装python下的cudatoolkit和cudnn。sponv是一个空间稀疏卷积库,提供了两个版本,这个是1.0:

我用的是v1.2。

直接安装说明克隆代码,安装boost头文件。

git clone https://github.com/traveller59/spconv.git --recursive
sudo apt-get install libboost-all-dev

要求cmake >= 3.13.2,然而Ubuntu18.04直接安装的cmake版本有点老,于是去官网下载。

wget -zxvf https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Linux-x86_64.tar.gz
tar  https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Linux-x86_64.tar.gz

嘿嘿嘿,下了编译好的版本,直接解压添加到环境变量就好。

export PATH=你的cmake所在目录/cmake-3.18.4-Linux-x86_64/bin:"${PATH}" 

搞了个临时的版本。

接着按照步骤来:

OpenPCDet 踩坑实录_第3张图片

啊,该第三步了,前面已经装了pytorch,于是运行setup.py文件生成要安装的whl文件。

python setup.py bdist_wheel

进入dist路径,找到生成的whl文件并安装。

cd ./dist

看一下生成的whl文件叫啥名字,一般名字对应着各种版本号,名字显示奇奇怪怪的基本可以断定生成失败了,检查一下你的各个包的版本啥的,再来一遍吧。

正常情况pip install *.whl就好啦。

到此为止,没有报错误的话,就成功安装了sponv啦!也是整个配置里问题最多的一项,接下来就很简单啦!

都装完了想运行下代码,快快乐乐打开说明文件,直接在提供的预训练模型上可视化看看结果。

有在不同数据集下训练的不同方法的模型。

OpenPCDet 踩坑实录_第4张图片

OpenPCDet 踩坑实录_第5张图片

存在Google.drive里的,在墙外。

下载好预训练模型,然后安装python的可视化工具包。

pip install mayavi

准备好你的点云文件和下载好的预训练模型,开始检测啦。

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml \
    --ckpt pv_rcnn_8369.pth \
    --data_path ${POINT_CLOUD_DATA}

记得改成自己的点云文件路径哦,还要注意*.yaml和*.pth要对应。

然后我的代码就开始报错,vtk无法创建(总之是类似的),应该是服务器上的图形显卡缺少相应驱动,不大支持三维渲染,于是把检测的结果输出来,存到文档里,在自己的笔记本上跑。

from visual_utils import visualize_utils as V
import numpy as np
from mayavi import mlab


def main():
	points = np.fromfile("000008.bin", dtype=np.float32).reshape(-1, 4)
	ref_boxes=np.array([[ 14.7530,  -1.0668,  -0.7949,   3.7316,   1.5734,   1.5017,   5.9684],
		[  8.1338,   1.2251,  -0.8056,   3.7107,   1.5718,   1.6053,   2.8312],
		[  6.4539,  -3.8711,  -1.0125,   2.9638,   1.5000,   1.4587,   6.0006],
		[  4.0341,   2.6423,  -0.8589,   3.5184,   1.6252,   1.6226,   6.0168],
		[ 33.5379,  -7.0922,  -0.5771,   4.1590,   1.6902,   1.6740,   2.8695],
        [ 20.2419,  -8.4190,  -0.8768,   2.2857,   1.5067,   1.5971,   5.9195],
        [ 24.9979, -10.1047,  -0.9413,   3.7697,   1.6151,   1.4467,   5.9671],
        [ 55.4206, -20.1693,  -0.5863,   4.1936,   1.6783,   1.5897,   2.8009],
        [ 40.9520,  -9.8718,  -0.5903,   3.7940,   1.5752,   1.5658,   5.9509],
        [ 28.7372,  -1.6067,  -0.3582,   3.7827,   1.5546,   1.5801,   1.2517],
        [ 29.8940, -14.0270,  -0.7138,   0.7105,   0.5286,   1.8181,   1.8177],
        [ 10.5068,   5.3847,  -0.6656,   0.8203,   0.6050,   1.7170,   4.5543],
        [ 14.7198, -13.9145,  -0.7675,   0.6548,   0.6050,   1.8767,   6.3586],
        [ 40.5776,  -7.1297,  -0.4536,   0.7717,   0.6421,   1.8219,   6.3071],
        [ 18.6621,   0.2868,  -0.7225,   0.6963,   0.5903,   1.6171,   3.4939],
        [ 33.5909, -15.3372,  -0.6708,   1.5792,   0.4420,   1.6632,   5.8578],
        [ 53.6673, -16.1789,  -0.2170,   0.9555,   0.5120,   1.9663,   4.0730],
        [ 30.4546,  -3.7337,  -0.3892,   1.6604,   0.5506,   1.7268,   2.8738],
        [ 37.2168,  -6.0348,  -0.4855,   0.8860,   0.5873,   1.7859,   6.3918],
        [ 34.0845,  -4.9617,  -0.4192,   0.8911,   0.6893,   1.8796,   6.0675],
        [ 13.2934,   4.3788,  -0.5723,   1.7745,   0.5844,   1.7321,   5.5894],
        [  1.5887,   8.8918,  -0.5623,   1.7521,   0.3996,   1.6873,   6.9082],
        [  1.6363,  10.6976,  -0.4213,   0.5559,   0.5656,   1.6537,   1.1167],
        [ 10.1203,  -7.5959,  -0.8065,   1.6906,   0.5269,   1.8206,   6.0078],
        [  1.3104,  -5.3168,  -0.9996,   3.8217,   1.5819,   1.5247,   5.7200],
        [  1.9891,   6.9479,  -0.6237,   0.7172,   0.6449,   1.8667,   5.1038],
        [ 37.0710, -16.5266,  -0.6848,   1.4592,   0.5439,   1.6777,   2.5990],
        [ 18.6999,   1.1810,  -0.4766,   0.7327,   0.6436,   1.8375,   5.8503],
        [  2.6479,  17.1586,  -0.1585,   0.5904,   0.6348,   1.8937,   3.6890],
        [  0.9431,  10.5031,  -0.3420,   0.5309,   0.5733,   1.7027,   2.1916],
        [  5.7515, -12.5565,  -0.7717,   0.5685,   0.5493,   1.6204,   2.1157],
        [ 45.0186,  -7.5816,  -0.0797,   3.7895,   1.6455,   1.7168,   4.4490]])
	ref_scores=np.array([0.9654, 0.9511, 0.9037, 0.8834, 0.8346, 0.6788, 0.6594, 0.5516, 0.5041,
        0.4658, 0.3139, 0.3063, 0.2938, 0.2692, 0.2396, 0.2348, 0.2258, 0.2208,
        0.2194, 0.1883, 0.1608, 0.1559, 0.1516, 0.1449, 0.1427, 0.1358, 0.1239,
        0.1227, 0.1212, 0.1207, 0.1192, 0.1003])
	ref_labels=np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 3, 3, 2, 3,
        1, 2, 3, 2, 2, 2, 2, 1])
	print(ref_scores)
	V.draw_scenes(points=points,ref_boxes=ref_boxes,ref_scores=ref_scores, ref_labels=ref_labels)
	mlab.show()

if __name__ == '__main__':
    main()

读取kitti数据集目标检测训练集中的点云数据文件000008.bin,剩下的是输出的检测结果。

OpenPCDet 踩坑实录_第6张图片

ending

 

你可能感兴趣的:(自动驾驶,pytorch)