BoW用于图像检索的一般化流程

原文: https://i-blog.csdnimg.cn/blog_migrate/e452f1aec9eaeac7e7c50195cc2a0b82.png


--来自肉麻的开题报告

以经典BoW模型实现一个图像检索的方法,BoW检索的一般流程如图2所示:


图2  BoW检索流程

最初的BoW在图像检索中应用的流程主要分为以下几步:

1、特征提取。在训练阶段,将图像用很多“块”(patch)表示,以SIFT特征为例,图像中每个关键点就是一个patch,每一个patch特征向量的维数128。

2、字典构建。假设共有M幅训练图像,字典的大小为100,即有100个词,用K-均值算法对所有的patch进行聚类,等k-均值收敛时,将得到每一个聚类最后的质心,这100个质心(维数128)就是词典里的100个词,词典构建完毕。

3、字典表示。在测试阶段,对每幅图像初始化一个维数100、值全为0的直方图,计算测试图像每个patch与字典中单词的距离,距离patch最近的单词对应的直方图计数加1,将所有patch计算完毕后的直方图即为图像的字典表示。

4、图像检索。训练图与测试图都以100维向量表示,对每个待检索图像,只需在字典中计算所有训练图与其距离,并返回最近的若干幅即可。

特征提取是算法的开始,也在很大程度上决定了算法的性能。

PS:1.该图参考的是LiFeiFei2006年的资料,原图是用于object recognition的;

2.培训完过后开始总结特征;

3.实验Gabor特征+LDA;


本demo实现的是基于bow原理对图片进行分类,并实现对选取得测试集进行查找 BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。简单说就是讲每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来),然后看这个袋子里装的都是些什么词汇,将其分类。如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的词汇多些,而银行、大厦、汽车、公园这样的词汇少些,我们就倾向于判断它是一篇描绘乡村的文档,而不是描述城镇的。 serachFeatures.py中,前面主要是一些通过parse使得可以在敲命令行的时候可以向里面传递参数,后面就是提取SIFT特征,然后聚类,计算TF和IDF,得到单词直方图后再做一下L2归一化。一般在一幅图像中提取的到SIFT特征点是非常多的,而如果图像库很大的话,SIFT特征点会非常非常的多,直接聚类是非常困难的(内存不够,计算速度非常慢),所以,为了解决这个问题,可以以牺牲检索精度为代价,在聚类的时候先对SIFT做降采样处理。最后对一些在在线查询时会用到的变量保存下来。对于某个图像库,我们可以在命令行里通过下面命令生成BoF。 query.py只能每次查找一张图片,并返回与之匹配度(递减)最接近的6张图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值