UnSuperPoint:End-to-End Unsupervised Interest Point Detector And Descriptor 论文解读

本文主要是介绍UnSuperPoint:End-to-End Unsupervised Interest Point Detector And Descriptor 论文解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UnSuperPoint:End-to-End Unsupervised Interest Point Detector And Descriptor 论文解读

简介

特征点的语义信息并不明确难以用人工标注特征点位置的方法得到一个巨大的数据集,是深度学习方法用在特征点提取上的最大问题。

之前工作:

  • TILDE 用类似于sift的特征点作为真实值
  • Quad-network 基于图片单应变换结果训练,但输入为单个patch
  • LIFT,LF-Net 利用SfM中的特征点作为真实值
  • SuperPoint 利用模拟数据训练网络,自监督生成伪真实值

本工作类似于SuperPoint,但是是在其基础上的更进一步。

  • 在全图尺寸上运行
  • 不需要真实值,直接根据单应关系训练得到
  • 同时得到特征点位置和描述子

因此,本文创新点在于:

  • 提出一种自监督训练方法,不需要生成伪特征点真实值,能够直接训练得到特征点位置和得分
  • 提出新颖网络结构和损失函数,使得网络能够高效提取均匀分布的特征点,在速度精度和重复率等方面均达到最优

方法

网络结构

整体网络结构如下图,分为四个部分
在这里插入图片描述

  • 特征提取
    • VGG风格的特征提取,和SuperPoint基本一致,得到 W / 8 × H / 8 × 128 W/8 \times H/8 \times 128 W/8×H/8×128大小的特征
  • 得分分支
    • 经过两次卷积得到 W / 8 × H / 8 × 1 W/8 \times H/8 \times 1 W/8×H/8×1大小的矩阵,代表对应特征点的得分,得分在[0,1]之间。
  • 位置分支
    • 两次卷积得到 W / 8 × H / 8 × 2 W/8 \times H/8 \times 2 W/8×H/8×2大小的矩阵, W / 8 × H / 8 W/8 \times H/8 W/8×H/8个特征点坐标

    • 由于特征是下采样后的,只有 W / 8 × H / 8 W/8 \times H/8 W/8×H/8 大小,文中干脆就假设在 8 × 8 8\times 8 8×8范围内只有一个特征点,反倒起到非极大值抑制类似效果
      在这里插入图片描述

    • 特征点位置: ( x , y ) = ( c + P 1 ( r , c ) , r + p 2 ( r , c ) ) ∗ 8 (x,y) = (c + P_1(r,c), r + p_2(r,c)) * 8 (x,y)=(c+P1(r,c),r+p2(r,c))8, 含义为第(r,c)位置上的矩阵包含 P 1 ( r , c ) , P 2 ( r , c ) P_1(r,c),P_2(r,c) P1(r,c),P2(r,c)两个数据,分别在0-1之间,代表位置系数。因此预测的特征点位置为 c + P 1 ( r , c ) , r + p 2 ( r , c ) c + P_1(r,c), r + p_2(r,c) c+P1(r,c),r+p2(r,c),此外乘上下采样系数便得到最终预测的特征点位置。

  • 描述子分支
    • 两次卷积,得到 W / 8 × H / 8 × 256 W/8 \times H/8 \times 256 W/8×H/8×256的描述子
    • 然后利用特征点位置对描述子进行插值

自监督学习方法

在这里插入图片描述

  • 这应该是最简单,最直观的特征点训练方式,这样都能训练出来才是最难的。

损失函数

文中花费了大量的笔墨描述损失函数的构造以及结果分析,个人目前认为合理的损失函数是能够如此简单直接的训练方法还能得到很好结果的原因。

  • 特征点位置和得分损失 L u s p L^{usp} Lusp
  • 特征点分布均匀性损失 L u n i x y L^{uni_xy} Lunixy
  • 描述符损失 L d e s c L^{desc} Ldesc
  • 描述符正则化项 L d e c o r r L^{decorr} Ldecorr

整体的损失函数为:

L t o t a l = α u s p L u s p + α u n i x y L u n i _ x y + α d e s c L d e s c + α d e c o r r L d e c o r r L_{total} = \alpha_{usp} L^{usp} + \alpha_{uni_xy} L^{uni\_xy} + \alpha_{desc} L^{desc} + \alpha_{decorr} L^{decorr} Ltotal=αuspLusp+αunixyLuni_xy+αdescLdesc+αdecorrLdecorr

特征点位置和得分损失

由于需要两张图片提取的特征点一起确定误差项,因此首先需要确定如何对提取得到的特征点构建匹配关系。

将图片A中所有特征点变换到B中,计算和B中所有特征点的距离,取最近且小于最大值的一对点作为匹配点。

  • 距离计算
    G = [ g i j ] M A × M B = [ ∥ p i A → B − p j B ∥ 2 ] M A × M B \mathbf{G}=\left[g_{i j}\right]_{M^{\mathrm{A}} \times M^{\mathrm{B}}}=\left[\left\|\mathbf{p}_{i}^{\mathrm{A} \rightarrow \mathrm{B}}-\mathbf{p}_{j}^{\mathrm{B}}\right\|_{2}\right]_{M^{\mathrm{A}} \times M^{\mathrm{B}}} G=[gij]MA×MB=[piABpjB2]MA×MB

  • 距离小于阈值的作为匹配点,记为 s ^ , P ^ , F ^ \hat{s},\hat{P},\hat{F} s^,P^,F^

损失函数

损失函数分为三个部分

  • 位置损失 l p o s i t i o n l^{position} lposition
  • 得分损失 l s c o r e l^{score} lscore
  • 匹配损失 l u s p l^{usp} lusp

总体得分如下:

L u s p = α p o s i t i o n ∑ k = 1 K l k p o s i t i o n + α s c o r e ∑ k = 1 K l k s c o r e + ∑ k = 1 K l k u s p L^{usp} = \alpha_{position} \sum_{k=1}^{K} l_k^{position} + \alpha_{score} \sum_{k=1}^{K} l_k^{score} + \sum_{k=1}^{K} l_k^{usp} Lusp=αpositionk=1Klkposition+αscorek=1Klkscore+k=1Klkusp

位置损失

重投影误差:
l k p o s i t i o n = ∥ T p ^ k A − p ^ k B ∥ l_k^{position} = \|T \hat{p}_k^A - \hat{p}_k^B\| lkposition=Tp^kAp^kB

得分损失

两个匹配的特征点得分应该尽量接近

l k score  = ( s ^ k A − s ^ k B ) 2 l_{k}^{\text {score }}=\left(\hat{s}_{k}^{\mathrm{A}}-\hat{s}_{k}^{\mathrm{B}}\right)^{2} lkscore =(s^kAs^kB)2

匹配损失

定义匹配误差:
d k = ∥ T p ^ k A − p ^ k B ∥ = ∥ p ^ k A → B − p ^ k B ∥ d_{k}=\left\|T \hat{\mathbf{p}}_{k}^{\mathrm{A}}-\hat{\mathbf{p}}_{k}^{\mathrm{B}}\right\|=\left\|\hat{\mathbf{p}}_{k}^{\mathrm{A} \rightarrow \mathrm{B}}-\hat{\mathbf{p}}_{k}^{\mathrm{B}}\right\| dk=Tp^kAp^kB=p^kABp^kB
那么,定义匹配损失:
l k usp  = s ^ k ( d k − d ˉ ) l_{k}^{\text {usp }}=\hat{s}_{k}\left(d_{k}-\bar{d}\right) lkusp =s^k(dkdˉ)

其中,
s ^ k = s ^ k A + s ^ k B 2 \hat{s}_{k} = \frac{\hat{s}_{k}^A+\hat{s}_{k}^B}{2} s^k=2s^kA+s^kB

d ˉ = 1 K ∑ k = 1 K d k \bar{d}=\frac{1}{K} \sum_{k=1}^{K} d_{k} dˉ=K1k=1Kdk

这样得分越高的点,匹配误差就越小,得分低的点匹配误差大一点没啥关系。

  • 之所以这么定义,可能是训练过程中的图片总是会有匹配不上的点,如果用整体的误差最小,可能难以收敛。只保证得分很高的前一部分特征点取得较高的精度能够去除掉一些无法匹配的区域影响,训练效果更好。
特征点分布均匀性损失

x , y x,y x,y坐标排序并归一化,从0开始,如果特征点分布的非常非常均匀则理想情况下应该是如此排列的。

x = [ 0 , 1 M − 1 , 2 M − 1 , 3 M − 1 , ⋯ , i − 1 M − 1 , ⋯ , 1 ] x = [0, \frac{1}{M-1}, \frac{2}{M-1}, \frac{3}{M-1}, \cdots, \frac{i-1}{M-1}, \cdots , 1] x=[0,M11,M12,M13,M1i1,,1]

上式为理想的坐标分布,那么实际情况下的均匀性误差为:
( x i sorted  − i − 1 M − 1 ) 2 \left(x_{i}^{\text {sorted }}-\frac{i-1}{M-1}\right)^{2} (xisorted M1i1)2

因此,从x,y两个方向分别定义如下的误差函数,代表和理想分布的距离:

L uni_xy  = α uni_xy  ( L uni_x + L uni_y  ) L uni_x  = ∑ i = 1 M ( x i sorted  − i − 1 M − 1 ) 2 L uni_y  = ∑ i = 1 M ( y i sorted  − i − 1 M − 1 ) 2 \begin{aligned} \mathcal{L}^{\text {uni\_xy }} &=\alpha_{\text {uni\_xy }}\left(\mathcal{L}^{\text {uni\_x}}+\mathcal{L}^{\text {uni\_y }}\right) \\ \mathcal{L}^{\text {uni\_x }} &=\sum_{i=1}^{M}\left(x_{i}^{\text {sorted }}-\frac{i-1}{M-1}\right)^{2} \\ \mathcal{L}^{\text {uni\_y }} &=\sum_{i=1}^{M}\left(y_{i}^{\text {sorted }}-\frac{i-1}{M-1}\right)^{2} \end{aligned} Luni_xy Luni_x Luni_y =αuni_xy (Luni_x+Luni_y )=i=1M(xisorted M1i1)2=i=1M(yisorted M1i1)2

描述符损失

和SuperPoint特征点的描述符损失保持一致

L d e s c = ∑ i = 1 M A ∑ j = 1 M B l i j d e s c l i j d e s c = λ d ⋅ c i j ⋅ max ⁡ ( 0 , m p − f i A T f j B ) + ( 1 − c i j ) ⋅ max ⁡ ( 0 , f i A T f j B − m n ) \begin{aligned} \mathcal{L}^{\mathrm{desc}} &=\sum_{i=1}^{M^{A}} \sum_{j=1}^{M^{\mathrm{B}}} l_{i j}^{\mathrm{desc}} \\ l_{i j}^{\mathrm{desc}} &=\lambda_{d} \cdot c_{i j} \cdot \max \left(0, m_{p}-\mathbf{f}_{i}^{\mathrm{A}^{T}} \mathbf{f}_{j}^{\mathrm{B}}\right) \\ &+\left(1-c_{i j}\right) \cdot \max \left(0, \mathbf{f}_{i}^{\mathrm{A}^{T}} \mathbf{f}_{j}^{\mathrm{B}}-m_{n}\right) \end{aligned} Ldesclijdesc=i=1MAj=1MBlijdesc=λdcijmax(0,mpfiATfjB)+(1cij)max(0,fiATfjBmn)

  • f j A , f j B \mathbf{f}_{j}^{\mathrm{A}},\mathbf{f}_{j}^{\mathrm{B}} fjA,fjB均为单位向量
  • f i A T f j B \mathbf{f}_{i}^{\mathrm{A}^{T}} \mathbf{f}_{j}^{\mathrm{B}} fiATfjB结果为两个向量越接近值越大
  • c i j = 1 c_{ij} = 1 cij=1为两点为匹配点时,仅有第一项,两向量尽可能接近时LOSS越小
  • c i j = 0 c_{ij} = 0 cij=0为两点为匹配点时,仅有第二项,两向量尽可能远离时LOSS越小
描述符正则化项

目标减少特征描述符的过拟合并提高表达紧凑性,基于如下思考:

  • 若描述符的所有维度数值相关性很低,那么同样大小的描述子将会表达更多的信息,极端情况是如果描述符的所有维度线性相关,那么无论多少维最终表达的信息和1维没有任何差别。

描述符相关矩阵设为 R b = [ r i j b ] F × F \mathbf{R}^{b}=\left[r_{i j}^{b}\right]_{F \times F} Rb=[rijb]F×F 对于图像 b b b,代表F个描述子相互之间的相关性。(概率论里面互相关函数)

r i j b = ( v j b − v ˉ j b ) T ( v i b − v ˉ i b ) ( v j b − v ˉ j b ) T ( v i b − v ˉ i b ) ( v j b − v ˉ j b ) T ( v i b − v ˉ i b ) r_{i j}^{b}=\frac{\left(\mathbf{v}_{j}^{b}-\bar{v}_{j}^{b}\right)^{T}\left(\mathbf{v}_{i}^{b}-\bar{v}_{i}^{b}\right)}{\sqrt{\left(\mathbf{v}_{j}^{b}-\bar{v}_{j}^{b}\right)^{T}\left(\mathbf{v}_{i}^{b}-\bar{v}_{i}^{b}\right)} \sqrt{\left(\mathbf{v}_{j}^{b}-\bar{v}_{j}^{b}\right)^{T}\left(\mathbf{v}_{i}^{b}-\bar{v}_{i}^{b}\right)}} rijb=(vjbvˉjb)T(vibvˉib) (vjbvˉjb)T(vibvˉib) (vjbvˉjb)T(vibvˉib)

那么矩阵的非对角元素之和作为相关性评价损失:

L decorr  = ∑ i ≠ j F ( r i j a ) + ∑ i ≠ j F ( r i j b ) \mathcal{L}^{\text {decorr }}=\sum_{i \neq j}^{F}\left(r_{i j}^{\mathrm{a}}\right)+\sum_{i \neq j}^{F}\left(r_{i j}^{\mathrm{b}}\right) Ldecorr =i=jF(rija)+i=jF(rijb)

对角元素为自己和自己的相关性,那肯定为一,没有意义,因此采用非对角元素之后代表各个描述符之间的相关性。

实验

评价标准

特征提取
  • 重复率(RS)
    • 在 距 离 ρ 以 内 匹 配 上 的 特 征 点 对 数 能 够 匹 配 上 的 所 有 特 征 点 对 数 \frac{在距离\rho以内匹配上的特征点对数}{能够匹配上的所有特征点对数} ρ
  • 定位误差(LE)
    • 在距离 ρ \rho ρ以内匹配上的特征点的平均误差(特征点对应的匹配点不超过另一张图片的范围即算能匹配上的点)
特征匹配
  • 匹配得分(MS)
    • 采 用 最 近 邻 搜 索 能 够 匹 配 上 , 且 误 差 在 距 离 ρ 以 内 的 特 征 点 对 数 能 够 匹 配 上 的 所 有 特 征 点 对 数 \frac{采用最近邻搜索能够匹配上,且误差在距离\rho以内的特征点对数}{能够匹配上的所有特征点对数} ρ
  • 单应精度(HA)
    • 利用匹配点估计的单应矩阵和实际单应矩阵之间的误差

数据集

  • HPatchs

结果

  • 特征点提取

    • 提取结果达到了最优,比起传统方法好挺多
      在这里插入图片描述
  • 特征点匹配

    • 在误差较为宽松时较好
    • 误差非常严格时sift依旧非常优秀
      在这里插入图片描述

速度

在这里插入图片描述

  • 比SuperPoint要略快一些

总结

本文最大的意义在于向人们证明了,给定合适的损失函数,加上良好的网络结构,可以几乎完全由数据驱动,学习得到特征点的位置。但是论文没有直接将代码开源,有机会可以对其进行复现。

这篇关于UnSuperPoint:End-to-End Unsupervised Interest Point Detector And Descriptor 论文解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/185971

相关文章

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学