Introduction

这篇文章设计了一种自监督网络框架,能够同时提取特征点的位置以及描述子。相比于patch-based方法,本文提出的算法能够在原始图像提取到像素级精度的特征点的位置及其描述子。本文提出了一种单映性适应(Homographic Adaptation)的策略以增强特征点的复检率以及跨域的实用性(这里跨域指的是synthetic-to-real的能力,网络模型在虚拟数据集上训练完成,同样也可以在真实场景下表现优异的能力)。

SuperPoint Architecture

1 Shared Encoder

这是一个VGG-style的网络层,将原始输入图片进行一系列的处理后,将原始输入图片的尺寸变成\(H_c=H/8,W_c = W/8\)

2 Interest Point Decoder

The 65 channels correspond to local, non-overlapping 8 × 8 grid regions of pixels plus an extra “no interest point” dustbin.

After a channel-wise softmax, the dustbin dimension is removed and a RH c ×W c ×64 ⇒ RH×W reshape is performed.

65个通道对应原始图片\(8\times 8\)的网格,加上一个非特征点dustbin,通过在channel维度上做softmax,非特征点dustbin会被删除,同时会做一步图像的reshape (使用的是一个叫做\(子像素卷积^{[1]}\)的方法),得到一个和输出图片size相同的概率图。

3 Descriptor Decoder

首先利用类似于UCN的网络得到一个半稠密的描述子(此处参考文献\(UCN^{[3]}\) ),这样可以减少算法 训练内存开销同时减少算法运行时间。之后通过双三次多项式揷值得到其余描述,然后通过 L2normalizes 归一化描述子得到统一的长度描述。特征维度由 \(\mathcal{D} \in \mathbb{R}^{H_{c} \times W_{c} \times D}\) 变为 \(\mathbb{R}^{H \times W \times D}\) 。

4 Loss Functions

可见损失函数由两项组成,其中一项为特征点检测loss\(\mathcal{L}_{p}\) ,另外一项是描述子的loss\(\mathcal{L}_{d}\)。

前者使用的是交叉熵误差函数:

The interest point detector loss function \(\mathcal{L}_{p}\) is a fully convolutional cross-entropy loss over the cells \(\mathbf{x}_{h w} \in \mathcal{X}\). We call the set of corresponding ground-truth interest point labels \(Y\) and individual entries as \(y_{h w}\). The loss is:

\[\mathcal{L}_{p}(\mathcal{X}, Y)=\frac{1}{H_{c} W_{c}} \sum_{h=1 \atop w=1}^{H_{c}, W_{c}} l_{p}\left(\mathbf{x}_{h w} ; y_{h w}\right)
\]

where

\[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)
\]

描述子的损失函数:

\[\begin{aligned} \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right)=& \\ & \frac{1}{\left(H_{c} W_{c}\right)^{2}} \sum_{h=1 \atop w=1}^{H_{c}, W_{c}} \sum_{h_{c}^{\prime}=1 \atop w^{\prime}=1}^{H_{c}, W_{c}} l_{d}\left(\mathbf{d}_{h w}, \mathbf{d}_{h^{\prime} w^{\prime}}^{\prime} ; s_{h w h^{\prime} w^{\prime}}\right), \end{aligned}
\]

where

\[\begin{array}{r}
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)
\end{array}
\]

其中对应每个cell的s是这样定义的:

\[s_{h w h^{\prime} w^{\prime}}= \begin{cases}1, & \text { if }\left\|\widehat{\mathcal{H} \mathbf{p}_{h w}}-\mathbf{p}_{h^{\prime} w^{\prime}}\right\| \leq 8 \\ 0, & \text { otherwise }\end{cases}
\]

Synthetic Pre-Training

网络的训练分为三个步骤:

  1. 第一步是采用虚拟的三维物体作为数据集,训练网络去提取角点,这里得到的是BaseDetectorMagicPoint

  2. 使用真实场景图片(MS-CoCo),用第一步训练出来的网络MagicPoint +Homographic Adaptation提取角点,这一步称作兴趣点自标注(Interest Point Self-Labeling)

  3. 对第二步使用的图片进行几何变换得到新的图片,这样就有了已知位姿关系的图片对,把这两张图片输入SuperPoint网络,提取特征点和描述子,然后计算loss,进行训练。

这里重点介绍一下Homographic Adaptation

针对Magicpoint在真实数据上的缺点,作者提出了Homographic Adaptation,也就是把真实图片做几次单应变换,将这些单应变换的结果都输入Magicpoint,然后将检测到的特征点投影到原始的图片上,合起来作为最后的特征点真值。这样使检测到的特征点更丰富,也具备了一定的单应不变性。然后将通过这个步骤得到的图片结合原图片送入到SuperPoint进行训练。

Running

观察到论文的作者在GitHub上开源了SuperPoint的\(代码^{[2]}\),拉下来跑了一下。

input output

真的牛!!!!

Conclusion

作者先使用一个合成的数据集训练MagicPoint,然后再结合Homographic Adaptation使其在真实世界里的表现得到了提升。同时特征点的检测也可以使用深度学习的方法来解决了。并且取得了较传统的方法很大的性能提升。


Refer

[1]子像素卷积:https://blog.csdn.net/leviopku/article/details/84975282

[2]superpoint:https://github.com/magicleap/SuperPointPretrainedNetwork

[3]C. B. Choy, J. Gwak, S. Savarese, and M. Chandraker. Universal Correspondence Network. In NIPS. 2016.2, 3, 8

SuperPoint: Self-Supervised Interest Point Detection and Description 论文笔记的更多相关文章

  1. Learning Rich Features from RGB-D Images for Object Detection and Segmentation论文笔记

    相关工作: 将R-CNN推广到RGB-D图像,引入一种新的编码方式来捕获图像中像素的地心姿态,并且这种新的编码方式比单纯使用深度通道有了明显的改进. 我们建议在每个像素上用三个通道编码深度图像:水平视 ...

  2. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  3. 论文笔记《Spatial Memory for Context Reasoning in Object Detection》

    好久不写论文笔记了,不是没看,而是很少看到好的或者说值得记的了,今天被xinlei这篇paper炸了出来,这篇被据老大说xinlei自称idea of the year,所以看的时候还是很认真的,然后 ...

  4. [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  5. 论文笔记:Chaotic Invariants of Lagrangian Particle Trajectories for Anomaly Detection in Crowded Scenes

    [原创]Liu_LongPo 转载请注明出处 [CSDN]http://blog.csdn.net/llp1992 近期在关注 crowd scene方面的东西.由于某些原因须要在crowd scen ...

  6. [CVPR2017] Weakly Supervised Cascaded Convolutional Networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #042eee } p. ...

  7. [Arxiv1706] Few-Example Object Detection with Model Communication 论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #042eee } p. ...

  8. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  9. 论文笔记之:Learning Cross-Modal Deep Representations for Robust Pedestrian Detection

    Learning Cross-Modal Deep Representations for Robust Pedestrian Detection 2017-04-11  19:40:22  Moti ...

随机推荐

  1. hdu 1430 (BFS 康托展开 或 map )

    第一眼看到这题就直接BFS爆搜,第一发爆了内存,傻逼了忘标记了,然后就改,咋标记呢. 然后想到用map函数,就8!个不同的排列,换成字符串用map标记.然后又交一发果断超时,伤心,最恨超时,还不如来个 ...

  2. Web 网站进化

    01-初始阶段   应用程序.数据库.文件等所有资源都在一台服务器上 02-应用服务与数据服务分离 应用服务器 要处理大量的业务逻辑,所以需要更好更快更强大的 CPU 数据库服务器 需要快速的进行磁盘 ...

  3. Improved Variational Inference with Inverse Autoregressive Flow

    目录 概 主要内容 代码 Kingma D., Salimans T., Jozefowicz R., Chen X., Sutskever I. and Welling M. Improved Va ...

  4. [C++]C++四舍五入保留到n位小数

    #include <sstream> #include <iostream> #include <iomanip> using namespace std; /** ...

  5. 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。

    查看本章节 查看作业目录 需求说明: 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果. 具体要求如下: ...

  6. 使用.NET 6开发TodoList应用(16)——实现查询排序

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 关于查询的另一个需求是要根据前端请求的排序字段进行对结果相应的排序. 目标 实现根据排序要求返回排序后的结果 原理与思路 要实 ...

  7. SpringCloud使用汇总Config

    1.Config Server对外提供的资源格式 配置中心的HTTP服务有5种资源格式: /{application}/{profile}[/{label}] /{application}-{prof ...

  8. 数据库SQL语言类型(DQL.DML.DDL.DCL)

    1.SQL语言 SQL(Structure Query Language)语言是数据库的核心语言. SQL是一个标准的数据库语言, 是面向集合的描述性非过程化语言. 它功能强,效率高,简单易学易维护. ...

  9. 在CentOS7 安装 jq

    root@: 安装EPEL源: yum install epel-release 安装完EPEL源后,可以查看下jq包是否存在: yum list jq 安装jq: yum install jq 命令 ...

  10. vue中computed的作用以及用法

    在vue中computed是计算属性,主要作用是把数据存储到内存中,减少不必要的请求,还可以利用computed给子组件的data赋值. 参考地址:https://www.jianshu.com/p/ ...