我正在开发一种算法来根据图像数据对不同类型的狗进行分类。该算法的步骤是:
遍历所有训练图像,检测图像特征(即 SURF),并提取描述符。收集所有图像的所有描述符。
在收集的图像描述符中进行聚类,并在集合中找到 k 个“单词”或质心。
遍历所有图像,提取 SURF 描述符,并将提取的描述符与通过聚类找到的最接近的“单词”进行匹配。
将每个图像表示为在聚类中找到的单词的直方图。
将这些图像表示(特征向量)输入分类器并训练...
现在,我遇到了一些问题。在图像描述符集合中找到“单词”是非常重要的一步。由于聚类的随机性,每次运行程序时都会发现不同的聚类。不幸的结果是,有时我的分类器的准确性会非常好,而其他时候,非常糟糕。我将此归结为聚类算法有时会发现“好”词,而有时会发现“坏”词。
有谁知道我可以如何避免发现“坏”词的聚类算法?目前我只是聚类了几次并取了我的分类器的平均准确率,但必须有更好的方法。
感谢您花时间阅读本文,并感谢您的帮助!
编辑:
我没有使用 KMeans 进行分类;我正在使用支持向量机进行分类。我正在使用 KMeans 查找图像描述符“单词”,然后使用这些单词创建描述每个图像的直方图。这些直方图作为特征向量被馈送到支持向量机进行分类。