NIPS2022 | 港大最新Sparse2Dense:通用点云3D检测稠密模块! 原创
摘要
激光雷达产生的点云是大多数最先进的3D目标检测器的主要来源。然而,小的,遥远的,和不完整的稀疏或少数点的物体通常很难被检测到。本文提出了一个新的框架Sparse2Dense,通过学习在潜在空间中对点云进行致密化,从而有效地提高3D检测性能。具体来说,本文首先训练一个以密集点云为输入的密集点三维检测器(DDet),然后设计一个以规则点云为输入的稀疏点三维检测器(SDet)。重要的是,本文在SDet中制定了轻量级的插件式S2D模块和点云重建模块来对3D特征进行致密化,并根据DDet中密集的3D特征,训练SDet生成3D特征。因此,在推理中,SDet可以从正常(稀疏)点云输入中模拟密集的3D特征,而不需要密集的输入。本文在大规模的Waymo开放数据集和Waymo域适应数据集上对本文的方法进行了评估,显示了它超越SOTA的高性能和高效率。
欢迎关注国内首个以自动驾驶技术栈为主线的交流学习社区!
原文出处:微信公众号【自动驾驶之心】
介绍
三维物体检测是支持自动驾驶汽车感知周围环境的一项重要任务。之前的工作[1 - 4]设计了各种神经网络结构来提高检测性能。然而,由于点的稀疏性、物体遮挡和不准确的激光反射,检测小的、遥远的和不完整的物体仍然是非常具有挑战性的。这些问题阻碍了三维目标检测精度和鲁棒性的进一步提高。
为了提高检测性能,一些研究尝试利用附加的信息,如图像[5 - 9]、图像分割[10,11]和多帧信息[12,13]。通过将信息与物理空间或潜在空间中的输入点云融合,3d目标检测器可以对小而远的物体获得增强的特征,从而提高三维检测的性能。然而,上述工作在推理时需要额外的数据预处理和融合,故在实践中不可避免地增加了计算负担,降低了整体检测效率。
图1:本文的方法能够从一般(原始)点云产生稠密的、高质量的3d特征(d),使得对于微小的、远的以及不完整的物体的检测更好。红色框为检测结果,绿色框为真值。
之后,[14]通过一个不完全感知的重加权映射和加权MSE损失,将物体的不完整的感知特征与更完整的特征关联起来。然而,由于难以在这些区域生成高质量的特征,该网络仍然难以处理具有有限点的稀疏区域。最近,[15]提出在预测对象区域上生成语义点,然后利用生成点和原始点来训练检测器。然而,稀疏区域的生成点可能是不完整的,这些区域的生成质量还远远不能令人满意。另外,在大型场景中生成语义点的时间较长。
在本工作中,本文提出了一种新的方法来解决三维物体检测中的点稀疏问题。具体地说,本文设计了带有两个检测器的sparse2density框架:(i)高密度点3D检测器(DDet),它是用密集点云进行3D检测的预训练;(ii)稀疏点3D检测器(SDet),它是用一般(原始)点云作为输入进行训练的。非常重要的是,在训练SDet时,本文用DDet来教SDet模拟致密的3D特征,使其能够学习从规则点云中产生高质量的3D特征,从而提高检测性能。与以往的方法不同,本文设计了两个有效的模块来进一步帮助增强潜在空间中规则点云的稀疏特征。此外,与以往的多模态方法[9,10]不同,前者在训练和推理中都需要额外的信息,如图像分割和图像,而本文的方法只在训练中需要密集的点数据,而在推理中不需要。
本文的网络分为两个阶段进行训练。首先,通过融合多帧点云的方法制备密集点云用于DDet训练。然后,在训练SDet时,将DDet得到的用于embedding的稠密3D特征转移到SDet特征中,使SDet能够学习生成致密3D特征,即使是从普通的正常点云中。为了方便SDet模拟密集的三维特征,设计了轻量化有效(S2D)模块,对潜在空间的稀疏三维特征进行了致密化处理。此外,为了进一步增强特征学习,本文制定了点云重建(PCR)模块来学习重建体素级点云作为辅助任务(编者:有点像voxel-mae)。和DDet一样,只在训练中才会需要这个PCR模块,而在推理中不需要。
此外,本文的框架是通用的,与各种3D检测器兼容,以提高它们的性能。本文采用此框架,在大规模的Waymo[18]开放数据集和Waymo域适应数据集上使用了三种不同的近期工作[16,17,1](编者注:分别为second,pointpillars和centerpoint),表明本文的方法提高了所有三种方法的检测性能。实验结果表明,该方法在两个数据集上的性能都优于最先进的3D检测器,证明了其有效性和多功能性。
下面,本文总结了这项工作的主要贡献:
- (1)本文设计了一种新的方法来解决三维检测中的点稀疏性问题,并建立了Sparse2Dense的框架来将稠密点的知识从稠密点三维检测器(DDet)转移到稀疏点三维检测器(SDet)。
- (2)本文设计了轻量级插件S2D模块来学习潜在空间中密集的3D特征,设计了点云重建(PCR)模块来规范了特征学习。
- (3)本文在大规模数据集,Waymo[18]和Waymo域自适应这两个开放数据集上评估了本文的方法,证明了其优于现有SOTA的性能。
相关工作
3D目标检测。近年来,三维目标检测研究进展迅速,已有的工作[19 - 31]在三维目标检测方面取得了显著的成果。SECOND[16]采用稀疏卷积[32,33],PointPillars[17]引入了柱式表示,以实现速度和性能之间的良好平衡。最近,CenterPoint[1]提出了一种基于中心的无锚定位方法来定位对象,VoTr[30]结合自注意和稀疏卷积构建了基于Transformer的3d backbone。此外,PV-RCNN[4]通过结合点和体素特征的ROI格池融合了深度特征,LiDAR R-CNN[26]提出了基于点网的第二阶段细化来解决大小的不确定性。本文将该方法应用在3个近期的代表性的结果中,即[16, 17, 1],表明本文的方法可以有效地提高所有三种方法的性能,证明了本文的框架的兼容性。
三维点云的稀疏/密集域变换。原始点云在实践中通常是稀疏和不完整的,因此限制了许多下游任务的性能。为了解决这一问题,人们提出了一些方法,包括点云上采样[34 - 36]和补全[37 - 40],以稠密化点云和补全目标,以提高三维分割[41,42]和检测[43,14,15,31,44]的性能。
本文综述了稀疏/密集域变换在三维物体检测中的一些研究成果.Multi-frame to single-frame[45]首先提出了一种多帧到单帧的蒸馏框架,该框架只使用5个相邻帧生成密集特征作为引导,从而限制了对遥远目标的性能。[43,14]提出了一种自包含的方法,首先提取数据集中相似视点和高密度区域的完整汽车,然后在相关的地面真相位置合并这些增强的汽车,以进行概念特征提取。随后,[15]引入语义点生成来解决缺失点问题。最近,PC-RCNN[44]提出了一个两阶段的框架:首先预测3D proposal,然后由另一个模块补全点,该模块使用基于注意的GNN来优化已完成对象的检测结果。上述著作[43,14,15,44]显式地进行了点云中的各种操作,例如:对象提取与匹配[43,14],点生成[15,44];然而,显式点云操作会导致两个问题。首先,由于点的高度稀疏性,在遥远和阻挡的区域进行上述操作具有挑战性,从而严重限制了其在这些区域的性能。其次,显式执行这些操作通常需要很长时间,特别是对于大型场景。
在之前的工作之外,本文提出了一种有效的sparse-to-dense的方法来学习在潜在空间中的三维特征的稠密化,而不是显式地在点云中生成点。值得注意的是,本方法只在训练中需要密集的点云。在推理中,它只使用规则的(稀疏的)点云作为输入进行三维检测。实验表明,该方法在准确性和效率方面都优于现有的方法。
具体方法
整体框架设计
图2给出了本文的Sparse2Dense框架的概述,它由顶部的密集点3D检测器(DDet)和底部的稀疏点3D检测器(SDet)组成。总的来说,DDet使用密集的点云作为输入,而SDet使用规则的(稀疏的)点云作为输入。本文旨在于将密集点的知识从DDet转移到SDet,鼓励SDet学习生成密集的3D特征来提高其3D检测性能,即使以稀疏点云作为输入。框架设计工作流程总结如下:
- (1)密集目标生成:使用原始的多帧点云序列为训练DDet准备密集点云。特别地,本文通过构建体素网格和用对象点填充体素来设计一个密集的对象生成过程(章节3.2)。然后,将稀疏点云PS中的目标区域替换为相应的密集目标点,得到密集点云PD。
- (2)从密集检测器到稀疏检测器:训练分为两个阶段。首先,如图2 (a)所示,按照voxelnet-based的方法[1,16]或pillar-based的方法[17],使用密集点云PD和区域建议网络(RPN)训练DDet来提取区域建议和多个头部执行对象分类和回归。其次,如图2 (b)所示,以预训练的DDet的权值初始化SDet,并以规则稀疏点云PS作为输入训练SDet。同时,本文冻结DDet的权重,采用MSE损失来减小DDet和SDet之间的特征差异($F_a^D$和$F_a^S$)。
- (3)S2D模块生成密集特征:MSE损失本身不足以监督SDet有效模拟DDet等密集3D特征。为了弥补MSE损失,进一步设计了S2D模块来学习潜在空间中物体的密集三维特征。该方法将高密度目标点云$P^D$的目标区域P_O^D输入到DDet中,提取高密度目标特征$F_b^D$;在此基础上,进一步利用S2D增强的特征$F_b^S$模拟密度物体特征$F_b^D$。
- (4)点云重建(PCR)模块特征增强:进一步采用PCR模块提升S2D模块,模拟出密度更高的3D特征;PCR作为辅助任务,从S2D模块中提取特征,预测体素掩码和点偏移量,重构体素级密集目标点云$P_O^D$。
图2:本文提出的Sparse2Dense的总体框架。本文的框架包含两个训练阶段:(a)在第一阶段,以密集点云为输入(暗箭头)训练密集点3D检测器(DDet);(b)在第二阶段,使用稀疏点3D检测器(SDet)的密集特征作为监督信号(灰色和粉色箭头)来训练稀疏点3D检测器(SDet)。在测试中,只需要SDet对原始点云输入(粉色箭头)进行3D目标检测,而不需要DDet和点云重建模块。
稠密物体生成
为了准备密集的点云来训练DDet网络,本文设计了一个离线预处理管道来处理原始点云序列,每个点云序列大约有198帧(见图3 (a)):
- (1)首先,对于每个带注释的对象,本文从多个帧融合其边界框内的点,然后使用Open3D[46]中的半径离群点去除算法过滤出离群点,如图3 (b)所示。
- (2)为了保持lidar扫描的线模式并减少点数,本文对融合的对象点进行体素化,得到粒度为0.1m、0.1m、0.15m的体素网格(见图3 ©),这与点云体素化的大小相同。具体来说,按照对象点数量的降序对帧进行排序,如图3 (a)所示。然后,从排序帧的开始用对象点填充体素网格,直到超过95%的体素被填充(参见图3 (d))。注意,当体素中的点数达到5个或该体素已被前一帧填充到已获得足够的点用于训练时,本文停止填充单个体素。
- (3)对于车辆类别,其形状通常是对称的,故翻转并复制每个物体的轴向面密度较高的一面,以进一步提高其密度(参见图3 (e))。
使用S2D模块进行稠密特征蒸馏
为了将密集的点知识从DDet转移到SDet,一个简单的解决方案是将DDet和SDet中的相关特征配对,并最小化每对特征之间的距离,使MSE损失最小。然而,由于DDet和SDet的输入差异很大,特别是对于远离LiDAR传感器的物体,MSE损失本身很难实现令人满意的特征转移。此外,通过VoxelNet构建的骨干结构[16,1]由SPConv组成,它只处理非空体素。因此,它不能在空体素上生成特征。
为了更好地增强三维特征的密度,本文构建了S2D模块,该模块以SDet的骨干特征为输入,学习输出稠密的特征用于三维目标检测。图4显示了它的架构,本文首先投影稀疏的3D特征,得到BEV特征$F_c^S$,这样本文就可以在BEV空间中进行高效的二维卷积运算。然后,本文使用步幅为2的卷积层对特征映射进行下采样到输入稀疏特征的1/4大小。受[47]中卷积块高效设计的启发,本文嵌入了三个ConvNeXt[47]残块来聚合对象信息。每个块包含一个7 × 7的深度卷积,然后进行层归一化,使用GELU进行1 × 1的卷积,以及1 × 1的卷积。如图4右侧所示,第一个1 × 1的卷积将特征通道数量从256增加到1024,第二个1 × 1的卷积将通道数量减少到256。接下来,本文通过2D转置转换对特征进行上采样,并将结果与之前的特征连接起来。然后,将拼接后的特征输入到一个3 × 3的卷积层,并对特征进行上采样,得到最终的致密化特征$F_b^S$。注意,除ConvNeXt块中的卷积层外,每个conv后面都有一个批处理归一化和一个GELU非线性操作。本文将$F_b^S$和$F_c^S$进行融合,将它们分别放入一个1 × 1的conv层中,并将它们相加作为最终的输出特征$F_a^S$,如图2所示。
图三 密集目标生成管道。注意,本文使用带注释的3D边界框从多个帧中提取点,然后在体素网格的帮助下将点融合在一起。
图四 左:S2D模块的架构。右:ConvNeXt块[47]。
为了训练S2D模块,本文考虑了两种监督方式。第一个是在DDet网络的高层特征上,其中$F_a^D$和$F_b^D$分别是在有背景信息和没有背景信息的密集点云上获得的特征。本文将$F_a^S$和$F_a^D$之间以及$F_b^D$和$F_b^S$之间的特征差异最小化。第二个监督来自下一小节将要介绍的点重建模块。
点云重建模块
为了鼓励S2D模块生成高质量的密集三维特征,本文进一步设计了带有辅助任务的点云重建(PCR)模块。简而言之,PCR模块从特征$F_b^S$重构出体素级的密集目标点云$P_O^D$,即S2D模块的输出。然而,直接重建大规模密集的目标点[15]具有极大的挑战性。因此,本文提出了一种体素级重构方案,只预测每个非空体素中输入点的平均值。具体来说,本文将该任务解耦为两个子任务:首先预测一个软体素占用掩码,指示体素非空的概率;进一步预测每个非空体素的点偏移量$P_{offset}$,即从体素中心$V_c$到该体素的平均输入点的偏移量。
图5显示了PCR模块的体系结构。首先将致密特征$F_b^S$投影回三维视图,并将其输入到两个三维卷积层和一个转置三维卷积层,使其升级到原始输入的1/4比例。然后,利用一个具有sigmoid函数的1 × 1三维卷积预测体素占用掩码$V_{mask}$,利用一个1 × 1三维卷积预测f集的点偏移$P_{offset}$。接下来,本文重复同样的步骤,进一步在1/2尺寸下预测体素掩码$V_{mask}$和点偏移量$P_{offset}$。然后,将重构点P_c预测为
$P_c=(P_{offset}+V_c)×V_{mask}$
优化$P_c$后重构体素化稠密目标点云$P_O^D$。
训练中的loss
本文的Sparse2Dense框架分两个阶段进行训练。首先,本文用以下损失来训练DDet:
$L_{DDet}=L_{reg}+L_{hm/cls}$
其中,本文采用L1 Loss作为回归损失,同[16,1,17];heatmap损失是center-based的方法的focal loss[48]的变体[1,17];分类损失L_cls是anchor-based[16]的focal loss。在这里,$L_{hm/cls}$意味着本文使用$L_{hm}$或$L_{cls}$,这取决于本文采用框架的哪种方法。其次,本文用以下总体损失函数来训练SDet:
$L_{SDet}=L_{reg}+L_{hm/cls}+L_{S2D}+L_{mask}+L_{offset}+L_{hm_dis}$
其中$L_{S2D}$用于优化S2D;$L_{mask}$和$L_{offset}$用于训练PCR;$L_{hm_{dis}}$和$L_{hm}$一样是蒸馏损失,但它的输入是SDet和DDet的预测热图。具体来说,$L_{S2D}$有助于优化SDet,学习基于DDet中的相关特征来致密化3D特征,它是一个带有掩码的MSE Loss,用来表示特征图中的空元素和非空元素:
本文设置β=10,γ=20来平衡非空特征和空特征的损失权重。$L_{mask}$和$L_{offset}$为PCR训练中的量:
其中$N_b$和$N_f$分别是背景和前景的体素;$p_j$和$y_j$是体素掩码的预测值和真值,j是$V_{mask}$的索引。还要注意,Eq.(3)只在采用本文的方法对center-based的方法[1,17]时才包含$L_{hm_{dis}}$。
实验
数据集和评价指标
本文使用Waymo开放数据集和Waymo域自适应数据集[18]来评估本文的框架,这两个数据集都在Waymo数据集许可协议之下。Waymo开源数据集是最大的、信息量最大的3d目标检测数据集,包括360◦的lidar点云和3d bounding boxes的标注。训练集包含798个序列,约158K个激光雷达帧,验证集包含202个序列,约40k个激光雷达帧。该数据集是在加利福尼亚州和亚利桑那州采集的。标记的对象类别包括车辆、行人和骑自行车的人。在本文的方法中,所有序列中的对象都用一个唯一的ID命名,这个ID可以用来生成密集的对象点云。此外,本文在Waymo域适应数据集上执行无监督域自适应,而无需重新训练本文的模型来显示本文方法的泛化能力。Waymo域适应数据集包含20个序列,3933帧用于评估。该数据集是在柯克兰捕获的,大多数帧是在雨天[15]捕获的,这意味着点云比Waymo Open dataset中的点云更稀疏,更不完整。标记的对象类别包括Waymo域适配数据集中的车辆和行人。在前人[1,4]的基础上,本文采用了按航向加权的平均精度(APH)和平均精度(AP)作为评价指标。
表一:Waymo开放数据集202个验证序列与现有工作比较。†表示由[28,4]产生的结果。* 表示[14]的结果。‡表示本文的结果。注意,本文的re-produced模型和大多数其他re-produced模型都是按照[28,4]的策略,在Waymo Open Dataset的20%数据上进行训练的。参见第4.2节实现的详细信息和第4.3节的比较。请注意,[30,29]只针对车辆类别进行训练,因此它们可以主要专注于学习车辆的特征,[15]针对车辆和行人类别进行训练,其他则针对所有三个类别进行训练。
实现细节
在[1]之后的第一个训练阶段,本文使用Adam从头开始训练DDet,学习率为0.003。本文将X、Y轴的检测范围设置为[- 75.2m, 75.2m], Z轴设置为[- 2m, 4m],每个体素网格的大小为(0.1m, 0.1m, 0.15m)。本文应用了绕z轴的全局旋转、随机翻转、全局缩放和全局平移作为数据增强。本文在4个Nvidia RTX 3090 GPU上训练DDet,每个GPU的batch size=4,共30个epoch。
在第二训练阶段,本文采用DDet的权值初始化SDet,然后采用与第一阶段相同的超参数优化SDet, DDet被冻结。按照[4,14,30],本文采用20%的Waymo Open Dataset子集来训练本文的模型。注意,本文通过遵循[1]为基于centerpoint的基线[1,17]采用第二阶段。
和waymo数据集上的sota方法相比
本文将本文的方法与多个最先进的3D目标检测器[28,4,30,29,15 - 17,1]在三个类别上进行比较,即行人、车辆和骑自行车的人,并在两个难度级别上进行比较,即一级(L1)和二级(L2)。注意,本文的方法是一个即插即用模块,可以很容易地用于各种基于深度学习的3D对象检测器。本文通过从他们的论文和GitHub[28,4,14,30,29,15]中复制现有工作的结果,或者通过使用带有推荐参数的公共代码[1,16]复现他们的方法来获得现有工作的结果。在现有的工作中,[15,14]是最先进的方法,它明确地在点云中采用密集运算,并可用于其他方法。
表1展示比较结果,其中本文的方法在所有评估指标的所有类别上明显改进了所有三种基线方法(SECOND、PointPillar -center和CenterPoint)。此外,表2显示了Waymo验证集上三个不同距离范围的性能增益。本文的方法也在所有距离范围(包括远程)的所有三种baseline上取得了显著的改进,再次表明本文的方法可以在具有挑战性的情况下有效地学习稠密化的3D特征。
表2 在不同的范围内,Waymo验证集(level-2)的性能增益超过baseline方法。
表3:20个验证序列的Waymo域适配数据集与现有成果的比较。本文的模型和其他大部分模型都是在Waymo Open Dataset的20%数据上按照[28]策略进行训练的;详情见第4.2节。[15]按照两类进行训练(车辆和行人),而本文进行所有三类的训练。
Waymo域适应数据集的定量比较
本文进一步在Waymo域适应数据集上评估本文的方法,并将其与最先进的方法进行比较。表3显示,对于所有类别和所有难度级别,本文的方法能够一致地提高所有三种方法[16,17,1]的性能。注意最新的最先进的方法SPG[15]只在车辆和行人类别上进行训练,但本文的方法即使在三个类别上进行训练也能取得更好的性能。
讨论和结论
本文提出了一种新的Sparse2Dense框架,该框架学习对3D特征进行致密化,以提高3D对象检测性能。本文的关键思想是学习将稠密的点知识从训练过的密点三维检测器(DDet)转移到稀疏点三维检测器(SDet),这样SDet就可以学习对潜在空间中的三维特征进行稠密化。经过训练的SDet只需要SDet的核心组件对规则点云中的三维物体进行检测,就可以在不降低速度的前提下提高检测精度。进一步,为了增强密集点知识的传递,本文设计了S2D模块和SDet中的点云重建模块来增强稀疏特征。最后,本文将本文的框架应用于各种3D检测器,表明它们的性能都可以在多个基准数据集上得到一致的提高。未来,本文将把本文的框架应用到更多需要密集特征的点云应用中,如3D分割和对象跟踪,以提高它们的性能同时保持较高的计算效率。
图6:(a,b,c)基线[16,17,1]和(d,e,f)本文的方法(本文的方法+对应的baseline)产生的三维物体检测结果与三维特征的可视化对比,本文的方法成功地致密化了物体特征,产生比三个baseline更准确的检测结果。注意,红框显示检测结果,绿框显示地面gt。橙色框强调了本文的方法所带来的改进。
局限性:首先,点云序列中远离激光雷达传感器的物体只包含几个点。利用DDet对这些物体进行高密度特征提取仍是一项困难的工作。其次,本文的框架的训练时间比传统的训练要长,因为本文需要多阶段的训练来对DDet进行预训练,然后将知识从预培训的DDet转移到SDet。第三,本文在Waymo Open Dataset上训练的模型需要包含特定点特征的输入,这限制了本文的模型在不同数据集(如KITTI)上的评估。本文将在未来的工作中探索去除特定的点特征,使模型更通用。
社会影响:该框架可以为自动驾驶汽车提供更好的三维目标检测性能。但与现有的大多数3D探测器一样,由于数据有限,在某些边缘情况下可能会产生误差,因此还需要进一步研究提高其鲁棒性。
参考
[1] Sparse2Dense: Learning to Densify 3D Features for 3D Object Detection