写在前面&笔者的个人理解
3D点云物体检测对自动驾驶感知至关重要,如何高效地从稀疏点云数据中学习特征表示是3D点云物体检测面临的一个关键挑战。我们在本文中将会介绍团队发表在NeurIPS 2023的HEDNet和CVPR 2024的SAFDNet,其中HEDNet聚焦于解决现有稀疏卷积神经网络难以捕捉远距离特征间依赖关系的问题,而SAFDNet则是基于HEDNet构建的纯稀疏点云检测器。
前世 – HEDNet
研究背景
主流方法通常将非结构化的点云转换为规则的体素,并使用稀疏卷积神经网络或Transformer来提取特征。大多数现有的稀疏卷积神经网络主要通过堆叠子流形稀疏残差(Submanifold Sparse Residual, SSR)模块构建而来,每个SSR模块包含两个采用小卷积核的子流形稀疏 (Submanifold Sparse, SS) 卷积。然而,子流形稀疏卷积要求输入和输出特征图的稀疏度保持不变,这阻碍了远距离特征间的信息交互,导致模型难以捕捉远距离特征间的依赖关系。一种可能的解决方案是将SSR模块中的子流形稀疏卷积替换为普通稀疏 (Regular Sparse, RS) 卷积。然而,随着网络深度的增加,这会显著降低特征图的稀疏度,导致计算成本大幅增加。一些研究尝试使用基于大卷积核的稀疏卷积神经网络或Transformer来捕获远距离特征间的依赖关系,但这些方法要么没能在检测精度上带来提升,要么需要更高的计算成本。综上,我们仍然缺乏一种能够高效地捕捉远距离特征间依赖关系的方法。
方法介绍
SSR模块和RSR模块
为了提升模型效率,现有的3D点云物体检测器大多采用稀疏卷积来提取特征。稀疏卷积主要包括RS卷积和SS卷积。RS卷积在计算过程中会将稀疏特征扩散到相邻区域,因而会降低特征图的稀疏度。与之相反,SS卷积则保持输入和输出特征图的稀疏度不变。由于降低特征图的稀疏度会显著增加计算成本,在现有方法中RS卷积通常仅用于特征图下采样。另一方面,大多数基于体素的方法通过堆叠SSR模块构来建稀疏卷积神经网络,以提取点云特征。每个SSR模块包含两个SS卷积和一个融合输入和输出特征图的跳跃连接。
图 1(a) 展示了单个SSR模块的结构。图中有效特征 (valid feature) 指非零特征,而空特征 (empty feature) 的值为零,代表该位置原本不包含点云。我们将特征图的稀疏度定义为空特征占据的区域面积与特征图总面积之比。在SSR模块中,输入特征图经过两个SS卷积转换后得到输出特征图,同时输入特征图的信息通过跳跃连接 (Skip conn.) 直接融合到输出特征图中。SS卷积只处理有效特征,以保证SSR模块的输出特征图与输入特征图具有相同的稀疏度。然而,这样的设计阻碍了不连通特征之间的信息交互。例如,顶部特征图中由星号标记的特征点,无法从底部特征图中位于红色虚线框外、由红色三角形标记的三个特征点接收信息,这限制了模型建模远距离特征间依赖关系的能力。
图1 SSR、RSR和SED模块结构比较
对于以上问题,一种可能的解决方案是将SSR模块中的SS卷积替换为RS卷积来捕捉远距离特征间的依赖关系。我们将这种修改后的模块称为普通稀疏残差 (Regular Sparse Residual, RSR) 模块,其结构如图 1(b) 所示。图中,待扩散特征 (expanded feature) 是有效特征邻域内的空特征。RS卷积同时处理有效特征和待扩散特征,其卷积核中心会遍历这些特征区域,这种设计导致输出特征图较输入特征图具有更低的稀疏度。堆叠RS卷积则会更加迅速地降低特征图的稀疏度,进而导致模型效率大幅降低。这也是现有方法通常仅将RS卷积用于特征图下采样的原因。这里把expanded feature翻译成待扩散特征可能有点奇怪,expanded feature是原始论文中的叫法,我们后来认为改成待扩散特征更为合适。
SED模块和DED模块
SED模块的设计目标是克服SSR模块的局限性。SED模块通过特征下采样缩短远距离特征之间的空间距离,同时通过多尺度特征融合恢复丢失的细节信息。图 1(c)展示了一个具有两个特征尺度的SED模块示例。该模块首先采用步长为3的3×3 RS卷积进行特征下采样 (Down)。特征下采样之后,底部特征图中不连通的有效特征被整合进中间特征图中相邻的有效特征内。接着,通过在中间特征图上使用一个SSR模块提取特征,来实现有效特征之间的交互。最后,上采样 (UP) 中间特征图以匹配输入特征图的分辨率。值得注意的是,这里仅上采样特征到输入特征图中有效特征所对应的区域。因此,SED模块可以维持特征图的稀疏度。
图 2(a) 展示了一个具有三个特征尺度的SED模块的具体实现方式。括号中的数字表示对应特征图的分辨率与输入特征图的分辨率之比。SED模块采用了不对称的编解码器结构,它利用编码器提取多尺度特征,并通过解码器逐步融合提取的多尺度特征。SED模块采用RS卷积作为特征下采样层,并采用稀疏反卷积 (Inverse Convolution) 作为特征上采样层。通过使用编解码器结构,SED模块促进了空间中不连通特征之间的信息交互,从而使模型能够捕获远距离特征间的依赖关系。
图2 SED和DED模块结构
另一方面,当前主流的3D点云检测器主要依赖于物体中心特征进行预测,但在稀疏卷积神经网络提取的特征图中,物体中心区域可能存在空洞,尤其是在大物体上。为了解决这一问题,我们提出了DED模块,其结构如图 2(b) 所示。DED模块与SED模块具有相同的结构,它将SED模块中的SSR模块替换为密集残差 (Dense Residual, DR) 模块、将用于特征下采样的RS卷积替换为步长为2的DR模块以及将用于特征上采样的稀疏反卷积替换为密集反卷积,其中DR模块与SSR模块具有相同的结构,但由两个密集卷积组成。这些设计使得DED模块能够有效地将稀疏特征向物体中心区域扩散。
HEDNet
基于SED模块和DED模块,我们提出了层级编解码器网络HEDNet。如图 3 所示,HEDNet通过一个3D稀疏主干网络来提取高层稀疏特征,接着通过2D密集主干网络将稀疏特征扩散至物体中心区域,最后将2D密集主干网络输出的特征送入检测头进行任务预测。为了方便展示,图中省略了特征图、和之后的特征下采样层。宏观上,HEDNet采用了与SECOND类似的层级网络结构,其特征图的分辨率逐渐降低;微观上,HEDNet的核心组件SED模块和DED模块均采用了编解码器结构。这就是HEDNet名字的由来。
图3 HEDNet整体框架
小彩蛋
我们为什么会想到使用编解码器结构呢?实际上HEDNet是从我们的前序工作 CEDNet: A Cascade Encoder-Decoder Network for Dense Prediction (改名之前叫CFNet) 中启发而来。感兴趣可以去看我们的论文。
实验结果
我们将HEDNet与此前领先的方法在综合性能上进行了比较,结果如图4所示。与基于大卷积核CNN的LargeKernel3D和基于Transformer的DSVT-Voxel相比,HEDNet在检测精度和模型推断速度上均取得更优的结果。值得一提的是,与此前最先进的方法DSVT相比,HEDNet在取得更高检测准确率的同时,在模型推断速度上提升了50%。更详细的结果请参见我们的论文。
图4 在Waymo Open数据集上的综合性能比较
今生 – SAFDNet
研究背景
基于体素的方法通常将稀疏体素特征转换为密集特征图,接着通过密集卷积神经网络提取特征进行预测。我们将这类检测器称为混合检测器,其结构如图 5(a) 所示。这类方法在小范围 (<75米) 检测场景上表现优异,但随着感知范围扩大,使用密集特征图的计算成本急剧增加,限制了它们在大范围(>200米)检测场景中的应用。一个可能的解决方案是通过移除现有混合检测器中的密集特征图来构建纯稀疏检测器,但这会导致模型的检测性能明显下降,因为目前大多数混合检测器依赖于物体中心特征进行预测,当使用纯稀疏检测器提取特征时,大物体的中心区域通常是空的,这就是物体中心特征缺失问题。因此,学习适当的物体表征对于构建纯稀疏检测器至关重要。
图5 混合检测器、FSDv1和SAFDNet的结构对比
为了解决物体中心特征缺失问题,FSDv1 (图 5(b)) 首先将原始点云分割为前景点和背景点,接着通过中心点投票机制对前景点进行聚类,并从每个聚类中提取实例特征用于初始预测,最后再通过Group Correction Head进一步细化。为了减少手工提取实例特征引入的归纳偏差,FSDv2采用虚拟体素化模块来替换FSDv1中的实例聚类操作。FSD系列方法与CenterPoint等广泛使用的检测框架差异较大,并且引入大量超参数,导致在真实场景中部署这些方法面临挑战。与FSD系列方法不同,VoxelNeXt直接基于距离物体中心最近的体素特征进行预测,但牺牲了检测准确率。
那么我们想要的纯稀疏点云检测器是什么样的呢?首先,结构要简单,这样便于直接部署到实际应用中,一个直观的想法是在目前广泛使用的混合检测器架构如CenterPoint的基础上,做最小的改动来构建纯稀疏检测器;其次,在性能上至少要匹配目前领先的混合检测器,并且能够适用于不同范围的检测场景。
方法介绍
从上述两个要求出发,我们基于HEDNet构建了纯稀疏3D点云物体检测器SAFDNet,其宏观结构如图 5(c) 所示。SAFDNet首先利用稀疏体素特征提取器来提取稀疏点云特征,接着采用自适应特征扩散 (Adaptive Feature Diffusion, AFD)策略和2D稀疏卷积神经网络将稀疏特征扩散到物体中心区域,来解决物体中心特征缺失问题,最后基于稀疏体素特征进行预测。SAFDNet能够仅使用稀疏特征进行高效计算,并且其大部分结构设计和超参数与基准混合检测器保持一致,使其可以轻松适配到实际应用场景,来替换现有的混合检测器。下面介绍SAFDNet的具体结构。
SAFDNet整体框架
图 6 展示了SAFDNet的整体框架。与现有的混合检测器类似,SAFDNet主要由三个部分组成:一个3D稀疏主干网络、一个2D稀疏主干网络和一个稀疏检测头。3D稀疏主干网络用于提取3D稀疏体素特征,并将这些特征转换成2D稀疏BEV特征。3D稀疏主干网络使用了3D-EDB模块来促进远距离特征间的信息交互 (3D-EDB模块就是基于3D稀疏卷积构建的SED模块,下文的2D-EDB模块类似)。2D稀疏主干网络接收3D稀疏主干网络输出的稀疏BEV特征作为输入,它首先对每个体素进行分类,以判断每个体素的几何中心是否落在特定类别的物体边界框内或者是否属于背景区域,接着通过AFD操作与2D-EDB模块,将稀疏特征扩散到物体中心区域。该部分是SAFDNet的核心组件。稀疏检测头基于2D稀疏主干网络输出的稀疏BEV特征进行预测。SAFDNet采用CenterPoint提出的检测头设计,我们对其进行了一些调整以适配稀疏特征,更多细节请参见论文。
图6 SAFDNet整体框架
自适应特征扩散 (AFD)
由于激光雷达产生的点云主要分布在物体表面,使用纯稀疏检测器提取特征进行预测将面临物体中心特征缺失问题。那么检测器能否在尽可能保持特征稀疏度的同时,提取更接近或者位于物体中心的特征呢?一个直观的想法是将稀疏特征扩散到邻近的体素内。图 6(a)展示了一个稀疏特征图的示例,图中红点表示物体中心,每一个方格代表一个体素,深橙色方格是几何中心落在物体边界框内的非空体素,深蓝色方格是几何中心落在物体边界框外的非空体素,白色方格是空体素。每个非空体素对应一个非空特征。图 7(b) 是通过将图 7(a) 中非空特征均匀扩散到KxK (K取5) 的邻域后得到。扩散得到的非空体素以浅橙色或浅蓝色表示。
图7 均匀特征扩散和自适应特征扩散示意图
通过分析3D稀疏主干网络输出的稀疏特征图,我们观察到:(a) 少于10%的体素落在物体的边界框内;(b) 小物体通常在其中心体素附近或中心体素上有非空特征。这一观察表明,将所有非空特征扩散到相同大小的领域内可能是不必要的,特别是对于小物体边界框内和背景区域中的体素。因此,我们提出了一种自适应特征扩散策略,该策略根据体素特征的位置动态调整扩散范围。如图 7(c) 所示,该策略通过为大物体边界框内的体素特征分配更大的扩散范围来让这些特征更接近物体中心,同时通过为小物体边界框内和背景区域中的体素特征分配较小的扩散范围来尽可能地维持特征稀疏度。为了实现这一策略,需要进行体素分类(Voxel classification),以判别任意非空体素的几何中心是否在特定类别物体的边界框内或者属于背景区域。关于体素分类的更多细节请参考论文。通过使用自适应特征扩散策略,检测器能够尽可能地保持特征稀疏度,进而受益于稀疏特征的高效计算。
主要实验结果
我们将SAFDNet与之前最好的方法在综合性能上进行了比较,结果如图8所示。在检测范围较小的Waymo Open数据集上,SAFDNet和之前最好的纯稀疏检测器FSDv2以及我们提出的混合检测器HEDNet取得相当的检测准确率,但SAFDNet的推断速度是FSDv2的2倍以及HEDNet的1.2倍。在检测范围较大的Argoverse2数据集上,与纯稀疏检测器FSDv2相比,SAFDNet在指标mAP上提升了2.1%,同时推断速度达到了FSDv2的1.3倍;与混合检测器HEDNet相比,SAFDNet在指标mAP上提升了2.6%,同时推断速度达到了HEDNet的2.1倍。此外,当检测范围较大时,混合检测器HEDNet的显存消耗远大于纯稀疏检测器。综上所述,SAFDNet适用于不同范围的检测场景,且性能出色。
图8 主要实验结果
未来工作
SAFDNet是纯稀疏点云检测器的一种解决方案,那么它是否存在问题呢?实际上,SAFDNet只是我们关于纯稀疏检测器设想的一个中间产物,笔者认为它过于暴力,也不够简洁优雅。敬请期待我们的后续工作!
HEDNet和SAFDNet的代码都已经开源,欢迎大家使用。奉上链接: https://github.com/zhanggang001/HEDNet