当前位置: 首页 > news >正文

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述

局部特征提取是计算机视觉中的一个重要任务,它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法,如尺度不变特征变换(SIFT),首先检测图像中的关键点,然后围绕这些关键点计算描述符,以生成对旋转、尺度和亮度变化具有不变性的局部特征。

然而,随着深度学习的发展,近年来出现了一些新的方法,它们将关键点检测和特征描述符计算结合在一起,以提高效率和性能。以下是一些代表性的方法:

  1. SuperPoint:SuperPoint是一种快速且准确的特征点检测和描述符生成网络。它使用了一个轻量级的卷积神经网络,能够在保持高准确度的同时实现实时性能。SuperPoint通过学习图像的局部模式来预测关键点的位置,并生成对应的特征描述符。

  2. D2-Net:D2-Net(Descent-based Dense Feature Network)是一种密集特征点检测网络,它使用基于梯度下降的方法来精确定位关键点。D2-Net不仅能够检测到大量的特征点,而且能够为每个特征点生成具有独特信息的描述符。

  3. R2D2:R2D2(Region-based Retrieval with Dense Correspondences)是一种基于区域的检索方法,它使用密集对应来生成局部特征描述符。R2D2通过学习图像区域之间的关系来提取特征,这使得它在处理重复纹理和相似结构时具有优势。

这些方法的共同点是它们都利用了深度学习的能力来直接从数据中学习特征点的检测和描述,而不是依赖于手工设计的特征提取算法。这种方法通常能够提供更好的性能,尤其是在处理复杂场景和具有挑战性的视觉任务时。

在实际应用中,这些方法可以根据具体需求进行选择。例如,如果需要实时性能,SuperPoint可能是一个好选择;如果对特征点的精确定位有较高要求,D2-Net可能更适合;而在需要处理具有大量重复纹理的场景时,R2D2可能会有更好的表现。
图片
论文地址:https://arxiv.org/pdf/2005.13605.pdf

D2D

图片
作者提出的核心思想“先描述后检测”是基于这样的观察:特征描述部分本身就包含了大量信息,能够反映图像中某个位置的显著程度。这种方法与传统的先检测关键点再描述的方法相反,它通过先生成大量的密集特征描述,然后从这些描述中筛选出关键点,从而简化了局部特征提取的流程。

在实现这一思想时,衡量特征向量描述的显著性是一个关键问题。以下是一些可能的方法来评估特征描述的显著性:

  1. 基于梯度信息:图像中的边缘和角点通常是显著的特征。因此,可以通过计算图像梯度的大小和方向来评估特征描述的显著性。在深度学习方法中,可以通过卷积层自动学习到这些梯度信息。

  2. 基于网络响应:深度神经网络在处理图像时,不同的层会响应图像的不同特征。可以通过分析网络中某一层的激活情况来确定特征的显著性。例如,如果一个特征描述在某个层引起了强烈的响应,那么这个特征可能是显著的。

  3. 基于特征一致性:在多个图像或多个视角下保持一致的特征更有可能是显著的。可以通过比较不同图像中相同位置的特征描述来评估其显著性。

  4. 基于特征的区分能力:如果一个特征描述能够很好地区分不同类别或不同对象,那么它可能是显著的。可以通过评估特征描述在分类或识别任务中的表现来衡量其显著性。

  5. 基于聚类分析:对大量的特征描述进行聚类分析,可以发现哪些特征描述更具有代表性和区分度。显著的特征描述通常会形成独立的聚类,而不是混杂在其他特征描述中。

  6. 基于注意力机制:注意力机制可以模拟人类视觉注意力的焦点转移,通过识别网络中最关注的区域来确定特征的显著性。

  7. 基于全局和局部信息的结合:结合全局图像信息和局部特征描述,可以更全面地评估特征的显著性。例如,一个在全局层面上具有独特性但在局部层面上很常见的特征可能不是显著的。

作者从两个角度来思考这个问题:

1)特征描述要具有绝对显著性,指某位置的特征各维度特征变化大;

作者以特征各维度与均值的平方差来衡量绝对显著性。

图片

2)特征描述要具有相对显著性,指某位置的特征与其周围临近点的特征相比差异性更大;

作者以某特征与临近位置特征的距离之加权和来衡量。

图片

以绝对显著性和相对显著性之积作为某位置是否为关键点的依据,选取Top N个作为最终的关键点。

图片

实验结果

作者的这个思路很简单,也很容易与图像的密集描述特征结合,作者在图像匹配、视觉定位、三维重建三个任务中评价了这种方法

图像匹配的实验结果:

图片

HarNet 和SOSNet 是作者使用的描述方法。在HPatches数据集上的结果显示,使用D2D的方法超越了之前几种SOTA方法,正确配对的关键点更多。

下图为在Aachen Day-Night 数据集上的视觉定位结果,D2D在替换SIFT关键点检测之后大大提高了精度,虽然与最好结果还有一定差距,但这可能是训练数据和使用网络较小的差异造成的。

图片

在ETH SfM数据集上三维重建的实验结果:

图片

使用窄网络D2D的精度显著超越了那些在大数据集上训练的局部特征提取方法的结果。

D2D因为简单,所以速度也很快,使用 HardNet 或者SOSNet作为描述的话参数量也很小,如下图:

图片

总之,D2D打开了一种新思路,特征描述本身就含有关键点的重要性信息,可以作为关键点筛选的依据。

相关文章:

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述 局部特征提取是计算机视觉中的一个重要任务,它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法,如尺度不变特征变换(SIFT)&#xf…...

The “from“ argument must be of type string. Received undefined——vue报错记录

今天在用机器人打包测试环境时,一直报错: The "from" argument must be of type string. Received undefined 啥意思呐? 百度也没有找到对应的问题所在。 下面写一下我的解决方法: vue.config.js 在vue.config.js中…...

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业,上下游非常广,像主机厂,上游的零配件,下游的汽车流通,汽车流通之后的汽车后市场,整个链条比较长。今天主要讲的是汽车流通,汽车4S集团。一个汽车4S集团下面授权代…...

JSX 和 HTML 之间的区别

JSX和 HTML 都是用于创建和构建网页的标记语言,但它们有一些关键的区别。 1. JSX 是 JavaScript 的语法扩展,而 HTML 是一种标记语言。 2. JSX 允许您在语法中包含表达式和函数,而 HTML 只允许静态文本。 3. JSX 通常用于 React 应用程序&…...

AI日报:GPT-4-Turbo正式版自带读图能力;Gemini1.5Pro开放API;SD3将于4月中旬发布;抖音宫崎骏AI特效爆火

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 &#x1f4f…...

IDEA 宝贝插件

1. Codota— 代码智能提示 Codota还包含一个网站:https://www.codota.com/code 2.Alibaba Java Code Guidelines— 阿里巴巴 Java 代码规范 3. SequenceDiagram —— 调用链路自动生成时序图 4. google-java-format —— 代码自动格式化...

[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表 a.数据 b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁 1.1 节点的定义 1.2 单链表的尾插 1.3 单链表的头插 1.4 单链表的尾删 1.5 单链表的头删 1…...

oracle rac打补丁后sqlplus / as sysdba ora-12537

sqlplus / as sysdba 报错: ORA-12537: TNS:connection closed 检查用户属组: [rootrac1 ~]# id oracle uid1102(oracle) gid1101(oinstall) groups1101(oinstall),1102(dba) [rootrac1 ~]# id grid uid1101(grid) gid1101(oinstall) groups1101(oin…...

TCP-IP详解卷一:协议——阅读总结

该内容适合程序员查看 第1章 概述 1.1 引言 WAN全称是 Wide Area Network,中文名为广域网。 LAN全称是 Local Area Network,中文名为局域网。 1.2分层 ICP/IP协议族通常被认为是一个四层协议系统 分层协议应用层Telnet、FTP和e-mail运输层TCP和UDP网…...

【带源码】如何开发一个视频打赏,付费观看视频的系统?

【带源码】如何开发一个视频打赏,付费观看视频的系统?开发指南来了 最近非常火爆的视频打赏系统,有用户端,管理端,代理端 风口来了,系统部署简单,需要详细部署教程的可以留下评论哦&#xff01…...

Linux--进程的概念(一)

目录 一、冯诺依曼体系结构二、操作系统2.1 什么是操作系统2.2 操作系统的意义 三、进程3.1 进程的基本概念3.2 描述进程——PCB3.3 进程和程序的区别3.4 task_struct-PCB的一种3.5 task_struct的内容分类 四、如何查看进程4.1 通过系统文件查看进程4.2 通过ps指令查看进程 五、…...

大话设计模式——15.观察者模式(Observer Pattern)

简介 也称发布订阅模式(Publish/Subscribe),定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 UML图: 应用场景: 消息通知组件&#x…...

MySQL 主从复制部署(8.0)

什么是主从数据库 主从数据库是一种数据库架构模式,通常用于提高数据库的性能、可用性和可伸缩性。 它包括两种类型的数据库服务器: 1)主数据库(Master):主数据库是读写数据的主要数据库服务器。所有写操…...

大话设计模式——16.命令模式(Command Pattern)

简介 请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的对象进行执行。命令模式是一种特殊的策略模式,体现多个策略执行的问题,而不是选择的问题 UML图 应用场景 界面选择、键盘、按钮、事件操作都类似命令模式 …...

react17+18 中 setState是同步还是异步更新

在类组件中使用setState,在函数式组件中使用hooks的useState。 setstate目录 1. 类组件1.1 react 17版本1.2 react 18版本 2、函数式组件 1. 类组件 1.1 react 17版本 参考内容:第十一篇:setState 到底是同步的,还是异步的&…...

Unity框架,ET框架8.1版本的打包流程记录

目录 打包代码前置1.必须要安装Visusal Studio 2022的组件,如下图,必须都要进行安装,不然会在代码重构的时候报错,丢失SDK。Rider的版本必须2023及以上 步骤一、使用Rider编辑器打开项目后进行重构项目步骤二、使用HybirdCLR生成A…...

windows访问wsl中的docker

1、启动windows路由转发功能&#xff1a; 找到任务管理器 --》服务–》打开服务–》 ROUTing and Remote Access 2、关闭wsl中linux的防火墙 3、查看docker系统和linux系统的ip和网关 以下面为例 # docker系统 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu…...

golang主要优缺点

优点 1&#xff09;采用协程机制&#xff0c;可以很方便的支持高并发&#xff0c;性能还不错。 2&#xff09;非常易于使用&#xff0c;产出效率很高。 缺点 也是协程机制。程序中一切皆协程&#xff0c;并且自己做了协程调度机制&#xff0c;而不是传统的 线程机制。导致需…...

浅谈Redis和一些指令

浅浅谈一谈Redis的客户端 Redis客户端 Redis也是一个客户端/服务端结构的程序。 MySQL也是一个客户端/服务端结构的程序。 Redis的客户端也有多种形态 1.自带命令行客户端 redis-cli 2.图形化界面的客户端&#xff08;桌面程序&#xff0c;web程序&#xff09; 像这样的图形…...

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录 一、什么是LangChain&#xff1f; 二、LangChain解决了哪些问题&#xff1f; 三、LangChain总体架构 四、代码实践样例 总结 一、什么是LangChain&#xff1f; 为大模型应用提供简便之道。 LangChain&#xff0c;专为构建庞大的语言模型应用程序设计的框架&#xff0…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...