DFM-无监督图像匹配

DFM:A Performance Baseline for Deep Feature Matching(深度特征匹配的性能基准)

2021.06.14

摘要

        提出了一种新的图像匹配方法,利用现成的深度神经网络提取的学习特征来获得良好的图像匹配效果。该方法使用预训练的VGG结构作为特征提取器,不需要任何额外的训练来提高匹配。灵感来自心理学领域成熟的概念,如心理旋转,初始扭曲是作为初步几何变换估计的结果而执行的(an initial warping is performed as a result of a preliminary geometric transformation estimate),这些估计仅仅是基于待匹配图像的VGG网络输出终端层最近邻的密集匹配,在初始对齐之后,以分层方式在参考图像和对齐图像之间再次重复相同的方法,以达到良好的定位和匹配性能。我们的算法在 Hpatches 数据集 [4] 上分别针对 1 像素和 2 像素阈值的平均匹配精度 (MMA) 获得了 0.57 和 0.80 的总体得分,这表明比最先进的技术有更好的性能。

        我们提出了一种不需要任何训练就能在图像之间找到高质量对应关系的方法,我们首先利用深层特征在语义的层面上找到图像之间的匹配;然后,我们获得图像之间的几何变换的粗略估计,以应用初始扭曲转变换,就像是心理上对图像的旋转;在对其中一幅图像进行变换后,我们执行分层匹配,这也是一种众所周知的技术,从特征映射的最深层到最浅层。通过这种从粗到精的策略,我们基本上利用了所有层的属性,例如深层的强大语义属性和浅层的精确定位。

文章的三个主要贡献点:

        1)我们证明了对预训练网络(如冻结的VGG)的终端层的深层特征进行简单的密集近邻搜索仍然可以获得足够的匹配,以获得几何变换和光照不变性匹配;

        2)我们还证明,在初步步骤中通过几何变换和扭曲进行粗略对齐后,以分层方式模仿前一阶段的后续块的图像匹配性能可以从终端层中细化密集匹配的位置,从而获得最先进的性能;

        3)该方法使用现成的深度特征提取器,无需训练,仅采用标准技术,为基于学习的图像匹配方法提供了性能基准。

1、方法实现

        我们提出了一个两阶段的架构来执行两个图像之间的匹配,我们的关键思想是用预训练的网络提取特征,用粗糙的几何变换估计对齐图像,然后应用粗到细的策略来更好地定位。

        在阶段0中,我们在低空间分辨率下执行密集最近邻搜索(DNNS)得到给定图像之间几何变换的粗略估计,使用这个估计,我们扭曲第二张图像,形成我们接下来使用的图像;在Stage-1中,我们首先在最后一层使用参考图像和扭曲图像的特征映射执行DNNS,从这些粗匹配开始,我们通过在每一步移动到更精细的分辨率来分层地细化匹配。

2、密集近邻搜索

        密集近邻搜索(Dense Nearest Neighbor Search (DNNS)),对于两幅图像提取特征块Fa、Fb,DNNS搜索Fa、Fb中每个点的最佳匹配,使用 l2 距离描述,如果两个特征块对对应点pa、pb的距离比例大于给定阈值,则认为两点匹配。

        我们首先使用DNNS在特征提取器的终端层初始化匹配,请注意,这一层的下采样大小使它们适合于DNSS。对于VGG特征提取器,第5层卷积特征映射的大小为W/16 × H/16,其中W和H为图像的原始宽度和高度,这使得DNNS是可行的,我们还使用DNNS在更精细的空间分辨率下细化匹配。

3、分层细化

        分层细化(Hierarchical Refinement Alternative, HRA),深层DNNS的输出对几何变换和光照变化具有较强的鲁棒性,但其局部特征较差,直接将它们上采样到原始分辨率将产生较差的匹配性能。

        DNNS可以被用在任何一层,HRA在一个局部区域(论文中为2x2)使用DNNS,逐步优化。具体实施:

        HRA通过选择正确的匹配和拒绝异常值来改变每个细化步骤中特征点的数量,换句话说,期望正确和健壮的匹配能够存活下来,甚至可以通过分层细化进行填充,而期望拒绝异常值,如图3所示。

        如图所示,在Layer-5中存在一些定位不佳的匹配。在Layer-4层,匹配次数有所增加,但其定位仍然较差。向前移动到Layer-3层,匹配点的定位要好得多,但仍然存在一些错误的匹配。(注意从上到下的第二个和第三个匹配)注意,这些异常值在Layer-2中也被拒绝。最后,我们做出了更好的本地化和Layer-1层匹配更精确。

4、两阶段法

        给定图像对,可以通过使用预训练的特征提取器提取特征,在终端层执行DNNS初始化匹配对,并使用HRA将其细化到原始分辨率。--步骤1

        然而,我们意识到,在严重的几何变换情况下,这种一步解决方案在分层精化过程中会失败。这一结果是由于较浅层的特征对几何变换的鲁棒性不如较深层;我们还观察到,即使该方法能够在较深的层上生成正确的匹配,这些匹配在向较浅的层移动时也会被消除。为了克服这一问题,我们首先利用深层的匹配点集预测一个单应矩阵Hba,并利用Hba对图像B进行变换,得到变换后图像Bw。接下来,我们使用参考图像A和Bw应用上述方法(步骤1方法)。使用这种方法,我们首先有效地对齐两幅图像,然后寻找可能的匹配。

5、实验与评估

        测试数据集:HPatches,包含116个序列,每个序列含6个来自不同视角的相似场景。

5.1、特征匹配

        各种方法的结果如图4所示,并给出了匹配的特征数量,其中 r 为超参数。

5.2、H矩阵估计

        我们还发布了10次重复测试中每对最佳结果(boe)和每对最差结果(woe)的最大和最小可能结果。参数及测试方法对结果影响较大。

        为每个图像对选择最佳结果(boe)和最差结果(woe)会导致显著偏差。R为使用比率测试阈值。

参考文章:

1、代码仓库

GitHub - ufukefe/DFM: Python (Pytorch) and Matlab (MatConvNet) implementations of CVPR 2021 Image Matching Workshop paper DFM: A Performance Baseline for Deep Feature Matching

2、CVPRW21 - 深度特征匹配 DFM

【图像配准】CVPRW21 - 深度特征匹配 DFM_深度学习图像配准-CSDN博客

3、基于强化学习的图像配准 - Image Registration: Reinforcement Learning Approaches

https://www.cnblogs.com/algor-luoziwei/articles/16212472.html

4、基于深度学习的配准框架

基于深度学习的配准框架_深度学习 融合配准-CSDN博客

5、SuperPoint 与 SuperGlue。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/387381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一周学会Django5 Python Web开发-项目配置settings.py文件-基本配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…

AJAXJSON入门篇

AJAX&JSON 概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML AJAX作用: 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据 使用了AJAX和服务器进行通信,就可以使用H…

Shell 学习笔记(三)-shell变量

Shell 语言是一种动态类型和弱类型语言, 因此,在Shell中无需显示地声明变量, 且变量的类型会根据不同的操作符而发生变化. 静态类型语言: 在程序编译期间就确定变量类型的语言, 如java, C等 动态类型语言: 在程序运行期间才确定变量类型的语言, 如PHP, Python等. 一 shell变量…

MATLAB知识点:randperm函数(★★★★★)将一个数字序列进行随机打乱

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第…

Mermaid绘制UML图教程

Mermaid 是一种轻量级的图形描述语言,用于绘制流程图、时序图、甘特图等各种图表。它采用简单的文本语法,使得用户能够快速绘制各种复杂图表,而无需深入学习图形绘制工具。 一、安装Mermaid Mermaid 可以在浏览器中直接使用,也可…

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下,三元操作替换if条件语句可以精简代码,并且更为直观,但是在下面的情况中使用三元操作将会返回警告。 借图: 案例 比如原代码: class classA{publ…

EsayExcel文件导入导出

目录 准备工作 监听器类 导入测试 导出测试 上传Excel 下载Excel 混合导出模板导出 headRowNumber(1)&#xff1a;从第几行开始读 准备工作 导入依赖 <!--easyexcel--> <dependency><groupId>com.alibaba</groupId>x<artifactId>easye…

JVM(4)原理篇

1 栈上的数据存储 在Java中有8大基本数据类型&#xff1a; 这里的内存占用&#xff0c;指的是堆上或者数组中内存分配的空间大小&#xff0c;栈上的实现更加复杂。 以基础篇的这段代码为例&#xff1a; Java中的8大数据类型在虚拟机中的实现&#xff1a; boolean、byte、char…

蓝桥杯电子类单片机提升一——超声波测距

前言 单片机资源数据包_2023 一、超声波测距原理 二、超声波测距的应用 1.超声波的发射 2.单片机知识补充&#xff1a;定时器 3.超声波的接收与计时 4.距离的计算 1&#xff09;定时器1为16位自动重载&#xff0b;1T11.0592MHz 2&#xff09;定时器1为16位自动重载&am…

拓扑排序入门

文章目录 写在前面一些概念算法步骤字典序最大/最小的拓扑序列&#xff1f;模板例题3704. 排队家谱树奖金P1983 [NOIP2013 普及组] 车站分级1639. 拓扑顺序 写在前面 昨晚cf div3的F就是一道基本上可以说板子的拓扑排序的题目&#xff0c;没有做出来感觉图论很早之前就看了&am…

ubuntu22.04@laptop OpenCV Get Started: 008_image_filtering_using_convolution

ubuntu22.04laptop OpenCV Get Started: 008_image_filtering_using_convolution 1. 源由2. convolution应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 identity矩阵3.2 all ones 5x5矩阵3.3 blur 5x5矩阵3.4 GaussianBlur 5x5矩阵3.5 medianBlur 5x5矩阵3.6 Sharpe…

如何在极低成本硬件上落地人工智能算法 —— 分布式AI

一、背景 分布式AI的发展前景非常广阔&#xff0c;随着5G、6G等高速网络通信技术的普及和边缘计算能力的提升&#xff0c;以及AI算法和硬件的不断优化进步&#xff0c;分布式AI将在多个领域展现出强大的应用潜力和市场价值&#xff1a; 1. **物联网&#xff08;IoT&#xff0…

JVM(1)基础篇

1 初始JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步骤&#xff1a; 编写Java源代码文件。 使用…

Swift Combine 使用 flatMap 和 catch错误处理 从入门到精通十三

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

什么是 Flet?

什么是 Flet&#xff1f; Flet 是一个框架&#xff0c;允许使用您喜欢的语言构建交互式多用户 Web、桌面和移动应用程序&#xff0c;而无需前端开发经验。 您可以使用基于 Google 的 Flutter 的 Flet 控件为程序构建 UI。Flet 不只是“包装”Flutter 小部件&#xff0c;而是…

为什么说技术进步很慢? —— 技术的先进性与其当下价值的不匹配

一、背景 技术进步是否缓慢是一个相对的概念&#xff0c;需要在不同的领域和时间段内进行分析。以下是一些不同领域中可能造成技术进步看似缓慢的原因&#xff1a; 1. **基础研究瓶颈**&#xff1a;许多先进技术的发展依赖于基础科学的突破&#xff0c;而这些突破往往需要长时…

MySQL-----函数篇

目录 ▶ 字符串函数 ▶ 数值函数 ▶ 日期函数 ▶ 流程函数 ▶ 简介 函数是指一段可以直接被另一段程序调用的程序或代码。 ▶ 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码&#xff1a; S…

vuex中Actions详解,代码示例

Vuex 中的 Actions 是用于触发mutations 的一种方式&#xff0c;它可以包含异步操作&#xff0c;并通过提交(commit)mutations 来改变 store 的状态。以下是 Actions 的详细介绍、使用步骤和示例代码&#xff1a; Actions 的介绍&#xff1a; Actions 是 Vuex 中的一个重要概…

第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言

传奇开心果短博文系列 系列短博文目录Python的pyttsx3库技术点案例示例系列 短博文目录前言一、pyttsx3主要特点和功能介绍二、pyttsx3文字转语音操作步骤介绍三、多平台支持介绍和示例代码四、多语言支持介绍和示例代码五、自定义语言引擎介绍和示例代码六、调整语速和音量介绍…

JavaWeb学习|i18n

学习材料声明 所有知识点都来自互联网&#xff0c;进行总结和梳理&#xff0c;侵权必删。 引用来源&#xff1a;尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 i18n 国际化&#xff08;Internationalization&#xff09;指的是同一个网站可以支持多种不同的语言&…