美文网首页
HITNet:快速准确的立体匹配(CVPR2021)

HITNet:快速准确的立体匹配(CVPR2021)

作者: Valar_Morghulis | 来源:发表于2022-02-24 07:55 被阅读0次

https://paperswithcode.com/paper/hitnet-hierarchical-iterative-tile-refinement

HITNet: Hierarchical Iterative Tile Refinement Network for Real-time Stereo Matching

CVPR 2021 · Vladimir TankovichChristian Häneyinda zhangAdarsh KowdleSean FanelloSofien Bouaziz ·  Edit social preview

This paper presents HITNet, a novel neural network architecture for real-time stereo matching. Contrary to many recent neural network approaches that operate on a full cost volume and rely on 3D convolutions, our approach does not explicitly build a volume and instead relies on a fast multi-resolution initialization step, differentiable 2D geometric propagation and warping mechanisms to infer disparity hypotheses. To achieve a high level of accuracy, our network not only geometrically reasons about disparities but also infers slanted plane hypotheses allowing to more accurately perform geometric warping and upsampling operations. Our architecture is inherently multi-resolution allowing the propagation of information across different levels. Multiple experiments prove the effectiveness of the proposed approach at a fraction of the computation required by state-of-the-art methods. At the time of writing, HITNet ranks 1st-3rd on all the metrics published on the ETH3D website for two view stereo, ranks 1st on most of the metrics among all the end-to-end learning approaches on Middlebury-v3, ranks 1st on the popular KITTI 2012 and 2015 benchmarks among the published methods faster than 100ms.

官方实现:https://github.com/google-research/google-research/tree/master/hitnet

PyTorch实现:https://github.com/meteorshowers/X-StereoLab

https://arxiv.org/pdf/2007.12140v3.pdf

这里有个深度估计的基准:https://vision.middlebury.edu/stereo/eval3/

本文介绍了一种用于实时立体匹配的新型神经网络结构HITNet。与许多最近的神经网络方法相反,我们的方法在全成本体积上运行并依赖于3D卷积,我们的方法没有明确构建体积,而是依赖于快速多分辨率初始化步骤、可微2D几何传播和warp机制来推断视差假设。为了达到较高的精度,我们的网络不仅从几何角度解释了差异,还推断了倾斜平面假设,从而可以更准确地执行几何warp和上采样操作。我们的架构本质上是多分辨率的,允许信息跨不同级别传播。多个实验证明了该方法的有效性,其计算量仅为最新方法所需的一小部分。在撰写本文时,HITNet在ETH3D网站上发布的双目立体匹配的所有指标中排名第一至第三,在Middleburyv3的所有端到端学习方法中的大多数指标中排名第一,在发布的速度超过100ms的方法中,在流行的KITTI 2012和2015基准中排名第一。

1.导言

最近对立体匹配深度的研究主要集中在开发精确但计算代价高昂的深度学习方法上。大型卷积神经网络(CNN)通常可以使用高达一秒甚至更长的时间来处理图像对并推断视差图。对于活动代理,如移动机器人或自动驾驶汽车,这样的高延迟是不可取的,因此需要能够在几毫秒内处理图像对的方法。尽管如此,在KITTI 2012排行榜上排名前100位的方法中,只有4种是已发布的方法,所需时间不到100分钟1。

在基于端到端学习的计算立体方法中,一种常见的模式是利用CNN,它基本上不知道立体匹配问题的几何特性。事实上,最初的端到端网络基于通用的U-Net架构[38]。随后的工作指出,结合显式匹配代价体积编码将视差分配给像素的代价,以及3D卷积,可以显著提高精度,但代价是显著增加计算量[24]。后续工作[25]表明,降低成本可以在速度和准确性之间进行合理的权衡。然而,成本量的降低是以牺牲准确性为代价的。

最近的多种立体匹配方法[52、12、28]提高了主动立体视差估计的效率,同时保持了较高的精度。这些方法主要基于三个直觉:第一,使用紧凑/稀疏特征进行快速高分辨率匹配代价计算;第二,非常有效的差距优化方案,不依赖于全部成本量;第三,使用倾斜平面进行迭代图像warp,通过最小化图像差异来实现高精度。所有这些设计选择都是在没有明确操作整个3D成本的情况下使用的。通过这样做,这些方法实现了非常快速和准确的主动立体匹配结果,但由于缺乏强大的机器学习系统,它们不能直接推广到被动立体匹配。因此,这就提出了这样一个问题:这种机制是否可以集成到基于神经网络的立体匹配系统中,以获得高效、准确的结果,从而为在延迟关键应用中使用被动立体深度传感开辟了可能性。

我们提出了基于神经网络的深度估计框架HITNet,该框架通过将图像warp、空间传播和快速高分辨率初始化步骤集成到网络架构中,克服了在3D体积上操作的计算缺点,同时通过允许特征在网络中流动来保持学习表示的灵活性。我们方法的主要思想是将图像块表示为平面tiles,这些tiles上附着有一个学习过的紧凑特征描述符。我们的方法的基本原理是利用空间传播融合来自高分辨率初始化和当前假设的信息。该传播通过卷积神经网络模块实现,该模块更新平面tiles及其附加特征的估计。为了使网络迭代地提高视差预测的准确性,我们使用网络内图像warp,在平面tiles周围的窄带(±1视差)中为网络提供局部成本体积,从而使网络最小化图像的相异性。

为了重建精细细节,同时捕获大的无纹理区域,我们从低分辨率开始,并按层次将采样预测提高到更高分辨率。我们的架构的一个关键特性是,在每个分辨率下,都会提供来自初始化模块的匹配,以便于恢复低分辨率下无法表示的薄结构。我们的方法的一个示例输出显示了我们的网络如何恢复图1中非常精确的边界、精细细节和薄结构。

总而言之,我们的主要贡献是:

•一个快速的多分辨率初始化步骤,使用学习的功能计算高分辨率匹配。

•有效的2D视差传播,利用倾斜的支持窗口和学习的描述符。

•与其他方法相比,最先进的方法只使用了一小部分计算,就可以实现流行的基准测试。

2.相关工作

立体匹配几十年来一直是一个活跃的研究领域[37,44,19]。传统方法利用手工设计的方案来寻找局部对应[57,22,4,21],并利用全局优化来利用空间上下文[14,26,27]。大多数方法的运行时效率与视差空间的大小有关,这会妨碍实时应用程序。高效算法[31,35,5,3]通过使用tilesmatch[1]和super pixel[31]技术避免搜索整个视差空间。一系列基于机器学习的方法,使用随机森林和决策树,能够快速建立对应关系[10,11,12,13]。然而,这些方法需要特定于摄像机的学习或后处理。最近,深度学习给立体匹配带来了巨大的改进。早期的工作训练暹罗网络提取tiles特征或预测匹配成本[36,60,58,59]。端到端网络被提议联合学习所有步骤,产生更准确的结果[47,38,41,48]。

现代架构中的一个关键组件是成本-体积层[24](或相关层[23]),允许网络运行每像素特征匹配。为了加快计算速度,已经提出了级联模型[40,7,33,16,54,61],以从粗到精的方式在视差空间中搜索。尤其是,[40]使用多个残差块来改进当前的视差估计。最近的工作[54]依赖于分层成本量,允许在高分辨率图像上训练该方法,并根据需要生成不同的分辨率。所有这些方法都依赖于使用3D卷积[54]或多个细化层[40]的昂贵成本体积过滤操作,从而妨碍了实时性能。快速方法[25,62]在空间和视差空间中降低采样成本,并尝试通过边缘感知上采样层恢复精细细节。这些方法显示了实时性能,但牺牲了精度,尤其是对于薄结构和边缘,因为它们在低分辨率初始化中丢失。

我们的方法受到经典立体匹配方法的启发,其目的是传播良好的稀疏匹配[12,13,52]。特别是,Tankovich等人[52]提出了一种分层算法,该算法利用倾斜的支撑窗口将匹配成本计算分摊到tiles中。受这项工作的启发,我们提出了一种端到端学习方法,克服了手工算法的问题,同时保持了计算效率。

虽然PWC-Net[50]是为光流估计而设计的,但它与我们的方法有关。该方法通过图像warp和局部匹配代价计算,使用具有多个细化阶段的低分辨率代价体。因此,遵循经典的金字塔匹配方法,通过使用前一级别的解决方案初始化当前级别,对低分辨率结果进行分层上采样和细化。相比之下,我们提出了一种快速、多尺度、高分辨率的初始化方法,能够恢复在低分辨率下无法表示的细节。最后,与[50]中采用的标准双线性warp和插值不同,我们的细化步骤产生了局部倾斜平面近似,用于预测最终的差异。

3.方法

HITNet的设计遵循传统立体匹配方法的原理[44]。特别是,我们观察到,最近的有效方法依赖于以下三个步骤:1.提取紧凑的特征表示[12,13];2.高分辨率视差初始化步骤利用这些特征来检索可行的假设;3一个有效的传播步骤使用倾斜支撑窗口来细化估计[52]。基于这些观察,我们将视差图表示为不同分辨率的平面图块,并将可学习的特征向量附加到每个图块假设(第3.1节)。这使我们的网络能够了解关于视差图一小部分的哪些信息与进一步改善结果有关。这可以被解释为可学习的3D成本量的一个有效且稀疏的版本,已经证明是有益的[24]。

整体方法如图2所示。我们的特征提取模块依赖于一个非常小的U形网络[42],其中解码器的多分辨率特征被其他管道使用。这些特征对图像的多尺度细节进行编码,类似于[7](第3.2节)。提取特征后,我们将视差图初始化为多分辨率的fronto平行图块。为了做到这一点,匹配者评估多个假设,并选择左视图和右视图之间距离最小的假设。此外,使用小型网络(第3.3节)计算每个tile的紧凑描述符。然后,初始化的输出被传递到传播阶段,其作用类似于[12,52]中使用的近似条件随机场解。该阶段以迭代的方式分层细化假设(第3.4节)。

3.1. tiles假说

我们将一个tile假设定义为一个带有可学习特征的平面tiles。具体地说,它由一个几何部分和一个可学习的部分p组成,该部分描述了一个倾斜的平面,该平面具有视差d和视差在x和y方向(dx,dy)的梯度,我们称之为tile特征描述符。因此,该假设被描述为一个对倾斜的3D平面进行编码的矢量,

tile特征描述符是tile的学习表示,允许网络将附加信息附加到tile。例如,这可能是匹配质量或局部曲面特性,例如几何体的实际平面度。我们不限制这些信息,而是从数据中学习到端到端的信息。

3.2. 特征提取器

特征提取器提供一组多尺度特征映射E={e0,…eM},用于初始匹配和传播阶段的warp。我们将一个特征映射表示为el,并将一个嵌入向量el,x,y表示为分辨率为l的位置x,y∈ 0, . . . , M、 0表示原始图像分辨率,M表示2M×2M下采样分辨率。单个嵌入向量el,x,y由多个特征通道组成。我们将特征提取器E=F(I;θF)实现为一个类似于U-Net的架构[42,34],即一个具有跳过连接的编码器-解码器,具有可学习的参数θF。该网络由跨步卷积和转置卷积组成,其中泄漏的ReLUs是非线性的。我们在网络的其余部分使用的一组特征映射E是U-Net在所有分辨率下的上采样部分的输出。这意味着,即使是高分辨率特征也包含一定数量的空间背景。更详细地说,U-Net的一个下采样块有一个3×3卷积,然后是一个2×2卷积,步幅为2。一个上采样块将2×2步长2转置卷积应用于更粗U网分辨率的上采样结果。特征通过跳过连接连接连接,然后应用1×1卷积和3×3卷积来合并当前分辨率的跳过和上采样特征。每个上采样块生成一个特征图el,然后用于下游任务,并在UNet中进一步上采样以生成更高分辨率的特征图。我们在左边和右边的图像上运行特征提取程序,得到两个多尺度表示EL和ER。

3.3. 初始化

初始化的目标是在不同分辨率下提取每个分片的初始视差d init和特征向量p init。初始化的输出是形式为h init=[d init,0,0,p init]的fronto-parallel-tile假设。

tiles差异。

为了保持较高的初始视差分辨率,我们在右(次)图像中沿x方向(即宽度)使用重叠tiles,但在左(参考)图像中仍然使用非重叠tiles进行有效匹配。为了提取tiles特征,我们对每个提取的特征映射进行4×4卷积。左(参考)图像和右(次)图像的步幅不同,以便于实现上述重叠分幅。对于左侧图像,我们使用4×4的步幅,对于右侧图像,我们使用4×1的步幅,这对于保持完全的视差分辨率以最大限度地提高精度至关重要。这种卷积之后是泄漏的ReLU和MLP。

这一步的输出将是一组新的特征映射E▽={e0,…~eM},具有每个分片特征†el,x,y。请注意,现在E〜L和E〜R中特征映射的宽度不同。每个tile特征沿扫描线明确匹配。我们将位置(x,y)处的匹配成本%和分辨率l与视差d定义为:

然后,初始差异计算为:

对于每个(x,y)位置和分辨率l,其中D是所考虑的最大视差。请注意,尽管初始化阶段会彻底计算

匹配所有差异不需要存储整个成本量。在测试时,只需提取最佳匹配的位置,这可以非常有效地利用快速内存,例如GPU上的共享内存和单个Op中的融合实现。因此,无需存储和处理3Dcost volumes。

tile特征描述符。

初始化阶段还预测每个(x,y)位置和分辨率l的特征描述p init l,x,y:

这些特征基于参考图像的嵌入向量〜eL l,x,y和最佳匹配视差dinit的成本%。我们使用了一个感知机D,其权值θD是可学习的,它是由1×1卷积和泄漏的ReLU实现的。tile特征描述符的输入包括匹配成本%(·),这允许网络获得匹配的可信度。

3.4. 传播

传播步骤将tiles假设作为输入,并基于信息的空间传播和信息融合输出细化的tiles假设。它在内部将特征提取阶段的特征从右图像(次)warp到左图像(参考),以便预测到输入分幅的高精度偏移。预测了一个额外的置信度,该置信度允许来自早期传播层和初始化阶段的假设之间进行有效融合。

warp。

warp步骤以与分片相关联的特征分辨率L计算特征映射EL和e R L之间的匹配代价。该步骤用于围绕当前假设建立本地成本量。每个tiles假设被转换成一个大小为4×4的平面tiles,它最初覆盖在特征图中。我们将对应的4×4局部视差图表示为d0,其中

对于tiles坐标i,j∈ {0, · · · , 3}. 然后,使用沿扫描线的线性插值,使用局部差异将特征e R l从右(次)图像warp到左(参考)图像。如果局部视差tiled0是准确的,这将导致warp的特征表示Er 0 l,它应该与左侧(参考)图像El的相应特征非常相似。比较参考(x,y)tiles和warp次tiles的特征,我们定义了成本向量φ(e,d0)∈ R 16 as

哪里

tiles更新预测。

该步骤将n个tile假设作为输入,并预测tile假设的增量加上每个tile的标量值w,表明该tile正确的可能性,即置信度。该机制被实现为CNN模块U,卷积结构允许网络在空间邻域中看到tiles假设,因此能够在空间上传播信息。这一步的一个关键部分是,我们用warp步骤中的匹配成本φ来扩充tiles假设。通过对差异空间中的一个小邻域执行此操作,我们建立了一个局部成本量,该成本量允许网络有效地细化tiles假设。具体地说,我们将一块tiles中的所有差异在正负方向上以一个差异1的恒定偏移量进行置换,并计算三次成本。使用这一点,让a成为输入tile图h的增强tile假设图:

对于位置(x,y)和分辨率l,CNN模块Ul然后预测每个n个tile的更新,另外还有wi∈ R代表假设的置信度:

U的架构使用剩余块[20]实现,但没有批量标准化。[25]之后,我们使用扩张的卷积来增加感受野。在运行一系列具有不同膨胀因子的剩余块之前,我们先运行1×1卷积,然后是泄漏ReLU,以减少特征通道的数量。更新模块以分层迭代方式应用(参见图2)。在最低分辨率l=M时,从初始化阶段开始,每个位置只有1个tile假设,因此n=1。我们通过将输入的分片假设和增量相加来应用分片更新,并在每个方向将分片向上采样2倍。因此,使用tile的平面方程对视差d进行上采样,并且使用最近邻采样对tile假设dx、dy和p的其余部分进行上采样。在下一个决议中−1我们现在有两个假设:来自初始阶段的假设和来自较低分辨率的上采样假设,因此n=2。我们利用WI为每个位置选择置信度最高的更新tiles假设。我们重复这个过程,直到达到分辨率0,这对应于我们所有实验中的分片大小4×4和全视差分辨率。为了进一步细化视差图,我们对4×4分片使用获胜假设,并应用传播模块3次:对于4×4、2×2、1×1分辨率,使用n=1。tiles尺寸为1×1时的输出是我们的最终预测。补充材料中提供了有关网络架构的更多详细信息。

4.损失函数

我们的网络是利用本节剩余部分所述的损失,通过真值数据差分gt进行端到端训练的。最终损失是所有刻度和像素上损失的总和:

4.1. 初始化损失真值差异以亚像素精度给出,但初始化匹配以整数差异进行。因此,我们使用线性插值计算亚像素差异的匹配成本。亚像素差异的成本如下所示:

为了清晰起见,我们去掉了l,x,y的下标。为了在多个分辨率下计算它们,我们将真值视差tile最大化,以将其降采样到所需的分辨率。我们的目标是训练特征E,使匹配代价ψ在真值差异处最小,在其他地方更大。为了实现这一点,我们规定了“1对比损失”[18]

其中β>0是一个边距,d gt是特定位置的真值差异,并且

同一地点的最低成本差异不匹配。该成本将真值成本推向0,并将最低成本不匹配推向一定的边际。在我们所有的实验中,我们都将边界设置为β=1。在早期基于深度学习的立体匹配方法中,类似的对比损失也被用于学习匹配分数[60,36]。然而,他们要么使用随机不匹配位置作为负样本,要么分别使用所有不匹配位置作为负样本。

4.2. 传播损耗

在传播过程中,我们对tile几何体d、dx、dy和tile置信度w施加损失。我们使用真值视差d gt和真值视差梯度d gt x和d gt y,通过在以像素为中心的9×9窗口中稳健地将平面拟合到d gt来计算。为了在tiles几何体上应用损耗,我们首先使用类似于等式5的平面方程(d,dx,dy)将tiles展开为全分辨率差异ˆd。在应用倾斜损失之前,还使用最近邻方法将倾斜部分上采样到全分辨率。我们使用[2]中的一般鲁棒损失函数ρ(·),它类似于平滑的`1损失,即Huber损失。此外,我们用阈值a对损失进行截断

其中d diff=d gt− ˆd.此外,我们在表面倾斜上施加损失,如下所示:

其中,χ是一个指示函数,当条件满足时,其值为1,否则为0。为了监督置信度w,我们施加了一个损失,如果预测的假设距离基本真理的阈值C1较近,则增加置信度;如果预测的假设距离基本真理的阈值C2较远,则降低置信度。

对于我们所有的实验,A=B=C1=1;C2=1.5。对于最后几个级别,当只有一个假设可用时,损失将应用于所有像素(a=∞).

5.实验

我们在流行的基准测试上评估了该方法,与其他方法相比,该方法在计算时间上的一小部分显示了具有竞争力的结果。我们考虑以下数据集:ScEnFrase[38 ],KITTI 2012(15),KITTI 2015 [39 ],Eth3d [45 ],Middlebury数据集V3[43 ]。在标准评价设置之后,我们考虑两个流行的度量:端点误差(EPE),它是预测输出和基础事实之间的视差空间中的绝对距离;x像素误差,即视差误差大于x的像素百分比。对于SceneFlow上的EPE计算,我们采用了与PSMNet[7]相同的方法,将所有真值视差大于192的像素排除在评估之外。除非另有说明,否则我们使用5级HITNet,即M=4。

在这一节中,我们重点比较了在流行基准、详细的消融研究、运行时分解、跨领域概括和附加评估方面的最新进展,这些都在补充材料中提供。用于提交基准和评估脚本的经过训练的模型可以在https://github.com/google-research/googleresearch/tree/master/hitnet

5.1. 与最新技术的比较

SceneFlow。

在合成数据集SceneFlow“finalpass”上,我们实现了显著的终点误差(EPE)0.36,这是撰写本文时最先进水平的2倍(有关L和XL版本的详细信息,请参阅补充资料)。有代表性的竞争对手在表中列出。1.PSMNet算法[7]执行多尺度特征提取,与我们的方法类似,但相比之下,它们使用更复杂的池层。这里我们展示了我们的架构更有效。与GA Net[61]相比,我们不需要复杂的消息传递步骤,比如SGM。我们得到的结果表明,我们的策略也实现了非常相似的推理。最后,我们考虑了一种具有代表性的快速方法,StereoNet[25],其性能一直优于StereoNet。因此,我们的方法在保持实时性能的同时实现了最低的EPE。定性结果见图3。

Middlebury立体数据集v3。

我们在Middlebury立体数据集v3上用多种最先进的方法评估了我们的方法,见表4和官方基准网站。2.正如我们所观察到的,在大多数指标上,我们的表现优于所有其他基于端到端学习的方法,在考虑手工制作的方法时,我们排名前十,尤其是我们在bad 0.5和A50中排名第一,在bad 1和avgerr中排名第二。此外,我们注意到,我们的平均误差特别受到一幅图像DjembL的影响,这是因为我们没有明确地处理输入对之间的剧烈光照变化。有关Middlebury数据集的可视化结果和训练程序的详细信息,请读者参阅补充资料。

ETH3D双视立体。

我们在ETH3D数据集上使用多种最先进的方法评估了我们的方法,请参见选项卡。2.提交基准测试时,HITNet在网站公布的所有指标中排名第一至第四。特别是,我们的方法在以下指标上排名第1位:差0.5、差4、平均误差、均方根误差、50%分位数、90%分位数:这表明HITNet对所选的特定测量具有弹性,而当选择不同的指标时,竞争方法表现出显著差异。详情请参见提交网站。3.

基蒂2012年和2015年。在撰写本文时,在公布的速度超过100毫秒的方法中,HITNet在KITTI 2012和2015年的基准测试中排名第一。与其他最先进的立体匹配匹配器(见表3)相比,我们的方法优于GC Net[24]、[40]和许多其他方法。最近的方法,如GA Net[61]和HSM[54]获得了稍好的指标,尽管它们分别需要1.8秒和0.15秒。还请注意,HSM[54]已使用额外的外部高分辨率数据进行了训练。类似地,GA Net[61]在SceneFlow上进行了预训练,并在KITTI基准上进行了微调,而我们的方法是在KITTI上可用的小数据上进行充分训练的。与StereoNet[25]和RTSNet[29]等快速方法相比,我们的方法始终以相当大的幅度优于它们,表明它可以在不牺牲准确性的情况下用于延迟关键场景。4.

6.结论

我们介绍了HITNet,一种实时端到端架构,用于精确的立体匹配。我们提出了一个快速初始化步骤,能够非常高效地使用学习的特征计算高分辨率匹配。然后使用传播和融合步骤融合这些tile初始化。使用带有学习描述符的倾斜支撑窗口提供了额外的准确性。我们介绍了多个常用基准的最新精度。我们算法的一个局限性是,它需要在具有真值深度的数据集上进行训练。为了解决这个问题,我们计划在未来研究自我监督方法和自我蒸馏方法,以进一步提高准确性,减少所需的训练数据量。我们实验的一个局限性是,不同的数据集分别进行训练,并且使用稍微不同的模型架构。为了在未来解决这一问题,需要进行一次与强大的视觉挑战要求相一致的实验。

A.训练细节

在本节中,我们添加了有关训练程序的其他细节,并讨论了不同数据集之间的差异。

A.1。训练机构

SceneFlow数据集由3个组件(飞行、驾驶和Monkaa)组成,并附带预定义的列车和测试拆分,所有示例均包含地面真相。按照该数据集的标准实践,我们对所有实验使用预定义的训练和测试分割。我们还只使用了数据集中的FlyingThings部分,因为Driving和Monkaa没有相应的测试集,将它们包括在训练中会影响Sceneflow和Middlebury的预训练的准确性。当所有35k图像用于训练模型时,XL模型的PSM EPE在“finalpass”上为0.41。我们考虑了320×960的随机作物和8个批次,最大差异为320。我们使用Adam优化器进行了142万次迭代的训练,从4e的学习率开始−4.将其降至1e−4,然后是4e−5,然后到1e−5分别在1米、1.3米和1.4米的迭代后。SceneFlow实验的一般稳健损失采用,α=0.9,c=0.1。对于所有其他实验,α=0.8,c=0.5。

对于真实世界的数据集,如KITTI 2012和2015,提供了一个具有真值的训练集和一个不具备真值的测试集。在提交基准测试时,我们根据两个数据集中的所有394张图像对网络进行了训练。对于KITTI数据集的消融研究,我们将训练集分为训练集和验证集,训练集中75%的数据和验证集中25%的数据。我们使用数据扩充、批量大小为4、随机作物为311×1178、最大差异为256的方法进行训练。训练计划遵循以下步骤:400k次迭代,学习率4e−4,然后是8k次迭代,学习率为1e−4,然后是2k次迭代,学习率为4e−5.请注意,网络没有像[54]中那样在任何其他数据集上进行预训练,一个小的训练集就足以让我们的方法获得良好的性能。

事实上,根据经验,我们发现使用较小的初始学习率1e−4.长时间的训练可以在多个数据集上获得最佳效果,而不会出现过度拟合的迹象。在图5中,我们展示了200多个时代的训练HITNet L的演变(学习率变化为1e)−在SceneFlow cleanpass数据集上显示5(200个时代后)。我们还将该方案与使用更高起始学习率(1e)的方案进行了比较−3):10个时期后,我们观察到1e的EPE为0.85−1e为4和0.66−3.虽然1e−3.在几个时期内取得了较小的误差,我们的实验证实,长时间的训练和较小的学习率有利于在不过度拟合的情况下获得更高质量的结果。另请参见泛化实验,实验表明该方法具有非常好的跨数据集性能。

现实世界的ETH3D立体数据集[45]的训练集只包含几个立体对,因此需要额外的数据来避免过度拟合。在提交基准测试时,我们对网络进行了来自KITTI数据集的所有394张图像、来自Middlebury数据集V3[43]的所有半分辨率和四分之一分辨率训练图像以及来自ETH3D数据集的训练图像的训练。我们使用与KITTI提交相同的训练参数,并在115k次迭代后停止训练,这是在ETH3D训练集上使用4倍交叉验证选择的。请注意,没有额外的训练、预训练和微调。

类似地,Middlebury数据集[43]包含有限的训练集。为了避免过度拟合,我们在SceneFlow的FlyingThings训练集上对模型进行了数据增强预训练,然后在23张Middlebury14-perfectH训练图像上进行了微调,同时保持所有数据增强功能。具体来说,我们使用了一个HITNet大型模型,在6个尺度(M=5)下初始化,使用8个批量和512×960的随机作物对其进行445k次迭代的预训练。我们将学习速率初始化为4e−4,然后逐渐降至1e−4,4e−5和1e−5分别经过300K、400K、435K迭代。最后,我们在1e对模型进行了5K迭代的微调−5.学习率。这些参数是通过在Middlebury训练集上使用4倍交叉验证选择的。

A.2。数据扩充

可用的训练数据可能无法完全代表KITTI、ETH3D和Middlebury等小型真实数据集的实际测试集。事实上,我们经常在测试时观察到实质性差异,例如亮度变化、意外反射和错误校准。为了提高网络的健壮性,我们进行了以下增强。我们首先通过使用随机对称和非对称乘法调整来扰动左右图像的亮度和对比度。对称调整在[0.8,1.2]区间内取样,不对称调整在[0.95,1.05]区间内取样。与[55]类似,我们随后用取自右图像另一部分的随机作物替换右图像的随机区域:这有助于网络处理遮挡区域,并鼓励更好的“修复”。要替换的作物尺寸在[50,50]和[180,250]之间随机抽样。

最后,与其他数据集相比,Middlebury图像包含的颜色分布有很大不同。为了缓解这种情况,我们使用了[48]中的方法,使训练图像的颜色分布更接近Middlebury集的颜色分布,并且在测试期间,我们对立体像对的左右图像之间的颜色分布进行了标准化。此外,与[55]类似,为了处理该数据集的错误校准对,我们使用随机y偏移来增加训练数据[−2,2]像素。y偏移的随机值以低分辨率[H/64,W/64]生成,然后双线性上采样到输入图像的全分辨率[H,W]。为了模拟具有不同曝光量的不同噪声水平的图像,我们为整个图像添加了一次方差在[0到5]强度水平之间采样的高斯随机噪声。

B.其他评价

在本节中,我们将展示真实数据集的其他定性结果。在图4中,我们展示了我们的方法与其他方法的比较。我们考虑多个有代表性的竞争对手,如:GC-NET(24),它使用全cost volumes和3D卷积来推断上下文,RTS网[29 ]具有类似的推理时间比HITNet,最后是GA Net(61),作为精度最好的方法之一。我们的方法比较好地与其他方法,如GC NET和快速方法,如RTSNet,并与最先进的方法,例如GANET [ 61 ]。请注意,我们的方法如何检索精细结构和清晰的边缘,而只在KITTI数据集上进行训练,这些数据集显示出显著的边缘增肥伪影。

类似地,在图7中,我们展示了Middlebury数据集的定性结果[43]。对于每一张图片,我们将HITNet与表现最好的竞争对手在糟糕的0.5指标上进行比较。请注意,我们的方法能够在所有考虑的情况下生成清晰的边缘、正确的遮挡和薄结构。

B.1。中间输出

我们在图6中展示了网络内部的中间输出。我们观察到,随着分辨率的增加,差异变得更细粒度,来自高分辨率初始化的细节被合并到来自低分辨率的全局上下文中。请注意,我们对KITTI 2015数据集的结果仅从零开始在KITTI数据集上进行训练,而没有对其他数据源进行任何预训练。这意味着,由于这些数据集只提供了图像底部三分之二的真值,因此网络在图像顶部三分之一的区域没有受到监控。

B.2。一般化

最后,我们展示了该方法的跨域自适应能力。按照[49]中的协议,我们在SceneFlow上对HITNet进行了数据增强训练,并分别在KITTI 2012和KITTI 2015上进行了测试。我们还考虑了[49]中的多个竞争对手,并在Tab中报告了结果。5:请注意,与所有其他先进方法相比,我们的方法显示出了更好的泛化结果。这表明,即使没有显式的微调,我们的方法也能够有效地推广到看不见的数据集。

B.3。消融研究

我们分析我们提出的组件的重要性。完整的HITNet被视为基线,并与删除功能的版本进行比较。消融研究是根据SceneFlow“finalpass”数据和KITTI 2012进行的。定性评估见图8。

多尺度预测。

多尺度特性同时影响初始化和传播阶段。在标签上。6.我们在KITTI 2012上报告了完整模型(HITNet)的结果,5个尺度,4个尺度的结果,最后我们完全删除了多分辨率预测。当我们在合成SceneFlow数据集上评估相同的设置时,我们没有发现单个尺度或多个尺度之间的实质性差异:显然,合成数据集包含更多纹理区域,在传播过程中不会受益于额外的上下文,而现实世界中的场景充满了无纹理场景(例如墙壁),其中多分辨率方法自然表现得更好。

4x4x4下采样。

完全视差分辨率下的初始化为网络提供了一个令人信服的起点,网络可以主要集中在细化预测上。在标签上。6.我们表明,使用分片分辨率进行视差(成本体积是H、W和D维度下采样的4倍),精度会大幅下降。这证明了我们提出的快速高分辨率初始化的重要性。

16x16x8下采样。

降低所有尺寸的成本体积分辨率(类似于[50])会降低精度(H和W下采样16倍,D下采样8倍)。

16x16x1下采样。

使用较大的分片,同时保持视差分辨率会进一步降低精度,因为网络无法在初始化期间以较低的空间分辨率推理精确的视差。

倾斜预测。

在这个实验中,我们通过将dx和dy设置为0,并使用双线性插值进行上采样,迫使tiles假设始终是正面平行的。如表1所示。6.删除倾斜预测会导致SceneFlow和KITTI 2012的精度大幅下降。此外,该网络失去了预测某些表面法线概念的固有能力,这些概念可用于许多应用,如平面检测。

tiles功能。

在这里,我们删除了在初始化和传播步骤中预测的每个tile上的附加功能。事实证明,这是一个有用的组件,没有它,我们观察到两个数据集的准确性都会降低。

warp。

图像warp用于计算传播过程中的匹配代价。删除此步骤会影响子像素精度,如选项卡中所示。6.

模型尺寸。

最后,我们测试了模型尺寸的增加是否有益。特别是,我们将特征提取程序中的通道加倍,并在最后3个传播步骤中使用32个通道和6个剩余块,这需要将运行时间增加到54ms。正如预期的那样,这在SceneFlow上有了改进,如选项卡中所述。6、HITNet大型;然而,对于小型KITTI数据集,由于过度拟合,这并没有提高性能。通过在最后3个传播步骤中使用64个通道进一步增加模型大小,改善了SceneFlow结果,将运行时间增加到114ms,并在较小的数据集上增加了过度拟合。我们不认为有理由在合成数据集上探索更大的模型尺寸,因为这会增加对公开的较小真实数据集的过度拟合。XL版本的“cleanpass”指标为:0.31 epe、15.6 bad 0.1、3.67 bad 1.0、1.99 bad 3.0。

C.模型架构细节

默认情况下,HITNet架构是通过一个具有16、16、24、24、32个通道的5级功能提取器以相应的分辨率实现的。在初始化步骤中,4×4分片上的第一次卷积输出16个通道,然后是具有32和16个通道的2层MLP和ReLU非线性。tile描述符默认有13个通道,剩余块使用32个通道,除非另有说明。每个中间传播步骤使用2个没有膨胀的剩余块。在每个空间分辨率下,传播模块使用适当比例的特征tile:4×4分片的全分辨率特征tile,全分辨率下尺寸为8×8的较粗分片的2倍下采样,但在较粗的特征tile中采样4×4像素,等等,直到原始分辨率下采样16倍和64×64分片。最后3个传播级别从4×4tiles开始,在油漆中逐渐扩展,并在较大区域的边缘细化强烈的正确差异。为了实现这一点,他们对粗略的特征地图进行操作:4×4tiles使用4倍下采样特征进行warp,2×2tiles使用2倍下采样特征进行warp,1×1tiles使用全分辨率特征进行warp。

在KITTI和ETH3d实验中使用的HITNet模型中,最后3个传播步骤使用4、4、2个剩余块,包含32、32、16个通道和1、3、1、1;1, 3, 1, 1; 1,1扩张。

SceneFlow实验中使用的HITNet模型使用16、16、24、24、32个通道作为特征提取程序。在4x4tile上进行一次初始化。最后3个传播步骤使用6、6、6个剩余块,带有32、32、16个通道和1、2、4、8、1、1个膨胀。

SceneFlow实验中使用的HITNetL模型使用32、40、48、56、64个通道作为特征提取程序。在4x4tile上进行一次初始化。最后3个传播步骤使用具有32、32、32个通道和1、2、4、8、1、1膨胀的6、6、6个剩余块。

Sceneflow实验中使用的HITNetXL模型使用32、40、48、56、64个通道作为特征提取程序。在4x4tile上进行一次初始化。最后3个传播步骤使用6个、6个、6个剩余块,带有64个、64个、64个通道和1个、2个、4个、8个、1个、1个膨胀。

Middlebury实验中使用的HITNet模型使用32、40、48、56、64个通道作为特征提取器。最后3个传播步骤使用6、6、6个剩余块,带有32、32、32个通道和1、2、4、8、1、1个膨胀。用于提交基准测试和运行基准测试的脚本的模型可在https://github.com/google-research/googleresearch/tree/master/hitnet

图9提供了本文中描述的初始化模块的更多细节。类似地,图10和图11显示了res块如何集成到传播逻辑中。最后,图12描绘了使用单个假设或多个假设时传播步骤之间的差异。

D.运行时详细信息

用于ETH3d和KITTI实验的HITNet架构在Titan V GPU上以每帧19毫秒的速度运行,用于0.5像素(KITTI分辨率)的输入图像。大部分时间都花在最后3个传播步骤(7.5毫秒)上,这些步骤以更高的分辨率运行。多尺度传播步骤使用下采样数据,贡献小于5ms。使用单个融合运算器高效地实现初始化,在0.25ms内生成所有分辨率的初始视差估计,特征提取程序贡献6ms。对于Middlebury实验,当最大视差为160且运行时间与分辨率成线性比例时,该模型的运行时间约为107.5ms/Mpix,使用自定义CUDA操作进行初始化和warp。随着视差范围的增加,运行时间略有增加,对于1024的最大视差,运行时间约为109ms/Mpix。如果没有自定义CUDA操作,运行时间将增加3倍,因为单个warp操作包含100多个大张量的简单操作,虽然将它们融合在一起很简单,但不这样做会导致大部分时间花在全局内存访问上。在18核Xeon 6154 CPU上测试时,默认的tensorflow运行时每Mpix运行3.3秒,对于单线程运行时,这将转换为大约60秒,这与其他CPU方法相比是有利的。CPU tensorflow运行时确实使用SIMD指令集,其他方法可能不会使用。

E.参数数量

高效神经网络结构的一个重要方面是其参数的数量。这将影响所需的计算量和存储它们所需的内存量。此外,能够以较少的参数数量实现良好的性能,使得网络不容易过度拟合。在标签上。7我们表明,与其他方法相比,我们的网络能够获得更好的结果,参数和计算量显著减少。

参数越少,所提出方法的泛化能力也越强:实际上,可学习权重越小,意味着网络越不容易过度拟合——我们的方法在对合成数据进行训练并在现实场景中进行测试时,能够超越多个最先进的基线。

相关文章

网友评论

      本文标题:HITNet:快速准确的立体匹配(CVPR2021)

      本文链接:https://www.haomeiwen.com/subject/sqoolrtx.html