致谢:基础框架来源BoW,开发版本在此基础上进行,已在Ubuntu、OS X上测试通过,Windows需要支持c++11的编译器(VS2012及其以上)。

使用

代码下载地址:bag-of-words-stable-version,这个是稳定版,上层目录里的开发版不要下载,那是我添加测试新模块所用的。

编译

修改Makefile文件,如果你的系统支持多线程技术,将

CFLAGS = -std=c++11

修改为

CFLAGS = -std=c++11 -fopenMP # if openMP accesses, using this

修改完上面后,再修改编译所需的OpenCV和cppsugar,即

INCPATH = -I/usr/local/include -I/Users/willard/codes/cpp/opencv-computer-vision/cpp/BoVW/cppsugar
LIBPATH = -L/usr/local/lib

/usr/local/include/usr/local/lib分别是OpenCV所在的包含头文件目录路径和库目录路径,修改为你本机所在的目录即可。后面的cppsugar目录同样换成你本机的目录。 修改。这些修改完成后,执行下面命令进行编译:

make

编译后即可在所在目录生成可执行文件。

生成图库列表文件

对于待检索的图像库imagesDataSet,执行下面命令

python imgNamesToTXT.py -t /Users/willard/Pictures/imagesDataSet

上面执行后生成一个imageNamesList.txt的文件,该文件中包含的是每幅图像的路径及其图像文件名。

建立索引

执行下面命令,会完成特征提取、生成词典、量化生成bag of word向量:

./index imageNamesList.txt

上面命令执行玩,会生成两个文件bows.datdict.dat,分别存放的是图像库每幅图像的bag of word向量以及词典。

查询图像

按下面命令进行查询

./search /Users/willard/Pictures/first1000/ukbench00499.jpg imageNamesList.txt

其中/Users/willard/Pictures/first1000/ukbench00499.jpg是查询图像,执行完后,会生成一个result.html的文件,应为要显示检索结果,所以这里采用的是用html页面的方式显示检索结果的,用浏览器打开即可。

批量测试

为了评价检索的效果,可以使用ukbenchScores.cpp计算在ukbench图像库上的NS score(NS分数),下面是在ukbench1000张图像上计算的NS score:

Ukbench first 1000 images, the NS-scores: 3.358, with tf*idf and histogram intersection kernel distance.

Ukbench first 1000 images, the NS-scores: 3.602, with tf and histogram intersection kernel distance.

Bag of words原理

关于bag of words的原理,可以查阅我的博文BoW图像检索Python实战和Bag of Words模型。注意,该框架中采用的相似性度量方式是直方图相交(histogram intersection kernel)的方法,测试发现直方图相交的方法要比用余弦距离度量的方式效果更好,但计算速度较慢。

开发版本bag-of-words-dev-version中加入了逆文档词频以及RANSAC重排,待效果达到预期后,会添加到稳定版中。

from: http://yongyuan.name/blog/bag-of-words-cpp-implement.html

BoW词袋模型Bag of Words cpp实现(stable version 0.01)相关推荐

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

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

  2. 词袋模型(bag of words)构建实战

    词袋模型(bag of words)构建实战 目录 词袋模型(bag of words)构建实战 语料数据预处理 词袋模型(BOW)构建

  3. BoW词袋模型原理学习及Python实现

    文章目录 BoW词袋模型原理 为什么要用BoW模型描述图像 构建BoW码本步骤 编码 测试 BoW词袋模型原理 BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量.它 ...

  4. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  5. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、xgboost模型预测推理并使用混淆矩阵评估模型、可视化模型预测的概率分布

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.xgboost模型预测推理并使用混淆矩阵评估模型.可视化模型预测的概率分布 目录

  6. R+NLP︱text2vec包——BOW词袋模型做监督式情感标注案例(二,情感标注)

    在之前的开篇提到了text2vec,笔者将其定义为R语言文本分析"No.1",她是一个文本分析的生态系统.笔者在学习之后发现开发者简直牛!基于分享精神,将自学笔记记录出来.开篇内容 ...

  7. BoW(词袋Bag of words)

    Bag-of-words词袋模型最初被用在信息检索领域.例如检索一篇文档,只需考虑文档中出现单词的频率,而不用考虑语法语序等.在图像领域,如果把一幅图像当作文档,图像中的图像块的特征向量视为文档内的词 ...

  8. 【ORB-SLAM3】BOW词袋模型

    基于视觉的闭环检测可以描述为,给定一张输入图像,在历史图像数据库中高效准确地搜索出与之相似的图像.而通常的穷举搜索法效率低下,类帧差法受制于图像视角变化.光照变化.曝光等因素无法稳定识别相似图像. 词 ...

  9. 词袋模型BoW图像检索Python实战

    前几天把HABI哈希图像检索工具包更新到V2.0版本后,小白菜又重新回头来用Python搞BoW词袋模型,一方面主要是练练Python,另一方面也是为了CBIR群开讲的关于图像检索群活动第二期而准备的 ...

最新文章

  1. randaugment
  2. 对象 对象 java 1615134277
  3. tomcat 版本_Tomcat竟然有bug,这我能信?
  4. [资料]自动化e2e测试 -- WebDriverJS,Jasmine和Protractor
  5. 玩人工智能的你必须知道的语音识别技术原理
  6. 创建.ignore文件
  7. 如何制作个人网站(如何搭建个人博客)
  8. 最顶尖的12个IT技能
  9. Pigx官方文档地址
  10. 无法定位程序输入点dxgiget_无法定位程序输入点于动态链接库dxgi.dll上怎么解决?-51dll帮助...
  11. 金蝶KIS商贸高级版V6.1开发实现‘序时簿中心’增加'联系人'字段列
  12. 机器学习 :训练集、验证集、测试集分配比例
  13. 【Python基础】Python语法入门
  14. mindray心电监护仪使用说明_迈瑞心电监护仪说明书
  15. 从头到脚撸一个多人视频聊天 — WebRTC 实战(一)
  16. opencv获得相机的最大分辨率
  17. PHP连接.mdb文件
  18. 飞鸽传书如何在VMware下进行通信
  19. 大面积无线WIFI覆盖 H3C WX3010E(AC+PoE三层交换机)+ H3C WA2620E、WA4320无线AP +华为USG6310S防火墙
  20. PHP获取一个月有多少天

热门文章

  1. Lucene学习总结之六:Lucene打分公式的数学推导
  2. Learning to rank在淘宝的应用
  3. 阿里“三活”数据中心实践经验:没人能做,我们就自己做
  4. 能做存储的超级计算机——任宇翔和以色列团队的创业故事
  5. Spring-AOP 基于Schema配置切面
  6. Shell脚本攻略05-数组和关联数组
  7. 数据结构与算法笔记(四)—— 栈
  8. C语言如何使用函数交换两个变量的值
  9. python 递归乘法
  10. 安卓屏幕适配方案(根据今日头条方案,升级版)