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
#还有fire,skimage(报超时错误,解决: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文本文件最后有换行.反正最后没解决.
我直接将lib\datasets\kitti_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
???解决:未.。反正又不报错了。
结果: