• 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

    我们牛逼

  • 相关阅读:
    PAT 1053 住房空置率
    PAT 1078 字符串压缩与解压
    PAT 1024 科学计数法
    HDU 2078 复习时间
    HDU 2065 "红色病毒"问题
    网络协议分析
    多线程同步
    多线程程序设计
    消息队列通讯
    共享内存通讯
  • 原文地址:https://www.cnblogs.com/tweed/p/11163964.html
Copyright © 2020-2023  润新知