深度学习之学习(1-3)Bag of Features (BOF)图像检索算法

本文详细介绍了图像分类和检索中的Bag-of-Features(BoF)模型,包括其原理、算法步骤和应用。BoF模型通过K-means聚类生成视觉词汇,将图像特征量化为直方图向量,使用TF-IDF权重进行优化。在实际应用中,结合SIFT特征和空间金字塔匹配(SPM)提高性能。此外,还讨论了BoF存在的问题和解决方案,如特征编码优化和空间信息保留。最后,提到了相关资源和代码实现,以及图像分类的相关技术如VLAD和词袋树。

一、原理

参考:BOF——Bag-of-Featrures

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

       Bag-of-Features模型仿照文本检索领域的Bag-of-Words方法,把每幅图像描述为一个局部区域/关键点(Patches/Key Points)特征的无序集合。使用某种聚类算法(如K-means)将局部特征进行聚类,每个聚类中心被看作是词典中的一个视觉词汇(Visual Word),相当于文本检索中的词,视觉词汇由聚类中心对应特征形成的码字(code word)来表示(可看当为一种特征量化过程,可理解为:码字表示聚类中心的特征矢量,如该类的平均矢量等)。所有视觉词汇形成一个视觉词典(Visual Vocabulary),对应一个码书(code book)(可理解为:码书是所有聚类中心特征矢量的集合),即码字的集合,词典中所含词的个数反映了词典的大小。

      图像中的每个特征都将被映射到视觉词典的某个词上,这种映射可以通过计算特征间的距离去实现,然后统计每个视觉词的出现次数或频率,图像可描述为一个维数相同的直方图向量,即Bag-of-Features,如下图所示,可用直方图向量来表示或表达图像:

由上图可知,对同一词典,不同图像得到的直方图不同,因此可以用直方图向量来表示图像。

视觉词汇计算示意图:

理解:

1)视觉词汇的确定:

    计算训练图像中所有图像的关键点和描述,然后在特征空间对关键点聚类,生成类心,每个类心为一个视觉词汇,类心的数目即视觉词典中视觉词汇的个数(训练和聚类过程与图像库中图像的种类无关,只是为了得到一个能表述所有图像特征的视觉词典,该过程类似文档分类中,对相同或相似词汇进行合并,得到一个单词字典)。

2)视觉词汇个数的影响:

    视觉词汇的个数即视觉词典的大小,词典大小的选择也是问题,词典过大,单词缺乏一般性,对噪声敏感,计算量大,图象直方图向量的维数高;词典太小,单词区分性能差,对相似的目标特征无法表示。

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

二、算法步骤:

 

 

2.1、字典学习训练(train a codebook)

首先我们构造一个字典(也称visual vocabulary),方法如下:

1、特征提取(对所有的训练图像提取SIFT特征):利用SIFT等局部描述子(SIFT方法最为常用,OpponentSIFT在各类SIFT改进方式综合表现最为优秀)提取图像的特征点,这个过程一般会生成非常多的特征点。
在这里插入图片描述

2、特征聚类:由于一般提取的特征点实在太多(每张训练图片上都会提取到成千上万的特征点),不太适合分析和操作,所以一般会利用K-Means聚类等方法将所以特征点分成K类,这里每个类,我们就称为一个词(codeword/Visual Word),(对提取的所有图的SIFT特征使用kmeans算法得到k个聚类中心

 

K-means聚类算法流程:

  •  随机初始化 K 个聚类中心
  •  重复下述2个步骤直至算法收敛
    • (1)对应每个特征,根据距离关系赋值给某个中心/类别
    • (2)对每个类别,根据其对应的特征集重新计算聚类中心

3、形成字典:所有的类(词codeword/Visual Word)就构成字典(codebook/visual vocabulary)

2.2、图像特征集投影(这个过程也叫Feature Pooling)(量化)

对于每个输入图像的特征,根据视觉词典进行量化,量化的过程是将该特征映射到距离其最接近的视觉单词,并实现计数。这里要注意选择视觉词典的规模。太少:视觉单词无法覆盖所有可能出现的情况;太多:计算量大,容易过拟合。

(1)特征提取:利用SIFT提取每个训练图像中所有的特征点

(2)查找对应词:就是在字典中找每个特征点对应的词

(3)构成图像特征词表:将字典内每个词出现频率构成这个训练图像特征向量(显然是K维向量)(初步的无权BOF(直方图向量))

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

将每张训练图像的SIFT特征通过1.1(2)得到的kmeans模型K个聚类中心进行聚类,将每一张图像SIFT特征分为k个簇,即根据视觉词典进行量化,根据TF-IDF转化成视觉单词(visual words)的频率直方图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值