lecture7图像检索-七月在线-cv

时间:2021-04-02 08:55:53

http://blog.csdn.net/u014568921/article/details/52518587

图像相似性搜索的原理

BOW 原理及代码解析

Bag Of Visual Words 三大步

OpenCV应用----BOW篇

Bag of Word闲谈

论文提要“Visual Categorization with Bags of Keypoints”

Bag of Features (BOF)图像检索算法

老司机带你检测相似图片

哈希算法:均值~、感知~(DCT)、差异~

bag of words--》图像

由于图像中的词汇不像文本文档中的那样是现成的,我们需要首先从图像中提取出相互独立的视觉词汇,这通常需要经过三个步骤:

(1)特征检测

(2)特征表示

(3)单词本的生成,

除了用SVM的RBF核,还自己定义了一种核: histogram intersection kernel,直方图正交核。

  

特征使用的是BOK,统计图像中特定模式出现次数的直方图,这里的K是keypoints,即聚类中心。

4.通过tf-idf对频数表加上权重,生成最终的bof。(因为每个类心对图像的影响不同。比如超市里条形码中的第一位总是6,它对辨别产品毫无作用,因此权重要减小)。

  图像检索中应用LSH(位置敏感hash)实现快速搜索,其在一定概率的保证下解决了高维特征查询的问题,但笔者在应用LSH结合SIFT特征实践图像检索实验时,由于每张图像涉及上百个特征,那么在查询一张图片时,需要进行上而次的特征查询,即便是将查询图片的特征点数筛选至50%的量,一次图片查询需要进行的特征查询次数亦不容小窥。那么有没有方法可以将任意图片的所有特征向量用一个固定维数的向量表出,且这个维数并不因图片特征点数不同而变化?

  Bag-of-Features模型仿照文本检索领域的Bag-of-Words方法,把每幅图像描述为一个局部区域/关键点(Patches/Key  Points)特征的无序集合。使用某种聚类算法(如K-means)将局部特征进行聚类,每个聚类中心被看作是词典中的一个视觉词汇(Visual Word),相当于文本检索中的词,视觉词汇由聚类中心对应特征形成的码字(code word)来表示(可看当为一种特征量化过程)。所有视觉词汇形成一个视觉词典(Visual Vocabulary),对应一个码书(code book),即码字的集合,词典中所含词的个数反映了词典的大小。图像中的每个特征都将被映射到视觉词典的某个词上,这种映射可以通过计算特征间的距离去实现,然后统计每个视觉词的出现与否或次数,图像可描述为一个维数相同的直方图向量,即Bag-of-Features。

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

基于内容的图像检索,即CBIR(Content-based image retrieval),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。

googleNet就去掉了全连接层,但是VGG保留了

卷积层通常的维度比较高,池化曾可以达到保持图像信息的情况下,降低维度的目的

ANN-近似最近邻,包括LSH\K-MEANS\K-D tree  ---  基本思想:对空间不断做划分,缩小范围和提速

局部敏感哈希(Locality-Sensitive Hashing, LSH)

http://blog.csdn.net/joyce19920920/article/details/47065337

http://blog.csdn.net/icvpr/article/details/12342159

https://zhuanlan.zhihu.com/p/30388003

传统hash和局部敏感hash的区别:后者是把本来空间里相近的引射到也相近的空间

如果object p和q之间距离如果小于r(和上面ANN提出来的一样),那么他们就会有一个很大的概率会属于同一个类,如果p和q之间的距离大于cr那么他们会有一个比较小的概率属于同一个类,来看看怎么算这个相似概率,比如给出进行hash function的p =10001000,q = 11001100,那么p和q的相似性就等于1-2/8 = 3/4, 也就是红色代表的不想似的个数除以码长

通过建立Hash Table的方式我们能够得到O(1)的查找时间性能,其中关键在于选取一个hash function,将原始数据映射到相对应的桶内(bucket, hash bin),例如对数据求模:h = x mod w,w通常为一个素数。在对数据集进行hash 的过程中,会发生不同的数据被映射到了同一个桶中(即发生了冲突collision),这一般通过再次哈希将数据映射到其他空桶内来解决。

找到这样一些hash functions,使得经过它们的哈希映射变换后,原始空间中相邻的数据落入相同的桶内的话,那么我们在该数据集合中进行近邻查找就变得容易了,我们只需要将查询数据进行哈希映射得到其桶号,然后取出该桶号对应桶内的所有数据,再进行线性匹配即可查找到与查询数据相邻的数据。

这些hash function需要满足以下两个条件:

1)如果d(x,y) ≤ d1, 则h(x) = h(y)的概率至少为p1;

2)如果d(x,y) ≥ d2, 则h(x) = h(y)的概率至多为p2;

其中d(x,y)表示x和y之间的距离,d1 < d2, h(x)和h(y)分别表示对x和y进行hash变换。

满足以上两个条件的hash functions称为(d1,d2,p1,p2)-sensitive。而通过一个或多个(d1,d2,p1,p2)-sensitive的hash function对原始数据集合进行hashing生成一个或多个hash table的过程称为Locality-sensitive Hashing。

哈希表

http://www.jianshu.com/p/dbe7a1ea5928

CVPR是IEEE Conference on Computer Vision and Pattern Recognition的缩写,即IEEE国际计算机视觉与模式识别会议。

GIST特征

https://www.zhihu.com/question/33407439

HOG+SVM做行人检测

http://blog.csdn.net/leifeng_soul/article/details/52608575

基于deep learning的快速图像检索系统

http://blog.csdn.net/han_xiaoyang/article/details/50856583

积分图像

http://blog.csdn.net/maweifei/article/details/62217495

想让你的CBIR系统更快?

多的一个全连接-4096和100类分类全连接层中插了一层128个神经元并加有非线性变换,所以每一维是0-1的连续值

库:

FLANN 、Lshash。。。。

全连接层输出-针对电商

类别、属性、id