ECO-TR: Efficient Correspondences Finding via Coarse-to-Fine Refinement 论文阅读笔记

ECO-TR:通过从粗到细的细化有效的对应查找(CoTr的加速版)

摘要:用统一的功能对应模型对稀疏和密集图像匹配进行建模,近年来引起了越来越多的研究兴趣。然而,现有的研究主要集中在提高匹配精度上,而忽略了匹配效率,这对实际应用至关重要。本文提出了一种高效的结构,即ECO-TR (efficient Correspondence Transformer),通过从粗到精的方式寻找对应,显著提高了功能对应模型的效率。为了实现这一目标,多个变压器块被明智地连接起来,在共享的多尺度特征提取网络上逐渐细化预测坐标。给定一对图像和任意查询坐标,在单个前馈传递中预测所有对应关系。我们进一步提出了一种自适应查询聚类策略和一个基于不确定性的离群点检测模块,以配合所提出的框架进行更快更好的预测。在各种稀疏和密集匹配任务上的实验表明,我们的方法在效率和有效性上都优于现有的最先进的方法。代码地址:https://dltan7.github.io/ecotr/

引言

作为计算机视觉的一个基础研究方向,寻找图像对之间的对应关系被广泛应用于光流估计[8,19,53]、视觉定位[32,34,46]、摄像机位置校准[15,41]、三维重建[5,11]、视觉跟踪[30]等下游任务中。给定一对图像,根据查询和对应关系的确定方式,一般可以将上述应用分为稀疏匹配和密集匹配。前者侧重于从两幅图像中稀疏地分别提取两组关键点并进行匹配,以最小化预定义的对齐误差[15,21,34]; 后者将第一张图像中的所有像素视为查询,这些查询被密集映射到另一张图像以进行对应[19,37,51,59]。

长期以来,这两种应用都是独立研究的,并分别进行了各种优化设计。最近,COTR[14]声称这两个应用程序可以在一个统一的框架内自然地建模,因为稀疏匹配和密集匹配之间的唯一区别是要查询的点的数量。COTR 在多个尺度上以逐渐放大的方式递归应用transformer-based 的[4,7,52]模型,以获得准确的对应关系。虽然该方法取得了令人印象深刻的性能,但其复杂的离线 pipeline 和缓慢的推理速度严重限制了其在实际应用中的实用性。

我们认为导致COTR不理想的主要原因有三个。一是递归放大优化框架,它必须在下一次局部补丁匹配中重新提取相应的特征。在许多查询的情况下,这些特征可能重叠,这意味着大量重复和冗余的计算。二是切换查询和通信的角色,以过滤掉不匹配的查询,这会使总计算量增加一倍。三是分阶段训练策略导致训练收敛不稳定,需要仔细调整。

在这项工作中,我们提出了一个高效的对应 transformer 网络(ECO-TR),而不是为了性能而牺牲速度,表明在单个前馈通中可以实现效率和有效性。具体来说,我们提出对所发现的对应进行从粗到细的逐步细化。该框架由用于多尺度特征提取的自底向上卷积神经网络(CNN)和对应不同匹配精度的自顶向下 transformer 块组成。在从粗到细的细化过程中,我们不是根据粗预测坐标裁剪不同位置和大小的图像块,递归地重新馈送到CNN中得到相应的特征图,而是利用现代CNN的金字塔和平移不变性的特性,对输入图像进行一次变换得到多尺度特征图,并对采集到的特征图进行直接裁剪。所提出的特征级裁剪方法可以有效地避免重复计算。在一定程度上,模型的推理速度不随查询点的增加而线性增加。

为了进一步提高框架的效率,提出了一个自适应查询聚类(AQC)模块,将相似的查询聚集到一个集群中,从而加快了推理速度。此外,我们提出了一个不确定性模块来估计预测对应的置信度,该模块几乎 free 地获得了良好的离群值检测性能。如表1所示,我们的方法可以在一个NVIDIA Telsa V100 GPU上在一秒钟内处理1000个查询,处理大小为800 × 800的一对图像,在相同条件下比COTR快40倍左右。
在这里插入图片描述图1 本文提出的ECO-TR与COTR的推理时间比较。查询数量设置为100 ~ 10,000。我们可以看到,COTR的耗时随着点数的增加呈线性增加,而我们的方法基本不变。

为了评估该方法的性能,我们报告了多个具有挑战性的数据集上的结果,这些数据集涵盖了稀疏和密集的对应查找任务。实验结果表明,该方法在性能和速度上都大大优于COTR。此外,我们进行了广泛的消融实验,以更好地了解我们框架中每个组件的影响。这些贡献摘要如下:

  1. 我们提出了一个新的从粗到精的框架来寻找对应关系,该框架可以应用于稀疏和密集匹配任务。我们的方法可以端到端进行优化,并在单个前馈中计算任意数量的查询。
  2. 我们设计了自适应查询聚类策略和基于不确定性的离群值过滤模块,在效率和有效性之间取得了更好的平衡。
  3. 我们的方法在速度上明显优于现有性能最好的函数方法,并且在稀疏对应任务中仍然具有相当的性能,在密集对应任务中表现更好。

相关工作

稀疏方法

稀疏图像匹配 pipelines 最常见的范例包括三个阶段:关键点检测、关键点描述和特征匹配。在检测阶段,通过检测方法[2,31,35,50]选择可重复且可匹配的稀疏关键点集,对视点变化和不同光照条件具有鲁棒性。然后,通过 patch-level 输入或 image-level 输入来描述关键点。基于 patch 的描述方法[10,24,44,45]以裁剪过的patch作为输入,通常通过度量学习进行训练。基于 image 的描述方法[6,9,22,27,43]以完整图像为输入,应用全卷积神经网络[20]生成密集描述子。这种方法通常将检测器和描述符相结合,它们在训练中共享相同的主干,在两种任务上都能获得更好的性能。

传统的特征匹配方法使用最近邻(NN)搜索来寻找潜在的匹配。最近,许多方法[3,40,54 - 56]通过启发式或学习先验来过滤异常值。SuperGlue[33]使用注意力图神经网络和最优传输方法来获得最先进的稀疏匹配任务性能。与上述方法不同的是,COTR[14]将一些关键点作为查询,通过对应神经网络递归地对其他图像中的匹配进行细化。在COTR之后,我们设计了一个端到端模型来加速该方案。

稠密方法

密集匹配的主要目的是估计光流。NC-Net[29]表示所有关键点和可能的对应关系,作为限制在低分辨率图像的4D对应体。稀疏NC- Net[28]应用稀疏相关层而不是所有可能的对应来缓解这种限制,从而可以处理更高分辨率的图像。DRC-Net[17]通过使用不同层的粗分辨率和精细分辨率特征图,降低了计算成本,提高了性能。GLU- Net[48]通过从不同分辨率的图像中提取的全局和局部特征来寻找像素级的对应关系。GOCor[47]通过改进的特征相关层消除相似区域的特征歧义。PDC-Net[49]通过估计不确定性映射并过滤不准确的对应来排除闭塞和均匀区域中不正确的密集匹配。Patch2Pix[58]用补丁级匹配建议替换像素级匹配,然后通过回归层对其进行细化。LoFTR[39]以粗到细的方式与线性 transformers 建立精确的半密集匹配。对于COTR,通过插值足够的稀疏查询结果生成密集匹配结果。与COTR一样,我们的方法也可以通过插值得到密集的匹配结果。

函数方法

图像匹配中的函数方法。COTR是第一个通过功能对应查找结构获得匹配的算法。给定一对图像和一个查询的坐标,COTR通过基于transformer 的对应查找网络回归另一个图像中的可能匹配。每个查询都是独立处理的,并通过使用查询的 Delaunay三角插值稀疏对应来估计密集对应。然而,作为递归方法,当查询许多关键点时将非常耗时。我们以端到端方式缓解了这个问题,它的运行速度比COTR快几十倍,并实现了相当或更好的性能。

粗到精的细化网络

本节详细描述了提议的端到端框架,该框架可以在单个前馈传递中找到给定一对图像的任意查询的对应关系。

Overall Pipeline

我们在图2中展示了所提议框架的整体管道的示意图。主要包括基于CNN的自底向上多尺度特征提取路径和基于变压器的自顶向下粗到精的预测细化路径。给定一对图像IA和IB,我们首先将它们调整为相同的空间分辨率(B × C × H × W, B是“批处理”维度),并将它们输入CNN主干以获得多尺度特征。然后,将收集到的多尺度特征与输入查询一起,在自顶向下的路径中,以从粗到精、逐步细化的方式预测对应关系。我们还预测了一个不确定性分数(即,每个对应表示网络对其预测的自信程度),它可以用来过滤掉异常值,几乎是免费的。由于在一个前馈中可能要处理一堆查询,因此我们进一步引入自适应查询聚类策略,以更好地平衡效率和有效性。下面的小节将详细描述上述组件。
图2 我们提议的框架的管道。它以一对图像(左下)和一组任意数字的查询({Q})作为输入,并分别输出对应的相关性({RF})和不确定性分数({UF})。右图为每个预测细化阶段的特征块裁剪过程。

Efficient Feature Extraction

为了精确地获得对应位置,现有的工作通常是在潜在匹配区域周围裁剪图像补丁,并以逐步放大的方式迭代地将其反馈到网络中。上述做法的主要缺点是:1)输入图像被裁剪并多次调整大小,每个查询位置周围都有不同的放大因子。生成的每个补丁随后被输入到网络中,这涉及到许多冗余计算。2)每个查询的图像补丁都是由网络独立裁剪和处理的,这通常意味着串行处理和计算资源的低效使用。我们发现,造成这两个缺点的主要原因是直接在图像上设置了不同空间水平的裁剪补丁。

考虑到现代cnn的金字塔和平移不变性,我们建议在特征提取步骤之后推迟裁剪操作来缓解上述缺点。具体来说,我们首先对每幅输入图像进行一次加权提取多尺度特征图,然后直接对采集到的特征图进行裁剪,得到任意位置和尺度的特征补丁。我们以ResNet-50[26]网络作为多尺度特征提取的主干,同时又不失通用性。继之前成功生成更强大和更具代表性的特征之后,我们附加了一个金字塔池模块(PPM)[57],以在ResNet-50的顶部捕获更多的全局信息。收集了ResNet-50网络res1-4阶段的PPM输出和侧输出,构建了层次化多尺度特征集成结构。如图2左图所示,为了满足后续自上而下的细化阶段(粗、中、细)的需要,我们选择将{PPM、res4}、{res2-4}和{res1-3}阶段的中间输出分别组合起来。然后将集成的三组特征(记为{FC,FM,FF})分别调整为输入拼接图像对的1/32,1/16和1/4空间分辨率。

Coarse-to-Fine Prediction Refinement

粗到精的预测细化过程示意图流水线如图2中间部分(浅橙色平行四边形背景)所示。一般来说,它由粗、中、细三个连续相连的阶段组成,分别负责不同精度的对应预测。每一级都是一个由三个编码器和三个解码器组成的变压器。粗阶段(TR C)采用一组任意数字的查询Q和整个先前组合的特征F C作为输入。它输出粗预测对应集rc及其不确定性分数。在Q和R C坐标的指引下,我们在之前采集到的中级特征F M上裁剪出以它们为中心的方形斑块,窗口大小固定为w M,如图2左中虚线箭头所示。裁剪后的特征补丁被重新排列到一个新的批处理中,输入查询Q(基于裁剪中心和窗口大小的规范化)被转发到下一个阶段(即中间阶段(TR M))。精细阶段与中期阶段有相似的程序。在精细阶段之后,我们得到了所提出框架的最终输出:最精细的对应R F及其不确定性分数U F。

对于每个阶段,连接的主干特征以正弦格式的二维线性位置编码进行补充并在馈送到变压器编码器之前进行平坦化。在解码阶段,使用位置编码的查询坐标参与到转换器编码器的输出中。在这里,我们不允许查询点之
间的自关注,因为查询是相互独立的。COTR计算周期一致性误差,并拒绝误差大于指定阈值的匹配,以过滤掉不确定的匹配,这使计算成本增加了一倍。为了进一步加速我们的框架,我们引入了一个不确定性估计分支。两个FFN分支跟随最后一个变压器解码器的输出。一种方法是回归每个查询对应的相对坐标,另一种方法是预测这些坐标的不确定性。具有高不确定性的不可靠预测将在推理阶段被过滤掉。

在预测了第i层的匹配R i及其不确定性U i后,损失L i的计算公式为:
在这里插入图片描述
这三个阶段在训练过程中同时受到监督。具体来说,最终损失L定义为:
在这里插入图片描述
实验表明,训练过程中的中、精细监督为相应阶段提供了预测,并向CNN骨干网提供了独特的反向传播信号,有利于粗层次的预测。在第4.5节中提供了更多的细节。

Adaptive Query-Clustering

Transformer 结构能够在一次前向传播中处理多个查询。为了提高效率,每个 patch 应该包含尽可能多的查询。一种简单的做法是根据预定义的窗口大小和步长(通常步长设置等于相应的窗口大小)直接将输入图像对分割成两组网格。通过将这两个集之间的补丁紧密耦合,任何查询对应对都可以分配给其中一个补丁对。为简单起见,我们将上述点到补丁的分配方式表示为GRID。然而,我们注意到查询-对应无关的分配策略的一个不可避免的缺点是,一些匹配总是存在于补丁的边界周围,这通常会得到次优的匹配结果。我们将这一令人不满意的现象归因于边境地区缺乏足够的背景信息。

为了在效率和有效性之间实现更好的权衡,我们提出了一种自适应查询聚类(AQC)算法,为所有查询对应对自动动态地分配图像补丁,如算法1所示。为了证明AQC的优越性,我们在4.5节中将其与GRID进行比较。实验表明,AQC聚类的性能优于GRID聚类。
在这里插入图片描述

Implementation Details

我们在 PyTorch [25]中实现了我们的模型。局部特征CNN使用修改版本的ResNet-50作为主干,没有进行预训练。对于从粗到细的细化模块,我们设置裁剪窗口大小w M = 17, w F = 13。对于AQC模块,我们设t = 1, K num = 128。距离阈值Th在训练时设置为patch对应边的0.8倍,在推理时设置为0.6倍。更多的细节可以在补充材料中找到。

实验

我们在多个数据集上评估我们的方法。为了公平的比较,我们不会在任何其他数据集上重新训练或微调我们的模型。实验安排如下:1. 在HPatches[1]、KITTI[12]和ETH[36]数据集上评估密集匹配任务。根据COTR的评估方案,我们评估了采样匹配和内插密集光流的结果。2. 我们在与来自Megadepth[18]数据集的COTR相同的场景上评估姿态估计任务进行稀疏匹配。3.对于消融研究,我们使用ETH3D数据集评估每个提议贡献的影响。

Results on HPatches Dataset

在第一个实验中,我们对HPatches数据集上的ECO-TR进行了密集匹配任务的评估。HPatches数据集包含116个场景,其中57个场景在视点变化,59个场景在光照条件下变化。跟随 COTR ,我们评估了视点变化分割下的密集匹配结果。与GLU-Net一样,我们在评估时调整了参考图像的大小,而COTR在其实验中是在原始尺度下评估的,PCK值不具有可比性。因此,我们在公平设置下再现了COTR的数量。对于每种方法,我们从每对中找到最多1,000个匹配项。然后,我们在查询的Delaunay三角图上插值对应关系,得到密集对应关系。结果如表1所示。
在这里插入图片描述

对于密集匹配任务,ECO-TR在各指标下均优于COTR。在匹配精度上,COTR略优于PCK评价的ECO-TR。我们将这种差距归因于图像分辨率的差异。COTR可以利用高分辨率的图像通过四个递归缩放,这是ECO-TR无法管理的,因为它的端到端架构。ECO-TR的平均终点误差(AEPE)低于COTR。

Results on KITTI Dataset

未完待续。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EfficientDet是一种高效的目标检测算法,旨在提高目标检测的准确性和效率。它基于EfficientNet模型,通过在不同尺度的特征层上进行多尺度特征融合和级联特征筛选,有效地提高了检测性能。 要复现EfficientDet的PyTorch版本,首先需要准备相关的代码和数据集。可以从GitHub上找到官方提供的EfficientDet代码库,并下载相应的预训练权重和示例数据集。 在复现过程中,需要了解EfficientDet的网络结构和训练策略。EfficientDet主要由骨干网络、特征网络和目标检测头组成。骨干网络通常采用EfficientNet作为特征提取器,特征网络基于FPN和BiFPN来融合不同尺度的特征,而检测头则负责预测目标的位置和类别。 在编写代码时,需要按照EfficientDet的网络结构构建PyTorch模型,并加载预训练权重。可以使用PyTorch提供的各种库和函数来实现网络的构建和训练过程。训练过程通常涉及数据加载、前向传播、损失计算和反向传播等步骤。 为了复现EfficientDet,还需要选择适当的损失函数和优化器。常用的目标检测损失函数包括交叉熵损失和IoU损失。优化器可以选择Adam或SGD等常用的优化器。 在训练过程中,通常需要设置适当的学习率、批量大小和训练轮数等超参数,并进行调优以提高模型的性能。可以通过监控训练过程中的验证集性能来选择最佳的模型。 在复现EfficientDet时,还可以根据具体需求进行一些改进和优化。例如,可以尝试使用更大的图像分辨率、调整多尺度训练策略、增加数据增强方法等来提高模型的性能。 总之,复现EfficientDet的PyTorch版本需要理解其网络结构和训练策略,并按照这些原理进行代码实现和相关参数的设置。通过合理调整超参数和优化方法,可以达到和原论文相近甚至更好的目标检测性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值