【3D视觉光流】 Upgrading Optical Flow to 3D Scene Flow Through Optical Expansion

摘要

我们描述了一种将二维光学流升级为三维场景流的方法。我们的核心洞察在于:密集光学扩张------可以从单目帧对中可靠地推断------揭示了场景元素深度的变化,例如,靠近观察者的物体将会显得更大。当与相机内参相结合时,光学扩张可以转换为归一化的三维场景流向量,提供有意义的三维运动方向,但不包含其幅度(由于存在底层尺度模糊性)。在已知某一帧深度的情况下,归一化场景流可进一步"升级"为真实的三维场景流。我们表明,可以利用标注的光学流图或未标记的视频序列,从两个视角间学习密集的光学扩张,并将其应用于多种动态三维感知任务,包括光学场景流、激光雷达(LiDAR)场景流、碰撞时间估计和深度估计,通常展现出相较于先前方法的显著改进。

用已有的2D光流(optical flow)+ 深度变化信息,把它"升级"为3D场景流(scene flow),关键桥梁就是作者提出的 Optical Expansion(光学扩张)

一、引言

估计三维运动对于自主机器人在动态世界中安全移动至关重要。例如,动态环境中的碰撞避免和运动规划都依赖于此类推断 8, 33, 34, 40。许多机器人平台使用立体相机或飞行时间(Time-of-Flight)传感器,从而可获得度量尺度的距离信息。在此类情况下,三维运动可以通过在帧间寻找对应关系,或在三维点云之间进行配准来确定。然而,这类主动式感知与固定基线立体视觉方法由于基线有限且传感器数据稀疏,难以捕捉远处的物体。在本工作中,我们分析使用单目相机进行动态三维感知的问题,该类方法不受基线长度或数据稀疏性的限制。

挑战 然而,在不做场景刚性假设的情况下,从单目相机估计三维运动在本质上是病态的:给定特定的二维光流向量,存在无穷多对可能的三维点与之对应。沿着两个自由度(通过从源像素和目标像素分别反向投射两条射线获得,参见图3)投影到相同的二维光流。直观地说,一个靠近且移动缓慢的物体会产生与一个远离但移动快速的物体相同的二维光流。

既往工作:尽管如此,仍有许多尝试使用多体结构从运动(SfM)和非刚性SfM进行单目动态场景重建 26, 64。最近的一种方法 6 试图以通用方式解决单目场景光流问题。由于此类任务属于约束不足的问题,这些方法必须依赖强先验假设,无论是以先验3D几何形式(通常从数据驱动的场景中学习得到)还是先验3D运动形式(通常为刚体先验),而这些先验难以应用于"自然场景"中的视频片段。相反,我们推导出了3D运动与2D对应关系之间一种简单而直接的几何关系,从而使我们能够提取具有尺度不确定性的3D运动。

为何使用光学扩张?人类感知告诉我们,物体感知大小的变化是判断其纵深运动的重要线索 50, 52。事实上,光学扩张也是生物导航、接触时间预测和逼近估计中众所周知的线索 15。受这些观察的启发,我们提议将2D光流测量与2D光学扩张测量相结合:对于参考帧中的每个像素,我们估计一个二维偏移和相对尺度变化 (u, v, s),如图2所示。我们表明,此类测量可以从图像对中稳健地提取,并且重要的是,能够解决3D运动估计中基本的半数歧义。因为光学扩张是一种局部像素级测量表明,它可以轻松集成到现有的自学习光流方法中,从而提高精度。

由膨胀产生的三维运动 具体而言,在缩放正交相机投影模型下,光流膨胀直接等效于投影到相应源像素和目标像素的非旋转场景元素在深度方向上的运动。这一等价性消除了一个自由度。当结合相机内参和光流时,光流膨胀能够揭示三维运动的真实方向,但无法确定其幅度。图3展示了我们现在能够判断物体是朝向还是远离相机运动,但仍然存在整体的尺度模糊性,这一模糊性可以通过指定后投影射线上某一对点中任意一点的深度来消除。

方法 为了估计像素级的光流膨胀,我们提出了一种基于局部仿射变换的网络架构。相对尺度的地面真实值来源于现有的光流和三维场景流训练数据集。此外,我们还提出了一种自监督方法,利用输入图像的光度信息来学习光流膨胀。

贡献 我们将本文的贡献总结如下:(1)我们从理论上推导了光流膨胀在降低单目场景流固有模糊性方面的有效性;(2)我们提出了一种用于归一化场景流估计的神经架构,该架构编码了强大的几何知识,从而提升了模型的可解释性和泛化能力;(3)我们在多种基准任务上验证了光流膨胀的有效性,在光流场景流、激光雷达(LiDAR)场景流以及时至碰撞(TTC)估计方面建立了新的最先进(SOTA)结果,同时显著优于现有方法的速度,并改进了自监督光流的效果;(4)我们将稠密光流膨胀应用于两帧深度估计,并在近极点等数值不稳定区域展示了优于基于三角测量方法的效果。

视觉对应关系

视觉对应关系可追溯至早期关于人类视觉感知与三维重建的研究,当时已发现点级对应关系需要通过求解感知深度,并可根据其投影点恢复三维结构 35, 54。仿射对应(Affine correspondence)在对应点邻域之间定义了一个 2×2 的仿射变换,以编码关于场景几何的高阶信息 2, 3, 46。与仿射对应类似,我们提取对应点的局部信息,以编码关于"纵深运动"(motion-in-depth)的丰富几何信息,但不包括旋转或剪切。

尺度估计

在特征描述子与匹配 4, 31, 42 以及稠密光流 44, 57, 59 的背景下,视觉特征尺度的变化概念已被深入研究。在这些方法中,尺度通常被视为一种离散的辅助变量,用于生成更好的描述子和特征匹配,但并未以细粒度的连续量进行估计。其他一些方法要么通过拉普拉斯滤波直接估计内在尺度 41,要么通过光流场的散度来计算尺度变化 9, 58,但结果精度不足。相反,我们的方法以一种数据驱动的方式,可靠地生成连续的稠密光流膨胀场。此外,相对尺度与深度变化之间的关系已在三维重建 12, 43, 49, 62 以及机器人碰撞避免 20, 33, 40 中得到探索。然而,先前方法通常专注于对象级别的尺度变化和稀疏的兴趣点。我们的工作将相对尺度与深度变化的概念扩展至稠密、低层级的对应任务,即三维场景流估计。

单目动态重建

以往关于单目三维运动估计的工作将该任务作为单目场景重建的一个子问题,试图联合恢复运动和深度 26, 45, 48, 55。由于该问题具有不适定性,这些方法要么依赖强运动先验,如多刚体运动 45, 55 和尽可能刚性 26,要么依赖强形状先验,如低秩和子空间并集 17, 64。当这些手工设计的先验与实际情况相符时,它们能够幻觉出良好的重建结果,但当其虽然这些假设在某些情况下成立,但在其他情况下却并不适用。另一方面,当场景元素具有分段刚性时,我们可以通过平面单应性重建尺度可比的局部运动。然而,单应性估计对二维对应点中的噪声较为敏感,因此需要引入较强的先验信息来对问题进行正则化 26。在本工作中,我们提出了一种更简单的局部运动表示方式,例如光膨胀,由于需要推断的自由度更少,因此可以从真实世界图像中可靠地估计出这种表示。

3. 方法

用已有的2D光流(optical flow)+ 深度变化信息,把它"升级"为3D场景流(scene flow) ,关键桥梁就是作者提出的 Optical Expansion(光学扩张)

(1)Optical Flow(光流)

描述的是:

像素在图像平面上的运动(u, v)

只是在 2D图像上移动了多少像素


(2)Scene Flow(场景流)

描述的是:

每个3D点在真实世界中的运动(X, Y, Z)

也就是:

  • 3D位置变化
  • 可以拆成速度场

(3)关键问题

从2D optical flow → 3D scene flow,缺了什么?

缺的是:

深度 + 深度变化(Z 和 dZ/dt)


3.2. 论文核心洞察:Optical Flow 不够,但"光学扩张"可以补信息

作者发现一个关键几何事实:

(1)当一个3D点运动时,它在图像上的运动可以分解为:

  1. 平移(translation)
  2. 旋转(rotation)
  3. 深度变化导致的"扩张/收缩"

这个"扩张/收缩"就是:

Optical Expansion(光学扩张)


3.3 Optical Expansion 是什么?

直觉理解:

(1) 如果一个物体在靠近你

  • 图像中它会"变大"
  • 光流呈现"向外发散"

(2)如果远离你

  • 图像中它会"变小"
  • 光流呈现"向内收缩"

(3)数学直觉(关键点)

光流可以写成:

f ( x ) = f ∗ m o t i o n ( x ) + f ∗ e x p a n s i o n ( x ) \mathbf{f}(x) = \mathbf{f}*{motion}(x) + \mathbf{f}*{expansion}(x) f(x)=f∗motion(x)+f∗expansion(x)

其中:

  • motion:纯3D平移/旋转投影
  • expansion:深度变化导致的尺度变化

expansion 本质:

沿视线方向(Z方向变化)在2D中的投影表现


3.4. 为什么 Optical Expansion 能"补齐"3D?

因为:

信息 是否包含3D信息
Optical Flow ❌ 只有2D
Depth (Z) ⚠️ 静态3D
Optical Expansion ✅ 隐含 dZ/dt

关键点:

expansion ≈ depth rate(深度变化率)


3.6 步骤

Step 1:输入

  • 两帧图像 (I_t, I_{t+1})
  • Optical Flow(可用网络估计)
  • Depth(单目/双目/传感器)

Step 2:分解光流

将 optical flow 分解为:

  • rigid motion(刚体运动)
  • expansion(非刚体 + 深度变化项)

Step 3:由 expansion 推 scene flow

利用几何关系:

Scene Flow = f ( optical flow , Z , expansion ) \text{Scene Flow} = f(\text{optical flow}, Z, \text{expansion}) Scene Flow=f(optical flow,Z,expansion)

最终恢复:

  • 3D motion vector (X,Y,Z)
  • 每个点的真实空间速度

这篇论文其实在说一句话:

光流本身不够3D,但"光流的尺度变化模式"包含了Z方向运动信息

✔ Optical Flow

→ "像素怎么动"

✔ Optical Expansion

→ "这个运动是不是在靠近/远离我"

✔ Scene Flow

→ "这个点在3D空间怎么动"


传统 scene flow 方法:

  • 依赖 stereo / LiDAR
  • 或复杂 3D网络

这篇论文的优势:

✔ 用2D光流"升级"

  • 更轻量
  • 可复用现有 optical flow 网络
  • 减少3D监督依赖

作者发现光流中的"局部尺度变化(expansion)"可以作为深度变化的几何代理,从而把2D运动提升为3D场景流。

4 模型建立

在本节中,我们首先建立缩放宽正投影模型下光流膨胀(optical expansion)与深度运动(motion-in-depth)之间的关系。随后,我们推导深度运动、归一化3D运动与场景流(scene flow)之间的直接关系。最后,我们提出了一种用于学习光流膨胀和归一化3D流的神经网络架构。

4.1. 光流膨胀(optical expansion)与深度运动(motion-in-depth)之间的关系

在此,我们显式地推导描述物体感知尺寸变化的光流膨胀与深度运动之间的关系。我们从一个简单的针孔相机模型开始,该模型将3D点 P = ( X , Y , Z ) P = (X, Y, Z) P=(X,Y,Z) 投影到图像位置 ( x , y ) (x, y) (x,y):

p = ( x , y ) = f Z ( X , Y ) , p = (x, y) = \frac{f}{Z} (X, Y), p=(x,y)=Zf(X,Y),

其中 f f f 为焦距。在缩放宽正投影相机模型下,物体上所有点的投影可以通过将点正交投影到前平行平面,再对该平面进行透视投影来计算 19。如果物体的深度变化相对于其距相机的距离很小,这种近似是合理的。设物体的物理长度为 L L L,其方向 σ \sigma σ 定义为表面法线与相机 z z z 轴之间的夹角,则物体的投影长度由下式给出:

l = f L ˉ Z = f L cos ⁡ σ Z , l = \frac{f \bar{L}}{Z} = \frac{f L \cos \sigma}{Z}, l=ZfLˉ=ZfLcosσ,

其中 L ˉ = L cos ⁡ σ \bar{L} = L \cos \sigma Lˉ=Lcosσ 考虑了透视缩短效应。假设场景局部刚性,且其中一个刚性部分在两个帧之间从深度 Z Z Z 变化到 Z ′ Z' Z′,同时保持其物理尺寸 L L L 和方向 σ \sigma σ 不变。定义光流膨胀 s s s 为其投影长度之比 l ′ / l l'/l l′/l,定义深度运动 τ \tau τ 为深度之比 Z ′ / Z Z'/Z Z′/Z。现在,在假设1) 缩放宽正投影相机模型和2) 场景元素相对于相机没有旋转(图4)的前提下,我们可以推导出 s = 1 / τ s = 1/\tau s=1/τ:

l = f L ˉ Z , l ′ = f L ˉ Z ′ ⇒ s = l ′ l = Z Z ′ = 1 τ ( 1 ) l = \frac{f \bar{L}}{Z}, \quad l' = \frac{f \bar{L}}{Z'} \Rightarrow s = \frac{l'}{l} = \frac{Z}{Z'} = \frac{1}{\tau} \quad (1) l=ZfLˉ,l′=Z′fLˉ⇒s=ll′=Z′Z=τ1(1)

4.2. 深度运动、3D运动与场景流(scene flow)之间的直接关系

在上一节中,我们展示了对于缩放宽正投影相机模型,可以从光流膨胀 s s s 计算深度运动 τ \tau τ。在本节中,我们展示了可以将深度运动 τ \tau τ 与相机内参 K K K 相结合,以计算归一化3D场景流向量。

给定相机内参 K K K,对于从 P P P 移动到 P ′ P' P′ 的3D点,我们有:

P = λ K − 1 p ~ , P ′ = λ ′ K − 1 p ~ ′ , P = \lambda K^{-1} \tilde{p}, \quad P' = \lambda' K^{-1} \tilde{p}', P=λK−1p~,P′=λ′K−1p~′,

其中 p ~ \tilde{p} p~ 和 p ~ ′ \tilde{p}' p~′ 是齐次2D坐标,最后一个坐标为1, λ \lambda λ 和 λ ′ \lambda' λ′ 是比例因子。由于内参矩阵 K K K 的最后一行是 ( 0 , 0 , 1 ) (0,0,1) (0,0,1),比例因子直接等于每个点的深度: λ = Z \lambda = Z λ=Z 且 λ ′ = Z ′ \lambda' = Z' λ′=Z′。

遵循先前的工作 38,我们将场景流建模为相对于相机的3D运动向量,从而消除相机运动的影响。场景流 t t t 计算如下:

t = P ′ − P = K − 1 ( Z ′ p ~ ′ − Z p ~ ) = Z K − 1 τ ( u \~ + p \~ ) − p \~ 其中 u ~ = p ~ ′ − p ~ = Z K − 1 ( τ − 1 ) p \~ + τ u \~ = Z t ^ 其中 t ^ = K − 1 ( τ − 1 ) p \~ + τ u \~ ( 2 ) \begin{aligned} t &= P' - P \\ &= K^{-1} (Z' \tilde{p}' - Z \tilde{p}) \\ &= Z K^{-1} \\tau (\\tilde{u} + \\tilde{p}) - \\tilde{p} \quad \text{其中 } \tilde{u} = \tilde{p}' - \tilde{p} \\ &= Z K^{-1} (\\tau - 1) \\tilde{p} + \\tau \\tilde{u} \\ &= Z \hat{t} \quad \text{其中 } \hat{t} = K^{-1} (\\tau - 1) \\tilde{p} + \\tau \\tilde{u} \quad (2) \end{aligned} t=P′−P=K−1(Z′p~′−Zp~)=ZK−1τ(u\~+p\~)−p\~其中 u~=p~′−p~=ZK−1(τ−1)p\~+τu\~=Zt^其中 t^=K−1(τ−1)p\~+τu\~(2)

我们将 t ^ \hat{t} t^ 称为"归一化场景流",它是一个指向真实3D场景流方向的向量。在已知深度运动 τ \tau τ 和相机内参 K K K 的情况下,可以从2D流 u ~ \tilde{u} u~ 将其"升级"。当将其与任一帧中该点的真实深度 Z Z Z 或 Z ′ Z' Z′ 相结合时(遵循上述类似的推导),归一化场景流可以进一步"升级"为真实的3D场景流。

3.3. 神经网络架构

在本节中,我们介绍了一种用于光流膨胀和归一化场景流估计的网络架构,并描述了学习光流膨胀的方法,无论是采用监督方式,还是采用自监督学习。

网络 我们将估计归一化场景流的任务分解为三个连续的步骤:

  • (1) 光流估计,其中从图像对中预测 (u, v) 分量;
  • (2) 光扩张估计,其中在光流的条件下估计光扩张分量 s;
  • (3) 深度内运动估计 τ,其中对光扩张进行细化,以针对完整透视相机模型产生正确的输出。
  • 最后,给定相机内参即可计算归一化场景流。

我们为上述步骤设计了端到端可训练的架构,如图 5 所示。第 5 节中的消融研究讨论了影响性能的不同设计选择。

局部仿射层

为了从两帧中提取稠密的光扩张,我们提出了一种局部仿射层,直接计算两帧上局部 3x3 邻域内的扩张,如下述三个步骤所述:

  1. 拟合局部仿射运动模型。

虽然整张图像的运动很复杂,但在一个很小的局部区域(比如3x3的像素块)内,物体的运动可以近似看作是一个刚性的"仿射变换"

给定参考帧和目标帧上的稠密光流场 u,我们通过求解以下线性系统,为参考图像中的每个像素 x c = ( x c , y c ) x_c = (x_c, y_c) xc=(xc,yc) 在其 3x3 邻域 N ( x c ) N(x_c) N(xc) 上拟合一个局部仿射变换 A ∈ R 2 × 2 A \in \mathbb{R}^{2\times2} A∈R2×2 2

( x ′ − x c ′ ) = A ( x − x c ) , x ∈ N ( x c ) , ( 3 ) (x' - x'_c) = A(x - x_c), \quad x \in N(x_c), \quad (3) (x′−xc′)=A(x−xc),x∈N(xc),(3)

其中 x ′ = x + u ( x ) x' = x + u(x) x′=x+u(x) 是 x x x 的对应点。

在一个 3x3 的邻域中,除了中心点 xcxc​ 外,还有 8 个周围点。对于这 8 个点,我们可以列出 8 个方程。每个方程对应一个向量等式(二维向量即两个标量方程),所以总共有 8 × 2 = 16 8 \times 2 = 16 8×2=16 个标量方程。

  1. 提取扩张。我们将像素的光扩张计算为变形后的 3x3 网格与原始 3x3 网格之间面积之比: s = ∣ det ⁡ ( A ) ∣ s = \sqrt{|\det(A)|} s=∣det(A)∣ 。

一旦我们求出了矩阵 A A A,我们可以通过计算其行列式的绝对值的平方根 来得到尺度变化:

s = ∣ det ⁡ ( A ) ∣ s = \sqrt{|\det(A)|} s=∣det(A)∣

  • 如果 det ⁡ ( A ) = 1 \det(A) = 1 det(A)=1,说明面积没变(纯平移或旋转)。
  • 如果 det ⁡ ( A ) > 1 \det(A) > 1 det(A)>1,说明面积放大了(物体在靠近镜头,发生扩张)。
  • 如果 det ⁡ ( A ) < 1 \det(A) < 1 det(A)<1,说明面积缩小了(物体在远离镜头)。
  1. 计算拟合误差。我们计算最小二乘拟合相对于式 (3) 的残差 L 2 L_2 L2 误差(表示仿射拟合的置信度),并将其作为额外通道传递给光流细化网络。

关键的是,我们将上述步骤实现为密集、逐像素且可微分的计算,作为 PyTorch 层,能够在 GPU 上高效运行,且计算开销可忽略不计。

学习扩张(监督)

为了训练预测 s s s 的光扩张网络,一个挑战是构建光扩张的真实值 (ground-truth)。在多重尺度图像金字塔上搜索的常见解决方案并不可行,因为它会产生稀疏且不准确的结果。相反,我们从光流场的局部邻域中提取扩张 9, 58。具体而言,对于每个具有光流真实值的像素,我们在其 7x7 邻域上拟合一个仿射变换并提取尺度分量,这与局部仿射层类似。具有较高拟合误差的像素将被丢弃。在实际操作中,鉴于现有高质量的光流数据集 1, 7, 11, 25, 38, 36,我们发现可以可靠地计算用于训练的光扩张真实值。

学习扩张(自监督)

由于获取真实世界的光流真实值数据成本高昂,在此我们描述一种学习扩张网络的自监督替代方案。先前关于自监督光流的工作 27, 37, 47 利用光度一致性获取监督信号 ,即通过比较参考像素和目标像素的强度值差异,或参考像素周围 K × K K \times K K×K 邻域与其对应点之间的差异来计算损失。在这两种情况下,像素的运动并未受到显式约束。我们的关键区别在于,在构建损失时,使用预测的光扩张来扩大或缩小参考邻域。其好处有两方面:一方面,它提取监督信号以训练光扩张模型;另一方面,它对光流的局部运动模式施加了显式约束,从而指导学习过程。

这段文字描述了论文中**自监督学习(Self-supervised Learning)**的核心创新点

1. 背景:传统的自监督光流(Photometric Consistency)

在深度学习之前,我们很难获得成千上万张图像对的"真实光流标签"(Ground Truth),因为给视频每一帧标注像素级的运动极其耗时。

传统的自监督方法(如FlowNet2的自监督部分、PWC-Net的自监督变体等)利用了一个基本原理:光度恒定假设(Photometric Constancy)

  • 原理 :如果图像中的一个点从 t 1 t_1 t1 时刻移动到 t 2 t_2 t2 时刻,那么它在 t 2 t_2 t2 时刻的颜色/亮度应该和它在 t 1 t_1 t1 时刻是一样的。
  • 做法
    1. 网络预测出一个光流场 u u u。
    2. 利用这个 u u u,将第一帧图像中的像素" warp "(扭曲/映射)到第二帧图像的位置。
    3. 计算第一帧像素值和映射后第二帧像素值之间的差异(Loss)。
    4. 优化网络,使得这个差异最小化。
  • 局限 :这种方法只关心颜色是否匹配 ,它不关心物体是平移、旋转还是缩放。只要颜色对上了,光流网络就可以随便"编"一个流场。这导致在处理视差突变遮挡区域均匀纹理区域时,结果往往不准确,因为存在"光度歧义"。

2. 本论文的创新:引入"光扩张"约束

这篇论文认为,仅仅依靠颜色匹配是不够的。如果我知道一个物体在变大(扩张)变小(收缩),我就能更好地约束光流的预测。

核心逻辑链:
  1. 预测扩张 :网络不仅预测2D的光流 ( u , v ) (u, v) (u,v),还额外预测一个标量 s s s(光扩张,Optical Expansion)

    • s > 1 s > 1 s>1 表示物体在靠近(图像变大)。
    • s < 1 s < 1 s<1 表示物体在远离(图像变小)。
    • s = 1 s = 1 s=1 表示物体在平面内平移或旋转(图像大小不变)。
  2. 改进 Warp 过程(关键区别)

    在计算重建损失(Reconstruction Loss)时,传统的做法是直接根据 ( u , v ) (u, v) (u,v) 从原图中采样颜色。

    而本论文的做法是:先根据预测的扩张率 s s s 对参考邻域进行缩放,然后再根据光流 ( u , v ) (u, v) (u,v) 进行位移。

    • 传统方法 :采样点 x → x + u x \rightarrow x + u x→x+u。
    • 本文方法 :采样点 x → Scale by s x ⋅ s → Shift by u x ′ = x ⋅ s + u x \xrightarrow{\text{Scale by } s} x \cdot s \xrightarrow{\text{Shift by } u} x' = x \cdot s + u xScale by s x⋅sShift by u x′=x⋅s+u。(注:具体数学形式可能略有不同,但核心思想是引入尺度变化)。
  3. 双重收益

    • 收益一:训练光扩张模型 ( s s s)

      因为 Loss 依赖于 s s s,如果 s s s 预测得不准,重建出来的图像颜色就会对不上。所以,误差会反向传播给 s s s,迫使网络学会预测正确的扩张率。这就解决了"如何自监督学习 s s s"的问题------重建误差就是 s s s 的监督信号

    • 收益二:约束光流模型 ( u , v u, v u,v)

      这是更重要的部分。光流不仅包含平移,还包含由深度变化引起的"表观运动"。

      • 如果一个物体快速靠近镜头,它在图像上会迅速变大(光扩张大)。
      • 如果网络忽略了扩张,它可能会错误地预测一个巨大的径向光流来解释物体的变大,或者预测错误的平移。
      • 通过强制网络在 Warp 时使用 s s s,我们显式地告诉光流网络:"物体变大不是因为你在图像平面上剧烈运动,而是因为深度在变化。"
      • 这为光流提供了物理约束 ,减少了光度歧义,使得预测出的光流 ( u , v ) (u, v) (u,v) 更加符合物理现实(即更接近真实的平面内运动,而不是混合了深度运动的噪声)。
特性 传统自监督光流 本文的自监督方法 (Optical Expansion)
监督信号来源 像素强度一致性 (Photometric Consistency) 像素强度一致性 + 局部尺度变化一致性
Warp 方式 仅基于光流 ( u , v ) (u, v) (u,v) 进行位移采样 基于光扩张 s s s 缩放 + 光流 ( u , v ) (u, v) (u,v) 位移采样
对光流的约束 无显式几何约束,易受光度歧义影响 显式约束:将深度引起的视差与平面运动分离
能否学习 s s s 不适用 能,通过重建误差反向传播训练 s s s

简而言之,这篇论文通过引入光扩张 ,在自监督框架下增加了一个几何约束分支,使得网络不仅能"猜"出光流,还能"猜"出物体是否在靠近或远离,从而提高了整体3D感知任务(如场景流估计)的准确性。

学习深度内运动

为了训练预测 τ \tau τ 的深度内运动网络,我们使用现有的 3D 场景流数据集,从中可以将深度内运动的真实值计算为两帧中对应点的深度之比:

τ ∗ ( x ) = Z ′ ∗ ( x + u ∗ ( x ) ) Z ∗ ( x ) \tau^*(x) = \frac{Z'^*(x + u^*(x))}{Z^*(x)} τ∗(x)=Z∗(x)Z′∗(x+u∗(x))

其中 Z ∗ Z^* Z∗ 和 Z ′ ∗ Z'^* Z′∗ 分别是参考帧和目标帧上的深度真实值以及目标帧,其中 u ∗ u^* u∗ 为真实光流。

损失函数:

我们通过实验发现,光扩张的监督学习性能优于自监督学习(如表5和表6所示,log-L1误差分别为245与336),因此我们在第4.1-4.3节的所有实验中均采用监督学习。在此,我们采用多任务L1损失函数,联合训练光扩张(s)网络与深度内运动( τ \tau τ)网络:

L = ∑ x ∣ σ s ( x ) − log ⁡ s ∗ ( x ) ∣ + ∣ σ τ ( x ) − log ⁡ τ ∗ ( x ) ∣ , L = \sum_{x} \left| \sigma_s(x) - \log s^*(x) \right| + \left| \sigma_\tau(x) - \log \tau^*(x) \right|, L=x∑∣σs(x)−logs∗(x)∣+∣στ(x)−logτ∗(x)∣,

其中 σ s \sigma_s σs 和 σ τ \sigma_\tau στ 分别为预测的以对数形式表示的尺度扩张和深度内运动,而 s ∗ s^* s∗ 和 τ ∗ \tau^* τ∗ 为真实标签。该损失函数仅对具有有效标签的像素进行累加。我们尝试过分阶段训练,但发现联合端到端训练更为简洁,且性能相当。

6. 讨论

我们利用单目相机探索三维感知问题,并提出估计光学膨胀量,该量可提供关于相对深度变化的丰富信息。我们设计了一种用于光学膨胀和归一化场景流的神经网络架构,并配套了一系列监督或自监督学习策略。由此,在多项三维感知任务上取得了相较于先前方法的显著性能提升,包括LiDAR场景流、光学场景流以及碰撞时间估计。对于未来工作,我们认为稠密的光学膨胀是运动分割与机器人避障中极具价值低层线索。此外,目前光学膨胀与归一化场景流之间的几何关系是基于缩放正交相机模型以及无旋转场景元素这一假设建立的。将其扩展至包含旋转场景元素的透视相机模型将是一个有趣的方向。最后,背景刚性是深度和运动估计中的有力先验,将其与我们的局部估计相结合,有望进一步提升性能。