点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
今天自动驾驶之心为大家分享一篇最新的占用网络算法:OccupancyDETR,使占用网络与目标检测一样直接!为实时3D语义场景完成提供了一个有前景的解决方案。文章论文一作作者已经授权自动驾驶之心原创,如果需要转载,请在文末联系!
论文链接:https://arxiv.org/pdf/2309.08504.pdf
代码链接:https://github.com/jypjypjypjyp/OccupancyDETR
基于视觉的3D语义占用感知(也称为3D语义场景完成)是自动驾驶等机器人应用的一种新的感知范式。与BEV感知相比,它扩展了垂直维度,显著增强了机器人理解周围环境的能力。然而,正是由于这个原因,当前3D语义占用感知方法的计算需求通常超过BEV感知方法和2D感知方法。我们提出了一种新的3D语义占用感知方法OccupancyDETR,该方法由类似DETR的目标检测模块和3D占用解码器模块组成。目标检测的集成在结构上简化了我们的方法——它不是预测每个体素的语义,而是识别场景中的目标及其各自的3D占用网格。这加快了我们的方法,减少了所需的资源,并利用了目标检测算法,使其在小目标上具有显著的性能。在SemanticKITTI数据集上证明了本文提出方法的有效性,展示了23%mIoU和每秒6帧的处理速度,从而为实时3D语义场景完成提供了一个有前景的解决方案!
当前的一些主流方案
3D语义感知是机器人的一项基本能力。目前流行的方法采用了涉及激光雷达和相机的多传感器融合,然而,这种方法引起了诸如高成本和缺乏可移植性等问题。近年来,人们对基于纯视觉的3D语义感知方案产生了越来越大的兴趣,因为它们在不影响性能的情况下成本相对较低。最初,引入了BEV感知,显著增强了自动驾驶场景中的感知能力。随后,出现了3D语义占用感知,将BEV感知扩展了垂直维度,从而在各种场景中提供了更广泛的适用性。为此,我们专注于基于视觉的三维语义占用感知,目标是为这项任务开发一种更直接、更有效的方法。
科学家们在对人类视觉感知的研究中注意到,在高级视觉处理中,倾向于优先考虑场景中的一些前景目标,同时参考未被注意到的背景信息。受此启发,在3D语义占用感知中,我们模仿人类视觉感知的机制,引入了类似DETR的目标检测模块来指导3D语义占用网格的预测。我们使用检测到的目标边界框结果作为位置先验,并使用目标的隐藏特征作为上下文信息,然后利用空间transformer解码器来提取每个目标的3D占用网格。
这里提到的“目标”并不是精确地表示单个目标,而是表示具有相同语义的目标集群,例如一丛树或一组建筑。通过这种方式,3D语义占用感知的任务被分解为识别场景中的各种目标,然后提取它们各自的3D占用网格。从早期的YOLO到最近的Deformable DETR等方法,目标检测算法已经开发了多年,在复杂场景下取得了优异的性能。此外,它们的复杂度水平显著低于3D语义占用感知。我们希望通过集成成熟的目标检测算法来简化3D语义占用感知方法,旨在使3D语义占用认知与目标检测一样简单,并将这些任务统一在单个神经网络中。最后,在SemanticKITTI数据集上验证了提出的方法,证明了在较小目标上的卓越性能、更快的速度和更少的资源需求。
我们的主要贡献如下:
1)提出了一种新的3D语义占用预测方法,该方法结合了目标检测。这种方法简单高效,特别擅长处理小目标,并在SemanticKITTI数据集上取得了优异的性能;
2)针对Detrlike算法的慢收敛问题,提出了一种早期匹配预训练。这种预训练增强了训练的确定性并加速了融合;
3)设计了两种类型的3D占用解码器,一种使用带高程的BEV查询,另一种使用3D box查询。通过实验比较,检验了这两种方法在不同类别物体上的性能;
我们提出的方法
模型整体结构如图2所示,它由两部分组成:目标检测模块和3D占用解码器。对于输入图像,使用ResNet50主干来提取特征,然后将这些多尺度特征传递到可变形编码器中进行进一步编码。在第二步中,通过可变形的DETR解码器对固定数量的查询进行解码,然后将其传递到三个Head——分类Head、2D box Head和3D box Head。来自分类头和2D box Head的结果是目标检测中的常规结果,根据分类头的输出来选择高置信度的目标。在第三步骤中,这些高置信度目标的3D框用作3D占用解码器的每个目标的位置先验,从而提供位置嵌入。从可变形DETR解码器获得的特征用作上下文信息。随后,3D占用解码器基于可变形DETR编码器编码的多尺度特征来预测每个目标的3D占用网格。
1)目标检测模块
我们将目标检测引入到三维语义占用预测中,旨在简化和辅助三维语义占用的预测。因此,识别出的“目标”与传统目标检测中的“目标“不同。在生成注释数据时,首先根据距离从体素网格中对语义目标进行聚类,而不精确区分每个目标。然后将每个聚集的目标投影到2D图像上,并基于这些投影点计算2D bounding box,而且在投影过程中会考虑遮挡。我们防止完全遮挡的不可观察目标影响模型学习,因此将这些目标排除在外。然而,为了赋予模型场景补全功能,会保留部分遮挡的目标。
模型在两阶段可变形DETR的基础上进行了改进,如图3所示。作为第一种基于transformer的端到端方法,DETR由于独立于任何手动设计方法,被许多学者认为是目标检测的新方向。然而,DETR中不明确的查询和二分匹配带来的不确定性导致训练过程中收敛速度极慢。我们发现,在DETR的长期训练中,大多数时候,二分匹配仍然不稳定。将此归因于这样一个事实,即该模型必须经过大量的试验才能为整个数据集找到合适的查询,这占用了大部分训练时间。因此,在目标检测模块中,我们采用了两阶段可变形DETR,并为查询选择过程设计了早期匹配预训练。在常规训练阶段,从编码器输出的每个多尺度特征在查询选择过程中被分配一个预设的ROI。这些特征是通过分类Head计算的,并选择得分最高的前k个特征作为查询的上下文信息,其相应的ROI作为查询的位置。在通过可变形解码器之后,然后将它们与GT进行匹配。在早期匹配预训练中,预先设置的ROI和groundtruth之间的先前二分匹配确保了确定性,避免了搜索合适查询的漫长过程,从而加快了后续的常规训练。在目标检测的最后阶段,由可变形detr解码器处理的查询已经具有模糊的3D空间信息。除了分类头和2D bounding box Head之外,我们还添加了一个额外的3D bounding box Head。这用于预测camera坐标系下目标的3D边界框。然后,根据相机的外参,将其转换到占用网格坐标系中,为后续的3D占用解码器提供位置先验。
2)3D Occupancy Decoder
在目标检测阶段之后,选择高置信度结果,并且将它们的特征连同占用网格坐标系中预测的3D框一起传送到3D占用解码器模块中。考虑到我们并不完全相信3D box的预测结果,适度地放大了所有的3D box。如图4所示,采用了两种查询构建模式。在具有高程模式的BEV查询中,在该三维长方体的中间层均匀采样32×32个点。另一方面,在3D长方体查询模式中,在整个3D长方体空间中均匀采样16×16×4个点。这些点被称为三维参考点,当投影到2D图像上时,它们被称为2D参考点,这些三维参考点的位置嵌入与上下文结合用作三维查询!
3D占用解码器包括N层空间解码器层。每个空间解码器层由3D可变形的自注意和多尺度可变形的交叉注意构成,三维可变形自我注意的过程可以公式化如下:
最后,使用线性层将具有高程的BEV查询直接提升到三维占用网格中。或者,通过使用与3D卷积相结合的上采样,将3D Box Queries扩展到相同大小的3D占用网格!
3)训练策略
整个训练过程分为四个步骤。尽管有多个阶段,但始终有相同的注标注数据,这使得过程不会过于复杂。第一步涉及通过早期匹配进行预训练,以加速两阶段可变形detr的收敛。第二步涉及对两阶段可变形detr的定期训练,从而产生训练有素的目标检测模型。在第三步中,冻结目标检测模型的权重,并利用其结果来训练3D占用解码器。在第四步也是最后一步中,不再冻结目标检测模型的权重,并使用较小的学习率对整个模型进行微调。
损失函数如下:
实验对比
1)实验数据集和设置
SemanticKITTI数据集建立在KITTI Odometry数据集基础上,强调使用激光雷达点和前向相机对场景的语义理解。OccupancyDETR作为单目3D语义占用感知,仅使用左前视图相机作为输入。在该数据集中,注释的语义占用表示为形状为256×256×32的体素网格。每个体素的尺寸为0.2m×0.2m×0.2m,并带有21个语义类别的标签(19个语义,1个自由,1个未知)。考虑到该数据集的语义体素网格是由多帧拼接的激光雷达点云和图像生成的,在远处或遮挡区域存在间隙,这种情况阻碍了目标的聚类和提取。因此,通过插值来填补语义体素网格中这些缺失的单元,从而纠正了这个问题,目标提取后获得的数据集的2D和3D标签如图6所示。
模型训练是在Nvidia RTX 3090 GPU(24G)上进行的,而评估是在Nvidia RTX3080 GPU(16G)上进行的。训练过程跨越四个阶段,分别为50个epoch、10个epoch、50个epoch和10个epoch。每个阶段的初始学习率分别设置为1e-4、2e-5、1e-4和2e-5,然后线性地减小到零,采用权重衰减为0.01的AdamW作为优化器。ResNet50主干使用timm提供的预训练模型进行初始化,我们的实验目标是验证这个新框架的可行性和特点;因此,这里不使用任何数据扩充!
2)实验结果
如表I所示,语义场景补全(SSC)任务的mIoU对比一览:
这里将本文的方法与其它单目3D语义占用感知方法进行了比较,并对结果进行了分析。可以看出,我们的方法在小目标上明显优于其他方法,这归因于目标检测任务;然而,在道路和人行道等类别中,我们的方法落后于其他方法,对此我们进行了进一步的分析。分析的代表性案例如图5所示。
①展示了我们的方法在小目标类别上的性能,它可以检测到远处的自行车手。②以及③揭示表现不佳的原因,我们在“道路”和“人行道”类别上的方法。我们认为这是由于我们的方法首先检测目标,然后预测每个目标的3D占用网格。然而,提取关于3D空间中不同目标之间关系的特征的能力相对较弱,这导致了模型可以基于图像直接检测附近的十字路口,但无法基于其他3D目标间接完成远处的十字路口的现象!
尽管如此,我们的方法在速度和资源需求方面的优势是显著的,推理时间和参数计数如表II所示。我们的方法平均推理时间为174ms(在Nvidia RTX 3080上),这已经实现实时性能。接下来,将BEV查询的两种模式:高程和3D box查询进行比较。发现对于大多数类别,具有高程模式的BEV查询表现更好,尤其是在道路、人行道、terrain和植被四类中,这四类查询存在显著差异。考虑到这四个类别在该数据集中通常是平坦的,它们更适合于具有高程模式的BEV查询。这说明了对于具有不同形状的目标,这两种模式之间的显著性能差异。
为了验证早期匹配预训练对类似DETR的目标检测模型的积极影响,我们在相同的实验条件下对DINO和两阶段可变形DETR进行了比较研究。在我们的实验中,将初始学习率设置为1e-4,并在100个epoch内将其线性降低至零。图7显示了训练过程中验证集上三种方法的mAP曲线,表明早期匹配预训练可以更快地收敛。此外,我们还分析了DINO的性能,这是一种基于两阶段可变形DETR的方法。DINO提出了一些改进来加速收敛,其中之一是混合查询选择。这个过程包括使用可学习嵌入作为静态内容查询,同时通过查询选择选择锚点作为动态锚点。然而,静态内容查询和动态锚点的顺序之间存在错位问题,我们假设这种差异是DINO的表现没有达到预期的原因。
参考
[1] OccupancyDETR: Making Semantic Scene Completion as Straightforward as Object Detection.
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,如果您希望分享到自动驾驶之心平台,欢迎联系我们!
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
视频官网:www.zdjszx.com② 国内首个自动驾驶学习社区
近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】平台矩阵,欢迎联系我们!