BOW和LSH的一点理解

原创 2014年06月05日 17:25:24

  去年年底的时候在一篇博客中,用ANN的框架解释了BOW模型[1],并与LSH[2]等哈希方法做了比较,当时得出了结论,BOW就是一种经过学习的Hash函数。去年再早些时候,又简单介绍过LLC[3]等稀疏的表示模型,当时的相关论文几乎一致地得出结论,这些稀疏表示的方法在图像识别方面的性能一致地好于BOW的效果。后来我就逐渐产生两个疑问:

1)BOW在检索时好于LSH,那么为什么不在任何时候都用BOW代替LSH呢?
2)既然ScSPM,LLC等新提出的方法一致地好于BOW,那能否直接用这些稀疏模型代替BOW来表示图像的特征?


      粗略想了一下,心中逐渐对这两个问题有了答案。这篇博文我就试图在检索问题上,谈一谈Bag-of-words模型与LSH存在的必要性。

一、回顾LSH      

 LSH方法本身已经在很多文章中有过介绍,大家可以参考这里这里。其主要思想就是在特征空间中对所有点进行多次随机投影(相当于对特征空间的随机划分),越相近的点,随机投影后的值就越有可能相同。通常投影后的值是个binary code(0或者1),那么点xi经过N次随机投影后就可以得到一个N维的二值向量qi,qi就是xi经过LSH编码后的值。
问题是LSH是一种随机投影(见图1),上篇博客中也提到这样随机其实没有充分利用到样本的实际分布信息,因此N需要取一个十分大的数才能取得好的效果。因此,[2]中作者理所当然地就想到对LSH的投影函数进行学习(用BoostSSC和RBM来做学习),效果可以见图3。经过学习的LSH就可以通过更少的投影函数取得更好的区分性。这就和BOW的作用有点像了(都是通过学习对原始的特征空间进行划分),只不过BOW对特征空间的划分是非线性的(见图2),而LSH则是线性的。


图1


图2


图3


二、LSH VS BOW:检索的时候对什么特征做编码?
( 以下对LSH的介绍将不区分是否利用BoostSSC和RBM来做学习)。LSH一般是对图像的全局特征做LSH。比如图像的GIST,HOG,HSV等全局的特征。可以说,LSH是将一个特征编码成另外一个特征。这有一点降维的味道。经过N次随机投影后,特征被降维为一个长度为N的二值特征了。
BOW一般是对图像的局部特征做编码,比如SIFT,MSER等。BOW是将一组特征(局部特征)编码成一个特征(全局特征),带有一种aggregation的性质。这是它与LSH最大的不同之处。

三、LSH VS BOW:检索和排序的过程有何不同?
先来说说LSH。假设两个样本x1和y1经过LSH编码后得到q1和q2,那么两个样本之间的相似度可以这么计算:

    (1)

这就是LSH编码后两个样本之间的汉明距离。假设我们有一个dataset,把dataset里面的图片记做di。有一个查询图片query,记做q。假设已经对dataset和query的所有图片经过LSH编码了,会有两种方式进行图片检索:
a) 建立一张哈希表,di编码后的code做为哈希值(键值)。每个di都有唯一的一个键值。query编码后,在这张哈希表上进行查找,凡是与query不超过D个bits不同的codes,就认为是与query近邻的,也就把这些键值下的图片检索出来。这种做法十分快速(几乎不用做任何计算),缺点在于Hash table将会非常大,大小是。
b) 如果N大于30(这时(a)中的hash table太大了),通常采用exhaustive search,即按照(1)式计算q到di的hamming距离,并做排序。因为是binary code,所以速度会非常快(12M图片不用1秒钟就能得到结果)。

再来说说BOW如何做检索(这个大家都很熟悉了)。假设已经通过BOW得到了图像的全局特征向量,通常通过计算两个向量的直方图距离确定两个向量的相似度,然后进行排序。因为BOW特征是比较稀疏的,所以可以利用倒排索引提高检索速度。

四、BOW能否代替LSH

BOW是从一组特征到一个特征之间的映射。你可能会说,当“一组特征”就是一个特征(也就是全局特征)的时候,BOW不也能用来对全局特征做编码么?这样做是不好的,因为这时BOW并不和LSH等效。为什么呢?一幅图像只能提取出一个GIST向量,经过BOW编码后,整个向量将会只有在1个bin上的取值为1,而在其他bin上的取值为0。于是乎,两幅图像之间的相似度要么为0,要么为1。想像在一个真实的图像检索系统中,dataset中的相似度要么是0要么是1,相似的图片相似度都是1,被两级化了,几乎无法衡量相似的程度了。所以说BOW还是比较适合和局部特征搭配起来用。其实LSH的索引a)方法也很类似,Hash值(codes)一样的图像之间是比较不出相似程度的。确实也如此,但是LSH和BOW相比仍然有处不同,便是经过LSH编码后不会像BOW那样极端(整个向量只有1个值为1,其它值为0)。所以通过1)式计算出的相似度依然能够反映两特征原始的相似度。所以在比较全局特征的时候,还是LSH比较好用些。

五、LSH能否代替BOW

BOW在处理局部特征的时候,相当于两幅图像之间做点点匹配。如果把LSH编码的所有可能级联成一维向量的话,我觉得在一定程度上是起到了BOW相似的作用的。

六、LLC能否代替BOW

不完全可以吧。尽管在识别问题上,LLC性能是比BOW好,但是由于HKM[4]和AKM[5]的提出,BOW的码书可以训练到非常大(可以达到1000000维)。而LLC之类的学习方法就没那么幸运了,说到天上去也就几万维吧。尽管相同维数下BOW性能不那么好,但是放到100万维上,优势就体现出来了。所以在检索问题上,BOW依然如此流行。


add@2014/7/23

讲了好多废话,最主要的区别是想说,BOW不是一种distributed representation,而LSH却是一种distributed representation。


---------------------------- 

参考文献:

[1]Video Google: A Text Retrieval Approach to Object Matching in Videos

[2]Small Codes and Large Image Databases for Recognition

[3]Locality-constrained Linear Coding for Image Classification

[4]Scalable Recognition with a Vocabulary Tree

[5]Object retrieval with large vocabularies and fast spatial matching

-----------------

jiang1st2010

转载请注明出处:http://blog.csdn.net/jwh_bupt/article/details/27713453



正排索引(forward index)与倒排索引(inverted index)

一、正排索引(前向索引) 正排索引也称为"前向索引"。它是创建倒排索引的基础,具有以下字段。 (1)LocalId字段(表中简称"Lid"):表示一个文档的局部编号。 (2)WordId字段:表...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月08日 11:53
  • 6258

图像检索中为什么仍用BOW和LSH

去年年底的时候在一篇博客中,用ANN的框架解释了BOW模型[1],并与LSH[2]等哈希方法做了比较,当时得出了结论,BOW就是一种经过学习的Hash函数。去年再早些时候,又简单介绍过LLC[3]等稀...
  • hellotruth
  • hellotruth
  • 2014年06月14日 15:49
  • 2819

基于 Sift + Kmeans + 倒排索引 的图像匹配

一:整体思路
  • x519125613
  • x519125613
  • 2014年05月28日 20:59
  • 2365

图像检索中BOW和LSH的一点理解

去年年底的时候在一篇博客中,用ANN的框架解释了BOW模型[1],并与LSH[2]等哈希方法做了比较,当时得出了结论,BOW就是一种经过学习的Hash函数。去年再早些时候,又简单介绍过LLC[3]等稀...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月03日 19:00
  • 1505

SIFT+BOW 实现图像检索

本文概述图像检索是图像研究领域中一个重要的话题,广泛应用于医学,电子商务,搜索,皮革等。本文主要是探讨学习基于局部特征和词袋模型的图像检索设计。图像检索概述图像检索按照描述图像不同方式可以分为两类,一...
  • silence2015
  • silence2015
  • 2017年08月18日 18:02
  • 1025

局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍

局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍。本文主要介绍一种用于海量高维数据的近似最近邻快速查找技术——局部敏感哈希(Locality-Sensitive ...
  • icvpr
  • icvpr
  • 2013年10月06日 12:07
  • 77555

局部敏感哈希深度解析(locality-sensetive hashing, LSH)(一)

局部敏感哈希(locality-sensetive hashing) LSH解决高维数据近邻搜索问题。本文主要从LSH的基本理论,参数选取上讲解。...
  • baidu_21807307
  • baidu_21807307
  • 2016年06月30日 23:55
  • 1305

LSH(local sensitive hash)详解

LSH local sensitive hash,来自于 mining of massive datasets 包括lsh的详细介绍以及针对不同距离函数的LSH。 作用: 解决的问题:相似性计算...
  • hxxiaopei
  • hxxiaopei
  • 2012年09月17日 18:08
  • 18296

BoW(词袋)模型详细介绍

最近学习BoW模型,将自己网上看到的资料及对论文的理解,将BoW模型总结如下! BoW模型 Bag-of-words model (BoW model) 最早出现在自然语言处理(Natural ...
  • u010213393
  • u010213393
  • 2014年11月10日 21:33
  • 17630

Visual Recognition 课程材料

Meets: Fridays 1-4 pm in ACES 3.408 Instructor: Kristen Grauman  Email: grauman@cs Office: ...
  • roslei
  • roslei
  • 2016年09月29日 15:51
  • 542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BOW和LSH的一点理解
举报原因:
原因补充:

(最多只允许输入30个字)