Adding Cues (线索、提示) to Binary Feature Descriptors for Visual Place Recognition 论文阅读
对于有想法改良描述子却无从下手的同学还是比较有帮助的。
Abstract
在这个文章中我们提出了一种嵌入continues and selector(感觉就是analogue和digital的区别)线索到binary feature descriptor (比如ORB用的BRIEFF)
这种嵌入方式是通过一个二进制string来延长描述子,这个二进制string编码了这个cues,并且支持hamming distance metric. (厉害了,一直想学学看如果设计描述子,如果能把语义的信息编码近二进制描述子感觉会很高效。)
1. Introduction
Visual Place Recognition (VPR)
为了能够对视角和光照变化鲁邦,一般会用描述子。描述子一般是floating-point或者是binary的。然后用对应描述子来计算累计距离。
比较经典的方法是使用图像像素的方式来计算。一方面,这样的方法有VPR的能力;但是另一方面如果有额外的场景的信息(比如GPS信息),这样的VPR系统也不能使用。
也有一种法子用pre-/post- filtering的方式来弄,
还有一种法子是把cues作为额外的维度加入到描述子的向量中,这样也不需要改变搜索的方式。(目前让我疑惑点是如何控制新参入的cues和原来的权重呢,如果是新加入的话只能是一样的权重)。
嵌入continuous cues是非常直接的,当描述子是floating-point的向量的时候。
这种情况下距离是用\(L_2\)-Norm来计算的。自然,binary descriptors是用汉明距离来计算的\(L_H\)。
---
这里我们提出了一种方法来从continuous cues来计算二值的特征,这样就可以用来支持汉明距离的计算。
我们也提出了怎么来编码selector cue (我理解是二值,或者是多个选择的线索). 典型的就是像素的语义的类别。
我们的东西是开源的: www.gitlab.com/srrg-software/srrg_bench
2. Related Work
我们这篇文章一般说的都是二进制描述子。
有人尝试过带权重的hamming distance和一个thresholded binary testing on ORB. 然后这个人发现了精度的提升。
但这些描述子的提升只能够被局限在一种特定的描述子类型.
一种搜索方式就是Bag-of-Features (类似BOW??),来减少搜寻问题的高维度。The Euclidean descriptor posiitons are encoded into binary signatures (这个表述很棒,石锤BoW了。),with a procedure introduced as Hamming Embedding.
还有一种叫LSH(Locality Sensitive Hashing),用hashing减少了搜索问题的纬度。但是LSH比BOF需要更多的内存空间。
有一个叫HBST (Hamming Binary Search Tree),有更胜人一筹的速度,同时也保持着不错的准确度和打的场景。
3. Our Approach
特征描述子是编码了图像一个点的局部外观的向量。
- Floating-point描述子是continuous numbers的向量,并且一般用\(L_2\)-norm来计算。
- Binary descriptors是用二值的向量,然后用hamming distance来计算\(L_H\)
二进制的描述子(128-512 bits)一般都会比浮点型(512-4096bits)的少用很多空间,计算的cost也少。
另外,state-of-the-art二进制描述子也比浮点型的描述子更容易获得(开源,专利方面的问题)。
二进制描述子是用局部的光度性质来计算的,目的也是为了image recognition。在VPR的应用中,有一些线索一直会被获得(e.g. 点的深度),这些都可以在后续的图像处理中被应用。
我们定义了一种方法来把这种continuous / interger的线索加入到二进制的描述子中。
A. Converting Continuous Cues into Binary Strings
假设\(c\)是一个\([0, 1)\)的值,我们想要把它加入到一个二进制描述子\(d\)中。
如果\(c\)不是从目标范围中得到的(i.e. 上面讲的\([0, 1)\))的,我们就一个映射的方式:\(\overline{c}=\alpha c+\beta\)来得到。
我们现在想要把数值\(c\)转换成\(b=b(c)\),然后把它加到原来的描述子\(d\)中,得到一个新的描述子:\(\mathbf{d}_{\star}=\langle\mathbf{d}, \mathbf{b}\rangle\).
为了把两个值\(c\)和\(c'\)两个值的差异成功的转换到对应的二进制string中,我们需要保证:
\[
L_{\mathcal{H}}\left(b(c), b\left(c^{\prime}\right)\right) \propto\left|c-c^{\prime}\right|
\]
为了计算\(b(c)\),我们用等间距来量化\([0, 1)\),距离是\(1/I\). 这样的话,我们需要用一个\((I-1)\)bit的二进制string来表示\(b(c)\).
\[
b(c)=\left\langle b_{0}(c), b_{1}(c), \ldots, b_{I-2}(c)\right\rangle
\]
这样的话\(b_i(c)\)的值如果c在一个更高的interval的话就是1(PS.注意这里本质不是十进制和二进制的转化。因为是为了hamming distance的计算,处理的方式还更粗暴一些。如下图. PS2.其实也可以改成十进制和二进制的转化,这样空间上还更高效一些。只要计算distance的时候修改一下,然后跟原来计算的hamming distance结合一下就行。)。
\[
b_{i}(c)=\left\{\begin{array}{ll}{1} & {\text { iff } c>\frac{1}{I}(i+1)} \\ {0} & {\text { otherwise }}\end{array} \quad i \in\{0,1, \ldots, I-2\}\right.
\]
这个图就很容易说明了。
上述的方法也可以在很多维线索的时候使用。
The Hamming Distance between the augmented descriptors \[\mathbf{d}_{\star}, \mathbf{d}_{\star}^{\prime}\] of multi-dimensional cues is proportional to the Manhattan distance in the continuous space.
这儿有一个案例: Converting Keypoint Coordinates (KC)。不过不重要。
B. Converting Selector Cues into Binary Strings.
这里我们想办法来嵌入离散的信息,the so called arbitrary selector value.
一个selector value \(i\)可以被映射到一个整数范围中:\[\mathcal{I}=\{0,1, \ldots, I-1\}\],比较常见的也是把离散的线索编码成label information。
如果他们是一样的值就是2,如果一样距离就是0.这种距离特性可以很容易用汉明距离得到。
一个线索\(c\)对应的label的值\(i\in I\)可以用一个二进制string来表示,\[\mathbf{b}=\left\langle b_{0}(c), b_{1}(c), \ldots, b_{I-1}(c)\right\rangle\]。如果是第i类,那么\(b_i(c)\)就是1,其他都是0.
这儿也有一个案例: Converting Semantic Labels (SL)。
PS:这个想法是不错的,但是怎么平衡权重得思考下的。这样只是产生了1的hamming distance。
因为分割的网络也不是一直是对的,我们也不是完全依赖于正确的label。
C. Augmentation Weighting
PS:哦?说曹操曹操到。
由于之前说的binary string是根据continuous range和quatization来决定的,辅助的二进制string可能很小,比起原来的描述子(PS:比如BRIEF是256bit的)。这样的话线索的贡献可能就很小了。可能前后的汉明距离没什么差别:\[L_{\mathcal{H}}\left(\mathbf{d}_{\star}, \mathbf{d}_{\star}^{\prime}\right) \approx L_{\mathcal{H}}\left(\mathbf{d}, \mathbf{d}^{\prime}\right)\]
为了解决这个问题,我们引入了augmentation weight \(\lambda >= 0\),然后定义了一下有权重的hamming distance:
\[
L_{\mathcal{H}}^{\lambda}\left(\mathbf{d}_{\star}, \mathbf{d}_{\star}^{\prime}\right)=L_{\mathcal{H}}\left(\mathbf{d}, \mathbf{d}^{\prime}\right)+\lambda L_{\mathcal{H}}\left(\mathbf{b}, \mathbf{b}^{\prime}\right)
\]
至于具体怎么搞,估计得调参了。这个文章也有一些推荐值。
4. Experimental Evaluation
我们的主要工作是就是提升了基于特征点相似搜寻的VPR的精度,通过用线索的方式。
A. Descriptors
- BRIEF
- ORB: 这儿只加了旋转和尺度不变形(就是oriented FAST的功劳)的BRIEF
- BRISK:一个提升版的BRIEF,用了gaussian pixel average for descriptor computation。
- A-KAZE:一个加速版本的KAZE。KAZE是用了非线性尺度空间,所以非常费算力。就对于建立非线性尺度空间加速了下。
- FREAK:是一个钟bio-inspired描述子。用了视网膜采样pattern来计算二进制的signature.
- LDAHash:用一种令人惊讶的二进制化scheme把SIFT压缩到二进制描述子.
- BinBoost:是一种极度压缩的二进制描述子(比如8bit)
B. Similarity Search Methods
BF: 直接的,最费事儿的搜索方法。
LSH:用multi-probe Locality-sensitive hasing来做最近邻查找。
BOF:词袋
BST:二叉树
HBST library: www.gitlab.com/srrg-software/srrg_hbst
C. Performance Metrices
Precision-Recall (PR)
- Mean Average Precision (mAP)
Mean Image Processing time
...
E. Result
最明显的一个点就是。。A-KAZE最厉害。
上面这个图我没分析出啥,看下面那个。
很明显\(\lambda = 16\)的都提升了。
5. Conclusion
我们牛逼
Adding Cues (线索、提示) to Binary Feature Descriptors for Visual Place Recognition 论文阅读的更多相关文章
- 遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化
遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化 1. 二叉树3个基本单元组成:根节点.左子树.右子树 以L.D.R ...
- Learning Spread-out Local Feature Descriptors
论文Learning Spread-out Local Feature Descriptors 为什么介绍此文:引入了一种正则化手段,结合其他网络的损失函数,尤其是最新cvpr 2018的hardne ...
- MySQL数据库执行sql语句创建数据库和表提示The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
MySQL创建数据库 只想sql文件创建表时候提示 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to ha ...
- Learning local feature descriptors with triplets and shallow convolutional neural networks 论文阅读笔记
题目翻译:学习 local feature descriptors 使用 triplets 还有浅的卷积神经网络.读罢此文,只觉收获满满,同时另外印象最深的也是一个浅(文章中会提及)字. 1 Cont ...
- 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition
论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...
- Collaborative Spatioitemporal Feature Learning for Video Action Recognition
Collaborative Spatioitemporal Feature Learning for Video Action Recognition 摘要 时空特征提取在视频动作识别中是一个非常重要 ...
- 泡泡一分钟:Stabilize an Unsupervised Feature Learning for LiDAR-based Place Recognition
Stabilize an Unsupervised Feature Learning for LiDAR-based Place Recognition Peng Yin, Lingyun Xu, Z ...
- A Theoretical Analysis of Feature Pooling in Visual Recognition
这篇是10年ICML的论文,但是它是从原理上来分析池化的原因,因为池化的好坏的确会影响到结果,比如有除了最大池化和均值池化,还有随机池化等等,在eccv14中海油在顶层加个空间金字塔池化的方法.可谓多 ...
- [论文阅读笔记] node2vec Scalable Feature Learning for Networks
[论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...
随机推荐
- React学习(2)——action,reducer
action creator 是一个函数,格式如下: var actionCreator = function() { // 构建一个 action 并返回它 return { type: 'AN_A ...
- WPF:如何为程序添加splashScreen?
原文:WPF:如何为程序添加splashScreen? 大家是否还记得在Windows Forms程序中如何实现splashScreen吗?我们一般都会使用Microsoft.VisualBasic. ...
- 图像Stride求取
原文:图像Stride求取 做这个日志也许你会觉得多余,但是,如果只给你了图像的流文件,和图像的Width,让你还原原始图像,那么你会发现一个问题,就是Stride未知的问题,这时就需要根据图像的Wi ...
- 不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)
此文章的主旨是希望过于专注.NET程序员在做好工作.写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说. ...
- 正试图在 os 加载程序锁内执行托管代码
正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码... 当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个“正试图在 ...
- Portal for ArcGIS 资源承载数据类型
在Portal中数据主要分为两大类:Web内容与桌面内容.对于Web内容与桌面内容中的每个项目(item)又被具体分为maps,layers, styles, tools,applications,和 ...
- UWP中的消息提示框(二)
在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那种提示框. 先说说比较简单的吧,通过系统To ...
- Bigtable:结构化数据的分布式存储系统
Bigtable最初是谷歌设计用来存储大规模结构化数据的分布式系统,其可以在数以千计的商用服务器上存储高达PB级别的数据量.开源社区根据Bigtable的设计思路开发了HBase.其优势在于提供了高效 ...
- C语言的setlocale和localtime函数(C++也可用)
Example 1234567891011121314151617181920212223242526272829303132 /* setlocale example */ #include < ...
- Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)
这几天工作中要用到Qt调用com组件,主要用到的类型有dll和ocx,使用他们的方法很简单:1.将com组件注册到系统中.2.使用Qt自带的工具dumpcpp将com组件生成cpp和头文件.3.然后就 ...