Hamming Embedding 汉明嵌入

来源:互联网 发布:知乎成功的原因 编辑:程序博客网 时间:2024/04/30 11:04
基于Hamming embedding and weak geometric consistency for large scale image search论文的学习博客

本文从两个方面来介绍HE算法: 
1.简要介绍一下BOF,以及它的投票机制 
2.针对BOF的改进,局部图像描述子的汉明嵌入


voting interpretation of bag-of-features 
这是图像检索中常用到的一个模型,我觉得和bag-of-word差不多的吧,一种词袋模型。提取database中所有图片的特征点,对此进行聚类,(例如聚类成k个类),可以将这些特征点划分成k个类,由此建立一个词典模型。这里可以想象成文本中的词语,例如我们有冰淇凌、火腿、牛奶、连衣裙、裤子、T恤这几个词,可以聚类成2个类(食物和衣服),那么词典中就有v=[v1(食物),v2(衣服)]这个向量模型。这样子,每个特征描述子都有对应的聚类中心,如果两个特征描述子如果对应于同一个聚类中心,那么这两个描述子匹配成功。这时候如果给定一个查询图片,它与数据库中所有图片进行比较,如果描述子匹配数目多,相似度越高,则越容易匹配成功。 
这里重点讲一讲投票的过程: 
yi` 给定查询图片的局部描述子 
xi,j 数据库第j张图片(1《i《n)的局部描述子

1.数据库第j张图片相似度分数初始化 sj = 0 
2.对于查询图片的每个描述子yi和数据库每个描述子xi,y 
![这里写图片描述](http://img.blog.csdn.net/20150801151827865) 
f为xi,j和yi
的匹配函数,f函数可以有很多种,如欧式距离、k-NN等 
这里写图片描述 
在这里使用匹配函数采用这种方式定义: 
这里写图片描述 
根据k-means聚类得到量化器q,q(x)是离描述子x最近的聚类中心。如果两个描述子的q(x) =q(y),则两个描述子在空间上有很大概率相似。 
3.最后就是利用bof的voting机制对数据库中的每张图片进行投票,计算相似度。 
这里写图片描述 
这里sj是每张图片的匹配分数,分数越高,则query图片与database中第j张图片的相似度越高。其中m是query图片的特征总数,mj是database中第j张图片的特征总数,这里除以mj*m是 做了一个归一化处理,防止某张图片特征数过大或过小。而后面一个等式是做的一个匹配上的改进,利用聚类索引号码k进行匹配,计算同属于一类的query和database中图片的特征数,进行voting得分计算。 
ps: 以上所提及的score是未考虑到视觉单词的权重,此处再进行改进,加入tf-idf权值, 
这里写图片描述

然而bof也存在不少缺点,主要集中在选择聚类中心k值数上。 
当k值过低时,虽然噪音降低,但是同一聚类的特征间差距可能会比较大;当k值过高时,则容易导致本应分属于同一类的特征点,则分至其他类中,造成较大误差。 
这里写图片描述


Hamming embedding of local image descriptors 
汉明嵌入的主要目的是解决计算复杂度,对128维特征进行降维,减少计算量。并且针对bof模型进行改进,对同一聚类中心的特征计算由0和1构成的汉明编码值,若同属于一个中心,则再计算两汉明编码向量的距离,若小于阈值则match,这样减少了单纯比较sift特征的复杂度,并提高了bof模型的精度。

具体步骤分成如下两步:1.off-line 学习过程,即对数据集数据进行离线处理;2.on-line 匹配过程,即query图片与数据集图片进行匹配

1.off-line操作 
1>产生正交P矩阵,用以降维。先随机产生一个128*128维高斯矩阵,再进行QR分解,并取前db(这里取db=64)行,作为降维的正交P矩阵64*128维。 
2>提取数据集图片的sift特征点,并进行聚类,这里可以采用k-means方法进行聚类。 
3>对特征x进行降维,采用z=P*x,降维成64维向量。计算该特征对应的聚类中心q(x)。可以使用flann、暴力匹配、或者转置与码本向量相乘取最大值得到匹配项这些方法来得到该特征的聚类中心。 
4>将同属于一个聚类中心的所有特征向量进行中值计算,计算该类的64维中值向量。 
5>计算所有特征的汉明编码b(x)=(b1(x),b2(x)““`b64(x)) 
这里写图片描述 
这里tq(x),i是指的聚类中心q(x)的中值向量的第i维值。

2.on-line操作 
1>提取query图片的sift特征点,并正交降维化 
2>计算特征点对应的聚类中心 
3>与中值向量比较得到其汉明编码值b(x) 
4>进行匹配。与bof中的matching function不同的是,特征点匹配条件从原来的聚类中心数相同,改成了当聚类中心数相同时进一步比较两个特征向量的汉明距离,小于阈值ht时,则特征点匹配 
这里写图片描述 
利用这个改进匹配函数,进行投票,计算sj的方法同bof中的计算方法,只是利用k进行简化计算的式子不能再用了。另外,ht的取值与数据集选择、聚类中心数目有关系,论文中建议为20-25左右,而我在进行项目中所计算得到的是11,所以ht的参数值需要使用者根据实际数据进一步调整。

最后结果就不附上了,利用汉明嵌入确实使得匹配精度有了很大提升。另外根据论文思路在进行匹配时容易造成匹配速度较慢,可以先将图片中的每个特征点对应的聚类中心数进行排序,然后再匹配时利用归并排序的思想,这样可以将时间复杂度从O(N*M)降至O(Nlog(M))。


Reference: 
1: HE and WGC for large scale image search 论文paper 
2: http://blog.csdn.net/definewl/article/details/41217441 
3: http://blog.csdn.net/mqfcu8/article/details/44950609 
4: http://www.docin.com/app/p?id=1097516045 
5: http://www.codeproject.com/Articles/619039/Bag-of-Features-Descriptor-on-SIFT-Features-with-O 
6: http://blog.csdn.net/loadstar_kun/article/details/39450137

0 0
原创粉丝点击