我想用scikit-learn训练我的svm分类器进行图像分类.我想使用opencv-python的SIFT算法函数来提取图像特征.情况如下:
1.svm分类器的scikit-learn输入是2-d数组,这意味着每行代表一个图像和特征每幅图像的数量是相同的; 这里
2. opencv-python的SIFT算法返回一个关键点列表,这是一个numpy形状的数组.这里
我的问题是:
我如何处理SIFT功能以适应SVM分类器的输入?你能帮助我吗 ?
感谢pyan的建议,我按照以下方式调整我的建议:
1.从每个图像中获取SIFT特征向量
2.对所有向量执行k-means聚类
3.基于聚类中心创建特征字典,即cookbook
4. re - 基于特征字典表示每个图像,当然每个图像的尺寸量是相同的
5.训练我的SVM分类器并评估它
我已经将所有图像SIFT特征向量收集到一个数组(x*128)中,这个数组太大了,然后我需要对它进行聚类.
问题是:
如果我使用k-means,必须设置参数簇号,我不知道如何设置最佳值; 如果我不使用k-means,哪种算法可能适合这个?
note:I want to use scikit-learn to perform clustering
我的建议是:
1.对向量执行dbscan聚类,然后我可以得到label_size和标签;
2.因为scikit-learn中的dbscan不能用于预测,我可以根据dbscan结果训练一个新的分类器A;
3.分类器A就像一本食谱,我可以标记每个图像的SIFT向量.之后,每个图像都可以重新表示;
基于上述工作,我可以训练我的最终分类B.
note:for predict a new image, its SIFT vectors must be transform by classifier A into the vector as classifier B's input
你能给我一些建议吗?