BOW词袋模型

转载自https://blog.csdn.net/u010213393/article/details/40987945

 

BoW模型

 

Bag-of-words model (BoW model) 最早出现在自然语言处理(Natural Language Processing)和信息检索(Information Retrieval)领域.。该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的单词(words)来表达一段文字或一个文档.。近年来,BoW模型被广泛应用于计算机视觉中。

基于文本的BoW模型的一个简单例子如下:

首先给出两个简单的文本文档如下:

        John likes to watch movies. Mary likes too.

        John also likes to watch football games.

基于上述两个文档中出现的单词,构建如下一个词典 (dictionary):

       {"John": 1, "likes": 2,"to": 3, "watch": 4, "movies": 5,"also": 6, "football": 7, "games": 8,"Mary": 9, "too": 10}

上面的词典中包含10个单词, 每个单词有唯一的索引, 那么每个文本我们可以使用一个10维的向量来表示。如下:

       [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

       [1, 1,1, 1, 0, 1, 1, 1, 0, 0]

该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频率。

 

 

BoW模型用于图像分类

 

 

2004年Gabriella Csurka、Christopher R. Dance等人基于词袋模型提出了一种图像的分类方法--Bag of Keypoints。图像中的单词(words)被定义为一个图像块(image patch)的特征向量(feature vector),图像的BoW模型即 “图像中所有图像块的特征向量得到的直方图”。

关于BoW模型用于图像分类提取特征直方图包含以下几个步骤:

1 特征提取

提取训练样本图像块中的特征向量,提取特征向量的方法可以使SIFT、SUFR等。该步骤生成的图像特征的描述子应该具有不变性对于光照的的变化、变形、碰撞等。

 

图1表示一幅通过SURF方法提取的特征点图像。

                                                    

                                          图1 SURF方法检测特征点

 

 

2 构建词典(Vocabulary)

    通过上步的特征提取,我们得到了所有训练样本图像中的特征。比如有N张训练图片,使用SIFT方法提取图像特征,我们最终将得到个特征点。接下来我们将使用NF个特征点构建词典,构建词典过程需要使用一些聚类算法,通常选用k-means方法。首先选取n个聚类中心,通过迭代算法算出最终的n个聚类中心。

 

图2为K均值聚类示意图。其中菱形、圆形、长方形、五边形代表四个类(由黄色圆框分别包围),通过K均值聚类算法后,将形成4个新的聚类中心,如图2中4个蓝色实心原点表示。

                               

                                       图2 K均值聚类示意图

n个聚类中心即我们构建的词典,以后每来一个新的特征点,都将该新特征点映射到n个聚类中心中的一个。

 

3 计算图像特征直方图

 

    通过K均值聚类算法后,得到n个新的聚类中心,即得到了特征直方图的一个基,如图3所示。

                                                                                                     

图3 特征直方图的基

接下来我们将图像的特征点聚类到n个已经生成的词典(即n个聚类中心)中,并且统计落入每个词典中的特征点的个数。这样我们可以得到一幅图像的特征直方图。

不同类别的特征直方图不一样,图4表示类1的特征直方图,图5表示类2的特征直方图,图6是一幅真实图像的特征直方图。

 

图4 类1的特征直方图

 

图5 类2的特征直方图

 

 图6 真实图像的特征直方图

 

 

上面是关于Bow用于图像分类提取特征直方图的基本方法,关于BOW模型用于图像分类,使用SVM训练请看下篇博文!

如有不正确希望多多包涵,欢迎指出共同交流学习。

 

Surf和Sift特征提取代码下载地址http://download.csdn.net/detail/u010213393/8159185

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本demo实现的是基于bow原理对图片进行分类,并实现对选取得测试集进行查找 BoW(Bag of Words)模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其序和语法、句法,仅仅将其看做是一些汇的集合,而文本中的每个汇都是独立的。简单说就是讲每篇文档都看成一个袋子(因为里面装的都是汇,所以称为袋,Bag of words即因此而来),然后看这个袋子里装的都是些什么汇,将其分类。如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的汇多些,而银行、大厦、汽车、公园这样的汇少些,我们就倾向于判断它是一篇描绘乡村的文档,而不是描述城镇的。 serachFeatures.py中,前面主要是一些通过parse使得可以在敲命令行的时候可以向里面传递参数,后面就是提取SIFT特征,然后聚类,计算TF和IDF,得到单直方图后再做一下L2归一化。一般在一幅图像中提取的到SIFT特征点是非常多的,而如果图像库很大的话,SIFT特征点会非常非常的多,直接聚类是非常困难的(内存不够,计算速度非常慢),所以,为了解决这个问题,可以以牺牲检索精度为代价,在聚类的时候先对SIFT做降采样处理。最后对一些在在线查询时会用到的变量保存下来。对于某个图像库,我们可以在命令行里通过下面命令生成BoF。 query.py只能每次查找一张图片,并返回与之匹配度(递减)最接近的6张图片
模型和embedding是自然语言处理中两种不同的表示文本的方法。 模型是一种简单的表示方法,它将文本视为一个袋子,将文本中的所有汇都放入其中,并统计每个汇的出现次数或者出现与否。在模型中,每个汇都是独立的,不考虑其法和语序的问题。因此,模型只关注汇的数量和频率,而不关注汇之间的关系。 而embedding是一种更高级的文本表示方法,它通过学习将文本中的汇转换为连续向量表示。这些向量被设计成能够捕捉汇之间的语义和语法关系。通过embedding,相似的汇在向量空间中会更加接近,可以进行汇的比较和计算。embedding模型的训练输入一般是上下文相关的对应的向量,而输出是特定汇的向量。 因此,模型更加简单,只考虑汇的数量和出现频率,而embedding则通过学习将汇转换为连续向量,能够更好地捕捉汇之间的语义关系。最终的选择要根据具体的任务和需求来决定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [one-hot(独热)、bag of word(袋)、word-Embedding(嵌入)浅析](https://blog.csdn.net/xixiaoyaoww/article/details/105459590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [模型BOW,bag of words)和向量模型(Word Embedding)概念介绍](https://blog.csdn.net/qq_43350003/article/details/105392702)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值