我正在开发一个基于图像数据对不同种类狗进行分类的算法。算法的步骤如下:
-
遍历所有训练图像,检测图像特征(如SURF),并提取描述符。收集所有图像的所有描述符。
-
在收集的图像描述符中进行聚类,找到集合中的k个“词”或质心。
-
重新遍历所有图像,提取SURF描述符,并将提取的描述符与通过聚类找到的最接近的“词”进行匹配。
-
用聚类中找到的“词”的直方图来表示每张图像。
-
将这些图像表示(特征向量)输入分类器进行训练…
现在,我遇到了一个小问题。在图像描述符集合中找到“词”是非常重要的一步。由于聚类的随机性,每次运行程序时都会找到不同的聚类。不幸的结果是,有时我的分类器的准确性会非常好,而有时则非常差。我认为这是因为聚类算法有时会找到“好”的词,有时会找到“坏”的词。
有谁知道如何防止聚类算法找到“坏”的词吗?目前我只是多次进行聚类并取我的分类器的平均准确性,但肯定有更好的方法。
感谢您花时间阅读这篇文章,也感谢您的帮助!
编辑:
我不是在使用KMeans进行分类;我使用的是支持向量机进行分类。我使用KMeans来寻找图像描述符的“词”,然后使用这些词来创建描述每张图像的直方图。这些直方图作为特征向量被输入到支持向量机中进行分类。
回答:
有很多方法可以使聚类变得可重复: