我想训练我的svm分类器以使用scikit-learn进行图像分类。我想使用opencv-python的SIFT算法功能来提取图像特征。情况如下:
1. svmkit分类器的scikit-learn输入是2维数组,这意味着每一行代表一个图像和特征每个图像的数量相同;此处
2. opencv-python的SIFT算法返回一个关键点列表,该列表是一个numpy的shape数组。在这里
,我的问题是:
如何处理SIFT功能以适合SVM分类器的输入?你能帮助我吗 ?
感谢pyan的建议,我将我的建议调整如下:
1.从每个图像中获取SIFT特征向量
2.对所有向量执行k-均值聚类
3.基于聚类中心创建特征字典(又名食谱)
4. re -基于特征字典表示每个图像,当然每个图像的尺寸量是相同的
5.训练我的SVM分类器并对其进行评估
我已将所有图像SIFT特征向量收集到一个很大的数组(x * 128)中,然后需要对其进行聚类。
问题是:
如果我使用k-means,则必须设置参数簇号,而且我不知道如何设置最佳值。如果我不使用k均值,哪种算法适合呢?
note:I want to use scikit-learn to perform clustering
我的建议是:
1.在向量上执行dbscan聚类,然后我可以得到label_size和标签;
2.由于scikit-learn中的dbscan不能用于预测,因此我可以基于dbscan结果训练新的分类器A;
3.分类器A就像一本食谱,我可以标记每个图像的SIFT向量。之后,每个图像都可以重新表示;
4.基于以上工作,我可以训练我的最终分类器B。
note:for predict a new image, its SIFT vectors must be transform by classifier A into the vector as classifier B's input
你能给我一些建议吗?
图像分类可能非常笼统。为了定义好的功能,首先您需要弄清楚想要的输出类型。例如,可以根据图像中的场景将图像分类为自然视图,城市视图,室内视图等。不同种类的分类可能需要不同种类的特征。
计算机视觉中用于基于关键字的图像分类的一种常用方法是单词袋(功能袋)或字典学习。您可以进行文献搜索以熟悉该主题。在您的情况下,基本思路是将SIFT功能分组到不同的群集中。与其直接scikit-learn
提供SIFT要素,不如输入要素组频率的向量。因此,每个图像将由一维矢量表示。
Wikipedia词袋模型在计算机视觉中的简短介绍
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句