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.hqwc.cn/news/109763.html

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

相关文章

spring boot 整合多数据源

多数据源产生的场景 一般情况下,不会有多数据源这样的场景出现,但老项目或者特殊需求的项目,可能会有这样的场景 同一个应用需要访问两个数据库不用数据库中间件的读写分离 注入数据源选择的时机 声明两个数据源实例,在getConnect…

【多线程】CAS 详解

CAS 详解 一. 什么是 CAS二. CAS 的应用1. 实现原子类2. 实现自旋锁 三. CAS 的 ABA 问题四. 相关面试题 一. 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“一个 CAS 涉及到以下操作: 我们假设内存中的原数据 V,旧的预期值…

pytorch生成CAM热力图-单张图像

利用ImageNet预训练模型生成CAM热力图-单张图像 一、环境搭建二、主要代码三、结果展示 代码和图片等资源均来源于哔哩哔哩up主:同济子豪兄 讲解视频:CAM可解释性分析-算法讲解 一、环境搭建 1,安装所需的包 pip install numpy pandas mat…

干净优雅的做iOS应用内全局交互屏蔽

本文字数:4930字 预计阅读时间:28分钟 01 交互屏蔽的需求 很多应用开发者都会遇到这样一个需求,当程序需要处理某个敏感的核心任务,或者执行某些动画时,需要杜绝一切外部干扰,优先保证任务的完成&#xff0…

thinkphp:查询本周中每天中日期的数据,查询今年中每个月的数据,查询近五年每年的总数据

一、查询本周中每天中日期的数据 结果: 以今天2023-09-14为例,这一周为2023-09-11~2023-09-07 代码 后端thinkphp: //查询本周每天的的总金额数 //获取本周的起始日期和结束日期 $weekStart date(Y-m-d, strtotime(this week Monday)); $weekEnd …

centos 下 Makefile 独立模块编译ko

1、安装编译内核环境包 编译需要用到kernel 源码,centos 下需先安装 kernel-devel 包,要下与自己kernel 对应版本 yum install kernel-devel 2、首先从内核或自己写的模块,发到编译环境中 注:就像我自己拷贝一个 bcache 驱动的目…

msvcp120.dll怎么修复?msvcp120.dll丢失的解决方法

在当今这个信息化的时代,电脑已经成为我们生活和工作中不可或缺的一部分。然而,随着电脑技术的不断发展,我们也会遇到各种各样的问题。其中,msvcp120.dll丢失是一个常见的问题。一、msvcp120.dll 文件介绍 1 msvcp120.dll 文件的定…

红外成像技术

针对GI S设备红外检测目前未被大众认可的原因: 1 、 目前对GI S带电检测的意义认识不够, 许多单位认为GI S测温发现不了什么, 对其测温仅仅检测接头。 2、 GI S外壳温度异常的原因多种, 出现外壳温度异常大家不会分析,…

数据科学的文本技术 Text Technology(IR信息检索、搜索引擎)

一、文章摘要 1. 内容 * Introduction to IR and text processing, system components * Zipf, Heaps, and other text laws * Pre-processing: tokenization, normalisation, stemming, stopping. * Indexing: inverted index, boolean and proximity search * Evaluation m…

物联网行业案例 - Splashtop 助力成都谷帝科技有限公司远程维护安卓设备

成都谷帝科技有限公司专注于提供针对特定行业需求的全面物联网软硬件解决方案。其产品系列包括智慧路灯系统、智能门禁、智能柜控、智慧体育步道、农业灌溉、工业焙烧系统、水质在线检测系统等。 客户需求 成都谷帝科技有限公司提供物联网软硬件解决方案,还需要对…

伦敦银时走势与获利机会

交易时间灵活、资金杠杆充沛是伦敦银交易的主要优势,投资者应该充分利用这个品种的制度优势,结合自己个人的作息时间,在工作、投资与生活三者之间取得平衡的前提下,借助国际白银市场的波动,通过交易逐步实现自己的财富…

(21)多线程实例应用:双色球(6红+1蓝)

一、需求 1.双色球: 投注号码由6个红色球号码和1个蓝色球号码组成。 2.红色球号码从01--33中选择,红色球不能重复。 3.蓝色球号码从01--16中选择。 4.最终结果7个号码:61;即33选6(红) 16选1(蓝) 5.产品: …