最新开源!SimpleOccupancy:3D占用估计的一种简单尝试

作者 | ZZZzz  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/625016558

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【占用网络】技术交流群

后台回复【OccupancyNetwork】获取Occupancy Network相关论文干货资料!

Abstract

从周视图像中估计3D占用率这一任务仍缺乏基线,如网络设计、优化和评估。在这项工作中,我们提出了一个简单的三维占用估计的尝试,这是一个基于CNN的框架,去揭示三维占位估计的几个关键因素。

此外,我们还探讨了三维占用估计与其他相关任务之间的关系,如单目深度估计、立体匹配和BEV感知(三维物体检测和地图分割),这可以推动三维占用估计的研究。

在评估方面, 我们提出了一个简单的抽样策略来定义占用率评估的指标,这对目前的公共数据集来说是灵活的。此外, 我们在深度估计 指标方面建立了一个新的基准,我们在DDAD和Nuscenes数据集上将我们提出的方法与单目深度估计方法进行了比较。

1. Introduction

作为这一领域的初步尝试,我们从网络设计、优化和评估等方面对基线进行了研究。在网络设计方面, 如图1所示,三维占用估计的最终输出表示与单目深度估计和立体匹配不同。三维占用估计的网络结构类似于立体匹配,这意味着立体匹配任务的经验可以适应于占位估计,以减少网络设计的负担。因此,我们设计的 pipeline 与立体匹配非常相似,并研究了一个基于CNN的框架作为基线。

9761bbfecbc9757253993e7b1f6bdc73.png

在优化方面,我们研究了两种训练方式,包括 rendering-based [29]和classification-based 的损失函数 。为了评估,我们在两个著名的数据集上进行了实验 ,DDAD和Nuscenes[14,3],用于更广泛的识别。此外 ,由于这两个数据集缺乏密集的三维占有率标签、我们提出了一个新的基于距离的占用率评估指标,其灵感来自于体渲染 (volume rendering) 中的采样策略[29]。我们的实验结果表明,与分类指标等其他选择相比,所提出的指标更加公平。此外,所提出的度量标准具有灵活性, 因为它只依赖于点云作为真值,从而消除了在类似数据集上实施度量标准时的任何额外负担。

综上所述,这项工作的主要贡献如下。

  • 我们的研究介绍了一种新颖的网络设计、损失设计和性能评估,首次研究了周视视角的三维占用率估计。

  • 为了评估我们提出的框架,我们为DDAD和 Nuscenes数据集建立了一个占用率指标,并证明了所提出的指标在三维占用率评估中的效果。此外,我们还将三维占用率评估与单一的深度评估任务联系起来,并为DDAD和Nuscenes数据集建立了一个基于深度评估指标的新排名基准。

  • 通过广泛的定性和定量实验,我们证明了我们所提出的方法的有效性,它是一个通用的解决方案, 可以利用现有的数据集来进行三维占位估计和评估,就像深度估计一样简单。

2. Related Work

2.1. Depth estimation

对于单目深度估计,它通常是用一个二维U-Net结构来实现的,如图1所示。

cc284e85b9c540ec5fefd4eb9e9831cb.png

在立体匹配方面,我们可以通过估计立体图像之间的差异来获得真实比例的深度图。最先进的方法通常使用三维卷积神经网络(CNN)来做 cost aggregation [7,6,40,5,11]。同样地,我们也使用了三维CNN来进行 3D volume aggregation以获得最终的占用率。

2.2. BEV perception

我们发现,鸟瞰图的感知任务与三维占用率估计都有一个共同的步骤。两者都需要特征空间转换,其中 BEV 感知任务是从图像空间到BEV平面[26],而3D占用率估计是从图像空间到3D体积空间。

LSS[31]通过学习潜在的深度分布将图像特征隐含地投射到三维空间。DETR3D[38]和BEVFormer[23]在三维空间中定义了一个三维查询(3D query),并使用 transformer attention 机制来查询二维图像特征。ImVoxelNet[36]和Simple-BEV[16]通过对二维图像特征平面的投影位置进行双线性插值来建立三维体积,这是一种高效且无参数的unprojection方式。因此,在 这个基线工作中,为了简单起见,我们采用与SimpleBEV相同的 parameter-free unprojection 方式来建立三维体积。

注:parameter-free unprojection

参考于:A Simple Baseline for BEV Perception Without LiDAR 在各种对象和场景表示模型中都采用了这种策略,它使用相机几何来定义体素与其投影坐标之间的映射,并在投影坐标处通过双线性采样来收集特征。这将每个图像特征放入多个3D坐标中,本质上是沿着射线在体积中的范围平铺特征。这种提升方法通常不用于鸟瞰语义任务。

2.3. Occupancy estimation

和 TPVFormer 的区别:我们从新的优化方式和新的评价指标来研究纯几何估计(不考虑语义信息)。我们的研究调查的是一个更基本的三维感知任务,就像深度估计一样。

3. Method

3.1. Preliminaries

在本文中,我们采用体渲染( volume rendering )来获得深度图以进行模型训练。关于体渲染,可参考:

NeRF入门之体渲染 (Volume Rendering) https://zhuanlan.zhihu.com/p/595117334

我们将渲染函数定义为:

91a82f6bee6547fddc2d8be72665eb20.png

其中 是渲染了的 RGB 值;

51e18021f74230c0ce0cd24feb7d8ff6.png

是相邻采样点的距离,i是沿射线的采样点,W是采样点的数量。

如果我们想获得相关像素的深度信息,我们可以将 方程(1)中的RGB值替换为方程(2)中的采样点的距离ti 。这样一来,我们就可以使用真值的深度图来进行监督训练了。

49505fe176ef0aa84460ffe009e6cbf3.png

NeRF的模型通过多视点学习几何,而在我们的设定中,几何是由CNN模型实现的图像,如下文介绍。

3.2. Model design (SimpleOccupancy)

我们设计了一个端到端的神经网络Q来预测三维占用图:

279ad7558667e712fe01d254fe2fa22c.png

其中n是周视图像的数量,x, y, z代表体素最终输出的分辨率。

d9cf3ce9c315aa065639c20e6d0b90ef.png

给到图像,我们首先通过共享的二维CNN提取图像特征,然后使用无参数插值(parameter-free interpolation)获得三维体。在位置先验指导下,3D CNN可以有效地聚合体空间中的3D特征(章节3.2)。最后,我们通过渲染深度图上的深度图损失或基于占用标签的分类损失来训练所提出的网络(第3.3节和3.4节)。

细节如下:

Encoder

对于图像特征提取,我们使用ResNet[17]作为backbone。

最后的特征图形状 C×H/4×W/4,其中H和W是图像的输入分辨率,C=64是通道数。

From the image feature to 3D volume

对于BEV感知和三维占用率 估计,一个关键步骤是将图像特征从二维图像空间转换到三维体积空间。在这个基线工作中,我们采用了 Simple-BEV[16]中使用的最简单的方式。通过双线性插值进行的无参数转换没有任何位置先验,这意味着 rays of the frustum 上的特征是相同的。因此,从周围的图像中推断出只有少量重叠的三维几何图形是一个非常不理想的设置。

3D volume space learning

对于三维特征的学习, 我们在立体匹配任务中采用了基于HybridNet[11]的沙漏 hourglass 结构的三维卷积网络。基于 transformer 的方法[22,18,10] 使用位置编码(position encoding)来查询图像空间中的特征。

不同的是, 在获得三维体积后,我们进一步学习位置嵌入(position embedding)来指导三维特征的聚合。学习到的位置嵌入与获得的三维体积进行点级的相乘(point-wise multiplication)。详细的网络结构被放在补充材料中。

Occupancy probability

经过三维体积空间特征的聚合,我们得到了最终的体素 。

占用概率值来自Sigmoid函数:Probability = Sigmoid(σ)

3.3. Model evaluation

我们列出了评估时应考虑的以下关键因素和事实:

(1) 目前可用的以点云作为真值的室外数据集是稀疏的,特别是对于远端空间。如果不进行大量的人工标注,我们就无法获得像 semantickitti中那样密集的体素标签。因此,我们无法评估整个体素空间,只能在已知空间上做评估。

(2) 关于已知空间,我们只能确定激光雷达中心和点云之间的空间。

(3) 三维占用和体素表示是一种离散表示,这意味着量化误差是不可避 免的,但我们可以确定自主驾驶情景下可承受的量化误差。

(4)评估应该是可行的,并且容易进行研究的。我们这项工作的目标是探索一个pipeline,可以利用现有的用于深度估计的数据集来进行三维占用估计和评估 。因此,鉴于上述考虑,我们在本研究中考察了两个 评价指标:分类指标和离散深度指标。这些指标也与消融研究中的两种训练方式有关,如图3所示。

4d9048c1e5f0710ac4e68a94961edb29.png

我们用一个关键点的集合来表示三维空间,并根据样本 点进行评估。分类标签显示在上侧,而下侧则在两个不同的预测案例中比较了两个指标--分类指标和我们新提出的离散深度指标。很明显,离散深度指标准确地反映了与每个预测相关的成本。

Occupancy label generation

受NeRF[29]的启发,我们使用分层采样策略来设置 free space 的标签。首先,我们将激光雷达的位置设定为所有点云的所有射线的原点。与匀速采样不同,我们使用固定数量的采样点(30),这意味着,对于较近的点云,采样空间比较密集,而对于远端点云,采样空间比较稀疏。所用的取样策略的优点是,它可以使正负标签的分布更加均衡,并对驾驶场景中较近的物体保持较高的标准

占用的空间由下采样的点云表示,设置向下采样尺寸为0.4米。上述操作可以用 Open3D[42]库轻松完成。

Classification metric

通过用一组关键点来表示已知的空间,我们可以用二元分类指标进行评估,作为分类任务,如图3所示。

20ad0186526db06074211766d0d4f6c6.png

然而,我们观察到,分类指标并不是完全正确的,因为它们在我们的环境中只能评估已知的空间。我们在图3中给出了两个沿射线评估的案例。

我们可以看到,分类度量对情况1不敏感。即使第一个预测的占用点离真值占用点(激光雷达点)很远,分类指标仍然给出了高分。反之,在情况2,如果网络无法预测第一次出现的在已知的空间中,除了Accuracy 外,所有的指标都会得到一个很低的分数。

如果第一个预测的占用点是在实际占用点旁边,这是不公平的。

Discrete depth metric

认识到分类度量的局限性,我们引入了离散深度度量,它提供了更准确的预测评估。

我们的方法包括沿射线密集采样评估点,间隔为0.2 m,最大距离为52 m。如果沿射线的所有预测都是空的,我们将最后一个点设置为第一个预测占用点。然后将离散深度误差计算为沿射线的第一个预测占用点与点云之间的距离。通过利用这个标准,我们可以以类似于深度图误差评估的方式执行评估。根据深度估计[39],我们报告使用以下指标的占用评估,包括误差指标,(Abs Rel, Sq Rel, RMSE, RMSE log) 和 accuracy。

详见附录。

3.4. Model optimization

我们研究了两种不同的训练方式。第一种是深度损失,由体积渲染监督深度图。另一种是直接计算基于已知空间中获得的标签的二元分类损失,我们考虑的是二元交叉熵损失和L1损失。

Depth loss

5de59f949adcc1bd1f4be4bbd1f49190.png

Classification loss

3484575823e05d3632de5627ea04aa81.png

此外,我们还研究了在采样点上直接使用L1损失的方法,如下所示。

4090ce3de18d1a6249b8a21b494b78d4.png

其中pi 是基于点云位置的概率值,而pj 是来自empty space中采样点的概率值。N是有效点云的数量,K是empty space中采样点的数量。ω=5是平衡占用和空标签的超参数,搜索范围为1到10.0。

4. Experiment

我们的实验由两部分组成

首先,我们进行了一个对提出的框架进行详细的消融研究,以探讨损失函数和网络设计的特点。其次,由于我们可以通过体积渲染获得深度图,我们通过将我们的结果与监督环境下的单目深度估计方法进行比较,建立了一个深度评估的基准。

4.1. Datasets

DDAD:

训练集:12650,验证集:3950。范围至 52m。

与Nuscenes数据集相比,DDAD数据集的点云更密集。

Nuscenes:

训练集:20096,验证集:6019。范围至 52m。

对于上述两个数据集,我们从原始点云中生成占用和empty space的标签,并使用投影深度图进行训练和测试 。具体来说,我们首先将Z、Y和X分别定义为深度、高度和宽度。

有效的点云范围被设定为Z∈ (-52m, 52m), Y∈(0m, 6m), 和X∈(-52m, 52m)。

最终的体素分辨率为256×256×16 ,网格的分辨率大小为(0.41m, 0.41m, 0.38m)。

最后,我们从0到1的搜索范围内设定了获得离散深度指标得分的最佳阈值,其间隔为0.05。

4.2. Implementation detail

在把它们放入神经网络之前,我们把RGB图像的大小重新调整为336×672。深度图被渲染成224×352的大小.

4.3. The ablation study for the proposed framework

0aeddbe5d9942039589f413d91f88390.png 28b59128c52d73fbbc5dde96e87fc99c.png cbe61c7e1edaf8a6852985dba136d3b2.png 5e7413f87a49b7fa0c6f5a11c46075c6.png

用单目深度估计方法实现深度图度量的benchmark。

5. Limitation and future work

在这个简单的三维占用率估计的尝试中,我们没有像[10]和BEV感知任务[23,25]那样引入序列信息。通过融合序列信息来提高性能是一个很有前途的方向。

此外,由于计算资源有限,目前的体素分辨率为0.4米,是研究的一个良好开端。在未来,我们将探索更高的分辨率,如0.2米[4]。此外,如图4所示, 分类损失通常比深度损失产生更清晰的边界,但对于飘浮问题,我们将研究这两种训练方式的结合, 以看到其优势。

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

a5d632d8c938ef25ae38d60ee757a1a7.png

(扫码学习最新视频)

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

ef873f8583a439d0ef211978b575dd98.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

fec449d1b50b4b3a5ad2884857c58382.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值