点云目标检测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.pkl

3.2 SCANNET的数据预处理

1. 在官方github链接上【GitHub - ScanNet/ScanNet】,介绍了scannet数据集以及数据集的下载方式。然后将下载的文件夹【scans】链接或移动到brnet工程中的【./data/scannet/】路径下

2. 在该路径下,运行脚本来提取点云和相应的标注信息
python batch_load_scannet_data.py

3. 回到根目录,运行脚本生成训练数据
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 42

2. SUN RGB-D数据集的训练
CUDA_VISIBLE_DEVICES=0 python tools/train.py configs/brnet/brnet_8x1_sunrgbd-3d-10class.py --seed 42

个人训练了SUNRGBD数据集,训练的结果指标与工程提供的指标基本一致。说明该论文是篇质量ok的论文,值得学习

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值