【三维目标检测】CenterPoint(一)

        CenterPoint是一种anchor free的目标检测>三维目标检测算法模型,发表在CVPR 2021,论文名称为《Center-based 3D Object Detection and Tracking》。其主要特点在于通过预测物体的中心点来进行目标检测和位置回归,而不需要预先产生大量候选框(anchor)。因而,这种方法的后处理更加简洁,相邻目标可通过直接选择热力图中心点来确定最终目标,不需要非极大值抑制(NMS)操作来合并重叠的候选框。但这也会带来一个缺点,CenterPoint无法区分同类型且中心点接近的目标。CenterPoint可看作是二维CorneNet和CenterNet到三维空间的一个扩展。因此,了解CornerNet和CenterNet模型有利于加深对CenterPoint的理解。CenterPoint和CenterNet来源于同一个课题组的研究成果。在nuScenes数据集的3D检测和跟踪任务中,单阶段的CenterPoint模型的NDS为65.5,AMOTA为63.8。

1 源码与输入数据

        接下来介绍的源码来源于mmdetection3d框架中的CenterPoint模型。mmdetection3d安装和调试验证可参考本专栏之前的博客【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-CSDN博客_mmdetection3d安装,里面有详细介绍。

        数据采用的是nuScenes数据集,完整版和Mini版均可。NuScenes数据集详细介绍请参考博文:nuScenes数据集详细介绍_Coding的叶子的博客-CSDN博客_nuscence数据集。

2 mmdetection3d nuScenes数据处理与模型训练

        mmdetection3d NuScenes处理过程请参考博文:mmdetection3d nuScenes (持续更新)_Coding的叶子的博客-CSDN博客。

        完整版NuScenes处理命令为:

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

        Mini版NuScenes处理命令为:

python tools/create_data.py nuscenes --version v1.0-mini --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes

        在进行程序研究或调试时,建议直接采用Mini 版NuScenes,下载速度较快且占用存储空间较小。mmdetection3d NuScenes数据集预处理完成之后,运行下述命令即可开始CenterPoint训练。

python tools/train.py configs/centerpoint/centerpoint_0075voxel_second_secfpn_4x8_cyclic_20e_nus.py

3 CenterPoint简介

        CenterPoint模型的整体结构如下图所示,由最初的一阶段模型扩展为了两阶段模型。第二阶段负责对第一阶段的检测结果进行微调修正,与基于候选框的两阶段目标检测思想基本一致。这里重点介绍CenterPoint的第一个阶段,并且单阶段的CenterPoint可直接完成对三维目标的检测。

图1 CenterPoint模型结构

        CenterPoint模型的关键数据和路径包含如下几个方面。带着这几个关键点来深入理解算法程序时效率会大大提高。

3.1 输入数据

        输入数据来源于nuScenes的顶部激光雷达点云数据。点云数据包含了空间三维坐标x、y、z、雷达反射强度和雷达线束序号,共5个维度。线束序号取值范围0~31,即雷达的32线。数据包括10个类别,分属6个大类,如下所示。

[['car'],
 ['truck', 'construction_vehicle'],
 ['bus', 'trailer'],
 ['barrier'],
 ['motorcycle', 'bicycle'],
 ['pedestrian', 'traffic_cone']]

3.2 真实标签

        真实标签主要包括中心偏移(dx、dy)、高度(z)、尺寸对数(log(size_x)、log(size_y)、log(size_z))、偏航角正弦值(sin(rot))、偏航角余弦值(cos(rot))、速度(vx、vy)和热力图(heatmap)。

        每个热力图检测一个小类目标,即场景中相同类型目标的中心由同一个特征图来预测。因此,在计算热力图的真实标签时,同一类型多目标的高斯热力图可能会出现重叠,重叠时保留最大值。另一方面,在预测时,如果相邻的预测中心点其热力图峰值也相近,而后处理直接以最大取值作为最终预测结果。因此,CenterPoint无法区分同类型且中心点接近的目标。

3.3 模型推理

        CenterPoint模型推理过程如下:

  1. 输入点云通过体素化和稀疏卷积特征得到256x180x180特征图,尺度为180x180,特征维度为256。
  2. 特征图通过Second主干网络和Neck拼接得到512x180x180维特征。
  3. 由于输入数据被分为了6个大类,且每个热力图仅预测一类目标,因而模型预测任务也被分为6个Head。每个Head分别预测相应类别目标的位置偏移(reg,2x180x180)、高度(height,1x180x180)、尺寸(dim,3x180x180)、偏航角(rot,2x180x180)、速度(vel,2x180x180)、热力图(heatmap,Kx180x180)。其中,热力图维度中的K表示每个大类下的子类别个数,进步确定一个热力图只能预测一个类别。

        模型推理预测的结果与真实标签一一对应。热力图的损失函数为GaussianFocalLoss。其它预测值的损失函数为L1Loss,并且速度损失权重为0.2,其它权重均为1.0。

4 模型结构与代码详解

        模型详细结构及推理过程请参考下一篇博客:【目标检测>三维目标检测CenterPoint(二)_Coding的叶子的博客-CSDN博客。

5【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_三维点云深度学习


http://www.niftyadmin.cn/n/1257490.html

相关文章

霍夫投票直观理解

霍夫投票法最典型的示例是二维图像中霍夫直线检测。过二维平面中的定点可以得到无数条直线。如果以顶点参数为做一条直线,即将这些直线变换到参数空间,那么这个定点对应参数空间中的一条直线。如果在参数空间中有两条直线相交于同一个点,那么…

【三维目标检测】SASSD(二)

SASSD数据和源码配置调试过程请参考上一篇博文:【三维目标检测】SASSD(一)_Coding的叶子的博客-CSDN博客。本文主要详细介绍SASSD网络结构及其运行中间状态。 1 SASSD模型总体过程 SASSD模型的整体结构如下图所示。SASSD与基于Anchor的目标检…

【三维目标检测】SSN(一)

SSN是用于点云三维目标检测的模型算法,发表在ECCV 2020 《SSN: Shape Signature Networks for Multi-class Object Detection from Point Clouds》,论文地址为“https://arxiv.org/abs/2004.02774”。SSN核心在于提出了shape-aware heads grouping和shap…

ChatGPT介绍世界杯历史与编写足球游戏python程序

ChatGPT聊天机器人最近非常流行,是由OpenAI于本月发布的。花了一点时间注册了一个账号,如有需要帮助注册的可以随时与我交流。注册过程相对有一些复杂。 除了常规的聊天对话功能之外,ChatGPT聊天机器具备强大的文本生成能力,例如博…

mmdetection3d S3DIS (持续更新)

Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在室内三维数据集S3DIS上运行。本节重点介绍S3DIS数据集及其在mmdetection3d中的预处理程序。 1 S3DIS S3DIS(Stanford Large-Scale 3D Indoor Spaces Dataset )数据集是斯坦福大学…

【三维目标检测】FCAF3D(一)

FCAF3D是一种anchor-free的全卷积室内三维目标检测算法,由三星公司发表在ECCV 2022 《FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection》,论文地址为“https://arxiv.org/abs/2112.00322”。现有的 3D 物体检测方法使得对物体几何形状的先…

transformer 4 RuntimeError: Expected tensor for argument #1 ‘indices‘ to have scalar type Long

在使用transformer 4.0时,报错误提示RuntimeError: Expected tensor for argument #1 indices to have scalar type Long; but got torch.IntTensor instead (while checking arguments for embedding)。该问题主要时由于tensor的类型导致的,解决方法是在…

【python三维深度学习】python三维点云从基础到深度学习

从三维基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。https://blog.csdn.net/suiyingy/category_11740467.htmlhttps://blog.csdn.net/suiyingy/category_11740467.html 1、点云格式介绍(已完成&#xff09…