复现PointRcnn记录

1. 复现报错解决

1.1 sh build_and_install.sh错误

复现PointRcnn时,安装 sh build_and_install.sh时出现Fatal error: cuda.h, No such file or directory,以下方法解决。

1.在~/.bashrc中设置环境变量

export CUDA_HOME=/home/usr/local/cuda-10.0
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

2.查看makefile文件是否对cuda的地址是/usr/local/cuda-10.0 有的默认是/usr/local/cuda

ln -s /usr/local/cuda-10.0 /usr/local/cuda

3.如果以上情况都不是,并且locate  cuda.h 能找到正确位置,在terminal中如下操作

sudo apt-get install nvidia-cuda-toolkit

4.重启reboot。

1.2 plane数据集问题?

将lib\datasets\kitti_rcnn_dataset.py文件里的279~282行注释掉了,不让他调用数据增强函数apply_gt_aug_to_one_scene(...)。plane数据集也是可选的。

1.3 GPU不够

减小减小batch_size值。

2. 复现过程

pointRCNN原理与复现、pointrcnn复现+可视化、

2.1 安装anaconda

2.2 环境搭建

  • 创建虚拟环境/进入
conda create -n pointrcnn python=3.6 
#官方要求版本3.6以上
conda activate pointrcnn
  • 安装pytorch 1.0
conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch

打开python,并运行:import torch 载入该模块,未报错则成功。

检查:conda list存在torch即安装完成

复现PointRcnn记录_第1张图片

  • 克隆代码
git clone --recursive https://github.com/sshaoshuai/PointRCNN.git
  • 安装相关依赖库1
conda install easydict
conda install tqdm
conda install tensorboardX
conda install scipy
#还有fire,skimage(报超时错误,解决:https://blog.csdn.net/weixin_43051346/article/details/103823493。),numba,yaml(conda install pyyaml)

  • 安装相关依赖库2
sh build_and_install.sh

安装pointnet2,iou3d,roipool3d三个依赖。

出警告如下:未理会。

2.3数据集下载及放置

复现PointRcnn记录_第2张图片

复现PointRcnn记录_第3张图片

复现PointRcnn记录_第4张图片

复现PointRcnn记录_第5张图片

复现PointRcnn记录_第6张图片

2.4 模型训练---切换到相关的目录文件(/PointRCNN/tools)

python generate_gt_database.py --class_name 'Car' --split train
  •  一阶段
CUDA_VISIBLE_DEVICES=1,2 python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 16 --train_mode rpn --epochs 200 

复现PointRcnn记录_第7张图片

  • 二阶段
python train_rcnn.py --cfg_file cfgs/default.yaml --batch_size 4 --train_mode rcnn --epochs 70  --ckpt_save_interval 2 --rpn_ckpt ../output/rpn/default/ckpt/checkpoint_epoch_200.pth

二阶段训练完成后结果会在/home/way/PointRCNN/output/rcnn/default/ckpt中,.pth文件代表训练权重。

复现PointRcnn记录_第8张图片

  • 生成可视化文件
python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt ../output/rcnn/default/ckpt/checkpoint_epoch_70.pth --batch_size 2 --eval_mode rcnn

 PointRCNN/output/rcnn/default/eval/epoch_70/val/final_result

 复现PointRcnn记录_第9张图片

 3 可视化

pointRCNN 结果可视化

3.1 pointRCNN预测结果拷贝到KITTI数据集

把整个结果文件夹复制到kitti数据集的training目录,文件夹命名pred

数据组织结构如下:(注意,这里的training里面是全部7481张图,不然会报错没有000000.txt)

kitti
    object
        testing
            calib
            image_2
            velodyne
        training
            calib
            image_2
            label_2
            velodyne
            pred # 这个是需要自己复制过来的

 3.2 运行可视化源码kitti_object_vis

conda create -n kitti_vis python=3.7 # vtk does not support python 3.8
conda activate kitti_vis
git clone https://github.com/kuixu/kitti_object_vis 
pip install opencv-python pillow scipy matplotlib
conda install mayavi -c conda-forge

安装conda install mayavi -c conda-forge有warning,无需理会。

3.3 kitti数据集的object/目录,链接到data/目录下过去

cd kitti_object_vis/data
ln -s /home/way/PointRCNN/data/KITTI/object object

解决方法:删除原有object,重新link。

复现PointRcnn记录_第10张图片

3.4 运行

cd kitti_object_vis
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes
# 终端按回车键进行下一张图

并且,可视化程序中规定,pred文件夹中直接是.txt文件,中间不能有嵌套文件夹,即:

复现PointRcnn记录_第11张图片

python3 kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes -p

即可观察到真实值(绿色框)和预测值(红色框)的对比图
终端按回车即可切换下一张图

3.5 运行问题

解决:在源文件中加入代码。

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

anaconda后安装ROS运行:undefined symbol: PyCObject_Type

4 Tensorboard结果可视化

5 代码阅读

【代码阅读】PointRCNN网络可视化,代码详解

你可能感兴趣的:(三维点云,pytorch,深度学习,caffe)