pointRCNN原理与复现

pointRCNN:

整体思路:https://zhuanlan.zhihu.com/p/71564244

原理:https://blog.csdn.net/taifengzikai/article/details/96840993

https://zhuanlan.zhihu.com/p/97716398

原理涉及知识:

图像中的掩模mask是什么: https://blog.csdn.net/bitcarmanlee/article/details/79132017

弱监督学习: https://zhuanlan.zhihu.com/p/81404885

监督学习的训练数据由两部分组成:描述事件/对象的特征向量(x),以及 groud-truth 的标签(y)。

而非监督学习的训练数据只有一个部分:描述事件/对象的特征向量(x),但是没有标签(y)。

分类问题和回归问题是监督学习的代表,聚类学习是非监督学习的代表。在分类中,标签对应于训练样本属于哪一类。在回归中,标签对应于该示例的真实值响应。

由于数据标注过程的成本太高,很多任务很难获得如全部真值标签这样的强监督信息。而无监督学习由于学习过程太过困难,它的发展缓慢。因此,希望机器学习技术能够在弱监督状态下工作。

弱监督学习可以分为三种典型的类型,不完全监督(Incomplete supervision),不确切监督(Inexact supervision),不精确监督(Inaccurate supervision)。

不完全监督是指,训练数据中只有一部分数据被给了标签,有一些数据是没有标签的。

不确切监督是指,训练数据只给出了粗粒度标签。我们可以把输入想象成一个包,这个包里面有一些示例,我们只知道这个包的标签,Y或N,但是我们不知道每个示例的标签。

不精确监督是指,给出的标签不总是正确的,比如本来应该是Y的标签被错误标记成了N。

复现:

建虚拟环境: conda create -n pointRCNN python=3.6

进入虚拟环境: conda activate pointRCNN

下载项目代码: git clone --recursive https://github.com/sshaoshuai/PointRCNN.git

会将项目下载到命令行所在目录下,我的在桌面上.

下载相关库:conda install easydict

conda install tqdm

conda install tensorboardX

conda install scipy还有fireskimage报超时错误,解决:https://blog.csdn.net/weixin_43051346/article/details/103823493。),numba,yaml(conda install pyyaml),

安装pytorch1.0.0:conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch

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

问题:系统cuda对应pytorch版本与要求版本不一致,对应的高版本〉1.4,项目要求低版本1.0.0。

解决:不用管系统,conda不同虚拟环境会自动安装对应版本cuda。

conda list查看已安装包

安装一些库:sh build_and_install.sh

出警告如下:未理会。

数据集下载:已有师兄下载好的KITTI,放到自己项目指定目录下:/media/omnisky/31c564ef-57f3-4fdf-9777-faea0d03db40/yuanshuai/Kitti/object

将下载的预训练模型PointRCNN.fph文件放到路径:/home/omnisky/PointRCNN/tools

运行下面命令来评估预训练模型:

python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 1 --eval_mode rcnn --set RPN.LOC_XZ_FINE False

训练:

① 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 --mgpus

(我用了多GPU训练)查看gpu静态使用情况:nvidia-smi

出错:

 

未解决,猜测是数据集plane文本文件最后有换行.反正最后没解决.

我直接将libdatasetskitti_rcnn_dataset.py文件里的279~282行注释掉了,不让他调用数据增强函数apply_gt_aug_to_one_scene(。。。。)。反正plane数据集也是可选的。

训练结果如下:

 

查看gpu静态使用情况:nvidia-smi

使用固定RPN网络训练RCNN网络以使用在线GT增强:CUDA_VISIBLE_DEVICES=1,2,3 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 –mgpus

我只训练了10次.

结果可视化https://blog.csdn.net/tiatiatiatia/article/details/97765165

安装opencv-python时出错,解决:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn opencv-python

安装库conda install mayavi -c conda-forge出错:CondaError: Downloaded bytes did not match Content-Length

解决:conda config --set remote_read_timeout_secs 600.0

进入目录:cd kitti_object_vis

运行可视化:python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes

报错:Traceback (most recent call last):

  File "kitti_object.py", line 11, in <module>

    import cv2

  File "/home/omnisky/anaconda3/lib/python3.7/site-packages/cv2/__init__.py", line 5, in <module>

    from .cv2 import *

ImportError: /home/omnisky/anaconda3/bin/../lib/libgio-2.0.so.0: undefined symbol: g_build_filename_valist

???解决:未处理就又成功了。

结果:

原文地址:https://www.cnblogs.com/xjxy/p/13619128.html