对于有想法改良描述子却无从下手的同学还是比较有帮助的。

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 论文阅读的更多相关文章

  1. 遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化

    遍历二叉树   traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化 1. 二叉树3个基本单元组成:根节点.左子树.右子树 以L.D.R ...

  2. Learning Spread-out Local Feature Descriptors

    论文Learning Spread-out Local Feature Descriptors 为什么介绍此文:引入了一种正则化手段,结合其他网络的损失函数,尤其是最新cvpr 2018的hardne ...

  3. 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 ...

  4. Learning local feature descriptors with triplets and shallow convolutional neural networks 论文阅读笔记

    题目翻译:学习 local feature descriptors 使用 triplets 还有浅的卷积神经网络.读罢此文,只觉收获满满,同时另外印象最深的也是一个浅(文章中会提及)字. 1 Cont ...

  5. 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition

    论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...

  6. Collaborative Spatioitemporal Feature Learning for Video Action Recognition

    Collaborative Spatioitemporal Feature Learning for Video Action Recognition 摘要 时空特征提取在视频动作识别中是一个非常重要 ...

  7. 泡泡一分钟: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 ...

  8. A Theoretical Analysis of Feature Pooling in Visual Recognition

    这篇是10年ICML的论文,但是它是从原理上来分析池化的原因,因为池化的好坏的确会影响到结果,比如有除了最大池化和均值池化,还有随机池化等等,在eccv14中海油在顶层加个空间金字塔池化的方法.可谓多 ...

  9. [论文阅读笔记] node2vec Scalable Feature Learning for Networks

    [论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...

随机推荐

  1. Alamofire - 优雅的处理 Swift 中的网络操作

    网络处理,应该是我们平时开发的时候最常用到的操作.比如读取 JSON 数据,下载图片,这些操作都要和网络打交道,一个高效稳定的网络操作库对于提升我们日常的开发效率有着非常关键的作用.Alamofire ...

  2. mysql常见操作汇总 专题

    mysql中in多个字段 1. 基本用法 SELECT * FROM USER WHERE , , ); 2. 多个字段同时使用 SELECT * FROM USER WHERE (, ),(, ), ...

  3. ListView、TreeView和DataGrid。

    原文:ListView.TreeView和DataGrid. 1.ListView. ListView继承自简单的没有特色的ListBox,并使用View属性进行扩展.增加了对基于列显示的支持,并增加 ...

  4. WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性

    原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...

  5. JavaScript 中的12种循环遍历方法

    原文:JavaScript 中的12种循环遍历方法 题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];f ...

  6. 查看安卓APK源码破解

    原文:查看安卓APK源码破解 工具准备: <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下载:http: ...

  7. 自定义LISTBOX内子项为checkbox或者radio时,关于IsChecked绑定

    IsChecked="{Binding IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}&q ...

  8. Delphi Android 将Google ZXing 整合(调用Jar文件)

    前篇文章介绍了在delphi App(以下简称App)中可使用intent来调用Google ZXing 条码扫描器(以下简称zx),其各有优缺点,优点是我们不需关注zx本身的细节,只需调用其接口即可 ...

  9. GIS基础软件及操作(二)

    原文 GIS基础软件及操作(二) 练习二.管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 ...

  10. 微信小程序把玩(十五)checkbox组件

    原文:微信小程序把玩(十五)checkbox组件 不得不吐糟下checkbox默认样式真是有点略丑!!!checkbox组件为一个多选框被放到checkbox-group组中,并在checkbox-g ...