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/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}-develENV 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_detectorconfig_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.mzph.cn/news/82359.shtml

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

相关文章

《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

一、环境信息 操作系统:Centos7.6.1810 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 如下图所示: 注意:升级后由于加密算法的区别,低版本的SSH工具可能无法连接,建议改用Xshell7或SecureCRT9.0以上版本。 二、注意事项 1、检…

Centos安装显卡

1、安装基础环境 yum -y install epel-release yum -y install gcc kernel-devel kernel-headers 2.对应内核版本 yum info kernel-devel kernel-headers Cat /proc/version 3、yum安装版本不对应。则去官网手动下载 离线安装对应的rpm: https://pkgs.org/dow…

如何代码降重

目录 一、使用的相关工具二、冗余代码的分类和压缩策略2.1 无用代码2.2 重复代码2.3 相似代码 三、长久治理机制3.1 git-hooks 一、使用的相关工具 以下工具都有各自详细说明的文档。除非有必要,下文不再对其相关使用作详细说明。 仓库代码查重工具:http…

Python(八十七)函数的定义与调用

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

九芯电子丨语音智能风扇,助您畅享智慧生活

回忆童年时期的传统机械风扇,那“古老”的扇叶连摆动看起来是那么吃力。在一个闷热的夏夜,风扇的噪音往往令人印象深刻。但在今天,静音家用风扇已取代了传统的机械风扇。与此同时,随着智能化的发展,智能家居已逐渐成为…

[计算机入门] 电源选项设置

3.10 电源选项设置 有时候我们的电脑一段时间没有用,会自己关掉屏幕或者直接睡眠,这是电源选项没有设置好导致的。 1、打开控制面板,打开其中的电源选项 2、点击左侧上方的选择关闭显示器的时间 3、进入到编辑计划设置界面,在…

大数据学习1.1-Centos8网络配置

1.查看虚拟网卡 2.配置网络信息 打勾处取消 记住箭头的数字 3.修改 网络连接 4.进入虚拟网络 5.进入属性 6.修改IPv4 5.将iIP和DNS进行修改 6.配置网络信息-进入修改网络配置文件 # 进入root用户 su root # 进入网络配置文件 cd /etc/sysconfig/network-scripts/ # 修改网络配…

thrift的简单使用

写在前面 本文一起看下一种由facebook出品的rpc框架thrift。 源码 。 1:开发步骤 1:编写thrift idl文件 2:根据thrift idl文件生成java模板代码 3:继承模板代码的*.Iface接口给出server的具体服务实现 4:使用模板的HelloWorldSe…

综合管廊安全监测,助力市政管廊智能化管理

综合管廊是一种集管线维护、建设、管理于一体的地下综合通道,可以将电力、通讯、燃气、供热、供水等工程管线集于一体,综合管廊对于城市建设具有重要意义,可以防止管线破裂,杜绝反复开挖路面,有效缓解交通拥堵&#xf…

散列查找—

1.除数取余法 2.直接定址法 3.平方取中法 处理冲突的方法 1.开放定址法 查找效率分析 2.平方探测法 3.伪随机序列法 4.再散列法

三步实现Mybatis(Mybatis-Plus)多数据源配置

前言 要实现多数据源可以采用dynamic-datasource或者mybatis-mate,本文就以dynamic-datasource为例 dynamic-datasource简介 springboot 快速集成多数据源的启动器 使用文档(opens new window) 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主…

基于Python和mysql开发的看图猜成语微信小程序(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的看图猜成语微信小程序,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都…

netty之ByteBuf

Java NIO 提供了 ByteBuffer 作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。ByteBuf是对java ByteBuffer的封装。 两个索引 ByteBuf有两个重要的索引,readerIndex和writeIndex。一个用于读取一个用于写入。这两个值初始值都…

adb操作及常用命令

问题:no devices/emulators found:adb devices 没有连接的设备 解决方案: 大概率是因为usb调试功能没有打开,可以查看手机设备是否开启usb调试功能 Android若未开启,可通过设置-关于手机,连续点击版本号7…

小程序自定义导航栏

小程序自定义导航栏🐤🐤 js data: {statusBarHeight: wx.getSystemInfoSync().statusBarHeight, // 状态栏高度navBarHeight: 44, // 导航栏高度},getSystemInfo() {//获取当前设备信息wx.getSystemInfo({success: res > {// 获取胶囊按钮信息let men…

Linux下的Docker安装,以Ubuntu为例

Docker是一种流行的容器化平台,它能够简化应用程序的部署和管理。 Docker安装 1、检查卸载老版本Docker(为保证安装正确,尽量在安装前先进行一次卸载) apt-get remove docker docker-engine docker.io containerd runc 2、Dock…

【LeetCode热题100】--15.三数之和

15.三数之和 注意:最后答案中不能包含重复的三元组 使用排序双指针 可以使用三重循环枚举三元组,但是需要哈希表进行去重操作,得到不包含重复三元组的最终答案,消耗量大量的时间和空间 对于不重复的本质,保持三重循环…

malloc是如何实现内存分配的?

文章目录 前言一、malloc实现原理概括?二、brk() 函数与mmap()函数三、mmap实现原理普通读写与mmap对比mmap内存映射实现过程mmap 的适用场景 前言 在C和C中,malloc函数是用于动态分配内存的常用函数。本文将深入探究malloc函数的内存分配实现机制&…

javafx学习记录

1.布局 2.选择重写或实现方法(select methods to override/implements) ctrl o 3.javafx有init方法,start方法,stop方法 4.定义一个按钮,使用系统默认浏览器访问网站 5.使窗口的关闭栏,缩小扩屏栏,代码是倒数第二行 6.设置模态窗口,默认关闭模态的 下…

9.18号作业

完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…