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

news/2024/7/10 1:51:30 标签: SSN, 三维目标检测, 目标检测, 深度学习, python

        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和shape signature结构,前者针对不同类别目标设置不同Head,并得到不同尺度的特征图。相比于其他网络采用单一尺度的特征图,这种方法的可以有效提升精度,但是参数量也大大增加。从实现过程来看,这种结构实际上与增加anchor和FPN的作用相近似。另一方面,读者也可以类比以下yolov5的Head结构。shape signature结构主要是对目标轮廓进行编码,强调了目标轮廓形状的特点,从而最终进一步提升目标检测精度。

1 源码与输入数据

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

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

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

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

        完整版NuScenes处理命令为:

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

        Mini版NuScenes处理命令为:

python">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数据集预处理完成之后,运行下述命令即可开始SSN训练。

python">python tools/train.py configs/ssn/hv_ssn_secfpn_sbn-all_2x16_2x_nus-3d.py

3 SSN简介

        SSN主要结构如下图所示,其核心在于提出了shape-aware heads grouping和shape signature结构,前者针对不同类别目标设置不同Head,并得到不同尺度的特征图。相比于其他网络采用单一尺度的特征图,这种方法的可以有效提升精度,但是参数量也大大增加。从实现过程来看,这种结构实际上与增加anchor和FPN的作用相近似。另一方面,读者也可以类比以下yolov5的Head结构。shape signature结构主要是对目标轮廓进行编码,强调了目标轮廓形状的特点,从而最终进一步提升目标检测精度。

         shape signature结构编码主要包含:

  1. 形状补全:将物体按照中心对称的方式进行补全。
  2. 投影:投影得到物体的鸟瞰图、侧视图和前视图,以便后续对三维轮廓形状进行估计。
  3. 凸包:考虑目标外侧点云的凸包结构,使编码对内部稀疏点云具有鲁棒性。
  4. 切比雪夫拟合:综合三种视图下的特征编码,用切比雪夫拟合方法计算出最终的形状编码。

        shape signature网络结构如下图所示。

        需要注意的是,在接下来即将详细介绍的mmdetection3d SSN程序种仅仅使用了shape-aware heads grouping结构,并没有采用shape signature结构。

3.1 输入数据

        输入数据来源于nuScenes的顶部激光雷达点云数据。点云数据包含了空间三维坐标x、y、z、雷达反射强度,共4个维度。数据包括10个类别,分属5个大类。

3.2 真实标签

        真实标签主要包括中心偏移(dx、dy、dz)、尺寸对数(log(dw)、log(dl)、log(dz))、角度rz、速度(vx、vy),共9个维度。

        5个大类,每类采用一种Head参数,并且针对大目标时特征图尺度减少一半。特征图尺度包括200x200和100x100两种,并且每个网格分配两种anchor候选框。

3.3 模型计算过程

       SSN模型计算过程如下:

        (1)输入点云通过柱状(pointpillars)体素化和中间特征提取层得到64x400x400特征图,尺度为400x400,特征维度为64。

        (2)特征图通过Second主干网络和Neck拼接得到384x200x200维特征。

        (3)由于输入数据被分为了5个大类,因而模型预测任务也被分为5个Head。每个Head分别预测相应类别目标的类别(10x200x200、10x100x100)、位置偏移回归(9x200x200、9x100x100)和方向(2x200x200、2x100x100)。

        目标类别和方向的损失函数分别为FocalLoss和CrossEntropyLoss。位置偏移回归的9个维度损失函数均为SmoothL1Loss,并且速度(最后两个维度)损失权重为0.2,其它权重均为1.0。

4 模型结构与代码详解

        模型详细结构及推理过程请参考下一篇博客:预计本周内更新。

python三维深度学习python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python点云目标检测从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。https://blog.csdn.net/suiyingy/article/details/124017716


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

相关文章

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…

jquery 点击弹出层自身以外的任意位置,关闭弹出层

<!--弹出层---> <div class"mask"> <div class"wrap"></div> </div> /***弹出层效果***/ $(".header").find(".a5").click(function(e){ e.stopPropagation();//阻止冒泡 $(.mask).css("displa…

SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱

服务器漏洞&#xff1a;SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】 解决方案 一. http服务器相关配置 1.首先生成大于1024bit(例如2048bit)的dhkeyopenssl dhparam -out dhparams.pem 2048 2.然后在对应服务器中配置Apache2.4.8及以后版本 使用如下配置命令…

Linux系统部署的tomcat服务运行一段时间后访问慢或者无法访问的问题

1、查看tomcat服务应用日志路径下*/logs/catalina.out的日志输出 tail -100 calalina.out 看到如下报错&#xff1a; 2018/04/06-19:24:16 >> ERROR >> catalina-exec-3981 >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.ja…