其他分享
首页 > 其他分享> > RAFT-Stereo: Multilevel Recurrent Field Transforms for Stereo Matching RAFT-Stereo:用于立体匹配的多级递归场变换

RAFT-Stereo: Multilevel Recurrent Field Transforms for Stereo Matching RAFT-Stereo:用于立体匹配的多级递归场变换

作者:互联网

RAFT—Stereo

摘要

本文介绍了一种基于光流网络RAFT[35]的新型深度整流立体声系统RAFT- stereo。我们引入了多级卷积gru,它可以更有效地在图像中传播信息。RAFT-Stereo的改进版本可以进行精确的实时推理。RAFT-stereo在Middlebury排行榜上排名第一,在1px的误差上比第二好的方法高出29%,并且在ETH3D双视图立体视觉基准上的表现优于所有已发表的作品

1.Introduction

立体深度估计是一个基本的视觉问题,直接应用于机器人、增强现实、摄影测量和视频理解问题。在标准设置中,提供了两个帧——一个左帧和一个右帧——作为输入。任务是估计输入图像之间的像素位移图。在整流立体视觉中,每个像素的位移被约束到一条水平线。这个位移图被称为视差,可以与相机校准参数一起使用,以恢复深度、3D点云或其他适合下游应用的3D表示。
早期的工作集中在两个关键部分的问题:(1)特征匹配和(2)正则化。给定两幅图像,特征匹配的目的是计算一对图像patch之间的匹配代价。常用的方法有互信息[15]、归一化互相关[14]、其次是汉明距离[11]。给定一组有噪声的匹配,正则化的目标是根据平滑度和面性等先验恢复一致的深度图。这两个目标可以自然地表述为一个优化问题,即根据3D几何先验最大化视觉相似性度量。
光流与立体矫正是密切相关的问题。在光流任务中,其目的是预测像素的偏移,这样,对于第一帧中的每个像素,我们可以估计它在第二帧中的对应关系。在矫正立体视觉中,任务是相同的,除了我们有额外的约束,即x位移总是正的,对应的点位于水平线上-因此,y位移总是0。
尽管立体和流之间有相似之处,但用于这两种任务的神经网络架构却截然不同。在立体视觉中,最主要的方法是使用3D卷积神经网络。首先通过枚举整数差异来构建3D成本体积,然后使用3D卷积网络来过滤成本体积[43,4,19,12,47,48]。这个公式利用立体几何作为一个归纳先验的网络设计。然而,使用3D卷积来处理成本体积的计算成本很高,并限制了可能的操作分辨率。需要专门的方法来操作高分辨率[42],例如Middlebury数据集[28]的百万像素图像。
另一方面,光流通常采用迭代求精的方法。RAFT[35]表明迭代改进可以完全在高分辨率下执行,提出了一个执行良好的标准流基准的结构。RAFT首先从输入图像中提取特征,然后通过计算所有像素对之间的相关性来构建4D成本体积。最后,基于gru的更新算子利用从相关体中获取的特征对流场进行迭代更新。
我们介绍了RAFT-Stereo,一种新的双视图立体视觉体系结构。我们的方法概述如图1所示。总体设计基于RAFT[35]。首先,通过计算相同高度像素之间的视觉相似度,我们将全对4D相关体替换为3D体。此外,我们引入了多级GRU单元,它通过交叉连接在多个分辨率上保持隐藏状态,但仍然生成一个高分辨率的视差更新。这提高了更新算子在图像中传播信息的能力,提高了视差域的全局一致性。
RAFT-Stereo与以前的立体声网络有很大的不同。现有的工作通常依赖于3D卷积网络处理立体成本卷[43,4,19,12,47,48]。相比之下,RAFT-Stereo只使用2D卷积和使用单一矩阵乘法构建的轻量级成本体积。RAFT-Stereo避免了3D卷积的高计算量和内存开销,可以直接应用于百万像素图像,而不需要调整大小或以小块的方式处理图像。此外,通过使用迭代网络,我们可以轻松地用准确性换取效率和提前停止。RAFT-Stereo也不需要额外的复杂损失条款,这使得它很容易训练。
我们的主要贡献是建立了立体和光流相结合的立体网络。**RAFT-Stereo显示出比现有神经网络更好的跨数据集泛化。**当只在合成数据上训练时,我们的网络在真实数据集上表现非常好,例如KITTI[24]、ETH3D[29]和Middlebury[28],比在相同设置下评估的所有其他工作都要好。此外,RAFT-stereo是准确的。它在Middlebury排行榜[28]上排名第一,并超越了ETH3D排行榜[29]上所有已发表的作品。由于RAFT-Stereo算法具有较高的精度和较好的泛化性,我们认为RAFT-Stereo算法将是一种非常有用的非自立体视觉算法。
2.Related Works
预测校正后的立体图像之间的视差是计算机视觉中一个长期存在的问题。早期的工作集中在设计更好的匹配成本[13,45]和高效的推理算法[20,16,2]。传统的立体管道一般由匹配级和过滤级组成。在匹配阶段,计算图像块之间的成对代价。在优化和滤波阶段,利用先验校正错误匹配,恢复一致的视差图.
深度学习首先应用于计算匹配成本。Zbontar和LeCun[46]提出了一个网络来评估一对图像匹配之间的匹配代价。然后使用半全局匹配、一致性检查和过滤处理匹配代价。Mayer等人[23]在Flownet架构[7]的基础上,提出了首个端到端可训练的立体匹配网络,加上一个巨大的合成数据集,使得立体训练卷积网络成为可能。
受经典流水线的启发,许多作品采用了三维神经网络体系结构进行端到端的立体匹配[43,4,19,12,47,48]。GCNet[19]是最早提出这种方法的论文之一。在该框架中,图像首先通过二维卷积网络进行映射,获得密集的特征表示。接下来,通过串联[19]或相关算子[12],在二维特征映射上构建三维成本量。然后通过一系列3D卷积层过滤成本体积,然后通过可微分arg-min算子映射到逐点的深度估计。这种设计的许多变体已经被提出,例如使用堆叠的3DHourglass结构来处理成本量[4],或设计新的聚合层来更好地传播信息[47]。3D卷积的目的是作为经典滤波算法(如SGM)的可微近似。
虽然这种方法优于传统方法等数据集KITTI[24]和FlyingThings3D [23] 3 D高计算代价的卷积域之外,常常无法概括他们的训练,这意味着他们不能随时用于数据集没有地面真理训练数据。为了提高深度立体网络的泛化能力,人们已经做了一些努力,如添加新的网络组件[48]或生成额外的训练数据[40]。DSMNet[48]试图提高GA-Net体系结构的泛化能力,方法是对用于构造代价量的特征进行规格化,并利用一种非局部基于图的过滤方法来减少GA-Net对局部模式的依赖。DSMNet比之前的作品有更好的泛化效果,但在架构设计中仍然使用了3D卷积。这导致了较高的计算成本,并限制了DSMNet的操作分辨率。这些工作主要集中在零镜头交叉数据集概化。在本文中,我们还评估了ETH3D[29]、KITTI[24]和Middlebury[28]数据集上的交叉数据集泛化。
另一项工作是用更轻量级的模块替换3D网络中成本更高的组件。Liang等人[21]首先提出了一种两级立体细化网络。Bi3D[1]提出了一系列分类阶段的深度估计方法。最近,HITNet[34]利用场景的平面几何作为网络设计中的一个归纳先验,通过使用预测的贴图来引导立体预测。在前向传递中,HITNet的基于贴图的方法必须确定每个像素是否位于一个平面上。为了学习这种行为,他们必须在贴图的角度和决策权重上强加一些额外的损失条款,而不是像RAFT-Stereo那样只使用标准的L1损失。HITNet还以全分辨率维持运行的立体预测,而RAFT-Stereo只在最后对立体预测进行采样。这使得RAFT-Stereo的存储效率更高,使我们能够预测百万像素图像上的全分辨率立体声。
3.Approach
给定一对校正图像(IL, IR),我们的目标是估计一个视差场,给出IL中每个像素的水平位移。与RAFT[35]相似,我们的方法由三个主要组件组成:特征提取器、相关金字塔和基于gru的更新算子,如图1所示。更新算子迭代地从相关金字塔中检索特征,并对视差字段进行更新。
3.1Feature Extraction
我们使用两个独立的特征提取器,称为特征编码器和上下文编码器。该特征编码器应用于左图像和右图像,并将每个图像映射到稠密特征映射,然后使用稠密特征映射构造相关体。该网络由一系列的残差块和下采样层组成,根据实验中使用的下采样层的数量,在256个通道下生成分辨率为输入图像1/4或1/8的特征图。我们在特征编码器中使用实例归一化[37]。
上下文编码器与特征编码器具有相同的结构,只是我们将实例归一化替换为批处理归一化[17],并且只在左边的图像上应用上下文编码器。上下文特性用于初始化更新操作符的隐藏状态,并在更新操作符的每次迭代期间注入GRU。
3.2Correlation Pyramid
相关体积(Correlaion Volume):我们使用特征向量之间的点积作为视觉相似性的度量。类似于RAFT[35]通过计算所有像素对之间的视觉相似性来构造4D相关体,我们将相关体的计算限制在y坐标相同的像素上。给定分别从IL和IR提取的特征映射f,g∈RHXWXD,可以通过将内积的计算限制为共享相同第一个指标的特征向量,对四维体构造进行修改,计算三维相关体积

与4D体积一样,3D体积的计算可以使用单一矩阵乘法来高效地实现,这可以很容易地在GPU上计算,只占用总运行时间的一小部分。
在矫正立体视觉中,我们可以假设所有的差异都是正的;因此,相关性体积实际上只需要为正差异计算。然而,计算全体积的优点是,操作可以使用高度优化的矩阵乘法来实现。这简化了整体架构,允许我们使用常见的操作,而不是需要定制的GPU内核。
相关金字塔(Correlation Pyramid):我们通过最后一个维度的重复平均池化构造了一个4级相关体金字塔。金字塔的k层是由第k层的体积构成的,使用核大小为2的一维平均池化,步幅为2,产生一个新的体积Ck+1,维数为H×W×W/2k。金字塔的每一层都有一个增加的接受域,但通过只集中最后一个维度,我们保持了原始图像中呈现的高分辨率信息,这使我们能够恢复非常精细的结构。
相关性查找(Correlation Look Up):为了在相关金字塔中建立索引,我们定义了一个查找操作符,类似于在RAFT中定义的操作符。给定当前视差估计,我们在当前视差估计周围构造一个具有整数偏移的一维网格,如图2所示。该网格用于从相关金字塔的每一层进行索引。网格数值是实数,当索引每个体积时我们使用线性插值。然后,检索到的值被连接成一个单一的特征映射。
3.3Mutil-Level Update Operator
我们从初始起点d0=0预测一系列视差场{d1,…,dN}。在每次迭代过程中,我们使用当前的视差估计来索引相关体积,从而产生一组相关特征。这些特征通过2个卷积层。类似地,当前视差估计也通过两个卷积层。将相关性特征、视差值和上下文特征串联拼接并注入GRU。GRU更新隐藏状态。然后使用新的隐藏状态来预测视差更新。
多个隐藏状态(Mutil Hidden States):最初的RAFT完全以固定的高分辨率执行更新。这种方法的一个问题是,随着GRU更新次数的增加,感受野的增长非常缓慢,对于具有大的无纹理区域且几乎没有局部特征的场景,这可能会有问题。为了解决这个问题,我们提出了一种多分辨率更新操作符,它可以同时在1/8、1/16和1/32分辨率的特征图上操作。在我们的实验中,我们证明了我们使用的多分辨率更新算子导致了更好的泛化性能。
GRU通过使用彼此的隐藏状态作为输入进行交叉连接,如图3所示。相关查找和最终视差更新由GRU以最高分辨率执行。我们还试验了更高分辨率的模型,GRU更新为输入图像分辨率的1/4、1/8和1/16。
上采样(Upsampling):预测的视差图是输入图像分辨率的1/4或1/8。为了输出全分辨率视差图,我们使用与RAFT相同的凸上采样方法。RAFT-Stereo将全分辨率视差值视为其粗分辨率邻域的3x3格网的凸形组合。利用最高分辨率GRU对凸组合权重进行预测。
3.4Slow-Fast GRU
与更新1/16分辨率隐藏状态相比,GRU更新到1/8分辨率隐藏状态需要大约4倍的计算量。为了利用这一事实进行更快的推理,我们训练了一个版本的RAFT-Stereo,在该版本中,对于1/8分辨率隐藏状态的每次更新,我们都要多次更新1/16和1/32分辨率隐藏状态。在具有32个GRU更新的Kitti分辨率图像上,这个简单的更改将RAFT-Stereo的运行时间从0.132s缩短到0.05s,减少了52%。参见表6。这一改进使我们能够获得与RAFT-Stereo实时立体视觉的最先进方法相媲美的性能(见第4.7节),其运行速度快一个数量级。
3.5SuperVision
我们对整个预测序列{d1,…,dN}的预测值和地面真实值之间的1个距离进行了监督,权重呈指数递增。考虑到实际情况不一致,Loss被定义为

4.Experiments
我们在ETH3D[29]、Middlebury[28]和Kitti-2015[24]上对RAFT-Stereo进行了评估。在前人工作的基础上,我们在Scenceflow数据集上对我们的模型进行了预训练[23]。我们的方法在ETH3D和Middlebury排行榜上获得了最先进的性能,并且在ETH3D、Kitti和Middlebury上的零镜头泛化设置上优于现有的方法。
Implementation Details:RAFT-Stereo在Pytorch[26]中实现,并使用两个RTX 6000 GPU进行训练。所有模块都是用随机权重从头开始初始化的。在培训期间,我们使用AdamW[22]优化器。我们在消融实验中对RAFT-Stereo进行了32次视差场更新后,在表1中进行了80次更新后,对RAFT-Stereo进行了评估。
Train Schedule:最终模型根据合成数据训练200k Steps,batchsize大小为8,而消融实验训练100k Steps,batchsize大小为6。消融实验(见表6)在训练期间进行了16次不同领域的更新,并对最终结果进行了22次更新。我们使用一个周期的学习速率时间表[30],最低学习速率为1e−4。所有的RAFTStereo实验都是在随机的360×720图片上训练的(不包括基准提交),所有的实验(不包括消融实验)都使用数据增强进行训练。具体地说:图像饱和度调整在0(灰度)和1.4%之间;对右侧图像进行扰动以模拟ETH3D和Middlebury等数据集中常见的不完美校正;我们在[2−0.2,2+0.4]范围内通过随机因子拉伸图像和视差图,以模拟一系列可能的视差分布。
在所有三个验证数据集上,RAFT-Stereo在零镜头合成到真实设置中展示了最先进的性能。
4.1Zero-Shot Generalization
我们评估了RAFT-Stereo从合成训练数据到真实数据集的泛化能力。这一能力至关重要,因为不存在用于训练的大规模真实数据集。在表1中,我们报告了RAFT-Stereo从Sceneflow[23]直接推广到KITTI15、ETH3D和Middlebury验证集,并与相同零设置下的其他方法进行了比较。
在所有三个验证数据集上,RAFT-Stereo在Zero-Shot 合成到真实设置中展示了最先进的性能。RAFT-Stereo使用数据增强训练200k次迭代。
4.2KITTI
我们将RAFT-Stereo提交给Kitti-2015立体声基准[24]。在撰写本文时,RAFTStereo在已发表的方法中,在Kitti-2015立体声排行板上的错误前景像素百分比上排名第二(见表2)。对于kitti排行榜,我们对我们的方法进行了微调,在kitti训练集中使用320x1000随机作物,最低学习率为1e−5,并增加了数据。
4.3ETH3D
ETH3D数据集太小,无法进行训练,因此我们直接在SceneFlow数据集上评估我们的模型。为了从Sceneflow到ETH3D的推广,我们通过在附加的灰度Sceneflow图像上微调网络来模拟ETH3D的图像分布,并通过Gamma调整来模拟ETH3D中经常过度曝光的黑白图像。在验证集上,我们注意到应用大量GRU迭代可以在不增加内存成本的情况下执行精度的提高。为了获得表1和表3中的最终验证结果,我们运行RAFT-Stereo进行了80次迭代。我们在图4中给出了ETH3D的定性结果。仅使用合成训练数据,RAFT-Stereo在ETH3D双视立体排行榜[29]上排名第一,在已发表的方法中,获得了2.44的bad1像素误差(端点误差大于1px的像素百分比),比第二好的2.69高出9.3%。
4.4Middlebury
RAFT-Stereo在Middlebury测试集排行榜上排名第一,2px误差为4.74%,比第二好的端到端深度学习方法减少了26%的误差。参见表4。Middlebury数据集提供23个用于训练和/或验证的高分辨率图像对,以及具有替代照明的版本。在Sceneflow[23]上进行预训练之后,我们在23个Middlebury训练图像中的384x1000随机作物上进行了4000步的微调,批大小为2,在训练期间使用了22次更新迭代。
RAFT-Stereo具有极高的内存效率,因此能够输出全分辨率(1900x3000)高密度光流。这与排行榜上剩下的34种最佳方法中的33种形成了鲜明对比,这些方法需要从半分辨率上采样输出。为了进一步减少内存,我们还将RAFT的内存高效相关实现改进为3D,在3D中,相关特征是动态计算的。有关更多信息,请读者参阅RAFT[35]中的第3.2节。除了前面提到的右侧图像的水平图像拉伸、饱和度调整和垂直扰动之外,我们不做额外的数据增强来适应Middlebury数据集。图5显示了Middlebury立体声的定性结果。
4.5Synthetic Datasets
为了提高零镜头泛化性能,我们使用额外的合成数据来训练额外版本的RAFT-Stereo。由于真实世界的立体对应训练数据很难整体获得,大多数立体对应作品(如PSMNet[4]和DSMNet[48])利用合成训练数据,特别是仅Sceneflow数据集进行训练。然而,Sceneflow中3D场景的整体结构并不能代表我们希望概括到的其他真实世界的数据集。为了纠正这个问题,我们调查了另外三个公开可用的合成数据集,并证明了将它们与Sceneflow相结合可以提高零点泛化性能。我们在表5中显示,数据集的某些组合有利于对特定验证数据集的泛化.
Flowing Things:Flowing Things[36]是一个照片级的合成数据集,包含零星放置在场景周围的各种物体。Flowing Things最初打算作为目标检测和3D姿态估计数据集,提供61.5K图像对用于训练立体对应方法。我们证明了使用该数据集可以提高泛化性能,特别是对于Kitti和Middlebury数据集。
Tartan Air:Tartan Air[39]是一个公开提供的模拟环境的照片级真实感合成数据集,模拟真实世界的设置。该数据集主要用作SLAM数据集,但也提供用于训练立体对应方法的296K图像对。在我们的实验中,我们发现Tartan Air对Kitti和ETH3D具有很好的通用性。
Sintel-Stereo:Sintel数据集[3]主要作为训练光流方法的合成数据集存在。除了光流训练数据外,他们还提供用于训练立体对应方法的2.1K图像对。虽然仅在该数据集上训练RAFT-Stereo会导致其过度拟合,但我们发现,将Sintel-Stereo与所有其他三个合成数据集结合使用可提供出色的泛化性能,特别是它提高了对ETH3D数据集的泛化。
4.6 Ablations
GRU Levels:RAFT-Stereo在多种分辨率下维护和更新多个隐藏状态,通常为1/8、1/16和1/32分辨率,如图3所示。除了用于该分辨率的特定上下文特征之外,每个隐藏状态都使用专用GRU进行更新,该GRU将相邻的隐藏状态用作上下文。使用多个隐藏状态会增加运行时间,但会带来更好的整体性能。
Backbone:RAFT-Stereo使用单独的主干,以便为GRU更新提取相关性特征和上下文特征。我们表明,使用单个主干同时产生相关特征和上下文特征可以在不引起任何性能下降的情况下更快地进行推理。我们在实时版本的RAFT中使用单主干架构(见第4.7节和图6)。
Resolution:RAFT-Stereo更新其1/8或1/4分辨率的视差运行估计值。将运行时的视差估计保持在1/4分辨率会产生明显更好的泛化效果,但会导致运行时间较慢,并且使用的GPU内存大约是GPU的4倍。这是通过缩小特征提取器中的步长和预测凸上采样的按比例较小的掩码来实现的。
Collapsed Cost V olume:不是训练单独的网络来估计立体对应,一种选择是应用现有的光流法,并将预测的流投影到极线上。我们表明,与RAFT相比,通过简单地折叠成本量来实现立体声专用RAFT的运行时间要快得多。
Slow-Fast::我们观察到,通过更频繁地迭代较低分辨率的GRU和较高分辨率的GRU,我们观察到RAFT-Stereo的运行时间显著减少,但对精确度的影响有限。在表6中,“慢-快”版本的RAFT-Stereo分别更新最低、中间和最高分辨率的隐藏状态30、20和10次,而“常规”更新每个隐藏状态32次。“慢-快”和“常规”使用相同的模型权重
4.6Real-time Inference
我们证明了RAFT-Stereo可以被配置为在具有竞争力的性能下实现对Kitti分辨率(1248x384)图像的实时推断。通过利用慢-快两级(1/8和1/16分辨率)GRU和单个主干,RAFT-Stereo的运行速度为26 FPS。我们实时实现RAFT-Stereo的性能(5.91D1误差)与DSMNet48相当。参见图6。此外,我们在CUDA中实现了我们自己的双线性采样器,因为Pytorch的默认实现被证明是一个运行时瓶颈。
5.Conclusion
我们在RAFT[35]的基础上提出了一种新的深层次双视立体结构RAFT-Stereo(RAFT-Stereo)。RAFT-Stereo利用多级GRU有效地在图像中传递信息,从而扩展了RAFT。我们的方法实现了最先进的跨数据集概化,在Middlebury基准测试中排名第一,在ETH3D上的表现优于所有已发表的工作

标签:Stereo,GRU,立体匹配,分辨率,图像,RAFT,我们
来源: https://blog.csdn.net/weixin_46200756/article/details/122972851