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

news2024/11/26 10:39:11

本文介绍如何搭建3D目标检测框架,使用docker快速搭建MMDetection3D的开发环境,实现视觉3D目标检测、点云3D目标检测、多模态3D目标检测等等。

需要大家提前安装好docker,并且docker版本>= 19.03。

1、下载MMDetection3D源码

https://github.com/open-mmlab/mmdetection3d

 git clone https://github.com/open-mmlab/mmdetection3d.git

主要特性

  • 支持多模态/单模态的检测器

    支持多模态/单模态检测器,包括 MVXNet,VoteNet,PointPillars 等。

  • 支持户内/户外的数据集

    支持室内/室外的 3D 检测数据集,包括 ScanNet,SUNRGB-D,Waymo,nuScenes,Lyft,KITTI。对于 nuScenes 数据集,我们也支持 nuImages 数据集。

  • 与 2D 检测器的自然整合

    MMDetection 支持的 300+ 个模型,40+ 的论文算法,和相关模块都可以在此代码库中训练或使用。

模块组件

主干网络检测头特性
  • PointNet (CVPR'2017)
  • PointNet++ (NeurIPS'2017)
  • RegNet (CVPR'2020)
  • DGCNN (TOG'2019)
  • DLA (CVPR'2018)
  • MinkResNet (CVPR'2019)
  • MinkUNet (CVPR'2019)
  • Cylinder3D (CVPR'2021)
  • FreeAnchor (NeurIPS'2019)
  • Dynamic Voxelization (CoRL'2019)

算法模型

激光雷达 3D 目标检测相机 3D 目标检测多模态 3D 目标检测3D 语义分割
  • 室外
  • SECOND (Sensor'2018)
  • PointPillars (CVPR'2019)
  • SSN (ECCV'2020)
  • 3DSSD (CVPR'2020)
  • SA-SSD (CVPR'2020)
  • PointRCNN (CVPR'2019)
  • Part-A2 (TPAMI'2020)
  • CenterPoint (CVPR'2021)
  • PV-RCNN (CVPR'2020)
  • CenterFormer (ECCV'2022)
  • 室内
  • VoteNet (ICCV'2019)
  • H3DNet (ECCV'2020)
  • Group-Free-3D (ICCV'2021)
  • FCAF3D (ECCV'2022)
  • TR3D (ArXiv'2023)
  • 室外
  • ImVoxelNet (WACV'2022)
  • SMOKE (CVPRW'2020)
  • FCOS3D (ICCVW'2021)
  • PGD (CoRL'2021)
  • MonoFlex (CVPR'2021)
  • DETR3D (CoRL'2021)
  • PETR (ECCV'2022)
  • Indoor
  • ImVoxelNet (WACV'2022)
  • 室外
  • MVXNet (ICRA'2019)
  • BEVFusion (ICRA'2023)
  • 室内
  • ImVoteNet (CVPR'2020)
  • 室外
  • MinkUNet (CVPR'2019)
  • SPVCNN (ECCV'2020)
  • Cylinder3D (CVPR'2021)
  • TPVFormer (CVPR'2023)
  • 室内
  • PointNet++ (NeurIPS'2017)
  • PAConv (CVPR'2021)
  • DGCNN (TOG'2019)

2、获取MMDetection3D镜像

我们先看看mmdetection3d-main/docker/Dockerfile文件,用来构建docker镜像的

ARG PYTORCH="1.9.0"
ARG CUDA="11.1"
ARG CUDNN="8"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX" \
    TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \
    CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
    FORCE_CUDA="1"

# Avoid Public GPG key error
# https://github.com/NVIDIA/nvidia-docker/issues/1631
RUN rm /etc/apt/sources.list.d/cuda.list \
    && rm /etc/apt/sources.list.d/nvidia-ml.list \
    && apt-key del 7fa2af80 \
    && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub \
    && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub

# (Optional, use Mirror to speed up downloads)
# RUN sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.aliyun.com\/ubuntu\//g' /etc/apt/sources.list && \
#    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# Install the required packages
RUN apt-get update \
    && apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Install MMEngine, MMCV and MMDetection
RUN pip install openmim && \
    mim install "mmengine" "mmcv>=2.0.0rc4" "mmdet>=3.0.0"

# Install MMDetection3D
RUN conda clean --all \
    && git clone https://github.com/open-mmlab/mmdetection3d.git -b dev-1.x /mmdetection3d \
    && cd /mmdetection3d \
    && pip install --no-cache-dir -e .

WORKDIR /mmdetection3d

这里有ARG PYTORCH="1.9.0"、ARG CUDA="11.1"、ARG CUDNN="8"这些关键参数,可以根据需求修改

然后执行命令:docker build -t mmdetection3d docker/

拉取docker镜像会比较慢,如果大家也是这个版本的,可以放到网盘,分享给大家

等待构建完成:

用命令docker images查看镜像信息,能看到mmdetection3d镜像:

3、使用MMDetection3D镜像

打开镜像:方式一(常规模式--支持使用GPU)

docker run --gpus all -it mmdetection3d:latest  /bin/bash

打开镜像:方式二(增强模式--支持使用GPU、映射目录、设置内存)

docker run -i -t -v /home/liguopu/:/guopu:rw --gpus all --shm-size 16G mmdetection3d:latest  /bin/bash

平常进入了docker环境,然后创建或产生的文件,在退出docker环境后会“自动销毁”;或者想运行本地主机的某个程序,发现在docker环境中找不到。

我们可以通过映射目录的方式,把本地主机的某个目录,映射到docker环境中,这样产生的文件会保留在本地主机中。

通过-v 把本地主机目录 /home/liguopu/ 映射到docker环境中的/guopu 目录;其权限是rw,即能读能写。

默认分配很小的内参,在训练模型时不够用,可以通过参数设置:比如,我电脑有32G内参,想放16G到docker中使用,设置为 --shm-size 16G。
 

4、测试MMDetection3D开放环境

验证安装是否成功,在终端先输入python,然后输入以下代码打印版本号

import mmdet3d
print(mmdet3d.__version__)

效果如下:

测试一下模型推理

 我们需要下载配置文件和模型权重文件。

mim download mmdet3d --config pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car --dest .

下载将需要几秒钟或更长时间,这取决于的网络环境。

完成后会在当前文件夹中发现两个文件

  • pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py 
  • hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth

写一个代码如下:

from mmdet3d.apis import init_model, inference_detector

config_file = 'pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py'
checkpoint_file = 'hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth'
model = init_model(config_file, checkpoint_file)
output = inference_detector(model, 'demo/data/kitti/000008.bin')

print("inference_detector output:", output)
print("ok !!!")

能看到模型成功推理,并输出结果信息:

分享完成啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公司内部网段太多,管控混乱,该如何规范跨网文件传输交换?

在当今的信息化时代,文件传输交换是企业日常工作中不可或缺的一项功能。无论是内部员工之间,还是与外部合作伙伴之间,都需要频繁地进行文件的发送、接收、共享和协作。然而,由于企业内部网段的复杂性和多样性,以及数据…

【JAVA】项目部署

IDEA部署maven:https://www.cnblogs.com/ckfuture/p/15821541.html MySQL数据库安装:https://blog.csdn.net/SoloVersion/article/details/123760428 SQLyog安装: https://blog.csdn.net/qq_43543789/article/details/107997510 git安装&a…

数字孪生平台

数字孪生平台 开放架构的价值数字孪生体和信息物理系统的对比对于数字孪生体的开放架构特点数字孪生体参考架构主要分为两部分 平台生态是数字经济的典型特征,由于数字技术具有网络效应,通过自建或参与数字平台,已成为所有数字技术企业必然的…

低代码平台:顺应时代的选择

低/无代码的高速发展,属于软件市场的选择,相较于传统编写代码的开发方式,它们开发效率更高、投入成本更低、技术门槛也更低,未来更多软件应用将使用低/无代码技术完成,这也是趋势。 身为开发人员经常需要花费大量时间在…

Windows下配置Poetry教程

发生时间:2023.09.16,按照官网的教程,配置系统环境根本找不到路径,所以自己研究了一番。 1.官网入口 https://python-poetry.org/docs/#installing-with-the-official-installer,找到Windows的安装命令 ⇒ 未安装过…

【物联网】常见电子元器件(电阻、电容、电感、二极管、三极管)综合,详细分析原理及其应用

电子元器件是现代电子技术的基础,它们在各个领域中发挥着重要作用。从三极管到电容器、电阻器,这些常用元器件承担着放大、开关、滤波等关键任务。它们的特性和组合方式决定了电路的性能和功能。本文将介绍常用电子元器件的工作原理和应用场景&#xff0…

如何简化第三方和临时用户的安全访问

保护第三方访问安全的重要性 在当今相互关联的业务环境中,与供应商、承包商、合作伙伴和供应商等外部各方进行协作已成为常态。进行协作往往要授予第三方内部系统、网络或数据的访问权限。但是,每个接入点都可能成为 IT 管理员的潜在漏洞,而…

Kibana server is not ready yet

查看kibana日志 docker logs kibana 找到error 翻译一下其实就是说磁盘空间满了导致es的这个索引变成只读模式了。 可以先去查看一下 进入到es中,可以看到占用了96% 命令是 # 查看es的容器id docker ps docker exec -it 容器id /bin/bash #进入到es里之后运行…

关于Controller继承Controller的效果与切面触发测试

关于继承Controller测试 首先创建一个Controller RestController RequestMapping(value"ceshi") public class CeshiController {GetMapping(value "ceshi")public String ceshi() {return "测试";} }创建一个Controller继承上一个Controller…

全面掌握应用程序性能的利器:性能监控软件

在当今数字时代,应用程序性能对于企业的成功至关重要。为了确保应用程序在高负载和压力下能够正常运行,并提供优质的用户体验,性能监控软件成为企业必备的利器。本文将介绍性能监控软件的重要性以及它们如何帮助企业全面掌握应用程序性能。 性…

安防视频/视频汇聚平台EasyCVR使用onvif探测添加设备通道详细步骤来啦!

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

【数据结构】单值二叉树 相同的树 翻转二叉树(五)

目录 一,单值二叉树 题目详情: 解法:父子比较法 解题思路: 思路实现: 源代码: 二,相同的树 题目详情: 解法:比较法 解题思路: 思路实现&#xff1…

Visual Studio 2023年下载、安装教程、亲测有效

visual studio 2022(vs 2022)是由微软官方出品的最新版本的开发工具包系列产品。它是一个完整的开发工具集,可完美支持C#、C、Python、Visual Basic、Node.js、HTML、JavaScript等主流的编程语言,帮助程序员轻松地完成调试、探查和…

【C++模拟实现】map、set容器的模拟实现

【C模拟实现】map、set容器的模拟实现 目录 【C模拟实现】map、set容器的模拟实现map、set模拟实现的代码(insert部分)部分一:红黑树的迭代器以及红黑树部分二:对set进行封装部分三:对map进行封装 遇到的问题以及解决方…

如何在本地 Linux 主机上实现 Yearning SQL 审核平台的远程访问?

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…

快速了解Apipost

随着数字化转型的加速,API(应用程序接口)已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中,API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台,旨在解决这些问题&#xf…

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

【PyTorch 攻略(5/7)】训练和模型

一、说明 训练模型是一个迭代过程。每次迭代称为纪元。该模型对输出进行猜测,计算其猜测中的误差(损失),收集误差相对于其参数的导数,并使用梯度下降优化这些参数。 我们从这里加载前面的代码。 %matplotlib inl…

UML活动图

在UML中,活动图本质上就是流程图,它描述系统的活动、判定点和分支等,因此它对开发人员来说是一种重要工具。 活动图 活动是某件事情正在进行的状态,既可以是现实生活中正在进行的某一项工作,也可以是软件系统中某个类…

蓝牙核心规范(V5.4)10.3-BLE 入门笔记之BIS篇

BIS全称:广播同步流 A BIS(Broadcast Isochronous)流提供了在一个发射器(源)和多个接收器(汇)设备之间的广播等时通信。数据以链路层PDUs的形式进行传输,称为BIS数据PDU。控制信息以BIS控制PDUs的形式进行传输。LE-BIS(BIS)逻辑传输在整体数据传输架构中如下图所示。…