如何使用libsvm来训练和分类图像?

时间:2015-06-23 14:35:17

标签: java image machine-learning classification svm

使用libsvm的分类总是错误的,它永远不会改变预测的标签。(例如,我有7种情绪,当我试图从数据集外部预测图像时它给了我4.这是快乐的情感,我试过来自数据集和相同标签的图像是结果)

我使用带有orientation 6scale 4的gabor滤镜来提取图像功能。 我使用脚本grid.py查找costgamma的最佳值 最后,我使用了训练的最后一步中的参数并获得了模型

./svm-train -c 8 -g 0.03214 svm.train model.model

我试图改变内核函数和svm-type,但它仍然是同样的问题。

我在训练中使用的要素数量与数据集中的图像数量之间是否存在任何关系?

注意:我使用了日本女性面部表情数据集。

1 个答案:

答案 0 :(得分:0)

我不认为您想使用SVM进行图像分类。您描述的任务(检测图像上的情绪)要求您向SVM提供非常好的功能以供学习,gabor过滤器不会这样做。

我建议您尝试深度学习方法 - 例如,您可能希望尝试使用卷积神经网络。这些东西能够从原始图像中提取特征,然后使用它们对图像进行分类。

检查一下: http://danielnouri.org/notes/2014/12/17/using-convolutional-neural-nets-to-detect-facial-keypoints-tutorial/

这里他们使用DNN来找到图像上的面部关键点(即眼睛的位置,鼻尖等)。您可能需要稍微调整一下代码,以便只对图像进行分类。

再一次,DNN的强大之处在于它既可以作为特征提取器,也可以作为分类器。与任何类型的SWM不同,它是一种非常强大的图像识别工具。