论文链接:SECOND: Sparsely Embedded Convolutional Detection
代码链接:https://github.com/open-mmlab/OpenPCDet
摘要
SECOND是2018年提出的基于点云的3D目标检测算法,旨在解决VoxelNet等早期方法存在的计算量大、推理速度慢以及方向预测不准确的问题。其主要创新点包括:
-
3D稀疏卷积:通过优化内存访问和并行计算,显著提升计算效率,训练速度比VoxelNet快4倍,推理速度提升3倍,达到每秒20帧14;
-
改进的方向损失函数:提出基于正弦函数的角度损失,避免预测方向与真实值相差180°时的高损失问题,并结合方向分类器进一步优化;
-
数据增强策略:通过从其他点云中采样目标并融合到当前场景,增加正样本数量,提升模型鲁棒性。
实验表明,SECOND在KITTI数据集上对大目标(如车辆)检测效果显著,但小目标(如行人)性能仍有提升空间。
主要贡献
1、稀疏卷积的GPU加速实现
针对3D体素数据稀疏性高的特点,SECOND设计了高效的稀疏卷积算法,利用哈希表和规则手册(Rulebook)优化输入输出索引管理,仅对非空体素进行计算。通过GEMM(通用矩阵乘法)加速卷积操作,减少显存占用和计算冗余,使3D卷积更适合实时处理。
2、方向损失函数设计
VoxeINet 直接使用预测转角与真值转角之差\(|\theta_p-\theta_t|\)作为损失,并没有考虑角度的周期性,考虑 1°、359°的两个框,这两个框方向基本相同却产生 358°的损失。SECOND提出使用\(L_\theta=\mathrm{SmoothL}1(\sin(\theta_p-\theta_t))\)作为角度损失。该损失函数通过正弦函数将角度差值对称化,避免对抗性样本问题。同时,引入方向分类分支(二分类Softmax),判断角度是正向还是反向,进一步修正方向预测。
3、高效的数据增强方法
从训练集中构建包含真实目标及其点云的数据库,在训练时随机采样并融合到当前点云中,显著增加正样本数量,尤其改善小样本场景下的检测性能。
网络结构
SECOND网络分为三部分:体素特征提取器、稀疏卷积中间层和RPN网络。
1、体素特征提取器
-
点云体素化:将点云划分为体素网格,使用哈希表记录非空体素,每个体素最多保留固定点数(如车辆35点,行人45点)。
-
VFE特征编码:与VoxelNet相同,通过全连接层提取逐点特征,再通过最大池化生成逐体素特征。
2、稀疏卷积中间层
-
稀疏卷积设计:在对点云进行体素化之后,大部分的网格都是空的,这时如果直接进行3D卷积,大量0值会参与内积运算,浪费计算资源。稀疏卷积只将特征图上非零的体素与卷积核做内积运算,再把结果累加到输出特征图上的对应位置(存储的时候非空体素的位置和特征)可大幅度减少计算。结合Submanifold卷积(仅中心覆盖非空体素时输出)和常规稀疏卷积(只要卷积核覆盖到非零数据点就输出),逐步压缩Z轴维度,最终将3D稀疏数据转换为2D BEV(鸟瞰图)特征。
-
GPU加速实现:通过输入-输出索引规则矩阵(Rulebook)管理卷积计算,仅处理有效体素,减少显存占用和计算量。
3、RPN网络
- 基于SSD的单阶段检测:输出分类得分、边界框回归参数(x, y, z, l, w, h, θ)及方向分类结果。
- 锚点匹配策略:IOU>0.6为正样本,<0.45为负样本,使用Focal Loss解决类别不平衡问题。
实验结果
总结
优势:
-
速度优势:通过稀疏卷积优化,推理速度达20FPS,显著优于VoxelNet;
-
方向预测改进:角度损失函数有效缓解180°误差问题,结合方向分类器提升精度;
-
数据增强有效性:数据库采样策略增强模型泛化能力。
局限性:
-
小目标检测不足:对行人和骑行者等小目标检测性能较低;
-
依赖体素参数:体素大小和最大点数需手动调优,影响模型适应性。
SECOND为后续3D检测算法(如PointPillars)奠定了基础,其稀疏卷积和方向建模思想被广泛借鉴,但小目标检测和复杂场景适应性仍是未来研究方向。
没有回复内容