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

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. 食谱API自由和开放接口-为了发展自己的健康厨房APP应用

    什么时候健康厨房 (cook.yi18.net)上线后,基于接口的须要,就非常快就完毕的食谱API接口的开发 文档地址:http://doc.yi18.net/cookapidoc 菜谱食谱API , ...

  2. MVC 身份验证和异常处理过滤器

    :在Global中注册为全局过滤器,应用于所有的Controller的Action 参数类均继承自ControllerContext,主要包含属性请求上下文.路由数据.结果 using FilterE ...

  3. c# 编写REST的WCF

    REST(Representational State Transfer)即 表述性状态传递 ,简称REST,通俗来讲就是:资源在网络中以某种表现形式进行状态转移. RESTful是一种软件架构风格. ...

  4. scp 专题

    Tips:阿里云中需要使用内网ip,否则会一直阻塞Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例 ...

  5. 基于事件驱动的DDD领域驱动设计框架分享(附源代码)

    原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...

  6. 通过异步程序调用(APC)实现的定时功能

    定时器是一个在特定时间或者规则间隔被激发的内核对象.结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行.本文的例子代码显示了如何实现. 使用本定时器时,你需要把常量_WIN32_WI ...

  7. jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法

    转:http://www.cnblogs.com/wiseant/p/4553837.html 最近在一个ASP.NET MVC5项目中使用Bootstrap的模态窗(弹出层)来让用户填写内容,其中的 ...

  8. Tcptrack —— TCP 连接的嗅探器

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  9. RPG Maker MV游戏解包

    该文章最新版本请前往:https://www.crowsong.xyz/127.html 前言 使用Petschko's RPG-Maker-MV File-Decrypter进行解包 使用Petsc ...

  10. T4随记

    关于T4模板的信息我就不赘述了,百度一大堆 MSDN的介绍 https://msdn.microsoft.com/zh-cn/library/bb126478.aspx 下面是简单的一个示例,从类中获 ...