Bag of Word, 顾名思义,即将某些Word打包,就像我们经常会把类似的物品装到一个柜子,或者即使是随意打包一些物品,也是为了我们能够方便的携带,在对大数据作处理的时候,为了能够方便的携带这些数据中的信息,与其一个一个的处理,还不如打包来的容易一点。

      Bag of Word 因其理论简单,易懂,在vision界也得到了广泛的应用,有人将Bag of Word改成Bag of Visual Word来提出,充其量只是炒炒概念罢了,其基本的思想还是BOW(Bag of Word)
      Anyway, 简单谈一些关于Bag of Word的东西:
      Bag of word实现步骤:
      step 1: 大数据聚类,找到适当的聚类中心点----Vocabulary
      step 2: 训练数据像聚类中心映射,得到每一个训练数据在该聚类中心空间的一个低维表示。
      step 3: 得到每一个训练数据的低维表示后,选择适当的分类器训练。
      step 4: 对新来的样本先映射到聚类中心空间,然后利用得到的分类器进行预测。
     在视觉领域,很希望能够利用已知的目标或者图像去得到相关的信息,这在机器人......等领域有着很广泛的应用,所以利用视觉领域中图像检索这一块解释一些基本问题。
     
      Vocabulary建立(数据聚类):
      以SIFT 128维特征作为例子。例如现在有1000张训练图片,对每一张训练图片都提取SIFT的128维特征,那么最终可以得到 N(i) * 128的特征,N(i)代表第几张图特征点的个数,因为图片并非完全相同,所以特征点的个数当然是不一样的。接下来就是建立词典的过程,利用现在常用的一些聚类算法,kmeans就OK,选择聚类中心点的个数,1000个也好, 10000个也罢,聚类完成后,得到的就是一个1000(10000) * 128聚类中心点的空间,称之为词典
      这个词典就好比一个容器,通俗一点就是一个直方图的基,利用这个去统计这些训练样本的个信息。
      训练样本的映射:
      此时已经得到了一个直方图的基,如下图:
图1: 图中,n表示聚类中心点的个数,用BOW中的文字表示即使字典的个数。
      这些直方图的基在像是在空间的一些三维空间的基向量i, j, k, 利用这些基向量去构造别的向量,只需要知道特定的系数就行。所以接下来的步骤就是将原始的图像特征(SIFT 128维)向这些基向量作映射,得到相关的系数,如图:
图2:上图中给出了两个类别的直方图
      通过相关的映射,得到不同类别的一个类别的直方图的统计,这样整个BOW特征提取过程就算是完全实现了。接下来如何进行匹配,就是选择分类器的问题了。
      分类器的选择:
      其实BOW之所以有bag的意思也是将相似的特征进行打包,得到统计的一个范围,这个范围就是直方图的某一个bin。在进行图像检索的时候,接下来就是进行分类器的训练与识别了,例如朴素贝叶斯分类器,支持向量机之类。一般利用BOW的时候,大多数人还是选择支持向量机这玩意,有实验证明BOW结合SVM效果要好于其他的分类器。不过,我没做过对比实验,这里也算提一下。
      新来样本的识别:
      在训练好分类器后,对于新来的样本,同样先提取SIFT特征,然后将SIFT特征映射到上面图1中的词典中去,然后得到的直方图就可以通过分类器进行分类了。如:

图3 新图片的BOW直方图特征

上图是一张新图映射到词典时得到的直方图,可以看出,这张图片相对于图2的情况而言,更接近类别1,所以通过分类器,理想的装填应该是判断为1。 但是我们都知道,理想状态的出现可能性太小,所以BOW难免会有出错的时候,通过阅读几篇论文,发现现在BOW的识别率大概在60%-80%之间,当然了一方面是数据量巨大的问题,另外一方面也是因为图像之间的相似度高。所以整体来讲,BOW的识别率还是再可以接受的范围

Bag of Word相关推荐

  1. Bag of Word闲谈

          Bag of Word, 顾名思义,即将某些Word打包,就像我们经常会把类似的物品装到一个柜子,或者即使是随意打包一些物品,也是为了我们能够方便的携带,在对大数据作处理的时候,为了能够方 ...

  2. one-hot(独热)、bag of word(词袋)、word-Embedding(词嵌入)浅析

    目录 词袋模型 one-hot word-embedding 我们知道,传统的数据挖掘任务面向的是结构化数据.结构化数据很好理解,就是很有结构的数据嘛. 比如下面这张银行客户数据库中的表格: 编号 姓 ...

  3. 用词袋(bag of word)实现场景识别

    前段时间在standford university的计算机视觉:算法与应用这门课上做了一个小作业--利用词袋实现场景识别(Scene recognition with bag of words),下面 ...

  4. Bag of Tricks for Efficient Text Classification论文阅读及实战

    本文目录 一.Fasttext算法综述 二.原理介绍及优化策略 三.Fasttext算法实战(注:以下代码仅在Linux系统下使用!) 四.参考资料 本文目录(仅做浏览用,暂时不支持页面内跳转) 一. ...

  5. BoW词袋模型Bag of Words cpp实现(stable version 0.01)

    致谢:基础框架来源BoW,开发版本在此基础上进行,已在Ubuntu.OS X上测试通过,Windows需要支持c++11的编译器(VS2012及其以上). 使用 代码下载地址:bag-of-words ...

  6. Bag of Words cpp实现(stable version 0.01)

    致谢:基础框架来源BoW,开发版本在此基础上进行,已在Ubuntu.OS X上测试通过,Windows需要支持c++11的编译器(VS2012及其以上). 使用 代码下载地址:bag-of-words ...

  7. 【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

    文章目录 Unsupervised Learning Word Embedding 用一个vector来表示一个word的几种方法 1-of-N Encoding Word Class Word Em ...

  8. bag of words matlab,Bag of words(matlab实现)

    Bag of Word主要思想:将训练样本特征Kmeans聚类,对测试样本的每个特征,计算与其最近的类心,相应类别计数count加1,这样每个测试样本可以生成ncenter维的直方图. 比如:训练样本 ...

  9. 计算机视觉——Bag Of features图像检索

    计算机视觉--Bag Of features图像检索 原理 什么是图像检索 什么是Bag Of Word模型 什么是sift特征提取 什么是视觉词典 什么是TF-IDF 基于BOW的图像检索步骤 结果 ...

最新文章

  1. Centos7.2部署DHCP服务
  2. java 中对象引用,以及对象赋值
  3. 【APICloud系列|25】 easeChat模块(环信-即时通讯)的实现
  4. 求1+2+3+……+100的累加和。
  5. thymeleaf js 动态拼接html_Thymeleaf从入门到吃灰
  6. 苹果Mac分享几个爱用音乐播放器
  7. 同样是创业,同样是两年,有的已经做了几千万,这边已经内斗死了
  8. Linux自学之旅-安装篇(一)
  9. win7需要计算机管理员权限,解决方案:Win7安装软件需要管理员权限解决方案
  10. 【理财】富爸爸穷爸爸
  11. 网络协议-TCP和UDP最完整的区别介绍
  12. Hacking 基础关
  13. python 实现模拟鼠标点击器 可运行 附源码
  14. 如何安装My SQL
  15. python翻译-python实现在线翻译
  16. Laravel 阿里大鱼短信接口
  17. 7——18 day 24 35min 类属性
  18. ModelSim 修改测量时间显示的单位
  19. 看完这些面试必问的Linux小知识,我保证你面试后会来给我的文章一键三连
  20. IEMOCAP数据集

热门文章

  1. 约束理论学习随笔(2)---DBR系统
  2. 权变措施 弹回计划 应急计划的区别
  3. WinCE6.0的批量编译
  4. feign响应拦截_[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用
  5. ios 获得通讯录中联系人的所有属性 亲测,可行 兼容io6 和 ios 7
  6. 30个Oracle语句优化规则详解
  7. 企业如何测试邮件系统反垃圾反病毒的实际效果
  8. 剑指offer(Java实现) 顺时针打印矩阵
  9. 数据结构(C语言实现)第1章课后习题参考答案
  10. cvpr2018论文阅读