在训练和测试阶段应该有多少张图片? LIBSVM

时间:2014-03-23 00:50:30

标签: matlab machine-learning artificial-intelligence libsvm

我正在使用PCA和SVM进行人脸识别。在matlab中使用libSVM进行SVM实现。我正在尝试实施一个与所有分类。我有三个问题。

第一: 我在第1类(面部1)中有10个图像,然后第2类应该有60个图像(6个面部各有10个图像)?

第二: 准确度是否取决于我在两个班级中拍摄的图像数量?如果是,那么 由于第二类中的大量图像,精度可以达到100%(不合理的高)吗?

第三: 可以使用单个图像进行测试吗?

任何帮助都将深受赞赏。

1 个答案:

答案 0 :(得分:1)

你问三个问题:

(1)编辑:是的,正如您在评论中所解释的那样。如果你有7个班级,你将训练7个分类。对于每个分类器,您将训练个体i的正面图像,以及所有其他个体的负面图像。

您所描述的内容称为一对一分类,它是使用基本二进制分类器(例如SVM)进行多类分类的常用方法。我还要补充说,还有其他方法可以将二进制分类器扩展到多类分类,例如一对一和纠错锦标赛。

编辑#2: 让我补充一点,在LIBSVM中已经实现了一对一的分类,你真的不需要做任何特别的事情。您需要做的就是为训练数据中的每个类添加不同的双精度数(因此您可以使用0,1,... 7类)。

如果你真的想做一个对所有人(也称为一对比其他人),你也可以使用它。由于您似乎正在使用MATLAB,因此存在代码(它不直接在LIBSVM中实现),但LIBSVM的作者提供了实现该代码的代码:direct link to FAQs

(2)准确度取决于图像的数量。在理想的条件下,您将拥有许多所有人的图像。但是你可以进入诸如不平衡数据集之类的情况,例如,如果你训练了一百万个x类图像,只有2个y类图像和2个z类图像,你会遇到问题因为你的分类器得到了类x的详细视图比其他两个类更详细。为了评估你将需要一个完整的混淆矩阵(即x类的实际对象有多少是y类的分类器,有多少y类的真实对象被分类为x类,依此类推每对类。)

(3)是的,它可以。

编辑#3:

从LIBSVM的作者的评论来看,似乎一对一的准确性与一对一的准确性相似,不同之处在于训练一对一的速度更快,这就是他们在系统中实现一对一的原因。

要使用LIBSVM训练多类模型,您将使用svmtrain并仅调用一次。 1类是个体1的图像,2类是个体2的图像,... 7类是个体7的图像。

预测,在训练模型后,您将使用svmpredict