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结构编码主要包含:
- 形状补全:将物体按照中心对称的方式进行补全。
- 投影:投影得到物体的鸟瞰图、侧视图和前视图,以便后续对三维轮廓形状进行估计。
- 凸包:考虑目标外侧点云的凸包结构,使编码对内部稀疏点云具有鲁棒性。
- 切比雪夫拟合:综合三种视图下的特征编码,用切比雪夫拟合方法计算出最终的形状编码。
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 模型结构与代码详解
模型详细结构及推理过程请参考下一篇博客:预计本周内更新。