DFM-无监督图像匹配

news2024/11/29 2:54:24

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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

starknet之 class_hash

文章目录 问题背景什么是Class Hash问题背景 部署合约报错:ReferenceError: Buffer is not defined 什么是Class Hash 官方: https://book.starknet.io/ch04-03-01-deploy-standard-account.html?highlight=class%20hash#finding-the-class-hash 要部署智能合约,您需要在…

【原创 附源码】Flutter集成Apple支付详细流程(附源码)

最近有时间,特意整理了一下之前使用过的Flutter平台的海外支付,附源码及demo可供参考 这篇文章只记录Apple支付的详细流程,其他相关Flutter文章链接如下: 【原创 附源码】Flutter集成谷歌支付详细流程(附源码) 【原创 附源码】F…

PR:熟悉PR工作环境

新建项目 设置自己的页面布局 首选项

【JavaEE】_JavaScript基础语法

目录 1. JavaScript概述 1.1 JavaScript简介 1.2 HTML、CSS、JavaScript的关系 1.3 JavaScrip的组成 2. JavaScript的书写形式 2.1 内嵌式 2.2 行内式 2.3 外部式 3. 输出 3.1 alert 3.2 console.log 4. 变量的使用 4.1 创建变量 4.1.1 使用var 4.1.2 使用let …

java中事务的使用

文章目录 前言一、同一张表1.业务代码2.测试代码3.测试结果 二、不同表1.业务代码2.测试代码3.测试结果 总结 前言 本文将介绍在springboot中使用Transactional注解来完成对数据库事务的操作,保证数据一致性。 一、同一张表 1.业务代码 Controller Controller p…

停止内耗,做有用的事

很多读者朋友跟我交流的时候,都以为我有存稿,于是听到我说每周四现写的时候都很惊讶。其实没什么好惊讶的,每周四我都会把自己关在书房里一整天,断掉一切电话、微信、邮件,从中午写到晚上,直到写完为止。 这…

算法学习——LeetCode力扣回溯篇1

算法学习——LeetCode力扣回溯篇1 77. 组合 77. 组合 - 力扣(LeetCode) 描述 任何顺序 返回答案。 示例 示例 1: 输入:n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2: 输…

springboot743二手交易平台

springboot743二手交易平台 获取源码——》公主号:计算机专业毕设大全

《Java 简易速速上手小册》第8章:Java 性能优化(2024 最新版)

文章目录 8.1 性能评估工具 - 你的性能探测仪8.1.1 基础知识8.1.2 重点案例:使用 VisualVM 监控应用性能8.1.3 拓展案例 1:使用 JProfiler 分析内存泄漏8.1.4 拓展案例 2:使用 Gatling 进行 Web 应用压力测试 8.2 JVM 调优 - 魔法引擎的调校8…

第四篇【传奇开心果微博系列】Python微项目技术点案例示例:美女颜值判官

传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目目标二、雏形示例代码三、扩展思路四、添加不同类型的美女示例代码五、增加难度等级示例代码六、添加特殊道具示例代码七、设计关卡系统示例代码八、添加音效和背景音乐示例代码九、多人游戏…

【解决】idea控制台不输出trace/debug日志

idea控制台不输出trace日志 问题原因解决 问题 idea控制台不输出trace日志。 pom文件&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency>输出lo…

23种计模式之Python/Go实现

目录 设计模式what?why?设计模式&#xff1a;设计模式也衍生出了很多的新的种类&#xff0c;不局限于这23种创建类设计模式&#xff08;5种&#xff09;结构类设计模式&#xff08;7种&#xff09;行为类设计模式&#xff08;11种&#xff09; 六大设计原则开闭原则里氏替换原…

P3612 [USACO17JAN] Secret Cow Code S题解

题目 奶牛正在试验秘密代码&#xff0c;并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用。 给定一个字符串&#xff0c;让后面的字符旋转一次&#xff08;每一次正确的旋转&#xff0c;最后一个字符都会成为新的第一个字符&#xff09;。也就是说&#xff0…

localStorage、sessionStorage、cookie区别

localStorage: localStorage 的生命周期是永久的&#xff0c;关闭页面或浏览器之后 localStorage 中的数据也不会消失。localStorage 除非主动删除数据&#xff0c;否则数据永远不会消失 sessionStorage: sessionStorage 的生命周期是仅在当前会话下有效。sessionStorage 引入…

【STM32 CubeMX】STM32中断体系结构

文章目录 前言一、中断体系的比喻二、中断的内部结构2.1 EXTI触发方式 2.2 NVIC2.3 cpu与中断2.4 外部中断控制器框图上升沿触发选择寄存器屏蔽/使能寄存器等待处理寄存器 2.5 中断优先级 总结 前言 一、中断体系的比喻 STM32中断体系如下图所示&#xff1a; 一座大型建筑物…

(二)【Jmeter】专栏实战项目靶场drupal部署

该专栏后续实战示例&#xff0c;都以该篇部署的项目展开操作。 前置条件 参考“&#xff08;一&#xff09;【Jmeter】JDK及Jmeter的安装部署及简单配置” 安装部署Jmeter&#xff0c;从文章最后下载“Postman、Rancher.ova、VirtualBox-7.0.12-159484-Win.exe、Xshell-7.0.01…

VUE学习——表单的输入绑定

使用【v-model】。 输入框 <template><h1>表单输入绑定</h1><input type"text" v-model"message"><p>输入的值&#xff1a;{{ message }}</p> </template> <script>export default{data(){return{messa…

java 数据结构ArrayList类

目录 什么是List 线性表 顺序表 ArrayList类 ArrayList无参方法 ArrayList有参方法 &#xff1f;通配符 ArrayList 的remove方法 ArrayList 的subList方法 Iterator&#xff1a;迭代器 使用ArrayList完成杨辉三角 什么是List 在集合框架中&#xff0c;List是一个接…

FileZilla Server 1.8.1内网搭建

配置环境服务器服务器下载服务器配置服务器配置 Server - ConfigureServer Listeners - Port 协议设置 Protocols settingsFTP and FTP over TLS(FTPS) Rights management(权利管理)Users(用户) 客户端建立连接 配置环境 服务器处于局域网内: 客户端 < -访问- > 公网 &l…

猫头虎分享已解决Bug || Invariant Violation in React: Element Type is Invalid ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …