作者:派派星 | 来源: CVHub

Title: SiLK: Simple Learned Keypoints
Paper: https://arxiv.org/pdf/2304.06194.pdf
Code: https://github.com/facebookresearch/silk
导读
关键点检测和描述符是计算机视觉任务(如图像匹配、3D重建和视觉里程计)的基础技术。几十年来,像Harris角点、SIFT和HOG描述符这样的手工设计方法一直被使用。
近年来,引入深度学习以改进关键点检测成为一种趋势。然而,仔细观察发现,基于学习的方法的结果往往难以解释;最近的基于学习的方法使用了各种各样的实验设置和设计选择:经验结果常常使用不同的模型、协议、数据集、监督类型或任务进行报告。由于这些差异通常是相互关联的,这引发了一个自然的问题,即什么样的基于学习的关键点检测方法是好的。
在这项工作中,论文通过解构现有关键点检测方法的方法论并确定关键组成部分,重新设计了每个组件,提出了全可微、轻量且灵活的简单的基于学习的关键点(SiLK)方法。尽管它很简单,但SiLK在HPatches的检测可重复性和单应性估计任务上取得了新的SOTA,在ScanNet的3D点云配准任务上也取得了竞争性能,并在2022年图像匹配挑战和ScanNet的相机位姿估计上达到了与最先进方法相媲美的性能。
贡献
论文的主要贡献是:
经过对许多替代方法的审查,论文提出了Simple Learned Keypoints (SiLK)方法,旨在在传统的“检测和描述”框架下,以最简单的自监督方法学习从任意图像数据中提取出具有区分度和鲁棒性的关键点。尽管SiLK方法非常简单,但在大多数情况下它与或超过了现有技术的表现。
利用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建模循环匹配的概率:

其中, 是从图像中的第i个描述符匹配到图像中的第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能够引起领域的关注并促进更强大的解决方案的发展。
—END—高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

第二步 加入知识星球,问题及时得到解答
3.1 「3D视觉从入门到精通」技术星球
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
学习3D视觉核心技术,扫描查看,3天内无条件退款
3.2 3D视觉岗求职星球
本星球:3D视觉岗求职星球 依托于公众号「3D视觉工坊」和「计算机视觉工坊」、「3DCV」,旨在发布3D视觉项目、3D视觉产品、3D视觉算法招聘信息,具体内容主要包括:
收集汇总并发布3D视觉领域优秀企业的最新招聘信息。
发布项目需求,包括2D、3D视觉、深度学习、VSLAM,自动驾驶、三维重建、结构光、机械臂位姿估计与抓取、光场重建、无人机、AR/VR等。
分享3D视觉算法岗的秋招、春招准备攻略,心得体会,内推机会、实习机会等,涉及计算机视觉、SLAM、深度学习、自动驾驶、大数据等方向。
星球内含有多家企业HR及猎头提供就业机会。群主和嘉宾既有21届/22届/23届参与招聘拿到算法offer(含有海康威视、阿里、美团、华为等大厂offer)。
发布3D视觉行业新科技产品,触及行业新动向。

第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
科研论文写作:
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
视觉三维重建:
[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)
无人机:
[1] 零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]