| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> SuperPoint 与 SuperGlue 详解(一) -> 正文阅读 |
|
[人工智能]SuperPoint 与 SuperGlue 详解(一) |
1. 简介SuperPoint: Self-Supervised Interest Point Detection and Description (CVPR 2018) ??两篇论文都出自 Magic Leap 团队,SuperPoint 提取特征点及描述符,SuperGlue 做特征点匹配 2. SuperPoint2.1 网络结构
??网络结构如上图所示,基本就是特征提取网络加两个分支,一个分支输出特征点的位置和得分(置信度),另一个分支输出特征点的描述符。网络中的计算操作都比较常规,检测分支里的第65个通道代表无特征点,NMS的具体细节见 SuperPoint 特征点 NMS 代码分析。 2.2 训练总流程??SuperPoint 的网络结构并不复杂,而难点在于如何训练网络,尤其是如何得到训练数据,如何在自然图像上标注特征点(论文中说,与人体关键点检测等任务相比,无法清晰地定义特征点检测的概念;个人理解就是即使用人为标注,也没法得到一个基本统一的 ground truth)。 ??论文中给出了自监督的解决方案,具体流程如下: 2.3 SuperPoint 损失函数L ( X , X ′ , D , D ′ ; Y , Y ′ , S ) = L p ( X , Y ) + L p ( X ′ , Y ′ ) + λ L d ( D , D ′ , S ) \mathcal{L}\left(\mathcal{X}, \mathcal{X}^{\prime}, \mathcal{D}, \mathcal{D}^{\prime} ; Y, Y^{\prime}, S\right)=\mathcal{L}_{p}(\mathcal{X}, Y)+\mathcal{L}_{p}\left(\mathcal{X}^{\prime}, Y^{\prime}\right)+\lambda \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right) L(X,X′,D,D′;Y,Y′,S)=Lp?(X,Y)+Lp?(X′,Y′)+λLd?(D,D′,S) ??整个
l
o
s
s
loss
loss 由两部分组成,
L
p
\mathcal{L}_{p}
Lp? 计算特征点位置损失,
L
d
\mathcal{L}_{d}
Ld? 计算特征点描述符损失。 l p ( x h w ; y ) = ? log ? ( exp ? ( x h w y ) ∑ k = 1 65 exp ? ( x h w k ) ) l_{p}\left(\mathbf{x}_{h w} ; y\right)=-\log \left(\frac{\exp \left(\mathbf{x}_{h w y}\right)}{\sum_{k=1}^{65} \exp \left(\mathbf{x}_{h w k}\right)}\right) lp?(xhw?;y)=?log(∑k=165?exp(xhwk?)exp(xhwy?)?) ??输入图像大小为
H
,
W
H,W
H,W,公式中
H
c
=
H
/
8
,
W
c
=
W
/
8
H_{c}=H/8,W_{c}=W/8
Hc?=H/8,Wc?=W/8,而
L
p
\mathcal{L}_{p}
Lp? 就是计算一个交叉熵损失。论文中有个细节,在一个
h
w
hw
hw 的区域里面如果存在多个特征点,会随机取一个作为 ground-truth。这样每个区域就是做个65类分类问题。 l d ( d , d ′ ; s ) = λ d ? s ? max ? ( 0 , m p ? d T d ′ ) + ( 1 ? s ) ? max ? ( 0 , d T d ′ ? m n ) l_{d}\left(\mathbf{d}, \mathbf{d}^{\prime} ; s\right) =\lambda_{d} * s * \max \left(0, m_{p}-\mathbf{d}^{T} \mathbf{d}^{\prime}\right)+(1-s) * \max \left(0, \mathbf{d}^{T} \mathbf{d}^{\prime}-m_{n}\right) ld?(d,d′;s)=λd??s?max(0,mp??dTd′)+(1?s)?max(0,dTd′?mn?) s h w h ′ w ′ = { 1 , ?if? ∥ H p h w ^ ? p h ′ w ′ ∥ ≤ 8 0 , ?otherwise? s_{h w h^{\prime} w^{\prime}}=\left\{\begin{array}{ll} 1, & \text { if }\left\|\widehat{\mathcal{H} \mathbf{p}_{h w}}-\mathbf{p}_{h^{\prime} w^{\prime}}\right\| \leq 8 \\ 0, & \text { otherwise } \end{array}\right. shwh′w′?={1,0,??if?∥∥∥?Hphw? ??ph′w′?∥∥∥?≤8?otherwise?? ??出于计算量的考虑,描述符的损失在低分辨率 H c , W c H_{c},W_{c} Hc?,Wc? 上计算。 p h w \mathbf{p}_{h w} phw? 为对应区域的中心点坐标, H p h w ^ \widehat{\mathcal{H} \mathbf{p}_{h w}} Hphw? ? 是对 p h w \mathbf{p}_{h w} phw? 做单应性变换 H \mathcal{H} H, s h w h ′ w ′ s_{h w h^{\prime} w^{\prime}} shwh′w′? 代表两个区域是否匹配。 L d \mathcal{L}_{d} Ld? 就是计算一个 hinge loss,正边界 positive margin 取 m p m_{p} mp?,负边界 negative margin 取 m n m_{n} mn?;因为正负样本不平衡,用 λ d \lambda_{d} λd? 平衡一下。 ??论文参数: λ d = 250 , m p = 1 , m n = 0.2 , λ = 0.0001 \lambda_{d}=250,m_{p}=1,m_{n}=0.2,\lambda=0.0001 λd?=250,mp?=1,mn?=0.2,λ=0.0001 2.4 MagicPoint(1)合成数据集 Synthetic Shapes ??MagicPoint 的网络结构就是 SuperPoint 去掉描述符的分支。MagicPoint 在合成数据集上表现很好,在推广到真实图像时表现也很好,特别是在有角状结构的场景上(桌子、椅子、窗户)。但是视角变化时同一位置的特征点容易检测不到(Unfortunately in the space of all natural images, it underperforms when compared to the same classical detectors on repeatability under viewpoint changes.)。因此提出了在真实图像上的自监督训练方法 Homographic Adaptation。 (2)Homographic Adaptation 2.5 残留细节问题??官方不提供 SuperPoint 的训练和评估代码,以及合成数据集 Synthetic Shapes,SuperPoint 的训练数据也没看到,这些都是复现 SuperPoint 的核心。 (1)Homographic Adaptation 中对特征点结合的方法 (2)SuperPoint 和 Homographic Adaptation 的训练集单应性变换生成方法 3. SuperGlue??SuperGlue 的论文里面涉及到了图神经网络、最优运输问题、Transformer、注意力机制等不是特别了解的领域。看了一轮代码发现,其实这个匹配任务跟图像也没什么关系,网络的输入只需要两幅图像的特征点位置、置信度和描述符,图像本身的信息只需要个尺寸用来做标准化,(根据对NLP的粗浅了解)感觉完全可以把特征点当做词向量。 ??后续单独写一篇 SuperGlue |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 16:43:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |