• 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

    我们这篇文章一般说的都是二进制描述子。

    有人尝试过带权重的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+eta)来得到。

    我们现在想要把数值(c)转换成(b=b(c)),然后把它加到原来的描述子(d)中,得到一个新的描述子:(mathbf{d}_{star}=langlemathbf{d}, mathbf{b} angle).


    为了把两个值(c)(c')两个值的差异成功的转换到对应的二进制string中,我们需要保证:

    [L_{mathcal{H}}left(b(c), bleft(c^{prime} ight) ight) proptoleft|c-c^{prime} ight| ]

    为了计算(b(c)),我们用等间距来量化([0, 1)),距离是(1/I). 这样的话,我们需要用一个((I-1))bit的二进制string来表示(b(c)).

    [b(c)=leftlangle b_{0}(c), b_{1}(c), ldots, b_{I-2}(c) ight angle ]

    这样的话(b_i(c))的值如果c在一个更高的interval的话就是1(PS.注意这里本质不是十进制和二进制的转化。因为是为了hamming distance的计算,处理的方式还更粗暴一些。如下图. PS2.其实也可以改成十进制和二进制的转化,这样空间上还更高效一些。只要计算distance的时候修改一下,然后跟原来计算的hamming distance结合一下就行。)。

    [b_{i}(c)=left{egin{array}{ll}{1} & { ext { iff } c>frac{1}{I}(i+1)} \ {0} & { ext { otherwise }}end{array} quad i in{0,1, ldots, I-2} ight. ]

    1562736987027

    这个图就很容易说明了。

    上述的方法也可以在很多维线索的时候使用。

    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的值(iin I)可以用一个二进制string来表示,$$mathbf{b}=leftlangle b_{0}(c), b_{1}(c), ldots, b_{I-1}(c) ight angle$$。如果是第i类,那么(b_i(c))就是1,其他都是0.

    这儿也有一个案例: Converting Semantic Labels (SL)。

    1562738235837

    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} ight) approx L_{mathcal{H}}left(mathbf{d}, mathbf{d}^{prime} ight)$$

    为了解决这个问题,我们引入了augmentation weight (lambda >= 0),然后定义了一下有权重的hamming distance:

    [L_{mathcal{H}}^{lambda}left(mathbf{d}_{star}, mathbf{d}_{star}^{prime} ight)=L_{mathcal{H}}left(mathbf{d}, mathbf{d}^{prime} ight)+lambda L_{mathcal{H}}left(mathbf{b}, mathbf{b}^{prime} ight) ]

    至于具体怎么搞,估计得调参了。这个文章也有一些推荐值。

    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最厉害。

    1562740616338

    上面这个图我没分析出啥,看下面那个。

    1562741017054

    很明显(lambda = 16)的都提升了。

    5. Conclusion

    我们牛逼

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/tweed/p/11163964.html
Copyright © 2020-2023  润新知