1.首先。我们用surf算法生成图像库中每幅图的特征点及描写叙述符。

2.再用k-means算法对图像库中的特征点进行训练,生成类心。

3.生成每幅图像的BOF。详细方法为:推断图像的每一个特征点与哪个类心近期。近期则放入该类心,最后将生成一列频数表。即初步的无权BOF。

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

5.对query进来的图像也进行3.4步操作,生成一列query图的BOF。

6.将query的Bof向量与图像库中每幅图的Bof向量求夹角,夹角最小的即为匹配对象。

图像检索中应用LSH实现高速搜索。其在一定概率的保证下攻克了高维特征查询的问题,但笔者在应用LSH结合SIFT特征实践图像检索实验时,因为每张图像涉及上百个特征,那么在查询一张图片时,须要进行上而次的特征查询,即便是将查询图片的特征点数筛选至50%的量,一次图片查询须要进行的特征查询次数亦不容小窥。那么有没有方法能够将随意图片的全部特征向量用一个固定维数的向量表出,且这个维数并不因图片特征点数不同而变化?本篇要讲到的方法能够解决问题,虽然它并非因这个问题而生的。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="这里写图片描写叙述" title="">

Bag-of-Words模型源于文本分类技术,在信息检索中,它假定对于一个文本,忽略其词序和语法、句法。

将其只看作是一个词集合,或者说是词的一个组合。文本中每一个词的出现都是独立的,不依赖于其它词是否出现,或者说这篇文章的作者在随意一个位置选择词汇都不受前面句子的影响而独立选择的。



图像能够视为一种文档对象,图像中不同的局部区域或其特征可看做构成图像的词汇,当中相近的区域或其特征能够视作为一个词。这样,就能够把文本检索及分类的方法用到图像分类及检索中去。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="这里写图片描写叙述" title="">

Accelerating Bag-of-Features SIFT Algorithm for 3D Model Retrieval

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">http://img.blog.csdn.net/20131002212031828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

Bag of Features Codebook Generation by Self-Organisation

Bag-of-Features很多其它地是用于图像分类或对象识别。在上述思路下对训练集提取Bag-of-Features特征,在某种监督学习(如:SVM)的策略下。对训练集的Bag-of-Features特征向量进行训练,获得对象或场景的分类模型。对于待測图像,提取局部特征,计算局部特征与词典中每一个码字的特征距离。选取近期距离的码字代表该特征。建立一个统计直方图。统计属于每一个码字的特征个数,即为待測图像之Bag-of-Features特征。在分类模型下,对该特征进行预測从实现对待測图像的分类。

Classification Process

1、局部特征提取:通过切割、密集或随机採集、关键点或稳定区域、显著区域等方式使图像形成不同的patches。并获得各patches处的特征。



当中,SIFT特征较为流行。



2、构建视觉词典:



由聚类中心代表的视觉词汇形成视觉词典:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="这里写图片描写叙述" title="">

3、生成码书。即构造Bag-of-Features特征,也即局部特征投影过程:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="这里写图片描写叙述" title="">

4、SVM训练BOF特征得分类模型,对待測图像BOF特征预測:



Retrieval Process

Bag-of-words在CV中的应用首先出如今Andrew Zisserman[6]中为解决对视频场景的搜索,其提出了使用Bag-of-words关键点投影的方法来表示图像信息。

兴许很多其它的研究者归结此方法为Bag-of-Features。并用于图像分类、目标识别和图像检索。

在Bag-of-Features方法的基础上,Andrew Zisserman进一步借鉴文本检索中TF-IDF模型(Term Frequency一Inverse Document Frequency)来计算Bag-of-Features特征向量。

接下来便能够使用文本搜索引擎中的反向索引技术对图像建立索引,高效的进行图像检索。



Hamming embedding and weak geometric consistency for large scale image search

实现检索的过程同分类的过程无本质的差异,很多其它的是细节处理上的差异:

1、局部特征提取。

2、构建视觉词典。

3、生成原始BOF特征;

4、引入TF-IDF权值:

TF-IDF是一种用于信息检索的经常使用加权技术,在文本检索中。用以评估词语对于一个文件数据库中的当中一份文件的重要程度。词语的重要性随着它在文件里出现的频率成正比添加,但同一时候会随着它在文件数据库中出现的频率成反比下降。TF的主要思想是:假设某个关键词在一篇文章中出现的频率高。说明该词语能够表征文章的内容。该关键词在其它文章中非常少出现,则觉得此词语具有非常好的类别区分度,对分类有非常大的贡献。IDF的主要思想是:假设文件数据库中包括词语A的文件越少。则IDF越大,则说明词语A具有非常好的类别区分能力。

词频(Term Frequency。TF)指的是一个给定的词语在该文件里出现的次数。如:tf = 0.030 ( 3/100 )表示在包括100个词语的文档中, 词语’A’出现了3次。

逆文档频率(Inverse Document Frequency。IDF)是描写叙述了某一个特定词语的普遍重要性。假设某词语在很多文档中都出现过,表明它对文档的区分力不强,则赋予较小的权重;反之亦然。如:idf = 13.287 ( log (10,000,000/1,000) )表示在总的10,000,000个文档中,有1,000个包括词语’A’。

终于的TF-IDF权值为词频与逆文档频率的乘积。

5、对查询图像生成相同的带权BOF特征;

6、查询:初步是通过余弦距离衡量,至于建立索引的方法还未学习到,望看客指点。

Issues

1、使用k-means聚类。除了其K和初始聚类中心选择的问题外。对于海量数据,输入矩阵的巨大将使得内存溢出及效率低下。有方法是在海量图片中抽取部分训练集分类,使用朴素贝叶斯分类的方法对图库中其余图片进行自己主动分类。另外,因为图片爬虫在不断更新后台图像集。又一次聚类的代价显而易见。

2、字典大小的选择也是问题,字典过大,单词缺乏一般性,对噪声敏感,计算量大,关键是图象投影后的维数高;字典太小。单词区分性能差,对类似的目标特征无法表示。

3、类似性測度函数用来将图象特征分类到单词本的相应单词上,其涉及线型核。塌方距离測度核。直方图交叉核等的选择。

4、将图像表示成一个无序局部特征集的特征包方法,丢掉了全部的关于空间特征布局的信息。在描写叙述性上具有一定的有限性。为此。 Schmid[2]提出了基于空间金字塔的Bag-of-Features。

5、Jégou[7]提出VLAD(vector of locally aggregated descriptors),其方法是如同BOF先建立出含有k个visual word的codebook。而不同于BOF将一个local descriptor用NN分类到近期的visual word中。VLAD所採用的是计算出local descriptor和每一个visual word(c­i)在每一个分量上的差距,将每一个分量的差距形成一个新的向量来代表图片。

Resources

Two bag-of-words classifiers(Matlab)

Bag of Words/Bag of Features的Matlab源代码

一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo

Bag of Features (BOF)图像检索算法的更多相关文章

  1. OpenCV探索之路(二十八):Bag of Features(BoF)图像分类实践

    在深度学习在图像识别任务上大放异彩之前,词袋模型Bag of Features一直是各类比赛的首选方法.首先我们先来回顾一下PASCAL VOC竞赛历年来的最好成绩来介绍物体分类算法的发展. 从上表我 ...

  2. MATLAB 图像分类 Image Category Classification Using Bag of Features

    使用MATLAB实现图像的识别,这是MATLAB官网上面的例子,学习一下. http://cn.mathworks.com/help/vision/examples/image-category-cl ...

  3. Bag of Words/Bag of Features的Matlab源码发布

    2010年11月19日 ⁄ 技术, 科研 ⁄ 共 1296字 ⁄ 评论数 26 ⁄ 被围观 4,150 阅读+ 由于自己以前发过一篇文章讲bow特征的matlab代码的优化的<Bag-Of-Wo ...

  4. LIRe提供的图像检索算法的速度

    本文翻译了LIRe的作者Mathias Lux发表的论文<LIRe: Lucene Image Retrieval - An Extensible Java CBIR Library>.主 ...

  5. 实习日记:图像检索算法 LSH 的总结与分析(matlab)

    最开始仿真和精度测试,基于 matlab 完成的. Demo_MakeTable.m (生成 Hash 表) %======================================== %** ...

  6. 实习日记:图像检索算法 LSH 的总结与分析

    先贴上这两天刚出炉的C++代码.(利用 STL 偷了不少功夫,代码待优化) Head.h #ifndef HEAD_H #define HEAD_H #include "D:\\LiYang ...

  7. 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)

    iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...

  8. 浅析 Bag of Feature

    Bag of Feature 是一种图像特征提取方法,它借鉴了文本分类的思路(Bag of Words),从图像抽象出很多具有代表性的「关键词」,形成一个字典,再统计每张图片中出现的「关键词」数量,得 ...

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

    http://blog.csdn.net/u014568921/article/details/52518587 图像相似性搜索的原理 BOW 原理及代码解析 Bag Of Visual Words ...

随机推荐

  1. HIVE的几种优化

    5 WAYS TO MAKE YOUR HIVE QUERIES RUN FASTER 今天看了一篇[文章] (http://zh.hortonworks.com/blog/5-ways-make-h ...

  2. scrapy框架设置代理

    网易音乐在单ip请求下经常会遇到网页返回码503的情况经查询,503为单个ip请求流量超限,猜测是网易音乐的一种反扒方式因原音乐下载程序采用scrapy框架,所以需要在scrapy中通过代理的方式去解 ...

  3. python音频处理相关类库

    一.eyeD3 以下是eyed3的官方介绍 eyeD3 is a Python tool for working with audio files, specifically mp3 files co ...

  4. 计算机科学书籍推荐和CSS、js书籍推荐

    计算机科学:<深入理解计算机系统>,这是基础知识 JavaScript:JavaScript高级程序设计:大名鼎鼎的红宝书 <精通CSS:高级Web标准解决方案>:因为我觉CS ...

  5. 紫书 例题 9-4 UVa 116 ( 字典序递推顺序)

    这道题在递推方式和那个数字三角形有一点相像,很容易推出来 但是这道题要求的是字典序,这里就有一个递推顺序的问题 这里用逆推,顺推会很麻烦,为什么呢? 如果顺推的话,最后一行假设有种情况是最小值,那么你 ...

  6. Vue2.0八——知识点整理

    1.active-class是哪个组件的属性?嵌套路由怎么定义? 答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答 ...

  7. 对比了解Grafana与Kibana的关键差异

    对比了解Grafana与Kibana的关键差异 http://www.infoq.com/cn/articles/grafana-vs-kibana-the-key-differences-to-kn ...

  8. CODEVS——T 1404 字符串匹配

    http://codevs.cn/problem/1404/ 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Desc ...

  9. [Python] Problem with Default Arguments

    Default arguments are a helpful feature, but there is one situation where they can be surprisingly u ...

  10. 华为OJ平台试题 ——数组:整形数组合并

    代码: /* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */ #include <stdio.h> #define N 256 #define M 512 /* * 合并数组 ...