
# FLOT：由最优传输引导的点云场景光流

吉勒·皮 $^{1}$，亚历山大·布尔什 $^{1}$，勒诺·马莱 $^{1,2}$

1 法国巴黎 valeo.ai

 $^{2}$ 法国巴黎 ENPC

摘要。我们提出并研究了一种名为FLOT的点云场景光流估计方法。在设计FLOT之初我们发现，理想情况下点云场景光流估计可以归结为置换矩阵估计问题。受近期图匹配相关工作的启发，我们借用最优传输工具构建了一套对应关系匹配方法。随后我们放松了传输约束，以适配真实场景的非理想性。两个点之间的传输代价由神经网络提取的深度特征的成对相似度给出，该神经网络是在合成数据集上通过全监督训练得到的。我们的核心发现是：FLOT在合成数据集和真实数据集上都能达到现有最优方法同等的性能，同时所需参数量少得多，且不需要使用多尺度分析。我们的第二个发现是，在所研究的训练数据集上，大部分性能都可以由学习得到的传输成本解释。这催生了一个更简单的方法FLOT $_{0}$，该方法通过对最优传输参数做特定选择得到，性能几乎和原FLOT方法相当。

## 1 引言

场景光流 [^38] 是场景中物体表面点的三维运动，是场景理解的底层信息之一，可应用于例如自动驾驶等领域。它的估计问题已经被研究了数十年，不同研究采用了不同的输入模态：比如仅使用彩色图像的方法，如变分方法 [^1]、[^45]，或是采用分段常数先验的方法 [^16]、[^22]、[^39]；也有同时使用彩色和深度作为输入的方法 [^2]、[^12]、[^32]。

在本文工作中，$^{3}$ 我们仅关注仅以三维点坐标为输入的点云场景光流估计问题。在该设定下，[^8] 提出了一种基于最小化目标函数的技术，该目标函数一方面鼓励匹配点相互靠近以获得准确的场景光流估计，另一方面鼓励估计结果具有局部平滑性。在 [^35] 中，研究者从点云构建二维占据网格，将其作为输入特征送入一个学习得到的背景移除滤波器和一个学习得到的分类器，来找到匹配的网格单元。随后基于这些网格匹配结果构造一个最小化问题，在最终的细化步骤之前计算得到初始场景光流。在 [^36] 中，研究者提出了类似的策略，但网格单元之间的匹配

---

通过深度特征完成。在 [^3]、[^47] 中，点云被投影到二维柱面图，再输入为场景光流估计训练的传统卷积神经网络。相比之下，FLOT通过使用专为点云设计的卷积直接处理点云输入。我们将在第2节讨论与之最相关的工作。

我们将场景流估计分为两个连续步骤：首先，我们在输入点云的点之间寻找软对应关系；其次，我们利用这些对应关系估计场景流。近期图匹配领域的工作使用最优传输来匹配两个不同图中的节点/顶点，受此启发[^18], [^29], [^34]，我们研究了这类工具在点之间寻找软对应关系的应用。

我们的网络以同一场景在两个连续时刻t和$t+1$采集的两片点云作为输入。我们通过点云卷积提取每个点的深度特征，再利用这些特征计算时刻t和$t+1$的点之间的传输代价。两个点之间的代价越小，说明二者存在对应关系的可能性越高。在方法的第二步，我们利用这些软对应关系通过线性插值得到初始场景流估计，随后使用残差网络对该估计进行优化。最优传输和网络参数通过梯度下降在合成数据集上进行全监督学习。

我们的主要贡献如下：(a) 提出了一个用于场景流估计的最优传输模块，并研究了其性能；(b) 提出了一种轻量级架构，该架构参数数量远少于现有方法，且无需使用多尺度分析，但在合成和真实数据集上的性能可与现有最优方法相当；(c) 通过对最优传输(OT)参数的特殊选择得到了一种更简洁的方法$\text{FLOT}_{0}$，该方法取得了可与当前最优方法媲美的结果。我们观察到FLOT的大部分性能都来自学习得到的传输代价，据此得到了这个简化版本。我们还发现$\text{FLOT}_{0}$的核心模块可以被看作一种注意力机制。最后，我们在结论中讨论了FLOT的局限性：该方法没有对场景中的遮挡进行显式处理。

## 2 相关工作

基于点云的深度场景流估计。在[^4]中，一个深度网络被端到端训练，用于估计激光雷达扫描中物体的刚性运动。与我们研究最相近、且不做刚性假设的工作是[^11], [^15], [^40], [^46]。在[^40]中，作者提出了一种作用于不规则结构数据的参数化连续卷积，并在分割任务和场景流估计任务上证明了该方法的有效性。[^15]中的方法基于PointNet++ [^30]，并使用了新型流嵌入层，该层学习混合两片点云的信息以得到准确的流估计。在[^11]中，作者提出了一种在 permutohedral 晶格上执行稀疏卷积的技术，该方法能够处理大规模点云。此外，该方法提出在多个尺度上融合两片点云的信息，这不同于[^15]中仅在粗尺度进行一次信息融合的做法。相比之下，我们的方法仅在最精细

---

尺度上进行一次信息融合。需要强调的是，我们的最优传输模块独立于点云卷积的类型：我们虽然选择了PointNet++，但也可以使用其他卷积方案。在[^46]中，PWC-Net [^33]被适配改造以用于点云任务，采用由粗到细的尺度策略估计流，性能比之前的方法有所提升。最后需要指出，近期工作[^25], [^46]使用自监督解决该问题，但本文我们仅研究全监督场景。

基于最优传输的图匹配。我们的方法受到近期利用最优传输进行图对比研究工作的启发。在[^18]中，研究者利用图拉普拉斯算子将图映射为表示图结构的多维高斯分布，随后将这些分布之间的Wasserstein距离作为图相似性的度量，以此实现图之间的节点匹配。在[^27]中，每个图被表示为向量包（每个节点对应一个向量），相似性度量为这些集合之间的Wasserstein距离。在[^29]中，研究者提出一种基于度量测度空间之间Gromov-Wasserstein距离[^21]的方法来对比相似矩阵。该方法可用于比较两个图，例如，可以将每个图用一个包含所有节点对之间测地线距离的矩阵来表示。在[^34]中，研究者提出通过融合Gromov-Wasserstein距离与Wasserstein距离来对比图：前者用于比较图结构，后者用于纳入节点特征的影响。本文工作采用后者这种距离。我们为每个点云构建图，将每个点与其最近邻连接，随后提出一种方法训练网络，为每个点提取深度特征，并利用这些特征在我们的最优传输模块中匹配不同点云之间的点。

算法展开。我们的方法基于算法展开技术，该技术的核心思路是：取出一个迭代算法，展开其固定数量的迭代，将这些展开迭代中的部分矩阵乘法/卷积替换为针对目标任务专门训练得到的新运算。已有多项研究采用该技术，例如[^10]、[^17]、[^24]、[^26]将其用于求解线性逆问题，[^5]、[^14]、[^20]、[^41]将其用于图像去噪（其中去噪器有时也被用于求解其他逆问题）。本文工作中，我们对Sinkhorn算法的少量迭代进行展开，并训练其中涉及的代价矩阵，训练目标是让最终得到的传输计划能够给出良好的场景流估计。值得一提的是，该算法也已在其他研究中被展开：例如[^9]中将其用于训练深度生成网络，[^31]中将其用于图像特征分配。

## 3 方法

### 3.1 步骤1：寻找点之间的软对应关系

设$\boldsymbol{p}, \boldsymbol{q} \in \mathbb{R}^{n \times 3}$为同一场景在连续两个时刻t和$t + 1$的两个点云。向量$\boldsymbol{p}_i, \boldsymbol{q}_j \in \mathbb{R}^3$分别是$i^{\text{th}}$和$j^{\text{th}}$中$\boldsymbol{p}$和$\boldsymbol{q}$个点的xyz坐标。点云的场景流估计问题即估计场景流$\boldsymbol{f} \in \mathbb{R}^{n \times 3}$，其中$\boldsymbol{f}_i \in \mathbb{R}^3$是$\boldsymbol{p}_i$从时刻t到$t + 1$的平移量。

---

![Image](images/e1453c09d2f655c52f1b9c552e8fa8cae404caceb545adb8a4e21af6db63c884.jpg)

<div style="text-align: center;">Fig. 1. The point clouds  $\boldsymbol{p}$ and  $\boldsymbol{q}$ go through  g which outputs a feature for each input point. These features (black arrows) go in our proposed OT module where they are used to compute the pairwise similarities between each pair of points  $(\boldsymbol{p}_i, \boldsymbol{q}_j)$. The output of the OT module is a transport plan which informs us on the correspondences between the points of  $\boldsymbol{p}$ and  $\boldsymbol{q}$. This information permits us to compute a first scene flow estimate  $\boldsymbol{f}$, which is refined by  h to obtain  $\boldsymbol{f}_{\text{est}}$. The convolution layers (conv) are based on PointNet++ [^30] but the OT module could accept the output of any other point cloud convolution. The dashed-blue arrows indicate that the point coordinates are passed to each layer to be able to compute convolutions on points.</div>

理想世界。我们在理想世界假设下构建FLOT，其中$\boldsymbol{p} + \boldsymbol{f} = \mathsf{P} \boldsymbol{q}$，$\mathsf{P} \in \{0,1\}^{n \times n}$为置换矩阵。FLOT的作用是在未知$\mathsf{P}$的情况下估计置换矩阵$\boldsymbol{f}$。为此，我们使用最优传输领域的相关工具。我们将点$\boldsymbol{p}_i$的运动解释为质量在时刻t和$t + 1$之间的位移。我们为第一个点云$\boldsymbol{p}$中的每个点赋予大小固定为$n^{-1}$的质量。当满足$\boldsymbol{q}_j$，或者等价地满足$n^{-1}$时，每个点$\boldsymbol{p}_i$就会接收来自$\boldsymbol{p}_i + \boldsymbol{f}_i = \boldsymbol{q}_j$的质量$\mathsf{P}_{ij} = 1$。我们提出通过计算从$\mathsf{P}$到$\mathsf{T} \in \mathbb{R}_+\^{n \times n}$、满足条件的传输计划$\boldsymbol{p}$，来估计置换矩阵$\boldsymbol{q}$

 $$ \mathsf{T}\in\mathop{\mathrm{a r g m i n}}_{\mathsf{U}\in\mathbb{R}_{+}^{n\times n}}\sum_{i,j=1}^{n}\mathsf{C}_{i j}\mathsf{U}_{i j}\quad\mathrm{~s u b j e c t~t o~}\quad\mathsf{U}\mathbf{1}=\mathbf{1}n^{-1}\mathrm{a n d}\mathsf{U}^{\mathsf{T}}\mathbf{1}=\mathbf{1}n^{-1}, $$

其中$\mathbf{1} \in \mathbb{R}^n$是所有元素均为1的向量，$C_{ij} \geqslant 0$是点$p_i$到点$q_j$的位移成本[^28]。传输计划$\mathcal{T}_{ij} \geqslant 0$中的每个标量元素$\mathcal{T}$表示从$p_i$运输到$q_j$的质量。

式(1)中的第一个约束要求每个点$p_i$的质量完全分配给q中的若干点。第二个约束要求每个

---

输入：成本矩阵 \mathbf{C}；参数 K, \lambda, \epsilon > 0。

输出：传输计划 \mathbf{T}。

\mathbf{a} \leftarrow \mathbf{1n}^{-1};

\mathbf{U} \leftarrow \exp(-\mathbf{C}/\epsilon);

for k = 1, \ldots, K do
     $\mathbf{b} \leftarrow [(\mathbf{1n}^{-1}) \otimes (\mathbf{U}^{\top} \mathbf{a})]^{\lambda/(\lambda + \epsilon)}$;
     $\mathbf{a} \leftarrow [(\mathbf{1n}^{-1}) \otimes (\mathbf{U} \mathbf{b})]^{\lambda/(\lambda + \epsilon)}$;
end

\mathbf{T} \leftarrow \text{diag}(\mathbf{a}) \text{ U diag}(\mathbf{b});

```pseudo
// Algorithm 1: Optimal transport module. The symbol \otimes denote the element-wise division and multiplication, respectively.

```

点$q_j$恰好从p中的若干点处获得质量$n^{-1}$。传输过程中没有质量损失。注意，在假设情况下，若成本矩阵C的每一行每一列都恰好包含一个零元素，那么传输计划除了这些零元素位置外处处为零，仅通过对传输计划进行简单缩放即可立即满足质量约束。在这种假设场景下，质量约束对于我们的应用来说是冗余的，因为只需要找到C的零元素即可估计P。需要注意的是，当在更现实的场景中C存在“歧义”时，质量约束会发挥作用：它确保每个点给出/接收质量$n^{-1}$，且p中的每个点在q中至少有一个对应点，反之亦然。

我们注意到$n^{-1}P$满足最优运输约束。现在我们需要构造C，使得$T = n^{-1}P$。

真实场景与T的快速估计。在真实场景中，等式$p + f = P q$并不成立，因为在时刻t和$t + 1$，曲面并未在相同物理位置进行采样，并且物体可能因遮挡而消失/出现。这些缺陷带来的一个结果是，式(1)中的质量守恒并不严格成立：质量可能消失或出现。解决该问题的一种方案是放宽式(1)中的约束。我们不求解式(1)，而是提出求解

 $$ \min_{\mathsf{U}\in\mathbb{R}_{+}^{n\times n}}\left[\sum_{i,j=1}^{n}\mathsf{C}_{ij}\mathsf{U}_{ij}+\epsilon\mathsf{U}_{ij}\left(\log\mathsf{U}_{ij}-1\right)\right]+\lambda\mathrm{KL}\left(\mathsf{U}\mathbf{1},\frac{\mathbf{1}}{n}\right)+\lambda\mathrm{KL}\left(\mathsf{U}^{\mathsf{T}}\mathbf{1},\frac{\mathbf{1}}{n}\right), $$

其中$\epsilon$、$\lambda \geqslant 0$，KL表示KL散度。式(2)中的项$\mathsf{U}_{ij}(\log \mathsf{U}_{ij} - 1)$是传输计划的熵正则项。在本文研究中，它的主要作用是允许我们使用一种高效算法来估计传输计划，即Sinkhorn算法[^7]。该算法针对最优传输问题(2)的版本推导自[^6]，并在算法1中给出。参数$\epsilon$控制熵正则化的程度。$\epsilon$越小，传输计划越稀疏，因此可以得到$\boldsymbol{p}$与$\boldsymbol{q}$之间的稀疏对应关系。正则化参数$\lambda$用于调节传输质量的偏离程度。

---

偏离均匀分布，从而允许质量变化。也可以令$\lambda \to +\infty$来实现严格的质量守恒。

请注意，质量正则化由算法1中的幂次参数$\lambda/(\lambda + \epsilon)$控制。当需要施加严格质量守恒、令$\lambda \to +\infty$时，该幂次趋近于1，而在无任何正则化的情况下取值为0。我们没有预先固定参数$\epsilon$和$\lambda$，而是将这些参数设为自由参数，与网络的其他参数一起通过梯度下降进行学习。

我们需要说明的是，在理想场景下，幂次$\lambda/(\lambda + \epsilon)$并不需要达到1就能得到准确结果，因为最终结果的质量也由成本矩阵C的质量决定。如果成本得到了完美训练，C已经通过零条目编码了双射映射，那么任意程度的质量正则化都足以得到准确结果。这一结论既可以从上一小节末尾的论述得到，也可以从下文关于C的作用和质量正则化的讨论中得到。在实际场景中，成本无法被完美训练，因此我们期望训练后幂次$\lambda/(\lambda + \epsilon)$在$(0,1)$范围内变化：在理想场景下训练时取值更接近1，存在遮挡时取值更接近0。

学习传输成本。式(2)中的核心组成部分是成本矩阵$\mathbf{C} \in \mathbb{R}^{n \times n}$，其中每个条目$\mathbf{C}_{ij}$编码了点$\mathbf{p}_i$和点$\mathbf{q}_j$之间的相似度。一个直观的选择是使用点对$(\mathbf{p}_i, \mathbf{q}_j)$之间的欧氏距离，即$\mathbf{C}_{ij} = \|\mathbf{p}_i - \mathbf{q}_j\|_2$，但这种选择无法得到准确结果。在本文中，我们提出通过训练深度神经网络$g : \mathbb{R}^{n \times 3} \to \mathbb{R}^{n \times c}$来学习置换成本，该网络以点云为输入，为每个输入点输出维度为c的特征。随后，成本矩阵的条目利用分别位于点$g(\mathbf{p})_i, g(\mathbf{q})_j \in \mathbb{R}^c$和点$\mathbf{p}_i$的特征$\mathbf{q}_j$之间的余弦距离定义如下：

 $$ \begin{array}{r}{\mathsf{C}_{i j}=\left(1-\frac{g(\boldsymbol{p})_{i}^{\intercal}g(\boldsymbol{q})_{j}}{\left\|g(\boldsymbol{p})_{i}\right\|_{2}\left\|g(\boldsymbol{q})_{j}\right\|_{2}}\right)\cdot i_{\|\cdot\|_{2}\leqslant d_{\operatorname*{m a x}}}\left(\boldsymbol{p}_{i}-\boldsymbol{q}_{j}\right).}\end{array} $$

特征$g(\boldsymbol{p})_i$和$g(\boldsymbol{q})_j$越相似，将单位质量从$\boldsymbol{p}_i$传输到$\boldsymbol{q}_j$的成本就越低。指示函数

 $$ i_{\|\cdot\|_{2}\leqslant d_{\max}}\left(\boldsymbol{p}_{i}-\boldsymbol{q}_{j}\right)=\left\{\begin{aligned}&1if\|\boldsymbol{p}_{i}-\boldsymbol{q}_{j}\|_{2}\leqslant d_{\max},\\ &+\infty otherwise,\end{aligned}\right. $$

用于防止算法在距离过远的点之间建立对应关系。我们设置$d_{\max} = 10$ m。

为了训练网络g，我们采用了与已有研究相同的策略，例如生成模型训练工作[^9]、图像特征匹配工作[^31]中的策略。该策略对算法1的K次迭代进行展开，这些展开的迭代构成了图1中的我们的OT模块。可以看到，梯度可以通过该模块的每一步反向传播，从而实现对g的训练。

论C的作用与质量正则化。我们在本段汇总了此前关于C的作用和质量正则化的讨论。

---

为便于说明，我们回到理想场景中并考虑式(1)。在这种理想情况下，我们可以进一步设想，能够完美训练g，使得$C_{ij}$在匹配点处为零，即当$P_{ij}=1$时成立，在非匹配点处严格为正。此时传输计划将满足$\mathbf{T}=n^{-1}\mathbf{P}$，且传输成本为零。但需要注意的是，解$\mathbf{T}$可以完全由$\mathbf{C}$编码，仅相差一个全局缩放因子：$\mathbf{T}$的非零元素对应$\mathbf{C}$的零元素。这种情况下，质量传输约束仅调整$\mathbf{T}$中元素的尺度。这种完美场景几乎不可能出现，但上述讨论表明，成本矩阵$\mathbf{C}$可以单独使用，或许就足以在场景流估计中找到$\mathbf{p}$与$\mathbf{q}$之间的正确对应关系。当场景更贴近现实、$\mathbf{C}$中存在歧义时，质量传输正则化就会发挥作用。无论$\mathbf{C}$的质量如何，该正则化都会在$\lambda$控制的“强度”下，迫使质量尽可能均匀地分布在所有点上。这可以避免$\mathbf{p}$中的某些点在$\mathbf{q}$中没有匹配点，反之亦然。

 $\mathbf{FLOT}_0$。$\text{FLOT}_0$是FLOT的一个变体，该方法仅利用成本矩阵$\mathbf{C}$来寻找$\mathbf{p}$和$\mathbf{q}$之间的对应关系。该方法通过移除式(2)中的质量传输正则化得到，即令$\lambda = 0$。在这种极限情况下，“传输计划”满足

 $$ \mathsf{T}=\exp(-\mathsf{C}/\epsilon). $$

随后，T会作为Alg. 1的输出，用于该方法的后续步骤。

### 3.2 第二步：从软对应关系估计流

我们在上一步中得到了传输计划$\mathbf{T}$，它给出了$\mathbf{p}, \mathbf{q}$中各点之间的对应关系。我们现在的目标是利用这些对应关系来估计流。和之前一样，我们不妨先从理想情况出发，考虑式(1)。在该设定下，我们已经知道$\mathbf{f} = \mathbf{P}\mathbf{q} - \mathbf{p}$成立，并且如果g训练得当，我们预期$n^{-1}\mathbf{P} = \mathbf{T}$。因此，一个直观的流估计就是

 $$ \tilde{\boldsymbol{f}}_{i}=\sum_{j=1}^{n}\mathsf{P}_{i j}\boldsymbol{q}_{j}-\boldsymbol{p}_{i}=\frac{1}{n^{-1}}\sum_{j=1}^{n}\mathsf{T}_{i j}\boldsymbol{q}_{j}-\boldsymbol{p}_{i}=\frac{\sum_{j=1}^{n}\mathsf{T}_{i j}\boldsymbol{q}_{j}}{\sum_{j=1}^{n}\mathsf{T}_{i j}}-\boldsymbol{p}_{i}, $$

其中我们在最后一个等式中利用了$\sum_{i=1}^{n} \mathsf{T}_{ij} = n^{-1}$这一性质。

在现实情况中，式(6)中的第一个等式并不成立。尽管如此，式(6)的最后一个表达式仍然是合理的流初始估计。实际上，该计算等价于为每个点$\boldsymbol{p}_i$计算一个对应的虚拟点，该虚拟点是$\boldsymbol{q}$中若干点的重心。从$\mathcal{T}_{ij}$传输到$\boldsymbol{p}_i$的传输质量$\boldsymbol{q}_j$越大，$\boldsymbol{q}_j$对该虚拟点的贡献就越大。这个虚拟点与$\boldsymbol{p}_i$之间的差值就是流$\boldsymbol{f}_i$的一个估计。该虚拟点是在已知$\boldsymbol{p}_i + \boldsymbol{f}_i$的质量传输到$\boldsymbol{p}_i$中哪个位置的前提下，对$\boldsymbol{q}$位置的一次“猜测”。

---

然而我们注意到，式(6)中估计得到的流$\pmb{f}$必然仍存在不足：极有可能$\pmb{p} + \pmb{f}$中的部分点无法表示为已找到的对应点$\pmb{q}$的重心。实际上，由于点云采样的分辨率有限，$\pmb{p}$中可见的部分物体在$\pmb{q}$中可能不再可见。这些缺失区域的流无法从$\pmb{q}$重建，必须利用$\pmb{p}$中可用的结构信息，借助采样良好区域的邻域信息进行重建。因此，我们使用残差网络对流进行优化：

 $$ \boldsymbol{f}_{\mathrm{est}}=\tilde{\boldsymbol{f}}+h(\tilde{\boldsymbol{f}}), $$

其中$h : \mathbb{R}^{n \times 3} \to \mathbb{R}^{n \times c}$将估计得到的流$\tilde{f}$作为输入，并使用定义在点云p上的卷积。

最后我们在本节末尾指出，当满足$\mathrm{FLOT}_{0}$时，式(6)可简化为

 $$ \tilde{f}_{i}=\frac{\sum_{j=1}^{n}\exp(-\mathsf{C}_{i j}/\epsilon)\left(\boldsymbol{q}_{j}-\boldsymbol{p}_{i}\right)}{\sum_{j=1}^{n}\exp(-\mathsf{C}_{i j}/\epsilon)}. $$

可以看到，在这种情况下OT模块本质上退化为注意力机制[^37]。因此注意力机制是FLOT的一个特例，其中熵正则项$\epsilon$发挥了softmax温度的作用。需要说明的是，类似的注意力层已被证实在刚性配准等相关问题中非常有效[^42] [^43] [^44]。

### 3.3 训练

网络参数记为$\theta$和$\epsilon, \gamma$，我们在规模为L的带标注合成数据集上进行全监督联合训练。注意，为了保证$\epsilon, \gamma$的正定性，我们学习它们的对数值。我们为$\epsilon$添加了0.03的恒定偏移量，以避免训练过程中指数函数出现数值不稳定问题。

唯一的训练损失是真实流f与估计流$\ell_{1}$之间的$f_{est}$范数：

 $$ \min_{\theta}\frac{1}{3L}\sum_{l=1}^{L}\left\|\mathsf{M}^{(l)}\left(\boldsymbol{f}_{\mathrm{est}}^{(\ell)}-\boldsymbol{f}^{(\ell)}\right)\right\|_{1}, $$

其中$\mathbf{M}^{(l)} \in \mathbb{R}^{n \times n}$是对角矩阵，编码了用于移除流被遮挡的点的标注掩码。

当n=2048时我们使用批量大小为4，当n=8192时批量大小为1，使用Adam优化器[^13]，初始学习率为0.001。除非第4节另有说明，否则学习率保持恒定。

### 3.4 与现有方法的异同

FLOT与[^11]、[^15]、[^46]的第一个主要区别是，FLOT的参数量远小于上述方法（参见表1）。另一个区别是

---

我们不使用任何下采样和上采样层。与[^11]、[^46]不同，我们不使用多尺度分析来寻找点之间的对应关系。与[^15]一样，点云之间的信息仅融合一次，但我们是在最高采样分辨率下进行融合，且不在g和h之间使用跳跃连接。

我们还注意到，[^11]、[^15]、[^46]依赖于将MLP或卷积网络应用到拼接后的输入特征上，来混合两个点云之间的信息。这种混合函数是学习得到的，因此不具备显式性。我们很难弄清对应关系实际上是如何建立的，也就是无法确定哪些输入信息被保留，哪些没有被纳入考虑。相比之下，FLOT中的混合函数是显式的，仅包含两个根据训练数据调整的标量$\epsilon$、$\lambda$，它们的作用在OT问题(2)中被清晰界定。OT模块的核心是输入特征之间的简单互相关，这是一个易于解释、研究和可视化的模块。最后，尽管[^11]、[^15]、[^46]中的卷积网络/MLP可以逼近多种函数，但在仅依靠训练数据引导完成学习的情况下，最终得到的混合函数也不太可能真的逼近Sinkhorn算法或注意力层。

## 4 实验

### 4.1 数据集

和相关工作一致，我们在全监督条件下使用FlyingThings3D [^19]训练网络，并在FlyingThings3D和KITTI场景流 [^22] [^23]上测试。但这些数据集都不直接提供点云，需要从原始数据中提取点云信息。提取这些三维数据至少有两种略有差异的方式，我们报告两种版本的结果，以更全面地评估性能。第一版数据集按照$^{4}$中的方法制备 [^11]，处理后的点云中不保留被遮挡的点，我们将这些数据集记为FT3D $_s$ 和 KITTI $_s$。第二版数据集由$^{5}$制备 [^15]，记为FT3D $_o$ 和 KITTI $_o$。该版本数据集包含光流被遮挡的点，这些点会出现在网络的输入和输出中，但和[^15]中的处理一致，不会被纳入训练损失(9)和性能指标的计算。关于数据集的更多信息请见补充材料。需要说明的是，我们从FT3D $_s$和FT3D $_o$的原始训练集中留出2000个样本作为验证集，用于第4.3节的实验。

### 4.2 性能指标

我们采用了[^11]、[^15]、[^46]中使用的四个指标：端点误差EPE；两种精度度量，分别记为AS和AR，通过对EPE设置不同阈值计算得到；还有一个异常值百分比指标，同样基于EPE的阈值计算得到。这些指标的定义在补充材料中给出。

---

<div style="text-align: center;">Table 1. Performance of FLOT on the validation sets of FT3D $_p$, FT3D $_s$, and FT3D $_o$ (top). Performance of FLOT measured at the output of the OT module, i.e., before refinement by h, on FT3D $_p$ and FT3D $_s$ (bottom). The corresponding performance on FT3D $_o$ is in the supplementary material. We report average scores and, between parentheses, their standard deviations. Please refer to Section 4.3 for more details.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>K</td><td style='text-align: center; word-wrap: break-word;'>$\epsilon$</td><td style='text-align: center; word-wrap: break-word;'>$\lambda/(\lambda + \epsilon)$</td><td style='text-align: center; word-wrap: break-word;'>EPE</td><td style='text-align: center; word-wrap: break-word;'>AS</td><td style='text-align: center; word-wrap: break-word;'>AR</td><td style='text-align: center; word-wrap: break-word;'>Out.</td></tr><tr><td rowspan="4">FT3D $_{{p}}$</td><td style='text-align: center; word-wrap: break-word;'>$\text{FLOT}_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0 (fixed)</td><td style='text-align: center; word-wrap: break-word;'>0.0026 (0.0005)</td><td style='text-align: center; word-wrap: break-word;'>99.56 (0.08)</td><td style='text-align: center; word-wrap: break-word;'>99.69 (0.05)</td><td style='text-align: center; word-wrap: break-word;'>0.44 (0.10)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.70 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.0011 (0.0001)</td><td style='text-align: center; word-wrap: break-word;'>99.83 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>99.89 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.17 (0.01)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.82 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.0009 (0.0001)</td><td style='text-align: center; word-wrap: break-word;'>99.85 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>99.90 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.16 (0.01)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.88 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.0009 (0.0001)</td><td style='text-align: center; word-wrap: break-word;'>99.84 (0.02)</td><td style='text-align: center; word-wrap: break-word;'>99.90 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.17 (0.02)</td></tr><tr><td rowspan="4">FT3D $_{{s}}$</td><td style='text-align: center; word-wrap: break-word;'>$\text{FLOT}_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0 (fixed)</td><td style='text-align: center; word-wrap: break-word;'>0.0811 (0.0005)</td><td style='text-align: center; word-wrap: break-word;'>50.32 (0.34)</td><td style='text-align: center; word-wrap: break-word;'>83.08 (0.24)</td><td style='text-align: center; word-wrap: break-word;'>52.15 (0.34)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.64 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.0785 (0.0003)</td><td style='text-align: center; word-wrap: break-word;'>50.91 (0.52)</td><td style='text-align: center; word-wrap: break-word;'>83.67 (0.10)</td><td style='text-align: center; word-wrap: break-word;'>51.73 (0.38)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.59 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.0786 (0.0010)</td><td style='text-align: center; word-wrap: break-word;'>51.06 (0.95)</td><td style='text-align: center; word-wrap: break-word;'>83.78 (0.35)</td><td style='text-align: center; word-wrap: break-word;'>51.72 (0.76)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.56 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.0798 (0.0003)</td><td style='text-align: center; word-wrap: break-word;'>49.77 (0.50)</td><td style='text-align: center; word-wrap: break-word;'>83.39 (0.08)</td><td style='text-align: center; word-wrap: break-word;'>52.58 (0.31)</td></tr><tr><td rowspan="4">FT3D $_{{o}}$</td><td style='text-align: center; word-wrap: break-word;'>$\text{FLOT}_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0 (fixed)</td><td style='text-align: center; word-wrap: break-word;'>0.1834 (0.0018)</td><td style='text-align: center; word-wrap: break-word;'>21.94 (0.69)</td><td style='text-align: center; word-wrap: break-word;'>52.79 (0.53)</td><td style='text-align: center; word-wrap: break-word;'>77.19 (0.43)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.50 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.1798 (0.0009)</td><td style='text-align: center; word-wrap: break-word;'>22.01 (0.14)</td><td style='text-align: center; word-wrap: break-word;'>53.39 (0.24)</td><td style='text-align: center; word-wrap: break-word;'>76.77 (0.16)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.34 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.1797 (0.0014)</td><td style='text-align: center; word-wrap: break-word;'>22.77 (0.53)</td><td style='text-align: center; word-wrap: break-word;'>53.74 (0.54)</td><td style='text-align: center; word-wrap: break-word;'>76.39 (0.43)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0.03 (0.00)</td><td style='text-align: center; word-wrap: break-word;'>0.35 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.1813 (0.0020)</td><td style='text-align: center; word-wrap: break-word;'>22.64 (0.41)</td><td style='text-align: center; word-wrap: break-word;'>53.58 (0.41)</td><td style='text-align: center; word-wrap: break-word;'>76.52 (0.46)</td></tr><tr><td rowspan="4">FT3D $_{{p}}$</td><td style='text-align: center; word-wrap: break-word;'>$\text{FLOT}_{{0}}$</td><td rowspan="4">Same as above</td><td rowspan="4">0.0026 (0.0006)</td><td style='text-align: center; word-wrap: break-word;'>99.59 (0.07)</td><td style='text-align: center; word-wrap: break-word;'>99.70 (0.05)</td><td style='text-align: center; word-wrap: break-word;'>0.42 (0.10)</td><td style='text-align: center; word-wrap: break-word;'>0.0010 (0.0001)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>99.83 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>99.89 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.18 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.0009 (0.0000)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>99.85 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>99.90 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.16 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.0010 (0.0001)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>99.84 (0.03)</td><td style='text-align: center; word-wrap: break-word;'>99.90 (0.01)</td><td style='text-align: center; word-wrap: break-word;'>0.17 (0.02)</td><td style='text-align: center; word-wrap: break-word;'>0.0010 (0.0001)</td></tr><tr><td rowspan="4">FT3D $_{{s}}$</td><td style='text-align: center; word-wrap: break-word;'>$\text{FLOT}_{{0}}$</td><td rowspan="4">Same as above</td><td rowspan="4">0.1789 (0.0004)</td><td style='text-align: center; word-wrap: break-word;'>17.57 (0.07)</td><td style='text-align: center; word-wrap: break-word;'>43.34 (0.08)</td><td style='text-align: center; word-wrap: break-word;'>75.34 (0.07)</td><td style='text-align: center; word-wrap: break-word;'>0.1721 (0.0005)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>18.24 (0.11)</td><td style='text-align: center; word-wrap: break-word;'>44.64 (0.14)</td><td style='text-align: center; word-wrap: break-word;'>74.54 (0.11)</td><td style='text-align: center; word-wrap: break-word;'>0.1764 (0.0003)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>17.64 (0.07)</td><td style='text-align: center; word-wrap: break-word;'>43.52 (0.10)</td><td style='text-align: center; word-wrap: break-word;'>75.09 (0.07)</td><td style='text-align: center; word-wrap: break-word;'>0.1761 (0.0009)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>17.68 (0.13)</td><td style='text-align: center; word-wrap: break-word;'>43.60 (0.23)</td><td style='text-align: center; word-wrap: break-word;'>75.07 (0.13)</td><td style='text-align: center; word-wrap: break-word;'>0.1764 (0.0009)</td></tr></table>

需要强调的是，本文在$KITTI_{s}$和$KITTI_{o}$上报告的性能，分别是使用在$FT3D_{s}$和$FT3D_{o}$上训练得到的模型、未经微调直接得到的结果。我们没有针对任何数据集调整模型，不过我们确保所有数据集的xyz坐标轴是对齐一致的。

### 4.3 FLOT的研究

我们使用FT3D $_s$、FT3D $_o$和FT3D $_p$来检验训练后OT参数$\epsilon$、$\lambda$收敛到的数值，以此研究K对FLOT性能的影响，并将结果与FLOT $_0$进行比较。FT3D $_p$与FT3D $_s$是完全相同的数据集，区别仅在于我们在点采样时强制执行$\boldsymbol{p} + \boldsymbol{f} = \mathrm{P}\boldsymbol{q}$，以此模拟理想世界设定。这个理想数据集的唯一作用是验证OT模型在理想世界中成立，这是我们设计工作的出发点。

在这些实验中，训练在$n = 2048$上开展，共进行40个训练轮次，耗时约9小时。每个模型从不同的$\theta$随机初始化开始训练3次，以考虑初始化带来的性能波动。评估工作在$n = 2048$的验证集上完成。需要注意，n个点在验证阶段同样是随机抽取的。为了考虑这种变异性，我们会对每个

---

![Image](images/18e3a28f5165effb04f9499030f763bab31d696ccdcb39a4ebcb86e7c44184ad.jpg)

<div style="text-align: center;">Fig. 2. Illustration of correspondences, found by FLOT ( $K = 1$) trained on  $n = 8192$ (see Section 4.4), between  $\pmb{p}$ and  $\pmb{q}$ in two different scenes of KITTIs. We isolated one car in each of the scenes for better visualisation. The point cloud  $\pmb{p}$ captured at time  t is represented in orange. The lines show the correspondence between a query point  $\pmb{p}_i$ and the corresponding point  $\pmb{q}_j^*$ in  $\pmb{q}$ on which most the mass is transported:  $j^* = \arg\max_j \pmb{T}_{ij}$. The colormap on  $\pmb{q}$ represents the values in  $\pmb{T}_i$ where yellow corresponds to 0 and blue indicates the maximum entry in  $\pmb{T}_i$ and show how the mass is concentrated around  $\pmb{q}_j^*$.</div>

训练好的模型进行5次验证，每次都抽取不同的点。因此，每个模型的每个分数我们都能得到15个数值，表1中报告了它们的平均值和标准差。我们给出了经h细化前后得到的分数。

首先，我们观察到训练后所有模型的$\epsilon = 0.03$。我们在此说明，我们添加了0.03的常数偏移，以防止当$\epsilon$取值过小时，算法1中的指数函数出现数值错误。因此，熵正则化（等价于$\text{FLOT}_{0}$中的温度参数）达到了其最小可能值。这种较小的值更有利于生成稀疏传输计划T，从而在$\boldsymbol{p}$和$\boldsymbol{q}$之间得到稀疏对应关系。图2给出了这些稀疏对应关系的示例。我们可以看到，对应关系是准确的，概率质量很好地集中在目标点周围，当这些点靠近物体的角点时这一特征尤为明显。

其次，控制质量正则化的幂参数$\lambda/(\lambda + \epsilon)$在$\mathrm{FT3D_p}$上达到的取值高于在$\mathrm{FT3D_o}$上的取值。这符合预期结果，因为$\mathrm{FT3D_p}$不存在任何数据缺陷，而$\mathrm{FT3D_o}$存在遮挡。$\mathrm{FT3D_s}$上达到的取值介于$\mathrm{FT3D_p}$和$\mathrm{FT3D_o}$之间。这也符合预期，因为$\mathrm{FT3D_s}$不存在遮挡，唯一的缺陷是t和$t+1$对场景的采样方式不同。

第三，在FT3D $_p$上，与已经能取得较好结果的FLOT $_0$相比，我们的FLOT将EPE降低了一半。将K从1增加到3可进一步减小误差，并在K=5时趋于稳定。这验证了我们理想世界设置下的OT模型：OT最优解与理想世界最优解一致。

第四，在FT3D $_s$和FT3D $_o$上，FLOT的平均评分优于FLOT $_0$，只有FT3D $_s$上K=5时的两个指标例外。FLOT $_0$本身依然可观的性能表明，它的大部分性能都来自于训练得到的传输

---

<div style="text-align: center;">Table 2. Performance on FT3D $_s$ and KITTI $_s$. The scores of FlowNet3D and HPLFlowNet are obtained from [^11]. We also report the scores of PointPWC-Net available in [^46], as well as those obtained using the official implementation $^{\dagger}$. Italic entries are for methods publicly available but not yet published at submission time.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>EPE</td><td style='text-align: center; word-wrap: break-word;'>AS</td><td style='text-align: center; word-wrap: break-word;'>AR</td><td style='text-align: center; word-wrap: break-word;'>Out.</td><td style='text-align: center; word-wrap: break-word;'>Size (MB)</td></tr><tr><td rowspan="5">FT3D $_s$</td><td style='text-align: center; word-wrap: break-word;'>FlowNet3D [^15]</td><td style='text-align: center; word-wrap: break-word;'>0.114</td><td style='text-align: center; word-wrap: break-word;'>41.2</td><td style='text-align: center; word-wrap: break-word;'>77.1</td><td style='text-align: center; word-wrap: break-word;'>60.2</td><td style='text-align: center; word-wrap: break-word;'>15</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HPLFlowNet [^11]</td><td style='text-align: center; word-wrap: break-word;'>0.080</td><td style='text-align: center; word-wrap: break-word;'>61.4</td><td style='text-align: center; word-wrap: break-word;'>85.5</td><td style='text-align: center; word-wrap: break-word;'>42.9</td><td style='text-align: center; word-wrap: break-word;'>77</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FLOT (K = 1)</td><td style='text-align: center; word-wrap: break-word;'>0.052</td><td style='text-align: center; word-wrap: break-word;'>73.2</td><td style='text-align: center; word-wrap: break-word;'>92.7</td><td style='text-align: center; word-wrap: break-word;'>35.7</td><td style='text-align: center; word-wrap: break-word;'>0.44</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PointPWC-Net [^46]</td><td style='text-align: center; word-wrap: break-word;'>0.059</td><td style='text-align: center; word-wrap: break-word;'>73.8</td><td style='text-align: center; word-wrap: break-word;'>92.8</td><td style='text-align: center; word-wrap: break-word;'>34.2</td><td style='text-align: center; word-wrap: break-word;'>30</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PointPWC-Net $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.055</td><td style='text-align: center; word-wrap: break-word;'>79.0</td><td style='text-align: center; word-wrap: break-word;'>94.4</td><td style='text-align: center; word-wrap: break-word;'>29.8</td><td style='text-align: center; word-wrap: break-word;'>30</td></tr><tr><td rowspan="5">KITTI $_s$</td><td style='text-align: center; word-wrap: break-word;'>FlowNet3D [^15]</td><td style='text-align: center; word-wrap: break-word;'>0.177</td><td style='text-align: center; word-wrap: break-word;'>37.4</td><td style='text-align: center; word-wrap: break-word;'>66.8</td><td style='text-align: center; word-wrap: break-word;'>52.7</td><td style='text-align: center; word-wrap: break-word;'>15</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HPLFlowNet [^11]</td><td style='text-align: center; word-wrap: break-word;'>0.117</td><td style='text-align: center; word-wrap: break-word;'>47.8</td><td style='text-align: center; word-wrap: break-word;'>77.8</td><td style='text-align: center; word-wrap: break-word;'>41.0</td><td style='text-align: center; word-wrap: break-word;'>77</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FLOT (K = 1)</td><td style='text-align: center; word-wrap: break-word;'>0.056</td><td style='text-align: center; word-wrap: break-word;'>75.5</td><td style='text-align: center; word-wrap: break-word;'>90.8</td><td style='text-align: center; word-wrap: break-word;'>24.2</td><td style='text-align: center; word-wrap: break-word;'>0.44</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PointPWC-Net [^46]</td><td style='text-align: center; word-wrap: break-word;'>0.069</td><td style='text-align: center; word-wrap: break-word;'>72.8</td><td style='text-align: center; word-wrap: break-word;'>88.8</td><td style='text-align: center; word-wrap: break-word;'>26.5</td><td style='text-align: center; word-wrap: break-word;'>30</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>PointPWC-Net $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>0.067</td><td style='text-align: center; word-wrap: break-word;'>78.5</td><td style='text-align: center; word-wrap: break-word;'>90.6</td><td style='text-align: center; word-wrap: break-word;'>22.8</td><td style='text-align: center; word-wrap: break-word;'>30</td></tr></table>

代价C。在FT3D $_s$和FT3D $_o$上，将K从1改为3对EPE的影响小于其对FT3D $_p$的影响。我们还发现，当K从3增加到5时，性能会出现轻微下降。OT模型(2)只能是（模拟）真实世界的近似模型。真实最优解和OT最优解并不重合。增加K会让我们更接近OT最优解，但不一定总能更接近真实世界的最优解。K成为了一个需要调整的超参数。在后续实验中，我们使用K = 1或K = 3。

最后，去掉h对FT3D$_p$上的性能没有影响，FLOT的表现仍然优于FLOT$_0$。这说明OT模块能够自行准确估计理想置换矩阵P，在这个理想设置中并不需要残差网络h。然而，在更贴近现实的数据集FT3D$_s$和FT3D$_o$上，h发挥着重要作用，当保留h时，EPE降低了约一半。

### 4.4 在FT3D $_{s}$和KITTI $_{s}$上的性能

我们在表2中对比了FLOT与其他方法在FT3D $_s$和KITTI $_s$上的性能。我们按照$n = 8192$、[^11]中的设置，使用[^46]个点训练FLOT。学习率初始设为0.001，训练50个epoch后将学习率除以10，再继续训练10个epoch。

FlowNet3D和HPLFlowNet的得分直接取自[^11]。我们既报告了[^46]中给出的PointPWC-net的得分，也报告了我们使用对应代码和预训练模型得到的更优结果。$^6$ 模型参数量方面，FlowNet3D的参数量取自[^15]的补充材料，其余模型参数量取自[^11]和[^46]提供的预训练模型。HPLFlowNet、PointPWC-Net和FLOT的参数量分别为19M、7.7M和0.11M。

---

<div style="text-align: center;">Table 3. Performance on FT3D $_{0}$ and KITTI $_{0}$.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>EPE</td><td style='text-align: center; word-wrap: break-word;'>AS</td><td style='text-align: center; word-wrap: break-word;'>AR</td><td style='text-align: center; word-wrap: break-word;'>Out.</td></tr><tr><td rowspan="4">FT3D $_{{o}}$</td><td style='text-align: center; word-wrap: break-word;'>FlowNet3D [^15]</td><td style='text-align: center; word-wrap: break-word;'>0.160</td><td style='text-align: center; word-wrap: break-word;'>25.4</td><td style='text-align: center; word-wrap: break-word;'>58.5</td><td style='text-align: center; word-wrap: break-word;'>78.9</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.160</td><td style='text-align: center; word-wrap: break-word;'>33.8</td><td style='text-align: center; word-wrap: break-word;'>63.8</td><td style='text-align: center; word-wrap: break-word;'>70.5</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT (K = 1)$</td><td style='text-align: center; word-wrap: break-word;'>0.156</td><td style='text-align: center; word-wrap: break-word;'>34.3</td><td style='text-align: center; word-wrap: break-word;'>64.3</td><td style='text-align: center; word-wrap: break-word;'>70.0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT (K = 3)$</td><td style='text-align: center; word-wrap: break-word;'>0.161</td><td style='text-align: center; word-wrap: break-word;'>32.3</td><td style='text-align: center; word-wrap: break-word;'>62.7</td><td style='text-align: center; word-wrap: break-word;'>71.7</td></tr><tr><td rowspan="4">KITTI $_{{o}}$</td><td style='text-align: center; word-wrap: break-word;'>FlowNet3D [^15]</td><td style='text-align: center; word-wrap: break-word;'>0.173</td><td style='text-align: center; word-wrap: break-word;'>27.6</td><td style='text-align: center; word-wrap: break-word;'>60.9</td><td style='text-align: center; word-wrap: break-word;'>64.9</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.106</td><td style='text-align: center; word-wrap: break-word;'>45.3</td><td style='text-align: center; word-wrap: break-word;'>73.7</td><td style='text-align: center; word-wrap: break-word;'>46.7</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT (K = 1)$</td><td style='text-align: center; word-wrap: break-word;'>0.110</td><td style='text-align: center; word-wrap: break-word;'>41.9</td><td style='text-align: center; word-wrap: break-word;'>72.1</td><td style='text-align: center; word-wrap: break-word;'>48.6</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$FLOT (K = 3)$</td><td style='text-align: center; word-wrap: break-word;'>0.107</td><td style='text-align: center; word-wrap: break-word;'>45.1</td><td style='text-align: center; word-wrap: break-word;'>74.0</td><td style='text-align: center; word-wrap: break-word;'>46.3</td></tr></table>

在FT3D和KITTI数据集上，FLOT的性能均优于FlowNet3D和HPLFlowNet。在KITTI上，FLOT获得的EPE略优于PointPWC-Net，在FT3D上二者EPE相近。不过PointPWC-Net的准确率更高，异常值更少。FLOT是可训练参数量最少的方法（仅为PointPWC-Net的1/69）。

我们在图3中展示了FLOT对KITTI$_s$两个场景的场景流估计质量。可以看到FLOT正确对齐了所有物体。我们还发现，即使经过细化后性能评分有所提升，OT模块输出端估计得到的光流$\tilde{f}$本身就已经具备良好的质量。

### 4.5 在FT3D $_{0}$和KITTI $_{0}$上的性能

我们使用最初在$_{o}$中提出的FT3D $_{o}$和KITTI [^15]，再次对比了FlowNet3D和FLOT的性能。我们使用官方实现训练FlowNet3D。我们在n = 2048个点上训练FLOT和FLOT $_{0}$，初始学习率设为0.001，训练340个epoch后将学习率除以10，再继续训练60个epoch。

两种方法的性能报告于表3中。我们注意到，FLOT和FLOT$_{0}$相比FlowNet3D取得了更高的准确率，在FT3D$_{o}$数据集上AS指标提升了8.8个百分点，在KITTI$_{o}$数据集上提升了17.7个百分点。离群值的数量也出现了同等幅度的减少。FLOT at $K=1$性能最优，FLOT$_{0}$紧随其后。在KITTI$_{o}$数据集上，性能最好的模型是FLOT$_{0}$和FLOT at $K=3$。

读者可以发现，FlowNet3D的结果与[^15]中报告的结果相似，但在KITTI数据集上表现更差。[^15]中对KITTI的评估方式有所不同：场景被分块处理，在每一块内估计场景流，之后再进行全局聚合。在本文中，我们遵循[^11]、[^46]中的相同流程，保持评估方法与第4.4节一致：使用从场景中随机采样的n个点，单次处理完整场景来评估训练后的模型。

---

![Image](images/6ef91d32078e8ca178f5683a1cc8a53f02e90ea013f65af7000b110953ccf72d.jpg)

<div style="text-align: center;">Fig. 3. Two scene from KITTI $_s$ with input point clouds  p,  q along with the ground truth  $p + f$, estimated  $p + \tilde{f}$ and refined  $p + f_{est}$ using FLOT ( $K = 1$) at  $n = 8192$.</div>

## 5 结论

我们提出并研究了一种基于最优传输工具构建的场景流估计方法。该方法仅需要少得多的参数，就能取得与现有最优方法相当的性能。我们还证明，学习得到的传输成本是性能优异的主要原因。由此得到了一种更简单的方法$\text{FLOT}_{0}$，其性能几乎与$\text{FLOT}$相当。

我们还注意到，遮挡的存在会对FLOT的性能产生负面影响。本文提出的对公式(2)中质量约束的松弛可以限制遮挡对性能的影响，但并未显式处理遮挡。因此，该领域仍有改进空间，例如可以通过分析有效传输质量来检测遮挡，并显式处理遮挡。

---

<div style="text-align: center;">Table 4. Architecture of g and h where layer  $4^{(*)}$ is linear and used in h only.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Layer $\ell$</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>4 $^{(*)}$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>MLP size</td><td style='text-align: center; word-wrap: break-word;'>32 - 32 - 32</td><td style='text-align: center; word-wrap: break-word;'>64 - 64 - 64</td><td style='text-align: center; word-wrap: break-word;'>128 - 128 - 128</td><td style='text-align: center; word-wrap: break-word;'>3</td></tr></table>

## A 网络架构

在我们的实现中，g和h中使用的卷积基于PointNet++ [^30]。每个卷积层将待执行卷积的点云$\boldsymbol{r} \in \mathbb{R}^{n \times 3}$以及来自前一层$\phi_i^{(\ell)} \in \mathbb{R}^{c'}$的特征$i = 1, \ldots, n$、$\ell$作为输入。请注意，这些特征在g的输入端就是点坐标$\boldsymbol{r}$，在h的输入端就是估计流$\tilde{\boldsymbol{f}}$。对于每个点$\boldsymbol{r}_i$，我们会计算出$\mathcal{N}(\boldsymbol{r}_i)$中距离$m = 32$最近的$\boldsymbol{r}_i$个邻居的索引$\boldsymbol{r}$，从而得到点$\boldsymbol{r}_i$处的m个特征，每个特征满足

 $$ \left(\boldsymbol{\phi}_{j}^{(\ell)^{\mathsf{T}}},\ \boldsymbol{r}_{j}^{\mathsf{T}}-\boldsymbol{r}_{i}^{\mathsf{T}}\right)^{\mathsf{T}}\in\mathbb{R}^{c^{\prime}+3}, $$

$j \in \mathcal{N}(\boldsymbol{r}_i)$。这些特征被输入一个多层感知机（MLP）：$\mathbb{R}^{c'+3} \to \mathbb{R}^{c'}$由一系列全连接层、带仿射校正的实例归一化层[?]和负斜率为0.1的带泄露ReLU激活函数堆叠而成，按相同顺序重复3次。最终，经过最终的最大池化层后，得到点$\boldsymbol{r}_i$处的新特征：

 $$\phi_{i}^{(\ell+1)}=\operatorname*{m a x}_{j\in\mathcal{N}(\boldsymbol{p}_{i})}\left\{\mathrm{M L P}\left[(\phi_{j}^{(\ell)\intercal},\boldsymbol{r}_{j}^{\intercal}-\boldsymbol{r}_{i}^{\intercal})^{\intercal}\right]\right\}\in\mathbb{R}^{c^{\prime\prime}},$$

其中最大值是对每个$c''$通道独立计算得到的。这些计算使用同一个MLP对点云中的每个点$\boldsymbol{r}_i$重复进行。网络g和h共享相同的架构，具体架构列于表4中。但需要注意，g和h之间不共享权重。

## B 数据集

数据集FT3D $_s$ 和KITTI $_s$ 按照 $^7$ [^11] 中的方法制备。处理后的点云中不存在遮挡点：总能在 $\mathbf{q}_j$ 中找到一个点 $\mathbf{q}$ 满足 $\mathbf{q}_j = \mathbf{p}_i + \mathbf{f}_i$ 完整采样率N的条件。但实际应用中，由于两个点云都经过随机独立下采样，仅保留 $\mathbf{p}_i$ 个点，因此大多数 $\mathbf{q}$ 中的点无法在 $n \ll N$ 中找到直接匹配，这模拟了场景的不同采样情况。尽管如此，在t和 $t+1$ 之间，不会因遮挡导致物体出现或消失。FT3D $_s$ 包含19640个训练样本，我们从中留出2000个用于验证，另有3824个测试样本。KITTI $_s$ 包含200个样本，按照 [^11] 的设置，其中142个用于测试。我们不使用

---

KITTI剩余的样本。KITTI $_{s}$ 中的地面点通过高度阈值移除。两个数据集中所有深度大于35米的点都会被移除。

数据集FT3D $_o$ 和KITTI $_o$ 由 $^8$ 完成制备 [^15]。在FT3D $_o$ 中，提供了光流无效（例如遮挡导致）的掩码，和 [^15] 一样，这些掩码被用于训练损失计算中。测试阶段，所有方法也仅使用这些掩码在有效点上计算得分。但所有网络的输入都保留了对应光流无效的点。KITTI $_o$ 未提供此类掩码。FT3D $_o$ 包含19999个训练样本，我们从中留出2000个用于验证，另有2003个测试样本。$^9$ KITTI $_o$ 包含150个测试样本。KITTI $_o$ 中的地面点由 [^15] 移除。两个数据集中所有深度大于35米的点都会被移除。

## C 性能指标

我们采用了 [^11]、[^15]、[^46] 中使用的以下四个指标：

– EPE $_{i} = \|(\boldsymbol{f}_{\mathrm{est}})_{i} - \boldsymbol{f}_{i}\|_{2}$：端点误差，对所有i取平均值；

– AS：满足 $\mathrm{EPE}_i < 0.05$ 或 $\mathrm{EPE}_i / \| f_i \|_2 < 0.05$ 的点占比；

– AR：满足 $\mathrm{EPE}_i < 0.1$ 或 $\mathrm{EPE}_i / \| f_i \|_2 < 0.1$ 的点占比

– Out.：满足 $\mathrm{EPE}_i > 0.3$ 或 $\mathrm{EPE}_i / \| f_i \|_2 > 0.1$ 的点占比。

上述指标的计算方式如下：从数据集中提供的N个点里随机选取n个点，得到点云p、q。在这n个选定点上估计光流，并与真实光流f进行对比。最终得分在整个验证/测试集上取平均。

## D 额外实验结果

### D.1 FLOT 研究

我们在表5中给出了FT3D $_{o}$ 上OT模块输出端得到的FLOT性能。经过优化后的对应性能可在论文正文部分查看。和FT3D $_{s}$ 上的结果一致，我们发现优化步骤能将EPE降低约2，验证了该步骤在存在遮挡时的有效性。

### D.2 OT模块的计算耗时

在 $n = 2048$ 设置下，对于 $^{10}$、$\mathrm{FLOT}_{0}$、$\mathrm{FLOT} K = 1$，OT模块的计算时间$\mathrm{FLOT} K = 3$ 分别为1.4 ms、2.0 ms和2.2 ms。在 $n = 8192$ 设置下，计算

---

<div style="text-align: center;">Table 5. Performance of FLOT measured at the output of the OT module, i.e., before refinement by h, on FT3D $_{o}$. We report the average scores and their standard deviations between parentheses.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>K</td><td style='text-align: center; word-wrap: break-word;'>EPE</td><td style='text-align: center; word-wrap: break-word;'>AS</td><td style='text-align: center; word-wrap: break-word;'>AR</td><td style='text-align: center; word-wrap: break-word;'>Out.</td></tr><tr><td rowspan="4">FT3D_{o}</td><td style='text-align: center; word-wrap: break-word;'>$\text{{FLOT}}_{{0}}$</td><td style='text-align: center; word-wrap: break-word;'>0.3539 (0.0028)</td><td style='text-align: center; word-wrap: break-word;'>6.98 (0.11)</td><td style='text-align: center; word-wrap: break-word;'>22.05 (0.28)</td><td style='text-align: center; word-wrap: break-word;'>88.76 (0.14)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>0.3412 (0.0042)</td><td style='text-align: center; word-wrap: break-word;'>7.55 (0.17)</td><td style='text-align: center; word-wrap: break-word;'>23.50 (0.40)</td><td style='text-align: center; word-wrap: break-word;'>88.02 (0.22)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0.3426 (0.0028)</td><td style='text-align: center; word-wrap: break-word;'>7.38 (0.04)</td><td style='text-align: center; word-wrap: break-word;'>23.09 (0.05)</td><td style='text-align: center; word-wrap: break-word;'>88.21 (0.03)</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0.3440 (0.0021)</td><td style='text-align: center; word-wrap: break-word;'>7.32 (0.05)</td><td style='text-align: center; word-wrap: break-word;'>22.94 (0.16)</td><td style='text-align: center; word-wrap: break-word;'>88.34 (0.09)</td></tr></table>

OT模块的运行时间分别为：$\text{FLOT}_{0}$、$\text{FLOT}$（K = 1）和FLOT（K = 3）情形下的13.1 ms、16.0 ms、17.9 ms。这部分耗时最多占总计算时间的8%，而总计算时间本身在n = 2048时最多为27.8 ms，在n = 8192时最多为346 ms。大部分计算时间（n = 2048时至少67%，n = 8192时至少86%）都消耗在特征提取器g上。这表明OT模块仅占总计算时间的很小一部分。

需要注意的是，OT模块的耗时与所用卷积的类型无关。将我们的PointNet++实现替换为更快的版本，或是选择更快的卷积，都能直接减少g和h上花费的计算时间。我们的OT模块实现还可以通过以下方式提速：无需对代价矩阵$\mathbf{C}$进行密集计算，仅对间距小于$d_{\max}$米的点进行计算即可，因为距离更远的点永远不会对$\mathbf{T}$产生贡献。

## 参考文献

[^1]: Basha, T., Moses, Y., Kiryati, N.: Multi-view Scene Flow Estimation: A View Centered Variational Approach. In: Conference on Computer Vision and Pattern Recognition. pp. 1506–1513. IEEE (2010)

[^2]: Battrawy, R., Schuster, R., Wasenmler, O., Rao, Q., Stricker1, D.: LiDAR-Flow: Dense Scene Flow Estimation from Sparse LiDAR and Stereo Images. In: International Conference on Intelligent Robots and Systems. pp. 7762–7769. IEEE (2019)

[^3]: Baur, S.A., Moosmann, F., Wirges, S., Rist, C.B.: Real-time 3D LiDAR Flow for Autonomous Vehicles. In: Intelligent Vehicles Symposium. pp. 1288–1295. IEEE (2019)

[^4]: Behl, A., Paschalidou, D., Donné, S., Geiger, A.: PointFlowNet: Learning representations for rigid motion estimation from point clouds. In: Conference on Computer Vision and Pattern Recognition. pp. 7962–7971. IEEE (2019)

[^5]: Chen, Y., Pock, T.: Trainable Nonlinear Reaction Diffusion: A Flexible Framework for Fast and Effective Image Restoration. Transactions on Pattern Analysis and Machine Intelligence 39(6), 1256–1272 (2017)

[^6]: Chizat, L., Peyré, G., Schmitzer, B., Vialard, F.X.: Scaling algorithms for unbalanced transport problems. Mathematics of Computation 87, 2563–2609 (2018)


## [^7]: Cuturi, M.: Sinkhorn Distances: Lightspeed Computation of Optimal Transport. In: Burges, C.J.C., Bottou, L., Welling, M., Ghahramani, Z., Weinberger, K.Q.


---

（主编）《神经信息处理系统进展》，第2292–2300页，Curran联合公司（2013）

[^8]: Dewan, A., Caselitz, T., Tipaldi, G.D., Burgard, W.: Rigid scene flow for 3D LiDAR scans. In: International Conference on Intelligent Robots and Systems (IROS). pp. 1765–1770. IEEE (2016)

[^9]: Genevay, A., Peyré, G., Cuturi, M.: Learning generative models with sinkhorn divergences. In: Storkey, A., Perez-Cruz, F. (eds.) International Conference on Artificial Intelligence and Statistics. Proceedings of Machine Learning Research, vol. 84, pp. 1608–1617. PMLR (2018)

[^10]: Gregor, K., LeCun, Y.: Learning fast approximations of sparse coding. In: International Conference on Machine Learning. pp. 399–406 (2010)

[^11]: Gu, X., Wang, Y., Wu, C., Lee, Y.J., Wang, P.: HPLFlowNet: Hierarchical Permu-tohedral Lattice FlowNet for Scene Flow Estimation on Large-Scale Point Clouds. In: Conference on Computer Vision and Pattern Recognition. pp. 3249–3258. IEEE (2019)

[^12]: Hadfield, S., Bowden, R.: Kinecting the dots: Particle based scene flow from depth sensors. In: International Conference on Computer Vision. pp. 2290–2295. IEEE (2011)

[^13]: Kingma, D.P., Adam, J.B.: Adam : A method for stochastic optimization. In: International Conference on Learning Representations. arXiv.org (2015)

[^14]: Liu, J., Sun, Y., Eldeniz, C., Gan, W., An, H., Kamilov, U.S.: RARE: Image Reconstruction using Deep Priors Learned without Ground Truth. Journal of Selected Topics in Signal Processing (2020)

[^15]: Liu, X., Qi, C.R., Guibas, L.J.: FlowNet3D: Learning Scene Flow in 3D Point Clouds. In: Conference on Computer Vision and Pattern Recognition. pp. 529–537. IEEE (2019)

[^16]: Ma, W.C., Wang, S., Hu, R., Xiong, Y., Urtasun, R.: Deep Rigid Instance Scene Flow. In: Conference on Computer Vision and Pattern Recognition. pp. 3609–3617. IEEE (2019)

[^17]: Mardani, M., Sun, Q., Donoho, D., Papyan, V., Monajemi, H., Vasanawala, S., Pauly, J.: Neural Proximal Gradient Descent for Compressive Imaging. In: Bengio, S., Wallach, H., Larochelle, H., Grauman, K., Cesa-Bianchi, N., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 9573–9583. Curran Associates, Inc. (2018)

[^18]: Maretic, H.P., Gheche, M.E., Chierchia, G., Frossard, P.: GOT: An Optimal Transport framework for Graph comparison. In: Wallach, H., Larochelle, H., Beygelzimer, A., d'Alché-Buc, F., Fox, E., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 13876–13887. Curran Associates, Inc. (2019)

[^19]: Mayer, N., Ilg, E., Häusser, P., Fischer, P., Cremers, D., Dosovitskiy, A., Brox, T.: A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation. In: Conference on Computer Vision and Pattern Recognition. pp. 4040–4048. IEEE (2016)

[^20]: Meinhardt, T., Moller, M., Hazirbas, C., Cremers, D.: Learning Proximal Operators: Using Denoising Networks for Regularizing Inverse Imaging Problems. In: International Conference on Computer Vision. pp. 1799–1808. IEEE (2017)

[^21]: Mémoli, F.: Gromovwasserstein distances and the metric approach to object matching. Foundations of computational mathematics 11(4), 417–487 (2011)

[^22]: Menze, M., Heipke, C., Geiger, A.: Joint 3d estimation of vehicles and scene flow. In: ISPRS Workshop on Image Sequence Analysis (2015)


## [^23]: Menze, M., Heipke, C., Geiger, A.: Object scene flow. ISPRS Journal of Photogrammetry and Remote Sensing 140, 60–76 (2018)


---

[^24]: Metzler, C., Mousavi, A., , Baraniuk, R.: Learned D-AMP: Principled Neural Network based Compressive Image Recovery. In: Guyon, I., Luxembourg, U.V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 1772–1783. Curran Associates, Inc. (2017)

[^25]: Mittal, H., Okorn, B., Held, D.: Just Go with the Flow: Self-Supervised Scene Flow Estimation. In: Conference on Computer Vision and Pattern Recognition. IEEE (2020)

[^26]: Mousavi, A., Baraniuk, R.G.: Learning to invert: Signal recovery via deep convolutional networks. In: International Conference on Acoustics, Speech and Signal Processing. pp. 2272–2276. IEEE (2017)

[^27]: Nikolentzos, G., Meladianos, P., Vazirgiannis, M.: Matching node embeddings for graph similarity. In: AAAI Conference on Artificial Intelligence. pp. 2429–2435 (2017)

[^28]: Peyré, G., Cuturi, M.: Computational optimal transport: With applications to data science. Foundations and Trends in Machine Learning 11(5-6), 355–607 (2019)

[^29]: Peyr, G., Cuturi, M., Solomon, J.: Gromov-Wasserstein Averaging of Kernel and Distance Matrices. In: Balcan, M.F., Weinberger, K.Q. (eds.) International Conference on Machine Learning. vol. 48, pp. 2664–2672. PMLR (2016)

[^30]: Qi, C.R., Yi, L., Su, H., Guibas, L.J.: PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. In: Guyon, I., Luxburg, U.V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 5099–5108. Curran Associates, Inc. (2017)

[^31]: Sarlin, P.E., DeTone, D., Malisiewicz, T., Rabinovich, A.: SuperGlue: Learning Feature Matching with Graph Neural Networks. In: Conference on Computer Vision and Pattern Recognition. IEEE (2020)

[^32]: Shao, L., Shah, P., Dwaracherla, V., Bohg, J.: Motion-Based Object Segmentation Based on Dense RGB-D Scene Flow. Robotics and Automation Letters 3(4), 3797–3804 (2018)

[^33]: Sun, D., Yang, X., Liu, M.Y., Kautz, J.: PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume. In: Conference on Computer Vision and Pattern Recognition. pp. 8934–8943. IEEE (2018)

[^34]: Titouan, V., Courty, N., Tavenard, R., Laetitia, C., Flamary, R.: Optimal Transport for structured data with application on graphs. In: Chaudhuri, K., Salakhutdinov, R. (eds.) International Conference on Machine Learning. vol. 97, pp. 6275–6284. PMLR (2019)

[^35]: Ushani, A.K., Wolcott, R.W., Walls, J.M., Eustice, R.M.: A learning approach for real-time temporal scene flow estimation from LIDAR data. In: International Conference on Robotics and Automation. pp. 5666–5673. IEEE (2017)

[^36]: Ushani, A.K., Eustice, R.M.: Feature Learning for Scene Flow Estimation from LIDAR. In: Billard, A., Dragan, A., Peters, J., Morimoto, J. (eds.) Conference on Robot Learning. Proceedings of Machine Learning Research, vol. 87, pp. 283–292. PMLR (2018)

[^37]: Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L.U., Polosukhin, I.: Attention is All you Need. In: Guyon, I., Luxburg, U.V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S., Garnett, R. (eds.) Advances in Neural Information Processing Systems 30. pp. 5998–6008. Curran Associates, Inc. (2017)


## [^38]: Vedula, S., Baker, S., Rander, P., Collins, R., Kanade, T.: Three-dimensional scene ow. In: International Conference on Computer Vision. vol. 2, p. 722729. IEEE (1999)


---

[^39]: Vogel, C., Schindler, K., Roth, S.: Piecewise rigid scene flow. In: International Conference on Computer Vision. pp. 1377–1384. IEEE (2013)

[^40]: Wang, S., Suo, S., Ma, W.C., Pokrovsky, A., Urtasun, R.: Deep parametric continuous convolutional neural networks. In: Conference on Computer Vision and Pattern Recognition. pp. 2589–2597. IEEE (2018)

[^41]: Wang, S., Fidler, S., Urtasun, R.: Proximal Deep Structured Models. In: Lee, D.D., Sugiyama, M., Luxburg, U.V., Guyon, I., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 865–873. Curran Associates, Inc. (2016)

[^42]: Wang, X., Jabri, A., Efros, A.A.: Learning Correspondence From the Cycle-Consistency of Time. In: Conference on Computer Vision and Pattern Recognition. pp. 2566–2576. IEEE (2019)

[^43]: Wang, Y., Solomon, J.M.: Deep Closest Point: Learning Representations for Point Cloud Registration. In: International Conference on Computer Vision. pp. 3522–3531. IEEE (2019)

[^44]: Wang, Y., Solomon, J.M.: PRNet: Self-Supervised Learning for Partial-to-Partial Registration. In: Wallach, H., Larochelle, H., Beygelzimer, A., d'Alché-Buc, F., Fox, E., Garnett, R. (eds.) Advances in Neural Information Processing Systems. pp. 8814–8826. Curran Associates, Inc. (2019)

[^45]: Wedel, A., Rabe, C., Vaudrey, T., Brox, T., Franke, U., Cremers, D.: Efficient dense scene flow from sparse or dense stereo data. In: Forsyth, D., Torr, P., Zisserman, A. (eds.) European Conference on Computer Vision. pp. 739–751. Springer Berlin Heidelberg (2008)

[^46]: Wu, W., Wang, Z., Li, Z., Liu, W., Fuxin, L.: PointPWC-Net: A Coarse-to-Fine Network for Supervised and Self-Supervised Scene Flow Estimation on 3D Point Clouds. arXiv:1911.12408v1 (2019)

[^47]: Zou, C., He, B., Zhu, M., Zhang, L., Zhang, J.: Learning motion field of LiDAR point cloud with convolutional networks. Pattern Recognition Letters 125, 514–520 (2019)
