用 SIFT 创建视觉词袋模型的程序是什么?

数据挖掘 预测建模 图像分类 可能性
2022-03-09 13:17:51

我在训练集中有 1500 多张黑白分类图像,我想创建一个概率模型来分类新图像。更明确地说,给定一个新的黑白图像,我的模型必须预测:

animal: 84%
vegetal: 12%
mineral: 4%

我看了这个讲座,我仍然对创建这个模型的过程有疑问。

1. 提取每张图像的关键点

如果我正确理解了视频,第一步是使用 SIFT 从所有图像中提取所有关键点,以创建一种视觉词词典。每个单词都由一个多维向量描述。
接下来,我必须使用k- 表示创建视觉词组的方法。

问题 1:我应该创建多少个组?是否存在一个经验法则来确定k我必须使用的号码?

2. 直方图的创建

现在,对于每个图像,我必须创建一个直方图/一个向量,其中每个特征对应于第 1 部分中定义的一组。与每个特征关联的值对应于图像中单词的频率。

问题 2:如何创建这个向量?事实上,每张图片都是独一无二的,永远不会与我字典中的单词完美匹配(顺便说一下,这些单词是不同单词的意思)。谁可以绕过这个问题?

3. 模型的创建

最后,我必须创建我的模型。在视频中,讲师使用了 SVM,并且必须按类别创建一个分类器(二元分类器)。就我而言,我有 100 个不同的类别(我的介绍是一种简化),我更喜欢只有一个分类器。另外,我想获得给定图像的概率成为类别的一部分。

问题 3:是否可以只创建一个提供概率数据的分类器?

最后,如果您知道对我的数据进行分类的更好方法,请不要犹豫,对我描述的过程提出建议或更正。

1个回答

问题 1:我应该创建多少个组? 没有经验法则,但通常如果您有 n 个类别的数据,您可能希望将 k 设置为 10*n。众所周知,这很有效,但是您始终可以通过查看验证数据集的准确性来更改此数字。

问题 2:创建直方图 假设您从每个图像中提取 m 个特征,并且您的字典包含 k 个单词,对于这 m 个特征中的每一个,您将找到与 k 个单词最接近的匹配并将该单词分配给该特定特征。这样一来,您将有 m 个视觉词采用 k 值之一。现在您计算这些视觉词的出现次数并从中创建一个标准化直方图。因此,每张图像都会有 k 个视觉词的归一化直方图。

问题 3:分类 现在我们知道如何为给定图像提取直方图,我们将在训练数据上计算直方图,并在给定测试图像的情况下提取其直方图。现在,我们如何对其进行分类完全取决于您。您可以使用欧几里得距离在训练数据的直方图中找到最接近的匹配项,或者进行加权和等。

获得概率数据的一种简单方法是在输出层用 softmax 训练一个神经网络,并给定一张测试图像,将其直方图通过网络并获得概率。