IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【AI框架】MMDetection3D 使用指南 -> 正文阅读

[人工智能]【AI框架】MMDetection3D 使用指南

MMDetection3D 是一个基于 PyTorch目标检测开源工具箱, 下一代面向3D检测的平台
对安装 MMDetection3D有问题的同学可以看:【星光02】MMDetection3D 目标检测框架的 Docker 环境制作和改良

?本文结合官方文档,梳理了基于 mmdet3d 开发人工智能模型的基本流程,整理相关的代码和小工具。如遇任何问题,可以查阅官方文档,MMDetection3D 的官方文档还是写得很好的(就是有一些多模态的代码跑不通,本文会注释部分问题命令)

一、数据预处理

官方对数据集预处理的文档:3D 目标检测 KITTI 数据集,流程如下:

解压所有 Kitti 数据集,并将文件按如下方式组织:

mmdetection3d
├── data
|   ├── kitti
|   |   ├── ImageSets
|   |   ├── testing
|   │   │   ├── calib
|   │   │   ├── image_2
|   │   │   ├── velodyne
|   |   ├── training
|   │   │   ├── calib
|   │   │   ├── image_2
|   │   │   ├── velodyne
|   │   │   ├── label_2

执行

mkdir ./data/kitti/ && mkdir ./data/kitti/ImageSets

# 下载数据划分文件
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/test.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/train.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/train.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/val.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/val.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/trainval.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/trainval.txt

python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti

二、测试模型

# 单块显卡测试
python 
    tools/test.py 
        ${CONFIG_FILE} 
        ${CHECKPOINT_FILE} 
        [--out ${RESULT_FILE}] 
        [--eval ${EVAL_METRICS}] 
        [--show]
        [--show-dir ${SHOW_DIR}] 

# 多块显卡测试
./tools/dist_test.sh 
    ${CONFIG_FILE} 
    ${CHECKPOINT_FILE} 
    ${GPU_NUM} 
    [--out ${RESULT_FILE}] 
    [--eval ${EVAL_METRICS}]

可选参数:

  • RESULT_FILE:输出结果(pickle 格式)的文件名,如果未指定,结果不会被保存。
  • EVAL_METRICS:在结果上评测的项,不同的数据集有不同的合法值。具体来说,我们默认对不同的数据集都使用各自的官方度量方法进行评测,所以对 nuScenes、Lyft、ScanNet 和 SUNRGBD 这些数据集来说在检测任务上可以简单设置为 mAP;对 KITTI 数据集来说,如果我们只想评测 2D 检测效果,可以将度量方法设置为 img_bbox;对于 Waymo 数据集,我们提供了 KITTI 风格(不稳定)和 Waymo 官方风格这两种评测方法,分别对应 kittiwaymo,我们推荐使用默认的官方度量方法,它的性能稳定而且可以与其它算法公平比较;同样地,对 S3DIS、ScanNet 这些数据集来说,在分割任务上的度量方法可以设置为 mIoU
  • --show:如果被指定,检测结果会在静默模式下被保存,用于调试和可视化,但只在单块GPU测试的情况下生效,和 --show-dir 搭配使用。
  • --show-dir:如果被指定,检测结果会被保存在指定文件夹下的 ***_points.obj***_pred.obj 文件中,用于调试和可视化,但只在单块GPU测试的情况下生效,对于这个选项,图形化界面在你的环境中不是必需的。

示例:

CONFIG_FILE="configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class.py"
CHECKPOINT_FILE="checkpoints/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class_20200621_003904-10140f2d.pth"
RESULT_FILE="assets/result.pickle"
EVAL_METRICS="img_bbox"
SHOW_DIR="assets/kitti_pred/"

python \
    tools/test.py \
        ${CONFIG_FILE} \
        ${CHECKPOINT_FILE} \
        --eval ${EVAL_METRICS} \
        --show \
        --show-dir ${SHOW_DIR}

注意
图像显示接口还不太稳定,需要大量调试。加上 --show 绘制多模态检测框会报错。如果需要得到检测图像,可以使用 demo/multi_modality_demo.py 生成。

三、训练模型

# 使用单块显卡进行训练
python
    tools/train.py 
        ${CONFIG_FILE} 
        [optional arguments]

# 使用多块显卡进行训练
./tools/dist_train.sh 
    ${CONFIG_FILE} 
    ${GPU_NUM} 
    [optional arguments]

可选参数:

  • --no-validate不推荐):默认情况下,代码在训练阶段每 k(默认值是1,可以像这里一样修改)个周期做一次评测,如果要取消评测,使用 --no-validate
  • --work-dir ${WORK_DIR}:覆盖配置文件中的指定工作目录。
  • --resume-from ${CHECKPOINT_FILE}:从之前的模型权重文件中恢复。
  • --options 'Key=value':覆盖使用的配置中的一些设定。
CONFIG_FILE="configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class.py"

python \
    tools/train.py \
        ${CONFIG_FILE}

四、开发模型

官方:自定义模型

通常把模型的各个组成成分分成6种类型:

  • 编码器(encoder):包括 voxel layer、voxel encoder 和 middle encoder 等进入 backbone 前所使用的基于 voxel 的方法,如 HardVFE 和 PointPillarsScatter。
  • 骨干网络(backbone):通常采用 FCN 网络来提取特征图,如 ResNet 和 SECOND。
  • 颈部网络(neck):位于 backbones 和 heads 之间的组成模块,如 FPN 和 SECONDFPN。
  • 检测头(head):用于特定任务的组成模块,如检测框的预测和掩码的预测。
  • RoI 提取器(RoI extractor):用于从特征图中提取 RoI 特征的组成模块,如 H3DRoIHead 和 PartAggregationROIHead。
  • 损失函数(loss):heads 中用于计算损失函数的组成模块,如 FocalLoss、L1Loss 和 GHMLoss。

mmdetection3d/mmdet3d/models/ 中创建对应位置的模型组成成分,然后在配置文件中进行配置。

五、配置文件修改

X、补充

官方教程:实用工具与脚本

# 显示载入的数据和真值标签
python 
    tools/misc/browse_dataset.py 
        ${CONFIG_FILE} 
        --task ${TASK}
        --output-dir ${OUTPUT_DIR} 
        [--online]

可选参数

  • online:事实显示结果。需要图形化界面支持,同时需要安装open3d==0.9.0.0

示例:

# 显示 2D 图像以及投影的 3D 边界框,多模态 MVXNET

TASK="multi_modality-det"
CONFIG_FILE="configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class.py"
OUTPUT_DIR="assets/kitti_true"

python \
    tools/misc/browse_dataset.py \
        ${CONFIG_FILE} \
        --task ${TASK} \
        --output-dir ${OUTPUT_DIR} 

注意
官方版本的 mvxnet 配置中缺少必要的检测框信息,需要做如下修改:

# 将配置中的 eval_pipeline 中的
dict(type='Collect3D', keys=['points', 'img'])

# 增加 'gt_bboxes_3d'。
dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'img'])

🍀碎碎念🍀
Hello米娜桑,这里是英国留学中的杨丝儿。我的博客的关键词集中在编程、算法、机器人、人工智能、数学等等,点个关注吧,持续高质量输出中。
🌸唠嗑QQ群兔叽的魔术工房 (942848525)
??B站账号YangSierCode000(活跃于知识区生活区和动画区)


  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:32:32  更:2022-03-24 00:35:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:36:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码