open-mmlab /OpenPCDet是一个简洁独立开源的适用于激光雷达3D目标检测的平台,支持多种基于深度学习的3D目标检测算法,可以使用开源数据集或者自制数据集进行训练测试。
github网址链接
cmake --version
cmake官网链接
cmake版本要大于等于1.13,不然后边的库的setup过程会报错。不要看网上的博客盲目执行pip install cmake或者apt-get autoremove cmake,这样会导致出一些额外的错误,最好的方法是采用超链接的方法进行版本的修改。
nvcc -V和nvidia-smi两个命令显示的cuda是不一致的,这个问题不大。主要看nvcc -V这条命令显示的cuda版本。nvidia-smi所显示的cuda是,这个台机器安装驱动所能带动的最大cuda版本,nvcc -V显示的cuda版本才是运行是的版本。一般来说nvidia-smi所显示的版本要高一些。
安装pytorch时,安装命令,建议去官网复制粘贴,不容易出现cuda和torch版本不匹配的问题。有时也直接用下边的命令行,下载安装也非常快,比如 2.1的第三条指令。
conda create -n pcdet python=3.7 # 创建python3.7环境
conda activate pcdet # 激活环境
conda install pytorch==1.5.0 torchvision==0.6.0 -c pytorch
验证安装成功
(pcdet) ypx@ypx:~/ws/OpenPCDet$ python
Python 3.7.13 (default, Mar 29 2022, 02:18:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import torchvision
>>> print(torch.__version__)
1.5.0
>>> print(torchvision.__version__)
0.6.0a0+82fd1c8
>>>
spconv是一个卷积库,分为spconv 1.x与spconv 2.x两种版本,具体可以参考:
OpenPCDet完整环境下Spconv1.x与Spconv2.x的安装问题及解决方法
spconv 的github链接
这一步比较容易出现问题。目前spconv出了2.0以上版本,而spconv2.只支持cuda10.2以上版本,如果cuda版本合适,直接运行pip安装即可,像我的系统安装的是cuda10.1,只能老老实实下载原始的版本。
#安装libboost
sudo apt-get install libboost-all-dev
# 下载spconv,并切换分支
git clone -b v1.2.1 https://ghproxy.com/https://github.com/traveller59/spconv.git
cd third_party
git clone https://ghproxy.com/https://github.com/pybind/pybind11
cd pybind11
git checkout -b 3b1dbeb
cd .. #退回
cd ..
python3 setup.py bdist_wheel
#如setup.py这一步报错,可能需要你删掉build/ dist/ spconv.egg-info/,这几个文件夹之后再编译
注:这一步极有可能报错,
报错一:
解决办法参考:
运行setup.py无法编译spconv的问题–ubuntu18.04
ubuntu18.04安装spconv踩坑实录
cout不是std的成员
(1)当无具体对应的报错解决方案时,需要针对自己的具体报错,进行百度搜索
(2)若出现报错nvcc fatal: unknown ‘-Wall’ 注释文件 中包含 -Wall 的两行代码 并重新执行
Caffe2Targets.cmake 文件路径如下:
~/anaconda3/envs/pcdet/lib/python3.6/site-packages/torch/share/cmake/Caffe2/Caffe2Targets.cmake
两行代码如下:
(line 73) INTERFACE_COMPILE_OPTIONS "-Wall;-Wextra;-Wno-unused-parameter;-Wno-missing-field-initializers;-Wno-write-strings;-Wno-unknown-pragmas;-Wno-missing-braces;-fopenmp"
(line 93) INTERFACE_COMPILE_OPTIONS "-Wall;-Wextra;-Wno-unused-parameter;-Wno-missing-field-initializers;-Wno-write-strings;-Wno-unknown-pragmas;-Wno-missing-braces"
cd ./dist
pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl# 先检查一下dist里边的文件,有可能是空的
python
import spconv
结果无报错即可
git clone https://ghproxy.com/https://github.com/open-mmlab/OpenPCDet.git
cd OpenPCDet
pip install -r requirements.txt
python setup.py develop
验证pcdet是否安装成功,无报错即可功,:
python
import pcdet
参考链接:
安装 open-mmlab /OpenPCDet并测试demo
三维目标检测之OpenPCDet环境配置及demo测试
openpcdet环境配置及demo运行
PointPillars点云检测在OpenPCDet推理代码详解
若复现目标是其他算法,则选择对应的预训练模型
下载链接pointpillar预训练模型
将下载好的文件pointpillar_7728.pth 放入文件夹/OpenPCDet/tools
kitti官网下载链接
object-> 3d object
选择的是激光雷达的3D点云数据:
Download Velodyne point clouds, if you want to use laser information (29 GB)
下载完成后解压发现里面有两个文件夹,分为训练集和测试集:training和testing
下载下来后将其放置一个固定位置。
可视化工具有两款可以选择:mayavi与open3d
至于尝试进行ros下的可视化,可以参考另一篇博客:三维目标检测之ROS可视化
open3d的版本选择跟ubuntu的版本号也有关系,这个要注意。具体可以参考这篇博客:
Open3D版本和Ubuntu的关系
(1) 安装指令:
conda install -c open3d-admin open3d==0.9.0
pip install open3d-python
(2) 验证open3d是否安装成功:
python
import open3d
(3)指令运行
python3 -s demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt pointpillar_7728.pth --data_path /home/ypx/ws/OpenPCDet/data_object_velodyne/testing/velodyne/000000.bin
其中:
–cfg_file: .yaml配置文件
–ckpt: 为训练好的.path 模型文件
–data_path:为检测的数据.bin文件
(4)解决报错
有时执行完这条语句后,会出现报错
AttributeError: 'open3d.geometry.PointCloud()' object has no attribute 'voxel_down_sample'
报错三:
ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/xxxx/xxxx/lib/python3.7/site-packages/open3d/open3d_pybind.cpython-37m-x86_64-linux-gnu.so)
以上报错,
这大概率是open3d版本与ubuntu不对应,或者安装了多个版本的open3d,此时可以删除重新安装:
conda remove open3d
(pcdet) auto@auto-System-Product-Name:~/OpenPCDet/tools$ python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt pv_rcnn_8369.pth --data_path ../data/kitti/testing/velodyne/000008.bin
2022-03-06 21:32:26,628 INFO -----------------Quick Demo of OpenPCDet-------------------------
2022-03-06 21:32:26,628 INFO Total number of samples: 1
/home/auto/anaconda3/envs/pcdet/lib/python3.7/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:2157.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
2022-03-06 21:32:29,122 INFO ==> Loading parameters from checkpoint pv_rcnn_8369.pth to CPU
2022-03-06 21:32:29,154 INFO ==> Done (loaded 367/367)
2022-03-06 21:32:29,300 INFO Visualized sample index: 1
段错误 (核心已转储)
解决办法参考,【段错误(核心已转储)——运行PV-RCNN代码 python demo.py】
(1) tools/demo.py文件中,优先使用的是open3d,如下图所示,如果想要用mayavi这个库的话,需要把try部分删了,只用except里边的部分。
原文件:
import argparse
import glob
from pathlib import Path
try:
import open3d
from visual_utils import open3d_vis_utils as V
OPEN3D_FLAG = True
except:
import mayavi.mlab as mlab
from visual_utils import visualize_utils as V
OPEN3D_FLAG = False
import numpy as np
import torch
from pcdet.config import cfg, cfg_from_yaml_file
from pcdet.datasets import DatasetTemplate
from pcdet.models import build_network, load_data_to_gpu
from pcdet.utils import common_utils
将这一块去除就可以了:
try:
import open3d
from visual_utils import open3d_vis_utils as V
OPEN3D_FLAG = True
except:
修改后:
import argparse
import glob
from pathlib import Path
import mayavi.mlab as mlab
from visual_utils import visualize_utils as V
OPEN3D_FLAG = False
import numpy as np
import torch
from pcdet.config import cfg, cfg_from_yaml_file
from pcdet.datasets import DatasetTemplate
from pcdet.models import build_network, load_data_to_gpu
from pcdet.utils import common_utils
(2)安装
pip install vtk==8.1.2 # 自动安装的vtk是9,会产生冲突
pip install mayavi==4.7.3
pip install PyQt5
pip install scipy
pip install scikit-image
pip install tqdm
pip install torchvision
(3)报错解决:
python3.8安装mayavi4.7.3
Conda安装mayavi
python安装mayavi后报错AttributeError
(4)指令运行
python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt pointpillar_7728.pth --data_path /home/ypx/ws/OpenPCDet/data_object_velodyne/testing/velodyne/000000.bin
整体参考:
ubuntu 18.04 从零开始复现 OpenPCDet 训练kitti数据集并评估 可视化 损失函数