文章目录
题目:PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
论文地址: https://arxiv.org/pdf/1912.13192.pdf
代码地址: https://github.com/open-mmlab/OpenPCDet
1.配置环境
本文默认显卡驱动,anaconda等相关软件已经安装好
- 硬件平台:GPU为Nvidia RTX 3090Ti,CPU Intel i9 12900K
- Ubuntu 18.04
- Python 3.8
- pytorch 1.10.0 torchvision 0.11.0 cuda 11.3
2.安装步骤
2.1 创建并激活conda环境
conda create -n pcdet python=3.8
conda activate pcdet
2.2 安装pytorch
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
- 检验安装结果,输出对应版本和True即为安装成功
python
>>> import torch
>>> print(torch.__version__)
>>> print(torch.cuda.is_available())
2.3 安装spconv
cd projects/OpenPCDet/
git clone -b v1.2.1 https://github.com/traveller59/spconv.git --recursive
cd spconv/
python setup.py bdist_wheel
cd ./dist
pip install spconv-1.2.1-cp38-cp38-linux_x86_64.whl
- 或者
pip install spconv-cu113
- 检验是否安装成功
python
>>> import spconv
>>>
2.4 安装依赖,需要将requirements.txt文件中的torch, torchvision删除,因为前面已经安装成功
cd OpenPCDet/
pip install -r requirements.txt
2.5 安装pcdet
python setup.py develop
- 检验pcdet是否安装成功
python
>>> import pcdet
>>>
2.6 安装mayavi
pip install mayavi
- 检验mayavi是否安装成功
python
>>> import mayavi
>>>
安装mayavi时报错:
解决办法,只需输入:
pip install https://github.com/enthought/mayavi/zipball/master
3.运行demo.py
- 运行代码之前要下载训练好的权重文件pv_rcnn_8369.pth,
- 下载地址:https://drive.google.com/file/d/1lIOq4Hxr0W3qsX83ilQv0nk1Cls6KAr-/view,将下载好的文件放到tools文件夹下;
3.1 数据预处理,生成数据pkl文件和gt_database文件夹;
数据集准备:
OpenPCDet
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes) & (optional: depth_2)
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2
├── pcdet
├── tools
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
这时出现报错:
ModuleNotFoundError: No module named 'av2'
解决方法:
pip install av2
继续运行前面的代码,出现另一个报错:
ModuleNotFoundError: No module named 'kornia'
解决方法:
pip install kornia==0.6.5
注意:以上版本很关键
3.2 运行demo.py
cd tools/
python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt pv_rcnn_8369.pth --data_path ../data/kitti/training/velodyne/000008.bin
这里又出现报错:
报错1:
WARNING: Imported VTK version (9.3) does not match the one used
to build the TVTK classes (9.2). This may cause problems.
Please rebuild TVTK.
解决方法:
pip uninstall vtk==9.3
pip install vtk==9.2.5
报错2:
AttributeError: module 'spconv' has no attribute '__version__'
猜测是前面spconv安装有问题,解决办法:
# 查看spconv版本
pip list | grep spconv
解决办法:
# 卸载
pip uninstall spconv-1.2.1
# 重新安装后可以运行
pip install spconv-cu113
继续运行demo.py,出现如下错误:
从提示看是没有安装PyQt/PySide导致的,安装Qt后还是会出问题,不能显示运行结果:
于是卸载了Qt,安装pyside2
# 卸载了Qt
pip uninstall pyqt5
# 安装pyside2
pip install pyside2 -i https://pypi.doubanio.com/simple
或 -i https://mirrors.aliyun.com/pypi/simple # 阿里源
或 -i https://pypi.tuna.tsinghua.edu.cn/simple # 清华源
- 最终,成功运行demo.py
此外,在运行demo.py时可能会遇到以下错误:
解决办法:
在命令行输入以下命令:
unset LD_LIBRARY_PATH
注:unset LD_LIBRARY_PATH 是一个用于清空 Linux 或 Unix 操作系统环境变量 LD_LIBRARY_PATH 的命令。
3.3 训练和测试
- 训练模型,cd到tools下:
# 单卡训练
python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 2 --epochs 80
# 多卡训练
bash scripts/dist_train.sh 8(显卡数) --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 4 --epochs 80
- 模型测试,cd到tools下:
python test.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 8 --ckpt pv_rcnn_8369.pth --save_to_file
至此,完整的PV-RCNN代码运行过程就完成了。
参考:
https://blog.csdn.net/weixin_42905141/article/details/124515876
https://blog.csdn.net/qq_41301570/article/details/137704777
https://blog.csdn.net/weixin_42905141/article/details/124515876
https://blog.csdn.net/cpu077/article/details/139113832