这篇论文提出了一种新的基于 Transformer 的光流估计网络架构,称为 FlowFormer。其核心目标是结合 Transformer 在长距离建模方面的优势与传统光流估计中代价体(cost volume)表示的有效性,从而实现更准确、更具泛化能力的光流估计。
一、研究背景与动机
光流估计是计算机视觉中的基础任务,广泛应用于动作识别、视频修复、超分辨率等下游任务。传统方法通常基于优化问题,近年来则主要依赖深度神经网络,尤其是基于代价体的 CNN 架构(如 PWC-Net、RAFT)。这些方法在代价体的构建与解码方面取得了显著进展。
Transformer 由于其强大的全局建模能力,在自然语言处理和视觉任务中表现出色。然而,直接将 Transformer 应用于光流估计存在挑战,尤其是代价体维度高、计算复杂。因此,作者提出一个关键问题:能否将 Transformer 的优势与代价体的结构有效结合?
二、FlowFormer 的核心贡献
-
提出 FlowFormer 架构:一种基于 Transformer 的光流估计网络,采用编码器-解码器结构,专门设计用于处理四维代价体。
-
代价体编码器(Cost Volume Encoder):
-
将四维代价体转化为紧凑的潜在表示(称为"代价记忆")。
-
引入"两步标记化"策略,将每个代价图转化为少量潜在代价标记。
-
提出"交替分组 Transformer(AGT)"层,交替地在代价图内和代价图间进行注意力计算,实现高效信息聚合。
-
-
代价记忆解码器(Cost Memory Decoder):
-
使用动态位置代价查询(dynamic positional cost queries)从代价记忆中提取信息。
-
采用循环结构(ConvGRU)迭代地回归光流残差,逐步细化光流估计。
-
-
首次验证 ImageNet 预训练 Transformer 对光流任务的有效性。
三、实验结果
-
在 Sintel 和 KITTI 两个主流光流基准数据集上取得了 SOTA(state-of-the-art) 性能。
-
在 Sintel 的 clean 和 final 子集上,相比之前最好的方法,误差分别降低了 16.5% 和 15.5%。
-
在未使用 Sintel 训练数据的情况下,FlowFormer 在 Sintel clean 子集上仍取得了 1.01 的 AEPE,优于之前最好的 1.29,显示出强大的泛化能力。
FlowFormer 是首个将 Transformer 与代价体深度融合的光流估计方法。通过紧凑的代价标记表示和 Transformer 的全局建模能力,FlowFormer 在准确性和泛化能力上均优于现有方法,为光流估计任务提供了新的思路和技术路径。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:

摘要
我们提出了一种基于Transformer的神经网络架构------FlowFormer,用于学习光流。FlowFormer将图像对构建的四维代价体(cost volume)进行标记化(tokenize),通过交替分组Transformer(Alternate-Group Transformer, AGT)层将代价标记(cost tokens)编码到潜在空间中的代价记忆(cost memory)中,并通过带有动态位置代价查询(dynamic positional cost queries)的循环Transformer解码器对代价记忆进行解码。在Sintel基准数据集上,FlowFormer在clean和final两个子集上分别实现了1.159和2.088的平均端点误差(AEPE),相比已发表的最佳结果(1.388和2.47)分别降低了16.5%和15.5%的误差。此外,FlowFormer还表现出强大的泛化性能。在未使用Sintel数据集进行训练的情况下,FlowFormer在Sintel训练集的clean子集上达到了1.01的AEPE,比已发表的最佳结果(1.29)提高了21.7%。
1 引言
光流估计的目标是计算源图像和目标图像之间每个像素的对应关系,以二维位移场的形式表示。在许多下游视频任务中,如动作识别、视频修复、视频超分辨率和帧插值,光流作为提供密集对应关系的基本组件,为预测提供了有价值的线索。光流估计通常采用的一个假设是,由光流引起的两个图像中对应位置的外观保持不变。传统上,光流被建模为一个优化问题,通过正则化项最大化跨图像对应位置的视觉相似性。随着深度学习的快速发展和训练数据的出现,该领域通过基于深度卷积神经网络的方法取得了显著进展。最近的方法计算特征对之间的代价(即视觉相似性),并在此基础上回归光流。
在光流领域,最成功的架构设计是通过更好的代价编码和解码设计实现的。PWC-Net和RAFT是两个最近具有代表性的基于深度学习的方法。PWC-Net通过扭曲特征构建分层局部代价体,并从此类局部代价中逐步估计光流。RAFT构建了一个H×W×H×W的四维代价体,用于测量H×W图像对中所有像素对之间的相似性,并通过迭代检索局部窗口内的局部代价来回归光流残差。
最近,Transformer因其建模长距离关系的能力而受到广泛关注,这对光流估计是有益的。Perceiver IO是首个使用基于Transformer的架构学习光流回归的开创性工作。然而,它直接操作图像对的像素,忽略了将视觉相似性编码为代价的成熟领域知识。因此,它需要大量的参数和约80倍的训练样本来捕获所需的输入-输出映射。因此,我们提出一个问题:我们能否同时享受Transformer和先前里程碑中代价体的优势?这个问题要求设计一种新颖的用于光流估计的Transformer架构,能够有效地聚合来自代价体的信息。在本文中,我们介绍了新颖的光流Transformer(FlowFormer)来解决这一具有挑战性的问题。
FlowFormer采用编码器-解码器架构进行代价体编码和解码。在构建四维代价体后,FlowFormer包含两个主要组件:1)一个代价体编码器,将四维代价体嵌入到潜在代价空间中,并在该空间中完全编码代价信息;2)一个循环代价解码器,从编码的潜在代价特征中估计光流。与先前的工作相比,FlowFormer的主要特点是使Transformer架构能够有效地处理代价体,这些代价体是紧凑但丰富的表示,在光流估计社区中得到了广泛探索,用于估计准确的光流。
使用Transformer处理四维代价体的一种简单策略是直接对四维代价体进行标记化并应用Transformer。然而,这种策略需要使用数千个标记,这在计算上是无法承受的。为了应对这一挑战,我们在代价编码器中提出了两个关键设计。我们提出了一种两步标记化方法:1)将四维代价体中的每个二维代价图(记录一个源像素与所有目标像素之间的视觉相似性)转换为补丁,正如Transformer网络中常见的那样;2)进一步将每个代价图的代价图补丁投影到K个潜在代价标记中。通过这种方式,H×W×H×W的四维代价体可以转换为H×W×K个标记。其次,我们不是在所有标记之间执行自注意力,而是交替地在同一代价图内的标记和跨不同代价图的标记之间进行注意力。换句话说,交替堆叠属于同一源像素的潜在代价标记和跨不同源像素的潜在代价标记的聚合。结合这两种设计,FlowFormer将代价体编码为紧凑且具有全局感知能力的潜在代价标记,称为代价记忆。
经典的Transformer架构(如DETR)通过堆叠的交叉注意力层从编码的记忆中解码信息。与它们不同,受RAFT的启发,我们的代价解码器仅采用循环注意力层,将代价解码公式化为带有动态位置代价查询的循环查询过程:基于当前估计的光流,我们查询代价记忆以回归光流残差。在每次迭代中,我们根据当前光流计算所有源像素在目标图像中的对应位置,然后使用这些位置动态更新位置代价查询。然后,我们通过交叉注意力从代价记忆中提取代价特征,并使用共享的门控循环单元(GRU)头部进行残差光流回归。此外,RAFT仅使用浅层CNN作为图像特征编码器。我们发现,FlowFormer可以从使用ImageNet预训练的Transformer骨干网络中受益。我们的贡献可以总结为四个方面:1)我们提出了一种新颖的基于Transformer的神经网络架构FlowFormer,用于光流估计,实现了最先进的光流估计性能。2)我们设计了一种新颖的代价体编码器,有效地将代价信息聚合到紧凑的潜在代价标记中。3)我们提出了一种循环代价解码器,通过动态位置代价查询循环解码代价特征,以迭代地细化估计的光流。4)据我们所知,我们首次验证了ImageNet预训练的Transformer可以有益于光流估计。
2 相关工作
光流估计
传统上,光流被建模为一个优化问题,通过正则化项最大化图像对之间的视觉相似性。这一时代的主要改进来自于相似性和正则化项的更好设计。深度神经网络的兴起显著推动了该领域的发展。FlowNet是第一个用于光流估计的端到端卷积网络。其后续工作FlowNet2.0采用了带有扭曲操作的堆叠架构,与最先进的方法性能相当。然后,一系列工作,如SpyNet、PWC-Net、LiteFlowNet和VCN,采用了从粗到细和迭代估计的方法。这些模型在粗阶段固有地存在缺失小快速运动物体的问题。为了解决这个问题,Teed和Deng提出了RAFT,它以粗到细(即每次迭代中的多尺度搜索窗口)和循环的方式执行光流估计。基于RAFT架构,许多工作被提出,要么降低计算成本,要么提高光流精度。最近,光流被扩展到更具挑战性的场景,如低光照、雾天和光照变化。在这些探索中,视觉相似性是通过卷积神经网络编码的高维特征的相关性来计算的,包含像素对视觉相似性的代价体作为支持光流估计的核心组件。然而,它们对代价信息的利用缺乏有效性。我们提出了FlowFormer,通过Transformer在潜在空间中对代价体进行聚合。Perceiver IO开创了使用Transformer在光流中建立长距离关系并实现了最先进性能的先河。它忽略了代价体,以约80倍的训练样本为代价展示了Transformer架构的强大表达能力。相比之下,我们提出保留代价体作为紧凑的相似性表示,并通过Transformer架构全局聚合相似性信息,将搜索空间推向极致。这种全局编码操作尤其有利于大位移和遮挡等困难情况。
计算机视觉中的Transformer
Transformer在自然语言处理中取得了巨大成功,这激发了图像分类的自注意力机制的发展。从那时起,基于Transformer的架构被引入到许多其他视觉任务中,如检测、点云处理、图像修复、视频修复、视觉定位等,并在大多数任务中实现了最先进性能。其吸引人的性能通常归因于长距离建模能力,这也是光流估计中期望的特性。视觉Transformer面临的挑战之一是视觉标记的数量庞大,因为计算成本随标记数量呈二次方增长。Twins提出了一种空间可分离的自注意力(SS Self-Attention)层,用于在二维平面上排列的标记之间传播信息。我们也在代价体编码器中采用了SS自注意力,用于在代价图之间传播信息。Perceiver IO提出了一种通用的Transformer骨干网络,尽管需要大量参数,但实现了最先进的光流性能。视觉对应任务是计算机视觉的主流。最近,Transformer也在此类任务中引领了潮流,这与我们的工作更为相关。
3 方法
光流估计的任务是输出一个逐像素的位移场f:R2→R2,将源图像Is中的每个二维位置x∈R2映射到其在目标图像It中的对应二维位置p=x+f(x)。为了利用最近的视觉Transformer架构以及先前基于CNN的光流估计方法广泛使用的四维代价体,我们提出了FlowFormer,一种基于Transformer的架构,用于编码和解码四维代价体以实现准确的光流估计。在图1中,我们展示了FlowFormer的总体架构,该架构通过两个主要组件处理来自孪生特征的四维代价体:1)一个代价体编码器,将四维代价体编码到潜在空间中以形成代价记忆;2)一个代价记忆解码器,基于编码的代价记忆和上下文特征预测逐像素的位移场。

3.1 构建四维代价体
使用一个骨干视觉网络从输入的HI×WI×3 RGB图像中提取一个H×W×Df的特征图,其中通常设置(H,W)=(HI/8,WI/8)。在提取源图像和目标图像的特征图后,我们通过计算源特征图和目标特征图之间所有像素对的点积相似性来构建一个H×W×H×W的四维代价体。
3.2 代价体编码器
为了估计光流,需要基于源-目标视觉相似性在四维代价体中编码的对应位置来识别源像素在目标图像中的对应位置。构建的四维代价体可以被视为一系列大小为H×W的二维代价图,每个代价图测量单个源像素与所有目标像素之间的视觉相似性。我们将源像素x的代价图表示为Mx∈RH×W。在这样的代价图中找到对应位置通常是具有挑战性的,因为两个图像中可能存在重复模式和非区分区域。当仅考虑代价图的局部窗口内的代价时,任务变得更加具有挑战性,正如先前基于CNN的光流估计方法所做的那样。即使为了估计单个源像素的准确位移,考虑其上下文源像素的代价图也是有益的。为了解决这一具有挑战性的问题,我们提出了一种基于Transformer的代价体编码器,将整个代价体编码为代价记忆。我们的代价体编码器包括三个步骤:1)代价图补丁化;2)代价补丁标记嵌入;3)代价记忆编码。我们详细阐述这三个步骤如下。
代价图补丁化。 遵循现有的视觉Transformer,我们使用步长卷积将每个源像素x的代价图Mx∈RH×W补丁化为一系列代价补丁嵌入。具体来说,给定一个H×W的代价图,我们首先在其右侧和底部填充零,使其宽度和高度成为8的倍数。然后,通过三个步长为2的卷积层(每个卷积层后接ReLU激活函数)将填充后的代价图转换为特征图Fx∈R⌈H/8⌉×⌈W/8⌉×Dp。特征图中的每个特征代表输入代价图中的一个8×8补丁。这三个卷积层的输出通道数分别为Dp/4、Dp/2和Dp。
通过潜在总结的补丁特征标记化。 尽管补丁化为每个源像素产生了一系列代价补丁特征向量,但此类补丁特征的数量仍然很大,阻碍了不同源像素之间信息传播的效率。实际上,代价图是高度冗余的,因为只有少数高代价是最具信息量的。为了获得更紧凑的代价特征,我们通过K个潜在码字C∈RK×D进一步总结每个源像素x的补丁特征Fx。具体来说,潜在码字查询每个源像素的代价补丁特征,通过点积注意力机制将每个代价图进一步总结为K个D维的潜在向量。潜在码字C∈RK×D是随机初始化的,通过反向传播更新,并在所有源像素之间共享。用于总结Fx的潜在表示Tx通过以下方式获得:

在将代价补丁特征Fx投影以获得键Kx和值Vx之前,补丁特征与位置嵌入序列PE∈R⌈H/8⌉×⌈W/8⌉×Dp进行拼接。给定一个二维位置p,我们按照COTR将其编码为长度为Dp的位置嵌入。最后,通过使用查询、键和值进行多头点积注意力,源像素x的代价图可以总结为K个潜在表示Tx∈RK×D。通常,K×D≪H×W,因此潜在总结Tx为每个源像素x的每个H×W代价图提供了更紧凑的表示。对于图像中的所有源像素,总共有(H×W)个二维代价图。它们的总结表示可以因此转换为一个潜在的四维代价体T∈RH×W×K×D。
潜在代价空间中的注意力。 上述两个阶段将原始的四维代价体转换为潜在且紧凑的四维代价体T。然而,直接对四维代价体中的所有向量应用自注意力仍然过于昂贵,因为计算成本随标记数量呈二次方增长。如图2所示,我们提出了一种交替分组Transformer层(AGT),以两种相互正交的方式对T中的标记进行分组,并在这两个组中交替应用注意力,这降低了注意力的成本,同时仍然能够在所有标记之间传播信息。第一种分组是针对每个源像素进行的,即每个Tx∈RK×D形成一个组,并在每个组内进行自注意力。
Tx = FFN(Self-Attention(Tx(1), ..., Tx(K))),对于Is中的所有x,
其中Tx(i)表示编码源像素x的代价图的第i个潜在表示。在对每个源像素x的所有K个潜在标记进行自注意力之后,更新的Tx进一步通过前馈网络(FFN)进行转换,然后重新组织以形成更新的四维代价体T。自注意力和FFN子层都采用Transformer的常见残差连接和层归一化设计。这种自注意力操作在每个代价图内传播信息,我们将其称为代价图内自注意力。第二种方式是将所有潜在代价标记T∈RH×W×K×D根据K个不同的潜在表示分组为K个组。每个组因此有(H×W)个D维标记,用于通过Twins提出的空间可分离自注意力(SS-SelfAttention)在空间域中传播信息,
Ti = FFN(SS-SelfAttention(Ti)),对于i = 1, 2, ..., K,
其中我们稍微滥用符号,将Ti∈R(H×W)×D表示为第i个组。更新的Ti然后重新组织以获得更新的四维潜在代价体T。此外,视觉上相似的源像素应该具有一致的光流,这已被先前的方法验证。因此,我们通过在生成查询和键时将源图像的上下文特征t与代价标记拼接,将不同源像素之间的外观亲和性整合到SS-SelfAttention中。我们将这一层称为代价图间自注意力层,因为它在代价体中跨不同源像素传播信息。请注意,这两个操作不同于CATs,后者增强了代价图"内"的相关性和多级相关层"间"的相关性。

上述自注意力操作的参数在不同组之间共享,并且它们按顺序操作以形成所提出的交替分组注意力层。通过多次堆叠交替分组Transformer层,潜在代价标记可以有效地跨源像素和跨潜在表示交换信息,以更好地编码四维代价体。通过这种方式,我们的代价体编码器将H×W×H×W的四维代价体转换为H×W×K个长度为D的潜在标记。我们将最终的H×W×K个标记称为代价记忆,用于解码以进行光流估计。
3.3 用于光流估计的代价记忆解码器
鉴于由代价体编码器编码的代价记忆,我们提出了一种代价记忆解码器来预测光流。由于输入图像的原始分辨率为HI×WI,我们在H×W的分辨率下估计光流,然后使用可学习的凸上采样器将预测的光流上采样到原始分辨率。然而,与先前寻求抽象语义特征的视觉Transformer不同,光流估计需要从代价记忆中恢复密集对应关系。受RAFT的启发,我们提出使用代价查询从代价记忆中检索代价特征,并通过循环注意力解码器层迭代地细化光流预测。
代价记忆聚合。 为了预测H×W源像素的光流,我们生成一系列(H×W)个代价查询,每个代价查询负责通过代价记忆上的共注意力估计单个源像素的光流。为了为源像素x生成代价查询Qx,我们首先根据其当前估计的光流f(x)计算其在目标图像中的对应位置p = x + f(x)。然后,我们通过在代价图Mx上以p为中心的9×9局部窗口内裁剪代价来检索局部9×9代价图补丁qx = Crop9×9(Mx, p)。代价查询Qx然后基于从局部代价qx编码的特征FFN(qx)和p的位置嵌入PE(p)来制定,这可以通过交叉注意力从源像素x的代价记忆Tx中聚合信息,

交叉注意力总结来自代价记忆的信息,用于每个源像素预测其光流。由于Qx在每个迭代中根据输入位置动态更新,我们将其称为动态位置代价查询。我们注意到,键和值可以在开始时生成,并在后续迭代中重复使用,这是我们循环解码器节省计算的好处。
循环光流预测。 我们的代价解码器迭代地回归光流残差∆f(x),以细化每个源像素x的光流,如f(x) ← f(x) + ∆f(x)。我们采用ConvGRU模块,并遵循GMARAFT中的类似设计进行光流细化。然而,我们的循环模块的关键区别在于使用代价查询自适应地聚合来自代价记忆的信息,以实现更准确的光流估计。具体来说,在每次迭代中,ConvGRU单元将检索到的代价特征和代价图补丁的拼接Concat(cx, qx)、来自上下文网络的源图像上下文特征tx以及当前估计的光流f作为输入,并输出预测的光流残差,如下所示,
∆f(x) = ConvGRU(Concat(cx, qx), tx, f(x))。
每次迭代生成的光流通过凸上采样器上采样到源图像的大小,并在所有循环迭代中通过真实光流进行监督,权重逐渐增加。
4 实验
我们在著名的Sintel和KITTI基准数据集上评估FlowFormer。按照先前的工作,我们在FlyingChairs和FlyingThings上训练FlowFormer,然后分别对Sintel和KITTI基准数据集进行微调。FlowFormer在这两个基准数据集上均实现了最先进的性能。
实验设置。 我们使用平均端点误差(AEPE)和F1All(%)指标进行评估。AEPE计算所有有效像素的平均光流误差。F1-all指的是光流误差大于3个像素或超过真实光流长度5%的像素百分比。Sintel数据集是从同一模型渲染的,但分为两个子集,即clean子集和final子集。clean子集使用平滑着色和镜面反射进行渲染。final子集使用完整的渲染设置,包括运动模糊、相机景深模糊和大气效果。
实现细节。 我们最终的FlowFormer的图像特征编码器选择ImageNet预训练的Twins-SVT的前两个阶段,将图像编码为Df = 256通道的特征图,大小为图像的1/8。代价体编码器将每个代价图补丁化为Dp = 64通道的特征图,并进一步将特征图总结为N = 8个K = 128维的代价标记。然后,代价体编码器使用3个AGT层对代价标记进行编码。按照先前的光流训练过程,我们在FlyingChairs上对FlowFormer进行120k次迭代的预训练,批量大小为8,在FlyingThings上进行120k次迭代的预训练,批量大小为6(表示为'C+T')。预训练后,我们在FlyingThings、Sintel、KITTI-2015和HD1K的组合数据上对FlowFormer进行120k次迭代的微调,批量大小为6(表示为'C+T+S+K+H')。为了在KITTI基准数据集上获得最佳性能,我们还在KITTI-2015上对FlowFormer进行了50k次迭代的进一步微调,批量大小为6。我们使用one-cycle学习率调度器。在FlyingChairs上的最高学习率设置为2.5×10^-4,在其他训练集上为1.25×10^-4。由于Transformer中使用的位置编码对图像大小敏感,我们对光流估计的图像对进行裁剪,并平铺它们以获得完整的光流,遵循Perceiver IO。我们使用平铺技术对KITTI进行光流评估,因为KITTI中的图像大小与训练图像大小差异很大。我们使用固定的高斯权重进行平铺,这将在补充材料中详细说明。

表1:在Sintel和KITTI数据集上的实验。'A'表示autoflow数据集。'C + T'表示仅在FlyingChairs和FlyingThings数据集上进行训练。'+ S + K + H'表示在Sintel、KITTI和HD1K训练集的组合上进行微调。*表示这些方法使用热启动策略,依赖于视频中的前一帧图像。†表示通过补充材料中详述的平铺技术进行估计。我们的FlowFormer实现了最佳的泛化性能(C+T),并在Sintel基准数据集上排名第一(C+T+S+K+H)。
4.1 定量实验
我们在著名的Sintel和KITTI基准数据集上评估FlowFormer,如表1所示。GMA是RAFT的改进版本,是目前最具竞争力的光流估计方法。在FlyingChairs和FlyingThings上进行训练后,我们在Sintel和KITTI-2015的训练集上评估FlowFormer的泛化性能。通过在HD1K、Sintel和KITTI训练集的组合上对FlowFormer进行微调,我们比较了光流模型的数据集特定准确性。Autoflow是一个提供涵盖各种具有挑战性视觉干扰的训练数据的数据集,但其训练代码尚未发布。
泛化性能。 我们在FlyingChairs和FlyingThings(C+T)上训练FlowFormer,并在Sintel和KITTI-2015的训练集上对其进行评估。此设置评估了光流模型的泛化性能。FlowFormer在所有比较方法中在两个基准数据集上均排名第一。FlowFormer在Sintel的clean和final子集上分别实现了1.01和2.40的AEPE。在KITTI-2015的训练集上,FlowFormer实现了4.09的F1-epe和14.72的F1-all。与GMA相比,FlowFormer在Sintel clean和final子集上分别降低了22.3%和12.4%的误差,在KITTI-2015的F1-all上降低了13.9%的误差,这显示了其非凡的泛化性能。在autoflow数据集(A)上训练的RAFT在final子集上显著优于在C+T上训练的RAFT,因为autoflow提供了更具挑战性的训练图像对。我们相信,使用autoflow训练FlowFormer可以获得更好的准确性,但它尚未发布。
Sintel基准数据集。 我们在FlyingThings、HD1K、Sintel和KITTI-2015的训练数据的组合上对预训练的FlowFormer进行微调,然后在Sintel测试集上对其进行评估。FlowFormer在Sintel clean和final子集上分别实现了1.16和2.09的AEPE,相比GMA分别降低了16.5%和15.5%的误差,在Sintel基准数据集上均排名第一。值得注意的是,RAFT和GMA*使用了热启动策略,需要图像序列,而FlowFormer不需要。与同样不使用热启动的GMA相比,FlowFormer分别获得了17.2%和27.5%的误差降低。
KITTI-2015基准数据集。 我们在Sintel微调阶段之后,在KITTI-2015的训练集上进一步微调FlowFormer,并在KITTI测试集上对其进行评估。FlowFormer实现了4.68的AEPE,在KITTI-2015基准数据集上排名第二。S-Flow在KITTI上的误差略小于FlowFormer(-0.85%),但在Sintel上的误差显著更大(在clean和final子集上分别大31.6%和22.5%)。S-Flow通过计算由细化代价图加权的坐标期望来找到对应点。KITTI数据集中的图像是在城市交通场景中捕获的,包含的物体大多是刚性的。刚性物体上的光流相当简单,这对于基于代价的坐标期望更容易,但这种假设在非刚性场景(如Sintel)中很容易被违反。
4.2 定性实验
我们在图3中可视化了FlowFormer和GMA在三个示例上估计的光流,以定性地展示FlowFormer如何优于GMA。由于Transformer可以在大的感受野内编码代价信息,FlowFormer可以通过上下文信息区分重叠的物体,从而减少光流在边界上的泄漏。与GMA相比,FlowFormer在竹子和人体边界上估计的光流更加精确和清晰。此外,FlowFormer还可以恢复GMA忽略的运动细节,如头发和盒子上的孔。
4.3 消融研究

我们在表2中进行了一系列消融实验。我们从RAFT作为基线开始,它直接使用多级代价检索(MCR)解码器回归残差光流,并逐渐用我们提出的组件替换其组件。我们首先用我们编码器的潜在代价标记化(LCT)部分和代价记忆解码器(CMD)替换RAFT的MCR解码器(表示为'MCR→LCT+CMD')。请注意,我们的代价记忆解码器不能单独在RAFT的四维代价体上使用,因为标记数量太大。它必须与我们的潜在代价标记(来自公式(1)的Tx)结合使用。为每个源像素编码K = 8个D = 128维的潜在标记实现了最佳性能。在基于LCT+CMD且K = 8和D = 128的基础上,我们用Twins-SVT替换RAFT的CNN图像特征编码器(表示为'CNN→Twins')。然后,我们进一步添加所提出的代价体编码器的注意力层,以编码和更新潜在代价标记。所提出的交替分组Transformer(AGT)层由两种类型的注意力组成,即代价图内注意力和代价图间注意力。我们首先添加单个代价图内注意力层(表示为'+Intra.'),然后添加代价图间注意力(表示为'AGT×1 (+Intra.+Inter.)',这相当于添加单个AGT层。然后,我们测试将AGT层的数量增加到2和3。按照RAFT,所有模型都在FlyingChairs上进行100k次迭代训练,在FlyingThings上进行60k次迭代训练,然后在Sintel和KITTI-2015的训练集上进行评估。
MCR → LCT+MCD。 潜在标记的数量K和标记维度D决定了代价标记可以编码的代价体信息量。从K = 4,D = 32到K = 8,D = 128,AEPE降低,因为代价标记总结了更多的代价图信息,并有利于残差光流回归。潜在代价标记能够总结整个图像的信息,我们的MCD可以通过共注意力从它们中吸收感兴趣的信息,而RAFT的MCR解码器仅在光流引导的局部窗口内检索多级代价。因此,即使在我们的编码器中没有AGT层,LCT+MCD仍然比RAFT的MCR解码器表现更好。
CNN vs. Transformer图像编码器。 在CNN→Twins实验中,从头开始训练的Twins的AEPE略差于CNN,但ImageNet预训练是有益的,因为Twins是一种具有更大感受野和模型容量的Transformer架构,需要更多的训练样本来进行充分训练。

代价编码。 在代价体编码器中,我们通过代价图内注意力操作和代价图间注意力操作编码和更新潜在代价标记。这两个操作形成了一个交替分组Transformer(AGT)层。然后,我们逐渐将AGT层的数量增加到3。从没有注意力层到AGT×3,误差逐渐降低,这证明了使用我们的AGT层编码潜在代价标记有利于光流估计。
FlowFormer vs. GMA。 我们使用GMA的设置训练所有模型。完整版本的FlowFormer有18.2M参数,比GMA大。其中一个原因是FlowFormer使用ImageNet预训练的Twins-SVT的前两个阶段作为图像特征编码器,而GMA使用CNN。我们在表3中提供了一个实验,以在相同设置下比较FlowFormer和GMA。我们首先提供了一个小型版本的FlowFormer,使用GMA的CNN图像特征编码器,并设置K = 4,D = 32,AGT×1。尽管小型版本的FlowFormer(表示为'Ours (small)')与完整版本的FlowFormer相比性能显著下降,但在所有指标上仍然优于GMA。我们还设计了两个增强的GMA模型,并将它们与完整版本的FlowFormer进行比较,以证明性能改进不仅仅来自于添加更多参数。第一个表示为'GMA-L',是GMA的大型版本,第二个表示为'GMA-Twins',它也采用预训练的Twins作为图像特征编码器。在此实验中,我们在FlyingChairs上使用120k次迭代训练所有模型,在FlyingThings上使用120k次迭代训练。类似于将RAFT简化为RAFT(小型),GMA-L通过加倍特征通道来扩大GMA,有17M参数,与FlowFormer相当。然而,其性能在Sintel clean上下降,比FlowFormer大33%的误差。GMA-Twins用ImageNet预训练的Twins-SVT替换CNN图像特征编码器,正如FlowFormer所做的那样。GMA-Twins对GMA的最大改进是在Sintel clean上,但它仍然比FlowFormer大15%的误差。GMA-Twins不会导致其他指标的显著误差降低,甚至在KITTI-15上更差。总之,FlowFormer的性能改进不是来自于更多参数,而是来自于架构的新颖设计。

5 结论
我们提出了FlowFormer,一种用于光流估计的基于Transformer的架构。FlowFormer将图像对构建的H×W×H×W四维代价体总结为H×W×K个长度为D的标记,然后通过交替分组Transformer(AGT)高效有效地编码代价标记。由于这种设计,生成的代价记忆能够掌握代价体上的基本信息,并获得紧凑的代价特征。最后,代价记忆解码器通过动态位置代价查询从代价记忆中吸收代价信息,摆脱了局部窗口的限制,用于残差光流回归。据我们所知,FlowFormer是第一种将Transformer与代价体深度集成用于光流估计的方法。由于紧凑的代价标记和Transformer的长距离关系建模能力,FlowFormer实现了最先进的准确性,并显示了强大的跨数据集泛化能力。