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.pkl

3.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. 【我的第一个目标检测课题】1、课题介绍及环境配置(Windows+Keras+GPU)

    我的第一篇CSDN博客来了. 新手驾到,多多指教. 2020.12.28晚记 写在前面 今天验收完图像处理课程的结课课题--建筑材料识别课题了.晚上决定趁热打铁,记录一下完成这次课题的全过程,还有一点 ...

  2. 无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现...

    参加 2018 AI开发者大会,请点击 ↑↑↑ 作者:申泽邦(Adam Shan),兰州大学在读硕士研究生,主要研究方向无人驾驶,深度学习:兰大未来计算研究院无人车团队负责人,自动驾驶全栈工程师. 近 ...

  3. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

  4. 如何提高3D点云目标检测的难例精度?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇将注意力机制应用在点云目标检测中的文章<TANet: Robust 3D O ...

  5. 一文览尽LiDAR点云目标检测方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 转载于 :计算机视觉之路,作者:山涧一壶酒 / 导读 / 自动驾驶中的激光雷达点云如何做特征表达,将基 ...

  6. 目标检测tricks(基于detectron2)

    目标检测tricks(基于detectron2) 正确尝试 裁剪 由于目标相对于整张图片来说过小,所以对数据进行裁剪(除了裁剪尺寸还需要关注重叠尺寸,重叠尺寸稍微大一些,尽量保持每个目标有完整的存在, ...

  7. 目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉

    目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉 滑动窗口检测器 自从 AlexNet 获得 ILSVRC 2012 挑战赛冠军后,用 CNN 进行分类成为主流.一种用于目标检测 ...

  8. 完整目标检测项目流程——从使用LabelImg标注到使用YOLOv5训练测试

    完整目标检测项目流程--从使用LabelImg标注到使用YOLOv5训练测试 大家好呀,虽然前面已经有两篇,分别使用Faster RCNN和YOLOv3进行目标检测的项目了,但是!相信大家应该也和我一 ...

  9. 基于RedHat6.5的Greenplum环境配置

    基于RedHat6.5的Greenplum环境配置 安装Greenplum的时候遇到了很多坑,在此记录下 欢迎园友补充问题,共同研究解决! 安装说明 1.环境说明 操作系统:Red hat 6.5 6 ...

最新文章

  1. linux扩容家目录,linux 根目录扩容
  2. 6.Spring Security Session 管理
  3. 如何获取Vim中所有已安装颜色方案的列表?
  4. 博客统计:腾讯分析这些数据哪儿来的?
  5. 运用高斯核模型进行最小二乘回归_比特币价格与时间存在关系?一文读懂比特币价值的对数增长模型...
  6. 八年溯源,如何巧搭区块链
  7. 二元置信椭圆r语言_医学统计与R语言:圆形树状图(circular dendrogram)
  8. Python is 和 == 区别 - Python零基础入门教程
  9. NoSQL架构实践(三)——以NoSQL为缓存
  10. 2018第一场多校 -补题
  11. 话唠黄金机器人_用了接吻教学机器人以后......哈哈哈哈不能我一个人瞎!
  12. jQuery插件开发全解析(转)
  13. [Teamcenter 2007 开发实战] 获取错误或提示信息
  14. 美国特勤局发布十大网络通缉犯名单
  15. Finding all unique triplets that sums to zero[部分转载]
  16. SCU 4487 king's trouble I
  17. python 查询oracle数据库返回具体字段名
  18. 神经网络模型(.pth)能做些什么(使用心得)
  19. PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
  20. 利用adb 命令回到手机端某个app的页面

热门文章

  1. 蓝桥杯python第十三届国赛5月29日中高年组 围圈数数 数到几就出局 要想全剩男生 男生应该坐在哪
  2. JavaScript的关键字var、let、const三者的区别
  3. LeetCode 39:组合总和(Javascript 解答)
  4. DNS分离解析 RAID磁盘阵列 进程管理 系统日志分析
  5. 深入理解深度学习——预训练模型
  6. android实时识别,Android-中国象棋-实时识别-实时AI
  7. docker-compose方式部署php项目
  8. TACOTRON-端到端的语音合成模型
  9. 百度地图添加自定义边界值
  10. 构建VisualStudio2019+OpenCV4.3的C++ windows编译环境