论文解析三: D2-Net 用于联合描述和检测局部特征的可训练CNN

目录

    • 1.D2-Net摘要
    • 2.D2-Net关键点介绍
    • 3. Joint Detection and Description (联合检测和描述)
      • 3.1 Feature Extraction
      • 3.2 Feature Detection
        • 3.2.1 Hard feature detection (硬特征检测)
        • 3.2.1 Soft Feature Detection(软特征检测)
      • 3.3 Multiscale Detection (多尺度检测)
    • 4.损失函数

1.D2-Net摘要

解决在困难的成像条件下寻找可靠的像素级对应的问题

提出一种由单一卷积神经网络发挥双重作用的方法:它同时是一个密集的特征描述符和一个特征检测器。通过将检测推迟到后期阶段,所获得的关键点比基于低层结构早期检测的传统关键点更稳定。

我们证明了该模型可以使用从现成的大规模SfM重建中提取的像素对应来训练,而不需要任何进一步的注释。该方法在困难的亚琛昼夜定位数据集和InLoc室内定位基准上都获得了最先进的性能,以及在其他图像匹配和三维重建基准上具有竞争力的性能。

特点:特征点定位精度较差、速度慢,但对光照变化、模糊变化等鲁棒性较高

2.D2-Net关键点介绍

​ 在图像之间建立像素级对应关系是计算机视觉中的基本问题之一,现在主要的方法包括稀疏匹配和密集匹配

​ 稀疏匹配一般采用检测然后描述的方法(如下图a),这种方法效率高、速度快,但由于图片中低纹理区域或是重复场景的出现,这种方法可能无法提取到特征点或提取到错误的特征点,其本质原因在于detector只使用了浅层图像信息

​ 密集匹配直接使用深层特征来获得密集特征描述,不使用detector,从而有更高的鲁棒性,但计算效率大大降低

​ 文章提出了一种足够鲁棒的**sparse local feature(稀疏局部特征)**方法(如下图b),将detector放在深层特征后与decriptor高度耦合而一起实现,从而既有sparse(稀疏)方法的高效性,又有dense(密集)方法的鲁棒性
在这里插入图片描述

3. Joint Detection and Description (联合检测和描述)

​ 我们目标是获得一组稀疏的,鲁棒的特征,这些特征在具体挑战性的条件下是稳健的,并且能够有效匹配和存储。为此,提出一种

一种稀疏局部特征检测和描述Joint Detection and Description:我推迟检测阶段,而不是基于低级信息尽早进行特征检测。

​ 首先通过深度卷积神经网络(CNN)计算一组特征图,然后使用这些特征图来计算描述符**(作为穿过特定像素位置处的所有图的切片)并检测关键点(作为特征图的局部最大值)。**结果,特征检测器与特征描述符紧密耦合。

​ 因此,检测对应于具有局部不同描述符的像素,这些描述符应该非常适合匹配。同时,使用CNN深层的特征图使我们能够将特征检测和描述建立在更高层次的信息之上。实验表明,与密集方法相比,我们的方法所需的内存要少得多。

​ 同时,它在具有挑战性的条件下表现相当好甚至更好,如昼夜照明变化和弱纹理场景。与传统的使用两阶段的检测方法不同,文章的方法使用密集的特征提取与描述,但最终获得稀疏的特征点和对应的描述符。这里称它为D2-Net,如下图所示:

这个图中CNN网络F用于提取双重作用的特征图,就是一个密集的特征描述符和一个特征检测器
在这里插入图片描述
D2-Net的第一步是使用CNN网络 F 提取高层次特征,得到
在这里插入图片描述

3.1 Feature Extraction

​ 在(i,j)处,的channel(通道)方向上的向量作为该点的描述符:
在这里插入图片描述
​ 此外,在应用描述符进行匹配之前,应对其进行L2范式归一化
在这里插入图片描述

3.2 Feature Detection

​ 对三维张量F 的另一种解释是作为二维响应D的集合
在这里插入图片描述
​ 其中,k = 1 , … … n 。在这种解释中,特征提取函数F可以看作是n个不同的特征检测器函数Dk,每个函数产生一个二维响应映射Dk这些检测响应图类似于在尺度不变特征变换(SIFT)中获得的高斯差分(DoG)响应图或在Harris的角检测器中获得的角度得分图。在我们的工作中,这些原始分数经过后处理,只选择一个位置子集作为输出关键点。

高斯差分(DoG)是一种用于检测图像中的边缘和关键点。这种方法首先对图像进行高斯模糊处理,然后在不同尺度下计算高斯模糊后的图像之间的差异,以便找到图像中的局部极值点

Harris 角点检测器通过计算图像中每个像素邻域窗口内的灰度值梯度来判断是否为角点,主要基于以下两个假设:

​ 1.在平滑区域中,灰度值不会发生明显的变化。

​ 2.在角点附近,沿着所有方向都会有较大的灰度变化。

Harris 角点检测器通过计算像素点周围窗口内灰度值的梯度和结构矩阵,并根据这些矩阵的特征值来判断该像素点是否为角点。如果特征值较大且相似,则可以判定该像素点为角点。Harris 角点检测器的输出结果主要是一个角点响应图,用于标识图像中潜在的角点位置

下面将描述Feature Detection这个过程。

3.2.1 Hard feature detection (硬特征检测)

​ 在传统的特征检测器如DoG中,检测图将通过执行空间非局部最大抑制来稀疏化。然而,在我们的方法中,与传统的特征探测器相反,存在多个检测映射Dk (k = 1 , … … , n ),并且可以对其中的任何一个检测映射进行检测。因此,对于要检测到的一个点( i 、 j ) (i、j)我们要求:
在这里插入图片描述
​ 直观地说,对于像素(i,j),先选择在通道方向(也就是垂直方向或不同纬度方向)上选择响应最大的探测器(特征图)Dk,然后再验证在该特定检测器(特征图)上该位置是否为局部最大值。这样检测到稠密、鲁棒性较强的特征点

3.2.1 Soft Feature Detection(软特征检测)

​ 上述的hard方案在反向传播时会遇到困难(如判断是否是局部最大值)

​ 1.非光滑性:Hard 特征检测通常意味着对图像进行非线性操作,这可能导致梯度不连续或者不可导的情况,使得反向传播过程中梯度难以计算。

​ 2.非局部性:Hard 特征检测可能会引入非局部性的信息,使得反向传播过程中难以判断是否是局部最大值或者如何传播梯度。

​ 而Soft Feature Detection 是一种相对于 Hard Feature Detection 更加平滑和连续的特征检测方法。在 Soft Feature Detection 中,特征点的检测不再是严格的局部极值判断,而是通过一种更加平滑、连续的方式来确定图像中的特征点。

首先定义soft local-max score
在这里插入图片描述
N(i,j) 是(i,j) 的8邻域并包括它本身

其次定义了ratio-to-max
在这里插入图片描述
得到得分图:
在这里插入图片描述
也即只有 (i,j) 位置的各个响应图 Dk 中存在响应尽可能比其他检测器大并且尽可能是局部最大值的点,的得分将越高

最终得到响应图:
在这里插入图片描述

3.3 Multiscale Detection (多尺度检测)

​ 虽然CNN描述符由于数据增强的预训练而具有一定的尺度不变性,但它们对尺度变化本身并不是不变性,在观点有显著差异的情况下,匹配往往失败。为了获得对尺度变化更稳健的特征,我们建议使用图像金字塔,就像通常在手工制作的局部特征探测器或甚至对某些对象探测器中所做的那样。这只在测试期间执行。

​ 给定输入图像 I,构造一个包含三种不同分辨率ρ = 0.5 、 1 、2(对应于半分辨率、输入分辨率和双分辨率)的图像金字塔I ρ ,并用于提取每个分辨率下的特征图F ρ 。然后,将较大的图像结构从低分辨率特征图传播到高分辨率特征图,传播方式如下:
在这里插入图片描述
这里使用双线性插值进行分辨率的恢复

此外,为了防止重复检测特征:从最粗的尺度开始,标记检测到的位置(包括邻域),并在较细尺度忽略这些区域

4.损失函数

​ 为了训练所提出的模型,它使用一个单一的CNN F 来进行检测和描述,我们需要一个适当的损失L来共同优化检测和描述目标。在检测的情况下,我们希望关键点在视点或照明的变化下是可重复的。在描述的情况下,我们希望描述符是独特的,以便它们不会不匹配。为此,我们提出了一个扩展的三重边际排名损失,它已成功地用于描述符学习,以解释检测阶段。我们将首先回顾三重边际排名损失,然后提出我们的联合检测和描述的扩展版本。
在这里插入图片描述

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

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

相关文章

BUU刷题-Pwn-jarvisoj_typo(ARM符号表恢复技术,Rizzo,FLIRT)

解题所涉知识点: 泄露或修改内存数据: 堆地址:栈地址:libc地址:BSS段地址: 劫持程序执行流程:ARM_ROP 获得shell或flag:调用程序中的system 题目类型: ARM_Pwn arm32 …

Spring Boot 学习之路 -- Thymeleaf 模板引擎

前言 最近因为业务需要,被拉去研究后端的项目,代码框架基于 Spring Boot,后端对我来说完全小白,需要重新学习研究…出于个人习惯,会以 Blog 文章的方式做一些记录,文章内容基本来源于「 Spring Boot 从入门…

Docsify基础配置

一、激活加载动画 轻松修改index.html文件&#xff1a;<div id"app">内容加载中&#xff0c;请稍候...</div>二、设定文档标题与Github链接 <script>window.$docsify {name: 王涵的博客文档,repo: http://baidu.com,} </script>效果展示&…

需求7———通过一个简单的小需求来理清修改后端的思路

我今天下午刚刚完成了睿哥早上说的几个小问题&#xff0c;现在距离下班时间还有两个小时&#xff0c;已经没啥可干的了&#xff0c;然后我发现我之前做的很多需求还没有写文章来总结&#xff0c;所以现在趁着有空&#xff0c;我先写一下总结。这么多需求中&#xff0c;我挑了一…

【leetcode】238.除自身以外数组的乘积

由于该题不能使用除法&#xff0c;所以参考题解写一个左右乘积列表的方法 创建两个新的数组pef,suf 一个用于记录从左到右的乘积&#xff08;类似于动态规划的思想&#xff09;pef 另一个记录从右到左的乘积 bsuf&#xff08;注意suf是从右到左进行累乘&#xff09; 而pef的最左…

【3dgs】3DGS**(3D Geometry Sensing)与 **NeRF**(Neural Radiance Fields)对比

以下是 3DGS&#xff08;3D Geometry Sensing&#xff09;与 NeRF&#xff08;Neural Radiance Fields&#xff09;对比表格&#xff1a; 更加详细的资料&#xff0c;轻参考&#xff1a; NERF/3DGS 对比维度3DGS (3D Geometry Sensing)NeRF (Neural Radiance Fields)基本原理…

Linux之shell详解(Linux Shell Detailed Explanation)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

使用 Helsinki-NLP 中英文翻译本地部署 - python 实现

通过 Helsinki-NLP 本地部署中英文翻译功能。该开源模型性价比相对高&#xff0c;资源占用少&#xff0c;对于翻译要求不高的应用场景可以使用&#xff0c;比如单词&#xff0c;简单句式的中英文翻译。 该示例使用的模型下载地址&#xff1a;【免费】Helsinki-NLP中英文翻译本…

浙江大学机试试题合集(2)

🍰🍰🍰hello宝子们,今天我们继续来练习浙江大学的机试题目。加油!fighting!( •̀ ω •́ )✧ 21🍩1696 Ambulance Dispatch 给定一张城市地图,上面有所有的救护车调度中心(救护车派遣中心) 并标记所有拾取点。你应该写一个程序来处理紧急呼叫。假设来电者正在某个…

得物App荣获“科技创新服务示范案例”,推动品质消费新升级

备受瞩目的2024年中国国际服务贸易交易会在北京盛大开幕&#xff0c;这一由商务部和北京市政府联合举办、并获得世贸组织、联合国等国际组织支持的国家级、国际性、综合型服务贸易盛会&#xff0c;再次吸引了全球的目光。作为上海科技企业的优秀代表&#xff0c;得物App亮相此次…

为什么Linux系统下的程序无法在Windows下运行

两个系统的格式不同&#xff0c;格式就是协议&#xff0c;是在固定位置有意义的数据。Linux下可执行文件格式是elf&#xff0c;可使用readelf查看elf文件头 而Windows下的可执行程序是PE格式&#xff0c;是一种可执行文件。 还有一点是Linux下和Win下系统API不同&#xff0c;这…

Stable Diffusion最新版nowebui的api使用详解

最近在使用stable diffusion最新版的Stable Diffusion WebUI Forge进行api调用,下面来一步一步的进行展开吧!!! 1、下载lllyasviel/stable-diffusion-webui-forge GitHub - lllyasviel/stable-diffusion-webui-forgeContribute to lllyasviel/stable-diffusion-webui-for…

Vxe UI vue vxe-table 实现表格单元格选中功能

Vxe UI vue vxe-table 实现表格单元格选中功能 在表格中实现鼠标点击任意单元格&#xff0c;选取的功能&#xff0c;通过 mouse-config 配置就可以开启单选功能&#xff0c;多选单元格选取功能需安装插件支持。 代码 参数说明 mouse-config 鼠标配置项&#xff1a; selected&…

基于连续小波变换(CWT)批量生成一维信号的时频图 最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处理。附详细的说明文档。

Matlab基于连续小波变换&#xff08;CWT&#xff09;&#xff0c;将一维信号批量生成时频图的源代码。此示例中&#xff0c;原始信号data是30*1280的格式&#xff0c;一共30条信号&#xff0c;信号长度为1280。最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处…

多级代理与提权维权

目录 代理构建FRP介绍下载配置⽂件&#xff1a; sock5代理Venom介绍下载配置 icmpsh介绍下载配置 pingtunnel介绍下载配置 EarthWorm介绍下载使用 权限提升win权限提升常⻅利⽤⼯具 Linux权限提升SUID提权 权限维持win权限维持系统服务后⻔⾃启动⽬录注册表后⻔其他类似隐藏⽤户…

前端vue-配置请求拦截器

1.配置拦截器&#xff0c;记得20行的导出 2.响应拦截器&#xff0c;记得28行的导出 3.拦截器不止可以拦截&#xff0c;还可以添加内容

解锁SoC “调试”挑战,开启高效原型验证之路

引言&#xff1a; 由于芯片设计复杂度的提升、集成规模的扩大&#xff0c;以及产品上市时间要求的缩短&#xff0c;使得设计验证变得更加困难。特别是在多FPGA环境中&#xff0c;设计调试和验证的复杂性进一步增加&#xff0c;传统的调试手段难以满足对高性能、高效率的需求。因…

Spring Boot 进阶-详解SpringBoot的复杂数据校验规则

在之前的文章中,我们介绍了SpringBoot整合JSR-303规则来完成数据校验操作。接下来我们来聊一聊关于数据校验的具体用法。 之前的文章中举过一个简单的例子通过学生信息提交的例子来介绍了关于数据校验如何去做。那么接下来这篇文章,我们就来看看对于一些复杂的数据校验如何完…

实例讲解电动汽车VIN写入规则及Simulink建模方法(一)——VIN校验方法及Simulink建模

目录 一、车辆VIN简介 二、电动汽车VIN写入规则及校验和规则 1、写入规则 2、校验和规则 三、VIN校验方法及Simulink建模 1、VIN校验方法 2、上位机发送VIN写入报文解包Simulink建模 3、校验和对比验证Simulink建模 4、VIN校验方法Simulink建模整体模型 四、总结 一、…

10.8 springBoot学习

学习内容的来源途径:spring Boot 1.不同的架构 之前写的qq是C/S,百度贴吧,淘宝之类的网站项目则为B/S架构. 2.两种架构对比