一、前言
使用自定义的功能包工作流创建基于内容的图像检索 (CBIR) 系统。
基于内容的图像检索 (CBIR) 系统用于查找在视觉上与查询图像相似的图像。CBIR系统的应用可以在许多领域找到,例如基于网络的产品搜索,监控和视觉位置识别。用于实现CBIR系统的常用技术是视觉词袋,也称为特征袋[1,2]。功能包是一种适用于从文档检索世界中检索图像的技术。与文档检索中使用实际单词不同,功能包使用图像特征作为描述图像的视觉单词。
图像特征是CBIR系统的重要组成部分。这些图像特征用于衡量图像之间的相似性,并且可以包括全局图像特征,例如颜色、纹理和形状。图像特征也可以是局部图像特征,例如加速鲁棒特征 (SURF)、梯度直方图 (HOG) 或局部二进制模式 (LBP)。功能袋方法的好处是,可以自定义用于创建视觉单词词汇表的特征类型以适应应用程序。
图像搜索的速度和效率在CBIR系统中也很重要。例如,在少于 100 个图像的小型图像集合中执行暴力搜索可能是可以接受的,其中查询图像中的特征与集合中每个图像的特征进行比较。对于较大的集合,暴力搜索是不可行的,必须使用更有效的搜索技术。要素包提供了一种简洁的编码方案,以使用一组稀疏的视觉单词直方图来表示大量图像。这可以通过倒排索引数据结构实现紧凑存储和高效搜索。
在此示例中,通过以下步骤创建用于搜索花卉数据集的图像检索系统。该数据集包含 3670 种不同类型花的大约 5 张图像。
二、步骤1 - 选择要检索的图像特征
用于检索的要素类型取决于集合中的图像类型。例如,如果搜索由场景(海滩、城市、高速公路)组成的图像集合,则最好使用全局图像功能,例如捕获整个场景颜色内容的颜色直方图。但是,如果目标是在图像集合中查找特定对象,则围绕对象关键点提取的局部图像特征是更好的选择。
让我们从查看其中一张图像开始,了解如何解决问题。
在此示例中,目标是使用查询图像中的颜色信息在数据集中搜索相似的花朵。基于颜色空间布局的简单图像特征是一个很好的起点。
三、步骤 2 - 创建功能包
定义特征类型后,下一步是使用一组训练图像学习视觉词汇。下面显示的代码从数据集中随机选取图像子集进行训练,然后使用“自定义提取器”选项进行训练。
设置为 false 以加载预训练的包功能。设置为 false,因为训练过程需要几分钟时间。示例的其余部分使用预训练来节省时间。
四、步骤 3 - 为图像编制索引
创建后,可以对整个花卉图像集编制索引以进行搜索。索引过程使用步骤 1 中的自定义提取器函数从每个图像中提取特征。提取的特征被编码为可视词直方图,并添加到图像索引中。
由于索引步骤处理数千张图像,因此此示例的其余部分使用保存的索引来节省时间。您可以通过设置为 true 在本地重新创建索引。
五、步骤 4 - 搜索相似图像
最后一步是使用该函数搜索相似的图像。
对应于图像集中与查询图像类似的图像。