【三维目标检测】SASSD(一)
创始人
2024-03-23 14:50:38

        SASSD是用于点云三维目标检测模型算法,发表在CVPR 2020《Structure Aware Single-stage 3D Object Detection from Point Cloud》,论文地址为“https://www4.comp.polyu.edu.hk/~cslzhang/paper/SA-SSD.pdf”。SASSD与基于Anchor的目标检测模型的结构基本保持一致,其核心特点在于采用了一个语义分割网络来辅助候选框特征提取,使产生的候选框质量更高。辅助网络这一点与PointRCNN和VoteNet的部分思想很接近。不同之处在于,SASSD提取体素中心点特征时融合了不同尺度下近邻体素的特征,从而使得网络可以有效获取到局部结构特征(Structure Aware)。另一方面,这个辅助网络仅在训练时用到,在推理时则完全拆解下来,从而使得模型在实际部署过程种不增加额外开销。因此,SASSD辅助网络的作用在于提高模型训练精度。

1 源码与输入数据

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

        数据采用的是kitti,为了快速进行算法调试、训练、评估和验证,以及快速下载,我制作了一个mini kitti数据集,数据集的文件目录结构与完整KITTI数据集保持一致。其中,小型的KITTI数据集,即 mini kitti保存了20个训练样本和5个测试样本。下载地址为:minikitti数据集-深度学习文档类资源-CSDN下载。

        下载的数据包含4个部分,即激光雷达数据velodyne、图像数据image_2、校准数据calib和标注数据label_2。如果需要对应的ImageSets,请下载:train_val_testforminikitti-深度学习文档类资源-CSDN下载,将下载的文件夹重名为ImageSets即可。

        关于KITTI各个部分的介绍请分别参考以下内容:

KITTI数据集简介(一) — 激光雷达数据_Coding的叶子的博客-CSDN博客_雷达数据集

KITTI数据集简介(二) — 标注数据label_2_Coding的叶子的博客-CSDN博客_kitti数据集标注

KITTI数据集简介(三) — 图像数据image_2_Coding的叶子的博客-CSDN博客

KITTI数据集简介(四) — 图像数据calib_Coding的叶子的博客-CSDN博客

        数据预处理部分可以参考Voxelnet的数据处理方式加以理解:【三维目标检测】VoxelNet(二):数据处理_Coding的叶子的博客-CSDN博客。

        下载后直接将数据保存在mmdetection 3工程所在目录的data文件夹下,目录结构如下图所示,然后执行下文第2节中的kitti数据预处理命令。

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

        mmdetection3d kitti (持续更新)_Coding的叶子的博客-CSDN博客

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

 3 源码运行调试

        mmdetection3d的SASSD源码运行命令如下:

python tools/train.py configs/sassd/sassd_6x8_80e_kitti-3d-3class.py

3.1 稀疏卷积版本

        SASSD采用了稀疏卷积,需要安装spconv 2.0库。安装方式如下,其中102表示cuda版本为10.2,且最低支持CUDA 10.2。

pip install cumm-cu102
pip install spconv-cu102

        如果没有安装spconv 2.0则有可能报如下错误:

        (1)RuntimeError: /tmp/mmcv/mmcv/ops/csrc/pytorch/cuda/sparse_indice.cu 123。

        (2)RuntimeError: indices must be contiguous。

3.2 标签处理

        由于程序运行采用了上述Mini Kitti数据集,并且模型将检测行人、汽车和骑手三类目标,但是训练样本种几乎不含骑手这一目标,直接运行程序可能会报以下错误:

        (1)KeyError: 'KittiDataset: \'ObjectSample: "DataBaseSampler: \\\'Cyclist\\\'"\''

        (2)ValueError: need at least one array to stack

        为了让样本种含有骑手这一目标,可在data/kitti/label_2文件夹下,将几个标注文件的部分行人或汽车标签改成骑手(Cyclist)。改完之后程序即可正常运行。

4 SASSD简介

        SASSD模型的整体结构如下图所示。SASSD与基于Anchor的目标检测模型的结构基本保持一致,其核心特点在于采用了一个类似语义分割的辅助网络(Auxiliary Network)来学习区分前景点和背景点,从而辅助候选框特征提取,使产生的候选框质量更高。辅助网络这一点与PointRCNN和VoteNet的部分思想很接近。不同之处在于,SASSD提取体素中心点特征时融合了不同尺度下近邻体素的特征,从而使得网络可以有效获取到局部结构特征(Structure Aware)。另一方面,这个辅助网络仅在训练时用到,在推理时则完全拆解下来,从而使得模型在实际部署过程种不增加额外开销。因此,SASSD辅助网络的作用在于提高模型训练精度。

5 模型结构与代码详解

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

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

相关内容

热门资讯

提升北京“气质”永远在路上 (来源:千龙网)蓝天不是等来的,而是拼出来的。这场攻坚战之所以能取得累累硕果,归根结底还是源于我们的...
高级“芯”撑起孔雀高端表 (来源:辽宁日报)转自:辽宁日报孔雀表业技术部装配大师聂英丽在装配陀飞轮机芯。 本报记者 王卢莎 摄...
特朗普:如果输掉中期选举 我可... 中新网1月7日电 据路透社报道,当地时间6日,美国总统特朗普表示,他所属的共和党必须赢得2026年的...
格陵兰岛自治政府总理:格陵兰岛... 1月6日,丹麦自治领地格陵兰岛自治政府总理延斯-弗雷德里克·尼尔森在社交媒体上对法国、德国、意大利等...
这样改,带来什么? (来源:辽宁日报)转自:辽宁日报 本报评论员 全省优化营商环境大会召开之后,社会反响热烈,全网热度不...