MMDetection3D使用学习(mmdet v1.1 rc)

这篇具有很好参考价值的文章主要介绍了MMDetection3D使用学习(mmdet v1.1 rc)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文所观看视频教程的mmdet3d版本为v1.0.0 rc5,而我使用的是v1.1.0 rc3。v1.0.0 rc5的一些实现可以参考我的另一篇博客基于MMDet3D的pointpillars和centernet推理(mmdet3d v1.0 rc)或者官方文档。本文会记录学习中遇到的问题。视频链接

MMDetection3D介绍及安装使用

支持点云、视觉、多模态检测算法,支持室内、室外场景的数据集MMDetection3D使用学习(mmdet v1.1 rc)
MMDetection3D目前有两个稳定的版本(总共有三个版本)

  • 2018-10 发布
  • 2022-02 v1.0 rc (统一的坐标系。重构过坐标系的1.0版本,也是目前master分支对应的版本,这个版本是基于原始架构的)
  • 2022-09 v1.1 rc (新架构,基于MMEngine和全新架构的)
    代码地址: http://github.com/open-mmlab/mmdetection3d/

MMDet3D的安装和依赖

MMDetection3D使用学习(mmdet v1.1 rc)
创建conda环境

conda create -n mmdet3d python=3.8
conda activate mmdet3d
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
或:pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

安装mim包管理工具

pip install openmim

安装mmdet3d有两种安装方式
①直接安装

mim install mmdet3d

②从源码安装

git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
mim install -e .

参考:https://mmdetection3d.readthedocs.io/zh_CN/latest/getting_started.html
我安装完成后的环境(mmdet3d v1.1环境):

mmcv       2.0.0      https://github.com/open-mmlab/mmcv
mmdet      3.0.0      https://github.com/open-mmlab/mmdetection
mmdet3d    1.1.0rc3   /home/qsz/mmdetection3d
mmengine   0.7.2      https://github.com/open-mmlab/mmengine

mmdet3d v1.0的环境:

mmcls           0.25.0     https://github.com/open-mmlab/mmclassification
mmcv            1.6.0      https://github.com/open-mmlab/mmcv
mmcv-full       1.6.0      https://github.com/open-mmlab/mmcv
mmdet           2.28.2     https://github.com/open-mmlab/mmdetection
mmdet3d         1.0.0rc6   /home/qsz/my_projects/openmmlab_mmdet3d/mmdetection3d-master
mmengine        0.7.2      https://github.com/open-mmlab/mmengine
mmsegmentation  0.30.0     http://github.com/open-mmlab/mmsegmentation

使用MMDet3D预训练模型在点云和图像数据上推理

second模型测试

参考:https://mmdetection3d.readthedocs.io/zh_CN/latest/demo.html
下载好预训练权重,我直接在mmdetection3d的文件夹下进行推理,运行

python demo/pcd_demo.py demo/data/kitti/000008.bin configs/second/second_hv_secfpn_8xb6-80e_kitti-3d-car.py checkpoints/hv_second_secfpn_6x8_80e_kitti-3d-car_20200620_230238-393f000c.pth

但是报错:

ModuleNotFoundError: No module named 'mmdet3d'

这是因为我把安装mmdet3d的文件夹mmdetection3d移动了位置,环境中就找不到了mmdet3d这个包,对移动后的mmdetection3d重新编译一下:

mim install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

还有需要注意的就是mmdet3d v1.1版本(main分支)相对于mmdet3d v1.1(master分支)很多文件的名字发生了改动,比如预训练模型、config中的配置文件以及demo中的bin文件。运行demo的时候要注意这些文件的名字。
在mmdet3d v1.0中运行完demo会保存成一个文件夹,而在mmdet3d v2.0中运行完demo会直接显示图像。如下:
MMDetection3D使用学习(mmdet v1.1 rc)
以上是在mmdet3d v1.1 的环境下运行demo跑出来的结果。
同样在mmdet3d v1.0rc下运行如下代码可进行demo测试:

python demo/pcd_demo.py demo/data/kitti/kitti_000008.bin configs/second/hv_second_secfpn_6x8_80e_kitti-3d-car.py checkpoints/hv_second_secfpn_6x8_80e_kitti-3d-car_20200620_230238-393f000c.pth

和mmdet3d v1,1相比只有文件名字不一样。

pointpillars 模型测试

同样也可以自己写一个demo程序,在mmdet3
d v 1.0的环境下,代码如下:

from mmdet3d.apis import init_model, inference_detector, show_result_meshlab

config_file = r'./configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py'
checkpoint_file = r'./checkpoints/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.pth'
model = init_model(config_file, checkpoint_file, device='cuda:0')

pcd = './demo/data/kitti/kitti_000008.bin'
result, data = inference_detector(model, pcd)

out_dir = './test_results'
show_result_meshlab(data, result, out_dir, show=True)

结果如下:
MMDetection3D使用学习(mmdet v1.1 rc)
视频教程是在mmdet3d v 1.0的环境下演示的,我在mmdet3d v 1.1环境下运行相似的程序没有跑通,可能是某些环境包的问题。
对于mmdet3d v1.1,不用自己定义的api进行测试的话,可以运行以下命令来对pointpillars进行测试:

python demo/pcd_demo.py demo/data/kitti/000008.bin configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py checkpoints/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.pth

测试结果如下:
MMDetection3D使用学习(mmdet v1.1 rc)

centerpoint模型测试

由于centerpoint只有nus数据集的模型,所以需要把bin文件改成nus的bin文件,提前下载好模型,运行以下代码:

python demo/pcd_demo.py /home/qsz/qsz_datasets/nuscenes/samples/LIDAR_TOP/n008-2018-08-01-15-16-36-0400__LIDAR_TOP__1533151603547590.pcd.bin configs/centerpoint/centerpoint_pillar02_second_secfpn_8xb4-cyclic-20e_nus-3d.py checkpoints/centerpoint_02pillar_second_secfpn_circlenms_4x8_cyclic_20e_nus_20220811_031844-191a3822.pth

测试结果:
MMDetection3D使用学习(mmdet v1.1 rc)

smoke图像3D检测

下载好预训练权重以后,在v1.0版本下运行以下代码:(v1.1版本的demo文件夹nus下没有json文件)

python demo/mono_det_demo.py demo/data/nuscenes/n015-2018-07-24-11-22-45+0800__CAM_BACK__1532402927637525.jpg demo/data/nuscenes/n015-2018-07-24-11-22-45+0800__CAM_BACK__1532402927637525_mono3d.coco.json configs/fcos3d/fcos3d_r101_caffe_fpn_gn-head_dcn_2x8_1x_nus-mono3d_finetune.py checkpoints/fcos3d_r101_caffe_fpn_gn-head_dcn_2x8_1x_nus-mono3d_20210715_235813-4bed5239.pth

运行结果如下:
MMDetection3D使用学习(mmdet v1.1 rc)
目前在v1.1版本上没有运行成功,可能是因为配置没有写好。回头用到再尝试一下。

KITTI数据集介绍以及MMDet3D坐标系规范(以下代码都是在v1.0的环境下运行的)

import numpy as np

# 读入点云数据(截取FOV90°内的点云)
points = np.fromfile("/home/qsz/qsz_datasets/kitti/training/velodyne_reduced/000008.bin", dtype=np.float32)
# points = np.fromfile("/home/qsz/my_projects/Lane_detection/2022-04-18-3-DONE/LIDAR/001650278870937.bin", dtype=np.int32)
print(points.shape)

pts = points.reshape(-1, 4)
print(pts.shape)

# 绘制BEV
from matplotlib import pyplot as plt
plt.figure(figsize=(12, 8))
plt.scatter(pts[:, 0], pts[:, 1], 0.5)
plt.axis('image')
plt.show()

# 基于Open3D绘制点云数据和标注框、坐标系转换
# 读入点云数据(截取FOV90°内的点云)
pts = np.fromfile("/home/qsz/my_projects/openmmlab_mmdet3d/mmdetection3d-master/demo/data/kitti/kitti_000008.bin", dtype=np.float32).reshape(-1, 4)
# 读入标注,每行的最后7个数字是标注框,为相机坐标系下的高、宽、长、X、Y、Z坐标、转角。
bbxs = np.loadtxt("/home/qsz/qsz_datasets/kitti/training/label_2/000008.txt", max_rows=6, usecols=range(8, 15)).reshape(-1, 7)
print(bbxs)

# 错误示范,坐标系没有转换,相机坐标系的Z轴在激光雷达坐标系中是天上
from mmdet3d.core.visualizer.show_result import show_result
show_result(pts, bbxs[:, [3, 4, 5, 0, 1, 2, 6]], None, '.', '3-show', show=True)

# 坐标系变换,XYZ调换顺序,相机和雷达前后方向27cm偏移
R_velo_to_cam = np.array([[0, -1, 0],
                          [0, 0, -1],
                          [1, 0, 0]])
coors = bbxs[:, 3:6] @ R_velo_to_cam[:, :3] + [0.27, 0, 0]

# MMDet3D的雷达坐标系中,右对应yaw = -90,前对应yaw=0。KITTI中,右对应yaw=0,前对应-90。因此,yaw_in_mmdet3d=-pi/2-yaw_in_kitti
yaw = -1.57 - bbxs[:, 6:7]

# 调用mmdet3d的API实现点云绘图
from mmdet3d.core.visualizer.show_result import show_result
show_result(pts, np.hstack((coors, bbxs[:, [2, 1, 0]], yaw)), None, '.', '3-show', show=True)

MMDET3D提供的可视化工具

python tools/misc/browse_dataset.py  configs/_base_/datasets/kitti-3d-3class.py --task det --output-dir tmp --online

使用MMDetection3D进行训练

本小节主要参考我的上一篇博客基于MMDet3D的pointpillars和centernet推理(mmdet3d v1.0 rc)和官方文档数据预处理、使用已有模型在标准数据集上进行推理和训练。下边做一些补充。
对模型进行测试。

bash ./tools/dist_test.sh configs/pointpillars/hv_pointpillars_fpn_sbn-all_4x8_2x_nus-3d.py checkpoints/hv_pointpillars_fpn_sbn-all_4x8_2x_nus-3d_20200620_230405-2fa62f3d.pth 1 --eval bbox

!!!写自己训练的config文件并进行训练,config文件如下:

_base_ = [
    'configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py'
]

data = dict(
    samples_pergpu=4,
    workers_per_gpu=1,
    persistent_workers=True,
    train=dict(dataset=dict(ann_file='data/kitti/kitti_infos_val.pkl'),)
    # test=dict(
    #     split='testing',
    #     ann_file='data/kitti/kitti_infos_test.pkl',
    # )
)

optimizer = dict(
    type='AdamW', lr=0.0001, betas=(0.95, 0.99), weight_decay=0.01)
lr_config = None
momentum_config = None

runner = dict(max_epochs=5)
checkpoints_config = dict(interval=5)
evaluation = dict(interval=5)
log_config = dict(interval=5)

load_from = './checkpoints/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.pth'

使用单个gpu进行训练:

python ./tools/train.py ./qsz_config.py

使用多gpu进行训练,其中3代表gpu数目:文章来源地址https://www.toymoban.com/news/detail-468156.html

bash ./tools/dist_train.sh ./qsz_config.py 3

到了这里,关于MMDetection3D使用学习(mmdet v1.1 rc)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • mmdetection3d nuScenes (持续更新)

    本文为博主原创文章,未经博主允许不得转载。 本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/124017716”。         Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在智能驾驶nuScenes数据集上运行。在算法

    2023年04月15日
    浏览(12)
  • win10 mmdetection3d环境搭建

    win10 mmdetection3d环境搭建

    官网:mmdetection3d/README_zh-CN.md at master · open-mmlab/mmdetection3d · GitHub 安装过程参照:win10 mmdetection3d 训练KITTI_树和猫的博客-CSDN博客_pointnet训练kitti 官网安装过程 3D目标检测框架综述-知乎中描述了当前3D目标检测的数据和模型状况,为了能将数据和评价标准等统一,介绍了4个比

    2023年04月18日
    浏览(10)
  • 【MMDetection3D】MVXNet踩坑笔记

    【MMDetection3D】MVXNet踩坑笔记

    原文 代码 MVXNet(CVPR2019) 最近许多关于3D target detection的工作都集中在设计能够使用点云数据的神经网络架构上。虽然这些方法表现出令人鼓舞的性能,但它们通常基于单一模态,无法利用其他模态(如摄像头和激光雷达)的信息。尽管一些方法融合了来自不同模式的数据,这些方

    2024年01月18日
    浏览(15)
  • 新版mmdetection3d将3D bbox绘制到图像

    新版mmdetection3d将3D bbox绘制到图像

    使用 python mmdet3d/utils/collect_env.py 收集环境信息 以前写过mmdetection3d中的可视化,但mmdetection3d更新后代码已经不适用了,正好我把我的工作全转移到新版mmdetection3d上来了,因此重新写了一下推理结果可视化。整体思路还是构建模型、构建数据、推理、绘制,下面分步讲解 我用

    2024年04月15日
    浏览(17)
  • mmdetection3d系列--(1)安装步骤(无坑版)

    mmdetection3d系列--(1)安装步骤(无坑版)

      最近在看一些基于点云3d目标检测的文章,需要复现甚至修改一些算法,就找到了mmlab开源的mmdetection3d目标检测框架,方便后续学习。     在安装的时候遇到一点坑,比如环境问题,安装完能跑demo但是不能跑训练测试问题等。在解决问题后还是完成了安装。在这里记录一

    2024年02月02日
    浏览(7)
  • MMDetection3D库中的一些模块介绍

    MMDetection3D库中的一些模块介绍

    本文目前仅包含2个体素编码器、2个中间编码器、1个主干网络、1个颈部网络和1个检测头。如果有机会,会继续补充更多模型。 若发现内容有误,欢迎指出。   MMDetection3D的点云数据一般会经历如下步骤/模块:   下面分别介绍每个部分的一些典型模型。   在介绍体素

    2023年04月17日
    浏览(10)
  • 3D目标检测框架 MMDetection3D环境搭建 docker篇

    3D目标检测框架 MMDetection3D环境搭建 docker篇

    本文介绍如何搭建3D目标检测框架,使用docker快速搭建MMDetection3D的开发环境,实现视觉3D目标检测、点云3D目标检测、多模态3D目标检测等等。 需要大家提前安装好docker,并且docker版本= 19.03。 1、下载MMDetection3D源码 https://github.com/open-mmlab/mmdetection3d  git clone https://github.com/ope

    2024年02月08日
    浏览(9)
  • mmdetection3d可视化多模态模型推理结果

    mmdetection3d可视化多模态模型推理结果

    参考文献: 带你玩转 3D 检测和分割 (三):有趣的可视化 - 知乎 (zhihu.com) Welcome to MMDetection3D’s documentation! — MMDetection3D 1.0.0rc4 文档 让我们看一下ChatGPT的回答[手动狗头]: mmdetection3D是基于PyTorch框架的3D目标检测工具包,它是mmdetection的3D扩展版本。它提供了一个灵活且高效的

    2024年02月16日
    浏览(11)
  • 零基础熟悉mmdetection3d数据提取、模型搭建过程

    零基础熟悉mmdetection3d数据提取、模型搭建过程

    本图文从介绍配置文件开始,逐步构建一个新的配置文件,并依次构建相关模型,最终使用一条点云数据简单走了一下处理流程 关于mmdetection3d的安装,参考官方文档安装 — MMDetection3D 1.0.0rc4 文档 1.1 mmdetection3d配置文件的组成 官方文档:教程 1: 学习配置文件 — MMDetection3D 1.

    2024年02月05日
    浏览(17)
  • 点云检测框投影到图像上(mmdetection3d)

    点云检测框投影到图像上(mmdetection3d)

    原模型检测时候只有点云的检测框,本文主要是将demo文件中的pcd_demo.py中的代码,将点云检测出的3d框投影到图像上面显示。   

    2024年02月13日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包