Meta AI开源力作 | SiLK:你真的需要这么复杂的图像关键点提取器?

Title: SiLK: Simple Learned Keypoints

Paper: arxiv.org/pdf/2304.06...

Code: github.com/facebookres...

导读

关键点检测和描述符是计算机视觉任务(如图像匹配、3D重建和视觉里程计)的基础技术。几十年来,像Harris角点、SIFT和HOG描述符这样的手工设计方法一直被使用;近年来,引入深度学习以改进关键点检测成为一种趋势。然而,仔细观察发现,基于学习的方法的结果往往难以解释 ;最近的基于学习的方法使用了各种各样的实验设置和设计选择:经验结果常常使用不同的模型、协议、数据集、监督类型或任务进行报告。由于这些差异通常是相互关联的,这引发了一个自然的问题,即什么样的基于学习的关键点检测方法是好的 。在这项工作中,论文通过解构现有关键点检测方法的方法论并确定关键组成部分,重新设计了每个组件,提出了全可微、轻量且灵活的简单的基于学习的关键点(SiLK)方法 。尽管它很简单,但SiLK在HPatches的检测可重复性和单应性估计任务上取得了新的SOTA,在ScanNet的3D点云配准任务上也取得了竞争性能,并在2022年图像匹配挑战和ScanNet的相机位姿估计上达到了与最先进方法相媲美的性能。

贡献

论文的主要贡献是:

  1. 经过对许多替代方法的审查,论文提出了Simple Learned Keypoints (SiLK)方法,旨在在传统的"检测和描述"框架下,以最简单的自监督方法学习从任意图像数据中提取出具有区分度和鲁棒性的关键点。尽管SiLK方法非常简单,但在大多数情况下它与或超过了现有技术的表现。
  2. 利用SiLK简单的one-stage训练协议和模块化架构,论文方法能够在不同任务的不同性能维度上进行实验。特别是在追求实时性能的同时,确定了那些仅需极轻量级骨干网络架构即可满足要求的任务。

方法

SiLK训练用于从单个灰度图像中检测关键点,并生成关键点描述符。具体而言,论文使用源图像和经过变换的副本,通过提取描述符并计算它们之间的相似度来定义从源位置到变换位置的转移概率,并通过最大化循环一致性来优化描述符,即最大化从源图像到其变换位置再返回源图像的循环行程的概率 (superpoint既视感。。。)。同时,使用二分类器来识别满足匹配标准的关键点,当一个点及其变换副本在转移概率意义上是相互最近邻时,它们被视为正例,否则为负例。在图2中提供了简单的伪代码。

Architecture

SiLK的架构(图3)受到了SuperPoint最初提出的"detect and describe"架构的启发。首先,将图像输入到编码器骨干网络中提取密集特征图。然后,将共享特征图传递给两个head(关键点头和描述符头):

  • 关键点head提取用于计算密集关键点概率的logits。
  • 描述符head提取密集描述符图,后续用于计算关键点的相似性。

High Matching Probability Defines Keypoints

键点概率估计预测了一个像素正确匹配的概率(即能够完成往返的概率),具有最高匹配概率的点正是选择作为关键点的点。SiLK使用基于单元格的方法来预测关键点的概率,其中每个像素的概率由一个局部sigmoid函数计算。与传统的基于单元格的方法相比,SiLK使用固定的单元格大小为1,从而简化了模型并避免了额外的参数调整。SiLK还不使用非极大值抑制(NMS)来排除重复的关键点,因为经验证明SiLK在关键点的选择上表现良好。

Descriptors Define Matching Probability

论文使用双重softmax建模循环匹配的概率:

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> P i → j P_{i \rightarrow j} </math>Pi→j 是从图像 <math xmlns="http://www.w3.org/1998/Math/MathML"> I I </math>I中的第i个描述符匹配到图像 <math xmlns="http://www.w3.org/1998/Math/MathML"> I ′ I' </math>I′中的第j个描述符的概率, <math xmlns="http://www.w3.org/1998/Math/MathML"> P i ← j P_{i \leftarrow j} </math>Pi←j 表示相反方向的概率。这两个概率都通过对描述符余弦相似性进行softmax处理得到

训练

自监督训练

在训练过程中,需要获得像素级的对应关系。为此,论文将随机变换(单应性变换)应用于图像,以获取密集的方向性对应关系。然后,论文将这些对应关系进行离散化处理,丢弃超出边界或非一对一对应的关系。

正负样本选择

关键点的一个重要属性是独特性,即该点可以可靠地与其他点区分开来 。在本文的方法中,这意味着该点可以在匹配算法中可靠地识别,因此,论文将通过当前训练的描述符进行正确匹配的关键点被标记为正样本,否则标记为负样本

描述符和关键点损失函数

描述符损失 是应用于正向往返路径(从点i到其在变换后的图像中的位置i',再返回i)的匹配概率的负对数似然损失

关键点损失 是应用于logistic sigmoid函数的简单二元交叉熵损失,它被训练用于识别具有成功往返匹配(通过互相最近邻定义)的关键点,并区分其他所有关键点(不成功的)。

实验

HPatches Homography Estimation

SiLK在重复性、单应性准确度和单应性估计方面优于其他方法 (表2)。尤其是在小误差阈值下,SiLK表现出明显的优势。在某些指标上略有不足,但与LoFTR相比,SiLK在单应性估计AUC上表现出强大的性能,而在单应性准确度上具有竞争力。这对于上下文聚合的必要性提出了质疑(在表3中使用了密集特征和上下文聚合)。

IMC 2022 outdoor pose estimation

在IMC 2022挑战赛中,SiLK表现出色,明显优于DISK,并与SuperGlue相比取得了有利的结果。尽管SiLK使用的试验次数较LoFTR少,但经过对任务进行了适当调整后,SiLK仍然展现出了其有效性。

ScanNet: Indoor Pose & Point Clouds

ScanNet是一个包含大量室内场景的数据集,用于评估相机相对姿态估计和点云配准任务。相对姿态估计任务通过匹配图像中的点对来估计相机之间的姿态变换。点云配准任务则使用真实深度信息来对齐点云数据。在评估过程中,论文使用不同的指标如姿态误差、Chamfer距离等来衡量算法的性能。这些任务和指标有助于推动室内场景中的相机定位和三维重建等计算机视觉任务的发展。

Relative pose estimation

如表5所示,SiLK在使用互相最近邻匹配时显著优于D2-Net(+12.7)和SuperPoint(+8.6)。此外,尽管SiLK没有使用上下文聚合等复杂设计,但它仍然优于之前的SOTA稀疏方法SuperGlue。SiLK的性能与在MegaDepth数据集上训练的LoFTR相似。在只使用ScanNet数据集进行评估时,SiLK仅次于在ScanNet上训练的LoFTR。

Pairwise 3D point-cloud registration

如表6所示,SiLK在所有指标上都取得了新的SOTA结果,特别是在较小的阈值下表现出很高的精度。与使用真实相机姿态进行训练的方法相比,SiLK仍然表现出色,证明了不需要真实的3D监督即可训练出优秀的关键点特征。此外,SiLK也在与先前的SOTA方法URR的性能比较中取得了显著优势。需要注意的是,SuperPoint在这种密集评估方式下表现出了竞争力,与在稀疏特征评估中的结果有所不同。

什么是好的关键点检测算法?

通过SiLK的灵活性,论文进行了大量的实验,研究了模型架构和图像分辨率等设计选择对性能的影响。令人惊讶的是,减小模型规模、计算成本和训练输入尺寸对于Homography估计、相机姿态估计和点云配准的性能影响较小。这对于许多重要的应用程序,如设备上的推理,非常有益。

对backbone不可知

现有方法使用不同的backbone网络(如表1所示),但其对关键点模型的影响尚不清楚。论文发现,尽管一些网络具有更大的参数量,但在关键点问题上并没有明显的性能提升(表7) 。另外,论文通过简化模型结构,如减少卷积块和通道数,可以获得轻量级模型,而性能下降并不明显。这表明对于关键点提取问题,并不需要过于复杂的网络架构 。然而,在关键点匹配任务中,性能下降较为显著,可能是因为深层模型具有更大的感受野,而在单应性估计任务中,模型性能仍然较为竞争。这提示我们,对于不同的任务,选择适合的模型结构是至关重要的。

对小图像的快速训练

SiLK使用默认的146x146描述子特征图分辨率进行训练。令人惊讶的是,在训练过程中改变分辨率对性能的影响很小。较小的特征图尺寸(82x82)在HPatches和ScanNet上仍然具有竞争力,并且训练时间较短。这使得SiLK适用于一些应用,如测试时间微调、设备上的微调和快速实验迭代。

对训练数据的稳健性

不同的方法使用不同的训练集,论文观察到在不同数据集上存在泛化性能较差的情况。SiLK对于训练集的变化具有相当好的鲁棒性,但在ScanNet数据集上性能下降较大。SiLK的性能下降与LoFTR的下降方向一致,但幅度要小得多。SiLK使用COCO数据集进行比较,而LoFTR需要不同的训练数据才能取得较好的性能。

总结

本论文介绍了SiLK,一个简单而灵活的关键点检测和描述符框架。SiLK基于独特性和不变性的原则设计, 在3D视觉感知的关键低级任务上实现或超越了SOTA水平。SiLK的简单性对于在低级应用中进行良好的关键点检测是否需要复杂的机制提出了质疑。此外,广泛的消融实验显示了SiLK对于backbone、训练数据和训练输入尺寸的稳健性。这些发现带来了一个轻量、准确、训练快速的SiLK的小版本。论文认为这种"tiny and learned"的模式在运行时间和/或功耗关键的应用中非常有前景。研究者希望SiLK能够引起领域的关注并促进更强大的解决方案的发展。

相关推荐
执着的小火车8 分钟前
02-18.python入门基础一基础算法
数据结构·python·算法·排序算法
梦茹^_^9 分钟前
排序算法(系列)
数据结构·python·算法·排序算法·希尔排序·基数排序·计数排序和桶排序
花开盛夏^.^14 分钟前
Timsort算法
数据结构·算法·排序算法
code monkey.16 分钟前
【排序算法】—— 计数排序
c++·算法·排序算法
云青山水林18 分钟前
2024.12.21 周六
c++·算法·贪心算法
chenziang123 分钟前
leetcode hot二叉树的层序遍历
数据结构·算法
pianmian135 分钟前
完全平方数
数据结构·算法
A_Tai233333337 分钟前
贪心算法解决用最少数量的箭引爆气球问题
算法·贪心算法
唐叔在学习1 小时前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法
_nirvana_w_1 小时前
C语言实现常用排序算法
c语言·算法·排序算法