点云目标检测BRNET || 1. 基于MMDetection的BRNet工程环境配置与测试
1. BRNET 的环境配置
工程链接:https://github.com/cheng052/BRNet
改工程是基于MMDetection3D的框架下实现的,所以在配置环境时,需要先安装MMDetection3D相关的内容。
先明确BRnet 使用 MMDetection3D的版本,
配置环境的教程链接:https://github.com/cheng052/BRNet/blob/master/docs/getting_started.md
链接下有详细的 Installation说明。安装的方式如下:
- 1. 使用anoconda安装虚拟环境
conda create -n brnet_env python=3.7 -y conda activate brnet_env- 2. 安装pytorch和torchvision,这里选择的版本如下:
conda install pytorch==1.5.0 cudatoolkit=10.2 torchvision==0.6.0 -c pytorch 这里需要注意: 1. 可以将安装命令中的 "-c pytorch"去掉,安装时使用的源不一样,安装速度会变快。但自己在本地安装时,去掉"-c pytorch"成功安装了gpu版本,但在服务器上安装的是cpu版本。这里注意一下 2. 该工程会要求 系统环境中安装并使用的cuda版本 与虚拟环境中安装的cudatoolkit的版本相一致。同时与pytorch版本是兼容的。 在工程编译时,会使用到cuda的编译器nvcc,单纯的安装cudatoolkit(无对应的nvcc)是不行的,所以用的是系统环境中的nvcc。- 3. 安装MMCV
官方提供的命令如下: pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html- 4. 安装 MMDetection
安装命令:pip install mmdet==2.11.0 官方提供的命令如下,但不推荐: pip install git+https://github.com/open-mmlab/mmdetection.git 这样安装的版本不符合版本要求,也可以使用源码编译合适的版本 git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -r requirements/build.txt pip install -v -e . # or "python setup.py develop"- 5. 安装 MMDetection3D
这里需要注意一下,对于原生的MMDetection3D的安装和编译,是去MMDetection3D官网上下载源码,然后 cd mmdetection3d pip install -v -e . # or "python setup.py develop"对于 BRNET工程,不需要安装官方的MMDetection3D。而是将 BRNet工程下载下来,在工程根目录运行 pip install -v -e . # or "python setup.py develop" 我们可以发现MMDetection3D的源码工程和BRNet工程,内部文件结构是相似的。其实BRNet就是按照MMDetection3D的源码格式实现的。所以这里是在BRNet的工程内,进行编译,将该工程安装到当前使用的虚拟环境中。也就是说,一个虚拟环境一个BRNet工程。 因此需要注意的是,如果将该工程拷贝一份,在拷贝分的工程里修改代码运行,这是无效的。如果想同时修改两个版本的BRNet,并独立运行应该怎么做呢? 1. 重新创建虚拟环境,按照如上流程重新安装一遍,在一个新的brnet工程中 2. 将虚拟环境 brnet_env 拷贝一份并重新命名如 brnet_env2 并激活,获取新的brnet工程 命名为brnet2,并在目录下运行 python setup.py develop,将brnet2安装到brnet_env2中,就可独立使用。 这里需要注意的是,拷贝的虚拟环境中,pip无法使用,需要安装环境,使用conda install即可。
2. 工程效果测试
在工程根目录下运行
CUDA_VISIBLE_DEVICES=0 python demo/pcd_demo.py demo/sunrgbd_000094.bin demo/brnet_8x1_sunrgbd-3d-10class.py checkpoints/brnet_8x1_sunrgbd-3d-10class_trained.pth 运行测试结果,为了看起来更客观,展示的时候将原点云删去了部分,结果如下
3. 训练数据的准备
该工程中使用了两种3D数据集进行训练:SUNRGBD、SCANNET
3.1 SUNRGBD 数据集的准备
1. 在【Index of /data】中,下载 SUNRGBD v2 数据集。然后在brnet工程中的【./data/sunrgbd/】路径下创建文件夹【OFFICIAL_SUNRGBD】,将下载的数据 SUNRGBD.zip、SUNRGBDMeta2DBB_v2.mat、SUNRGBDMeta3DBB_v2.mat 和 SUNRGBDtoolbox.zip 移动到 OFFICIAL_SUNRGBD 文件夹,并解压zip文件2. 进入文件夹【matlab】,运行脚本来提取点云和标注信息 matlab -nosplash -nodesktop -r 'extract_split;quit;' matlab -nosplash -nodesktop -r 'extract_rgbd_data_v2;quit;' matlab -nosplash -nodesktop -r 'extract_rgbd_data_v1;quit;' 3. 回到工程根路径,运行脚本来生成训练的数据 python tools/create_data.py sunrgbd --root-path ./data/sunrgbd --out-dir ./data/sunrgbd --extra-tag sunrgbd 预处理后的目录结构如下: ------------------------------------ sunrgbd ├── README.md ├── matlab │ ├── extract_rgbd_data_v1.m │ ├── extract_rgbd_data_v2.m │ ├── extract_split.m ├── OFFICIAL_SUNRGBD │ ├── SUNRGBD │ ├── SUNRGBDMeta2DBB_v2.mat │ ├── SUNRGBDMeta3DBB_v2.mat │ ├── SUNRGBDtoolbox ├── sunrgbd_trainval │ ├── calib │ ├── image │ ├── label_v1 │ ├── train_data_idx.txt │ ├── depth │ ├── label │ ├── seg_label │ ├── val_data_idx.txt ├── points ├── sunrgbd_infos_train.pkl ├── sunrgbd_infos_val.pkl3.2 SCANNET的数据预处理
1. 在官方github链接上【GitHub - ScanNet/ScanNet】,介绍了scannet数据集以及数据集的下载方式。然后将下载的文件夹【scans】链接或移动到brnet工程中的【./data/scannet/】路径下2. 在该路径下,运行脚本来提取点云和相应的标注信息 python batch_load_scannet_data.py3. 回到根目录,运行脚本生成训练数据 python tools/create_data.py scannet --root-path ./data/scannet --out-dir ./data/scannet --extra-tag scannet预处理后的目录结构如下: ------------------------------------ scannet ├── scannet_utils.py ├── batch_load_scannet_data.py ├── load_scannet_data.py ├── scannet_utils.py ├── README.md ├── scans ├── scannet_train_instance_data ├── points │ ├── xxxxx.bin ├── instance_mask │ ├── xxxxx.bin ├── semantic_mask │ ├── xxxxx.bin ├── scannet_infos_train.pkl ├── scannet_infos_val.pkl
4. 神经网络的训练
1. scannet数据集的训练 CUDA_VISIBLE_DEVICES=0 python tools/train.py configs/brnet/brnet_8x1_scannet-3d-18class.py --seed 422. SUN RGB-D数据集的训练 CUDA_VISIBLE_DEVICES=0 python tools/train.py configs/brnet/brnet_8x1_sunrgbd-3d-10class.py --seed 42个人训练了SUNRGBD数据集,训练的结果指标与工程提供的指标基本一致。说明该论文是篇质量ok的论文,值得学习
点云目标检测BRNET || 1. 基于MMDetection的BRNet工程环境配置与测试相关推荐
- 【我的第一个目标检测课题】1、课题介绍及环境配置(Windows+Keras+GPU)
我的第一篇CSDN博客来了. 新手驾到,多多指教. 2020.12.28晚记 写在前面 今天验收完图像处理课程的结课课题--建筑材料识别课题了.晚上决定趁热打铁,记录一下完成这次课题的全过程,还有一点 ...
- 无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现...
参加 2018 AI开发者大会,请点击 ↑↑↑ 作者:申泽邦(Adam Shan),兰州大学在读硕士研究生,主要研究方向无人驾驶,深度学习:兰大未来计算研究院无人车团队负责人,自动驾驶全栈工程师. 近 ...
- 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现
无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...
- 如何提高3D点云目标检测的难例精度?
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇将注意力机制应用在点云目标检测中的文章<TANet: Robust 3D O ...
- 一文览尽LiDAR点云目标检测方法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 转载于 :计算机视觉之路,作者:山涧一壶酒 / 导读 / 自动驾驶中的激光雷达点云如何做特征表达,将基 ...
- 目标检测tricks(基于detectron2)
目标检测tricks(基于detectron2) 正确尝试 裁剪 由于目标相对于整张图片来说过小,所以对数据进行裁剪(除了裁剪尺寸还需要关注重叠尺寸,重叠尺寸稍微大一些,尽量保持每个目标有完整的存在, ...
- 目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉
目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉 滑动窗口检测器 自从 AlexNet 获得 ILSVRC 2012 挑战赛冠军后,用 CNN 进行分类成为主流.一种用于目标检测 ...
- 完整目标检测项目流程——从使用LabelImg标注到使用YOLOv5训练测试
完整目标检测项目流程--从使用LabelImg标注到使用YOLOv5训练测试 大家好呀,虽然前面已经有两篇,分别使用Faster RCNN和YOLOv3进行目标检测的项目了,但是!相信大家应该也和我一 ...
- 基于RedHat6.5的Greenplum环境配置
基于RedHat6.5的Greenplum环境配置 安装Greenplum的时候遇到了很多坑,在此记录下 欢迎园友补充问题,共同研究解决! 安装说明 1.环境说明 操作系统:Red hat 6.5 6 ...
最新文章
- linux扩容家目录,linux 根目录扩容
- 6.Spring Security Session 管理
- 如何获取Vim中所有已安装颜色方案的列表?
- 博客统计:腾讯分析这些数据哪儿来的?
- 运用高斯核模型进行最小二乘回归_比特币价格与时间存在关系?一文读懂比特币价值的对数增长模型...
- 八年溯源,如何巧搭区块链
- 二元置信椭圆r语言_医学统计与R语言:圆形树状图(circular dendrogram)
- Python is 和 == 区别 - Python零基础入门教程
- NoSQL架构实践(三)——以NoSQL为缓存
- 2018第一场多校 -补题
- 话唠黄金机器人_用了接吻教学机器人以后......哈哈哈哈不能我一个人瞎!
- jQuery插件开发全解析(转)
- [Teamcenter 2007 开发实战] 获取错误或提示信息
- 美国特勤局发布十大网络通缉犯名单
- Finding all unique triplets that sums to zero[部分转载]
- SCU 4487 king's trouble I
- python 查询oracle数据库返回具体字段名
- 神经网络模型(.pth)能做些什么(使用心得)
- PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
- 利用adb 命令回到手机端某个app的页面
热门文章
- 蓝桥杯python第十三届国赛5月29日中高年组 围圈数数 数到几就出局 要想全剩男生 男生应该坐在哪
- JavaScript的关键字var、let、const三者的区别
- LeetCode 39:组合总和(Javascript 解答)
- DNS分离解析 RAID磁盘阵列 进程管理 系统日志分析
- 深入理解深度学习——预训练模型
- android实时识别,Android-中国象棋-实时识别-实时AI
- docker-compose方式部署php项目
- TACOTRON-端到端的语音合成模型
- 百度地图添加自定义边界值
- 构建VisualStudio2019+OpenCV4.3的C++ windows编译环境