主要内容

图像分类与袋子视觉单词

通过创建一袋视觉单词,使用计算机Vision Toolbox™用于图像类别分类。该过程生成代表图像的视觉词出现的直方图。这些直方图用于训练图像类别分类器。以下步骤介绍了如何设置图像,创建视觉单词的袋子,然后培训并应用图像类别分类器。

第1步:设置图像类别集

将图像组织和分区图像和测试子集。使用ImageageAtastore.存储图像以用于培训图像分类器的功能。将图像组织成类别使处理大量图像更容易。你可以使用spliteachlabel.将图像拆分为训练和测试数据的功能。

阅读类别图像并创建图像集。

setdir = fullfile(toolboxdir('vision'),'Visiondata','iconeet');IMDS = imageageAtastore(setdir,'insertubfolders',true,'labelsource',...'foldernames');

将集合分成训练和测试图像子集。在此示例中,30%的图像被划分用于培训和剩余的测试。

[培训,测试集] = SpliteachLabel(IMDS,0.3,'随机化');

第2步:创建一袋功能

通过从每个类别的代表性图像中提取功能描述符来创建视觉词汇或特征袋。

Bagoffeature对象通过使用该对象来定义功能或视觉单词k-means聚类(统计和机器学习工具箱)从中提取的特征描述符上的算法培训。该算法迭代地将描述符分组到K.相互独家集群。由此产生的簇紧凑,通过类似的特性分离。每个群集中心代表一个特征或视觉字。

您可以基于特征检测器提取功能,或者您可以定义网格以提取功能描述符。网格方法可能会失去细粒度的尺度信息。因此,使用网格用于不包含不同特征的图像,例如包含景象的图像,如海滩。使用加速鲁棒功能(或冲浪)检测器提供更大的尺度不变性。默认情况下,该算法运行'网格'方法。

该算法工作流程整体分析图像。图像必须具有描述它们所代表的类的适当标签。例如,可以标记一组汽车图像。工作流程不依赖于空间信息,也不依赖于标记图像中的特定对象。袋 - 视觉词技术依赖于未经本地化的检测。

第3步:用一袋视觉单词训练图像分类器

TrainimageCategoryClassifier函数返回图像分类器。该函数使用具有二进制支持向量机(SVM)分类器的纠错输出代码(ECOC)框架来列举多字母分类器。金宝app这TrainimageCategoryclassfier函数使用返回的袋子的袋子Bagoffeature对象以编码图像中的图像设置为视觉单词的直方图。然后使用视觉词的直方图作为培训分类器的正和阴性样本。

  1. 使用Bagoffeature编码从训练集编码每个图像的方法。该功能检测和提取来自图像的特征,然后使用近似最近邻算法来构建每个图像的特征直方图。然后,该功能基于描述符对特定群集中心的接近度递增直方图箱。直方图长度对应于视觉单词的数量Bagoffeature构造的对象。直方图成为图像的特征向量。

  2. 对训练集中的每个图像重复步骤1以创建培训数据。

  3. 评估分类器的质量。使用ImageCategoryClassifier评估对验证图像集测试分类器的方法。输出混淆矩阵表示预测的分析。完美的分类导致在对角线上的归一化矩阵。不正确的分类结果分数值。

步骤4:分类图像或图像集

使用ImageCategoryClassifier预测在新图像上确定其类别的方法。

参考

[1] Csurka,G.,C. R. Dance,L. Fan,J. Willamowski和C. Bray。用袋子的视觉分类。计算机愿景统计学习研讨会。ECCV 1(1-22),1-2。

相关话题