注:本环境都是在Linux系统下进行配置的。
1、安装anacaonda
- 在官网下载anaconda安装包
(1)进入文件下载目录
cd ~/software
(2)运行安装包
bash Anaconda3-2020.07-Linux-x86_64.sh
(3)回车键,进入注册信息页面
(4)按q跳过阅读,yes
(5) 默认安装在用户目录下,直接回车即可安装;若想自定义安装目录,直接输入安装目录,回车即可。
(6)Do you wish the installer to initialize Anaconda3 by running conda init ? 输入 no,回车
- 修改环境变量
vim ~/.bashrc
# 不会用vim或者用不习惯的可以用linux自带的编辑器
gedit ~/.bashrc
添加以下内容
# 2.在.bashrc文件底部添加
# 为了避免与其他服务器用户产生命令冲突,使用自己的英文名+Python替代python
alias fortunePython='/root/anaconda3/bin/python'
#这里写anaconda的安装路径
export PATH="/root/anaconda3/bin:$PATH”
- 检查是否安装成功
conda --version
出现conda的版本号即为安装成功
2、安装pytorch和CUDA
- 创建环境,选择python 3.6版本
conda create -n pointrcnn python=3.6
- 进入环境
conda activate pointrcnn
- 添加清华源(可选),如果你用的外网并且网速还行的话可以不用换源。
# 直接在终端运行
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
#最后一句是设置安装路径可见。可输入cat ~/.condarc查看是否成功。
#补充:.condarc文件在Home文件中,是隐藏文件,可按Ctrl+H将其显示。
- 去pytorch官网,按照自己的配置选择(我电脑显卡是3060,安装的是pytorch2.0, CUDA 11.7),复制指令到终端进行安装,注意将 -c pytorch 删除,这样下载的路径才是清华源。
- 检验是否安装成功
打开新的终端,输入python
,再输入import torch
,没有报错;
再输入import torchvision
,也没有报错,如图所示。此时即安装成功。
3、数据集准备
- 下载KITTI数据集(推荐用迅雷下载)
https://blog.csdn.net/weixin_44003563/article/details/105384659?ops_request_misc=&request_id=&biz_id=102&utm_term=KITTI%E6%95%B0%E6%8D%AE%E9%9B%86%20%E8%BF%85%E9%9B%B7%E4%B8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-105384659.pc_search_result_control_group&spm=1018.2226.3001.4187
下载四个数据集image、velodyne、label、calib,解压,并按照如下结构放置:
PointRCNN
├── data
│ ├── KITTI
│ │ ├── ImageSets
│ │ ├── object
│ │ │ ├──training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│ │ │ ├──testing
│ │ │ ├──calib & velodyne & image_2
├── lib
├── pointnet2_lib
├── tools
- 添加软链接
添加软链接的目的是为了避免又重新复制一份数据,毕竟KITTI数据集还是挺大的(当然也可以把KITTI数据集中的object直接复制过来)。在PointRCNN的data/KITTI文件夹下:
ln -s (你解压的KITTI数据集object的路径) object
4. 开始训练(若是用作者的模型可以跳过这个阶段)
python generate_gt_database.py --class_name 'Car' --split train
python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 1 --train_mode rpn --epochs 200 #训练模型
python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 1 --train_mode rcnn --epochs 70 --ckpt_save_interval 2 --rpn_ckpt ../output/rpn/default/ckpt/checkpoint_epoch_200.pth #第二阶段
开始预测
python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt ../output/rcnn/default/ckpt/checkpoint_epoch_70.pth --batch_size 1 --eval_mode rcnn #生成可视化
可能遇到的错误1
解决办法:
进入以下目录:
~/pointnet2_lib/pointnet2/src/ ----->将文件中所有cpp文件的的THCState_getCurrensStream(state) 全部改为 c10::cuda::getCurrentCUDAStream()
~/lib/utils/iou3d/src/ -----> 将iou3d.cpp中的THCState_getCurrensStream(state) 全部改为 c10::cuda::getCurrentCUDAStream()
~/lib/utils/roipool3d/src/ -----> 将roipool3d.cpp中的THCState_getCurrensStream(state) 全部改为 c10::cuda::getCurrentCUDAStream()
可能遇到的错误2
解决办法:
进入以下目录:
~/pointnet2_lib/pointnet2/src/ ----->将文件中所有cpp文件的的将文件中的AT_CHECK全部改为 TORCH_CHECK
~/lib/utils/iou3d/src/ -----> 将iou3d.cpp中的AT_CHECK全部改为 TORCH_CHECK
~/lib/utils/roipool3d/src/ -----> 将roipool3d.cpp中的AT_CHECK全部改为 TORCH_CHECK
可能遇到的错误3
解决办法:
安装PyQT5
pip install PyQT5
5. 可视化
克隆可视化工具代码:
git clone https://github.com/kuixu/kitti_object_vis.git
克隆后在kitti_object_vis/data文件夹中设置一个软连接,这个软连接链接到KITTI数据的object
ln -s (你解压的KITTI数据集object的路径) object
然后使用conda来安装mayavi
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
然后继续我们的代码出现一下界面:终端按一次回车就可以查看下一张图
(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
参考文章:复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)