【光流】自动驾驶光流任务 DeFlow: Decoder of Scene Flow Network in Autonomous Driving

paper: https://arxiv.org/abs/2401.16122

code: https://github.com/KTH-RPL/DeFlow

摘要

场景流估计通过预测场景中点的运动来确定场景的3D运动场,尤其在辅助自动驾驶任务方面具有重要意义。许多以大规模点云为输入的网络采用体素化方法生成伪图像,以实现实时运行。然而,体素化过程往往导致点级特征丢失,从而给场景流任务中的特征恢复带来挑战。

本文提出DeFlow方法,利用门控循环单元(GRU)精炼模块,实现从体素化特征到点级特征的转换。为进一步增强场景流估计性能,我们设计了一种新型损失函数,以处理静态点与动态点之间的数据不平衡问题。

在Argoverse 2场景流任务上的评估结果表明,DeFlow在大规模点云数据上达到了最先进水平,表明我们的网络相较于其他方法具有更优的性能与效率。代码已开源,地址为:https://github.com/KTH-RPL/deflow。

1. Introduction

在实时条件下处理并估算大型全量点云数据集的场景流,FastFlow3D 9 成为一种切实可行的解决方案。实现实时要求的关键策略之一是体素化(voxelization)。体素化是一种流行的点云处理技术,尤其常用于检测任务 151617。然而,检测任务与场景流任务之间存在显著差异:后者需要逐点级的结果基于体素化的方法往往忽视了解码器设计在场景流任务中的重要性,导致其无法区分同一物元(voxel)内各点之间的特征差异。这是因为给定物元内的所有点都从卷积网络继承相同的特征。

为应对上述挑战,我们提出了 DeFlow,该方法通过门控循环单元(GRU)细化模块重建同一物元内各点的不同特征,从而显著提升了最终结果。我们在 Argoverse 2 场景流任务上评估了所提方法,在仅使用 10 万帧标注数据集进行训练的情况下,于在线排行榜上取得了最先进的(state-of-the-art)结果。一个示例如图 1 所示。我们的方法已开源,代码地址为 https://github.com/KTH-RPL/deflow。总之,我们的主要贡献包括:

  • 引入一种全新的实时网络架构,在解码器设计中将 GRU 与迭代细化相结合,有效实现了从物元特征到点特征的转换。
  • 提出一种新的损失函数,专门针对静态与动态点数据分布不平衡的问题进行优化。
  • 在大规模点云数据集 Argoverse 2 的在线排行榜上取得最先进的性能。

Vedula 等人 18 引入了场景流估计,旨在捕获场景的三维点运动场。这一概念源于二维光流估计,后者是一个经典课题,用于预测二维图像中的视运动模式。

现有的方法大致可分为基于优化基于学习两类。基于优化类别中一个突出的例子是 NSFP 12。该方法利用多层感知机(MLP)细化光流,并以 Chamfer 距离作为度量指标。此类方法通常不被归类为基于学习的方法,因为它们不会保存学到的权重以用于推断其他帧,而是采用 MLP 对每一帧进行优化。NSFP 显著的推理时间使其在实时应用中显得不切实际。

近年来出现的基于学习的三维方法 5, 4, 19, 20 可追溯至二维方法 21, 22, 23。光流领域的一项重要工作 RAFT 21 便是很好的代表。它通过循环单元迭代更新光流场,为像素对构建多尺度四维相关性体。在此基础上,PV-RAFT 5 和 DPV-RAFT 24 将其框架适配于三维点云数据。然而,由于内存溢出,这些方法在面对大规模点云时变得计算挑战性很大。该问题通常出现在距离矩阵 5, 24 或相关性矩阵 4 的构建过程中,这些矩阵随着点数增加呈指数级增长。

幸运的是,在其他点云相关任务(如检测 15, 16, 17 和分割 25, 26)中,存在一些针对处理大规模点云的编码器设计。Lang 等人 17 提出的 PointPillar 因其卓越的性能与高效率相结合而脱颖而出。该方法将点转换为体素,为卷积网络创建伪图像,其灵感来源于二维方法:光流估计的开山之作 CNN------FlowNet 27 采用了 U-Net 自编码器架构。在场景流任务中,FastFlow3D 9 是一个能够在大规模点云数据(8 万至 17.7 万个点)上实时运行的网络,它也使用 PointPillar 作为其编码器。然而,FastFlow3D 的解码器在区分同一体素内各点之间的特征方面表现不佳,这一局限性归因于 PointPillar 中的体素化过程。采用 PointPillar 方法可以提高效率

可将光流中开发的解码器设计适配至场景流任务。在光流任务中,先前使用的网络(如 PWC-Net 28)采用上下文网络以扩大输出的感受野,并通过空洞卷积 29 对光流进行细化。此外,IRR 30 提出了迭代残差细化方法,在无需扩大网络规模的情况下实现了更高的精度。Feihu 等人 31 利用门控循环单元(GRU)进行细化,通过多次迭代来估计光流。沿袭光流领域工作的思路,我们在方法中采用 GRU,以强调 3D 点场景流任务中体素特征向点特征转换的过程。

III. PROBLEM STATEMENT

本研究致力于解决自动驾驶中实时场景流估计的挑战。给定分别在时刻 t 和 t+1 捕获的两个连续输入点云 Pt 和 Pt+1,以及作为变换矩阵的自车运动 Tt,t+1,目标是为 Pt 中的每个点 p 预测运动向量(即流)ˆFt,t+1(p)=(x,y,z)TˆFt,t+1(p) = (x, y, z)^TˆFt,t+1(p)=(x,y,z)T。 已知我们传感器数据采集的频率为 10 Hz,因此将流解释为速度变得直截了当。总体目标是最小化终点误差(EPE),该误差表示预测流与真实流之间的差异,如下式所示:

门控循环单元

门控循环单元(GRU, Gated Recurrent Unit)的核心公式主要包含重置门(Reset Gate) 、**更新门(Update Gate)候选隐藏状态(Candidate Hidden State)**的计算。

设 ht−1h_{t-1}ht−1 为上一步的隐藏状态,xtx_txt 为当前时刻的输入,WWW 和 UUU 分别为输入权重矩阵和隐藏状态权重矩阵,bbb 为偏置向量,σ\sigmaσ 为 Sigmoid 激活函数。

以下是标准 GRU 的数学公式:

  1. 重置门 (Reset Gate) rtr_trt

    决定上一时刻的隐藏状态在多大程度上对当前候选隐藏状态有用。

    rt=σ(Wr⋅xt+Ur⋅ht−1+br) r_t = \sigma(W_r \cdot x_t + U_r \cdot h_{t-1} + b_r) rt=σ(Wr⋅xt+Ur⋅ht−1+br)

  2. 更新门 (Update Gate) ztz_tzt

    决定当前隐藏状态中有多少保留自上一时刻,有多少需要更新。

    zt=σ(Wz⋅xt+Uz⋅ht−1+bz) z_t = \sigma(W_z \cdot x_t + U_z \cdot h_{t-1} + b_z) zt=σ(Wz⋅xt+Uz⋅ht−1+bz)

  3. 候选隐藏状态 (Candidate Hidden State) h~t\tilde{h}_th~t

    计算新的候选记忆单元,这里使用了重置门 rtr_trt 来过滤掉不相关的历史信息。

    h~t=tanh⁡(Wh⋅xt+Uh⋅(rt⊙ht−1)+bh) \tilde{h}t = \tanh(W_h \cdot x_t + U_h \cdot (r_t \odot h{t-1}) + b_h) h~t=tanh(Wh⋅xt+Uh⋅(rt⊙ht−1)+bh)

    注:⊙\odot⊙ 表示逐元素乘积(Hadamard product)。

  4. 最终隐藏状态 (Hidden State) hth_tht

    根据更新门 ztz_tzt 线性插值上一时刻的状态和当前候选状态。

    ht=(1−zt)⊙ht−1+zt⊙h~t h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t ht=(1−zt)⊙ht−1+zt⊙h~t

总结:

  • rtr_trt 控制"遗忘"过去的程度(重置门越大,越忽略过去的状态)。
  • ztz_tzt 控制"记忆"过去的程度(更新门越大,越保留过去的状态;更新门越小,越倾向于使用新计算的候选状态)。
  • h~t\tilde{h}_th~t 是当前的新信息提议。
  • hth_tht 是最终输出到下一步的状态。

研究背景(DeFlow)中,GRU 被用于解码器部分,通过迭代细化,从体素化特征中提取更精细的点级特征,从而解决同一物元内特征混淆的问题。

IV. APPROACH

我们的方法建立在 Fast-Flow3D 9 的整体流水线基础之上,该方法专为大规模点云数据而设计。简而言之,该方法首先对点进行体素化(voxelization),并将其格式化为具有指定分辨率的鸟瞰图(bird-eye-view)网格特征。通过卷积层,网络能够高效地学习这些体素内的特征。

基于我们对 Argoverse 2 数据集的分析(如图 2 所示),我们观察到动态点在 0.05 米至 0.2 米的运动范围内密集分布。因此,分辨率的选择至关重要,如第五-B 节所示。然而,更高的分辨率也会导致计算需求的增加,使其难以在计算资源有限的设备上实际应用。如果选择较粗糙的分辨率,解码器的设计便变得至关重要,因为它需要区分同一体素内的点特征,从而获得与更高分辨率相当的结果。

在接下来的章节中,我们将按照图 3 所示概述我们的框架,并突出重点关注的领域及改进之处。

A. 输入与输出

利用大多数自动驾驶数据集 32, 11 提供的高精度(HD)地图,或部署如 33 所示的地面分割技术,我们可以轻松地从 PtP_tPt 和 Pt+1P_{t+1}Pt+1 中排除地面点。

从 PtP_tPt 到 Pt+1P_{t+1}Pt+1 的流动向量 F^\hat{F}F^ 分解为以下两部分:

F^=Fego+ΔF^,(2) \hat{F} = F_{ego} + \Delta \hat{F}, \quad (2) F^=Fego+ΔF^,(2)

其中,FegoF_{ego}Fego 是由自车运动产生的流动,可以直接从变换矩阵 Tt,t+1T_{t,t+1}Tt,t+1 中获得;而 ΔF^\Delta \hat{F}ΔF^ 则是我们网络的输出。

B. 编码器与骨干网络

对于点云光栅化,我们采用了 PointPillars 16, 17 中的动态体素化技术,以提高框架的效率。我们计算每个点到柱子中心(pillar center)的偏移量,以及点到其聚类坐标的聚类偏移量。体素化之后,通过线性变换聚合柱子内的所有点。

在将 PtP_tPt 和 Pt+1P_{t+1}Pt+1 编码为网格后,我们使用 2D 卷积 U-Net 骨干网络。两个网格均通过此共享权重的骨干网络进行处理。

C. 解码器

在 FastFlow3D 中,获取逐点流动(point-wise flow)的过程由"去柱化"(unpillar)操作协助完成。该操作对于每个点,检索相关联的流动嵌入网格单元,附加点特征,并使用多层感知机(MLP)推导流动向量。然而,正如之前所强调的那样,这种方法并不适合用于体素到点特征的重建。

如图 3 所示,在解码器操作之前,我们将 PtP_tPt 的柱子特征与 U-Net 特征的输出进行拼接, resulting in a format of Mvector∈RN×CM_{vector} \in R^{N \times C}Mvector∈RN×C。这里,NNN 表示 PtP_tPt 中的点数,CCC 表示拼接后的特征通道数。

我们观察到,简单地将同一体素中所有点共有的 CCC 个通道与专门用于点偏移的 3 个通道进行拼接,会导致不平衡。对于同一体素中的点,大部分通道是相同的。

解决这种不平衡的直观方案是将点偏移特征扩展以匹配维度 CCC。然而,这种修改反而使原始性能恶化,证明有必要进行专门的网络设计。

受到利用门控循环单元(GRU)31 的 2D 光流技术的启发,我们在图 3 的解码器中提出了一种用于 3D 场景流的替代方法。在此方法中,我们将 MvectorM_{vector}Mvector 指定为第一个隐藏状态,记为 H0H_0H0。通过线性层,我们扩展点偏移并将其设置为输入,表示为 xxx。这些组件之间的关系由以下公式捕捉:

Ht=Zt⊙Ht−1+(1−Zt)⊙H~t,(3) H_t = Z_t \odot H_{t-1} + (1 - Z_t) \odot \tilde{H}_t, \quad (3) Ht=Zt⊙Ht−1+(1−Zt)⊙H~t,(3)

其中,ZtZ_tZt 充当更新门。它接收 xxx 作为输入,随后通过一维卷积层进行处理,并使用 Sigmoid 激活函数。项 Ht−1H_{t-1}Ht−1 代表之前的隐藏状态。对于初始实例,H0H_0H0 被设置为 MvectorM_{vector}Mvector。H~t\tilde{H}_tH~t 代表候选隐藏状态,由重置门和模型权重确定。

为了在保持参数规模较小的前提下维持模型性能,我们在门控循环单元(GRU)层中采用了多次迭代策略。完成这些迭代后,将最新的隐藏状态 HtH_tHt 与点偏移特征进行拼接。该拼接后的特征随后通过多层感知机(MLP),最终生成如 Fig. 3 所示的增量流场 ΔF^\Delta \hat{F}ΔF^。我们在第 V-B 节中提供了详尽的消融实验,详细说明了我们解码器设计的细节及其性能表现。

D. 损失函数

自动驾驶场景中的场景流估计任务具有固有的挑战性,这主要归因于环境的动态特性。在激光雷达点云中,大量反射建筑物或道路等静态结构的点保持静止。这导致数据集中的标签存在不平衡问题,即背景静态点的数量远多于其他类型的点。为解决这一问题,损失函数引入了一种缩放函数 σ(p)\sigma(p)σ(p),以根据每个点的运动特性平衡其贡献:

L=1∥Pt∥∑p∈Ptσ(p)∥ΔF^(p)−ΔFgt(p)∥2,(4) L = \frac{1}{\|P_t\|} \sum_{p \in P_t} \sigma(p) \|\Delta \hat{F}(p) - \Delta F_{gt}(p)\|^2, \quad (4) L=∥Pt∥1p∈Pt∑σ(p)∥ΔF^(p)−ΔFgt(p)∥2,(4)

其中 ∥Pt∥\|P_t\|∥Pt∥ 表示 PtP_tPt 中的点数量。

FastFlow3D 9 在其实验中引入了一种基于前景和背景点区分度的缩放方法。两者的区别在于该点是否包含在任何跟踪对象的边界框内:

σ(p)t={1if p∈Foreground0.1if p∈Background(5) \sigma(p)_t = \begin{cases} 1 & \text{if } p \in \text{Foreground} \\ 0.1 & \text{if } p \in \text{Background} \end{cases} \quad (5) σ(p)t={10.1if p∈Foregroundif p∈Background(5)

随着自监督学习的兴起,由于缺乏区分前景和背景的标签,ZeroFlow 14 提出了一种替代的缩放函数。该函数基于点运动的速度(流场大小)进行缩放:

σ(p)s={0.1if s(p)<0.4 m/s1.0if s(p)>1.0 m/s1.8s(p)−0.8o.w.(6) \sigma(p)_s = \begin{cases} 0.1 & \text{if } s(p) < 0.4 \text{ m/s} \\ 1.0 & \text{if } s(p) > 1.0 \text{ m/s} \\ 1.8s(p) - 0.8 & \text{o.w.} \end{cases} \quad (6) σ(p)s=⎩ ⎨ ⎧0.11.01.8s(p)−0.8if s(p)<0.4 m/sif s(p)>1.0 m/so.w.(6)

在 ZeroFlow 的启示基础上,我们提出了一种更精细的缩放方法,该方法考虑了动态点与静态点数量的分布情况。该方法根据运动速度将 PtP_tPt 划分为三个类别 {Pt/1,Pt/2,Pt/3}\{P_{t/1}, P_{t/2}, P_{t/3}\}{Pt/1,Pt/2,Pt/3},如公式 (6) 所定义。总损失为这三个类别的损失之和:

Ltotal=∑i=131∥Pt/i∥∑p∈Pt/i∥ΔF^(p)−ΔFgt(p)∥2.(7) L_{total} = \sum_{i=1}^{3} \frac{1}{\|P_{t/i}\|} \sum_{p \in P_{t/i}} \|\Delta \hat{F}(p) - \Delta F_{gt}(p)\|^2. \quad (7) Ltotal=i=1∑3∥Pt/i∥1p∈Pt/i∑∥ΔF^(p)−ΔFgt(p)∥2.(7)

这种综合损失函数确保模型能够平衡不同类型的点运动,从而在多样化的场景中提供稳健的场景流估计。

六、结论

本文提出了DeFlow,这是一种用于大规模点云自动驾驶的高效且高性能的方法。我们的主要贡献包括:引入DeFlow网络,在点级别上增强了点-体素-点网络特征的提取与重建;同时,提出了一种新的损失函数,以应对点之间数据分布不平衡带来的挑战。实验结果充分验证了我们方法的有效性。 未来的工作可围绕DeFlow的自监督探索,以及与相机、雷达等多模态传感器的融合展开。由于场景流估计主要关注动态物体的流动,若我们能首先对静态和动态部分进行分割36,则可大幅降低基于神经优化的方法的计算负担。

相关推荐
IT_陈寒1 小时前
被Vite的HMR坑惨了,原来这样配置才能用对!
前端·人工智能·后端
“码”力全开1 小时前
解耦安防碎片化:基于 Docker 与边缘计算的 AI 视频中台架构设计(支持 GB28181/RTSP 与源码交付)
人工智能·docker·边缘计算
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章80-长短脚
图像处理·人工智能·opencv·算法·计算机视觉
AI科技星1 小时前
国家重点研发计划项目申报书
人工智能·线性代数·架构·概率论·学习方法
智联视频超融合平台1 小时前
AI赋能传统电厂:2025能源革命的智慧引擎
人工智能·能源
qcx231 小时前
【系统学AI】23 AI 时代产品运营与获客全景:CRM SaaS 大变局 + 增长新范式(2026 调研报告)
人工智能·产品运营·产品设计·ai agent·ai native
叶修_A1 小时前
【COZE-08】Prompt工程进阶 - 结构化输出与思维链
大数据·人工智能·prompt
John_ToDebug1 小时前
开源与人性:DeepSeek 战略的底层逻辑
人工智能·经验分享·ai
老吴胡编1 小时前
eknife 2026.05.28 v0.0.5 更新 —— 支持 PDF 文档合并
人工智能·嵌入式硬件·个人开发