Matlab 在培训和测试阶段应该有多少图像?LibSVM

Matlab 在培训和测试阶段应该有多少图像?LibSVM,matlab,machine-learning,artificial-intelligence,libsvm,Matlab,Machine Learning,Artificial Intelligence,Libsvm,我正在使用PCA和SVM进行人脸识别。使用libSVM在matlab中实现SVM。我正在尝试实现一对所有分类。我有三个问题 第一: 我在第1类中有10张图片(面部1),那么第2类应该有60张图片(6张面部各10张图片) 第二: 准确度是否取决于我在这两个课程中拍摄的图像数量?如果是,那么 由于第二类中有大量图像,精度是否会达到100%(不合理的高) 第三: 是否可以使用单个图像进行测试 非常感谢您的帮助。您提出了三个问题: (1) 编辑:是的,正如您在评论中解释的那样。如果你有7门课,你将训练7

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

第一: 我在第1类中有10张图片(面部1),那么第2类应该有60张图片(6张面部各10张图片)

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

第三: 是否可以使用单个图像进行测试


非常感谢您的帮助。

您提出了三个问题:

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

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

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

如果你真的想做一对所有(也称为一对其余),你也可以使用它。因为您似乎在使用MATLAB,所以有一些代码(它不是直接在LIBSVM中实现的),但LIBSVM的作者提供了代码来实现:

(2) 精度将取决于图像的数量。在理想的情况下,你会有很多个人的照片来训练。但在诸如不平衡数据集之类的情况下,可能会出现这种情况,例如,如果训练时使用100万张x类图像,只有两张y类图像和两张z类图像,则会出现问题,因为分类器获得的x类视图比其他两个类的更详细。要进行评估,您需要一个完整的混淆矩阵(即,对于每对类,有多少类x的真实对象被分类为类y,有多少类y的真实对象被分类为类x等等)

(3) 是的,它可以

编辑#3:

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

要使用LIBSVM训练多类模型,您需要使用svmtrain并只调用一次。类别1是个体1的图像,类别2是个体2的图像。。。第七类是第七个体的图像


为了预测,在训练模型后,您将使用svmpredict进行一对所有分类,我正在训练7个模型。上面我说的只是一个模型。对于第一个模型:第一类有十个第一个个体的图像(正面类),第二类有十个其他六个个体的图像(负面类)。因此,这个模型将是一个积极的个人类。第二个模型:第1类将有10张第二个个体的图像,第2类将有10张剩余六个个体(包括第一个个体)的图像。这个模型将是第二个人的积极课程。其余的5个模型将像这样训练。所以我现在做的是对的?在一对所有分类中,我可以在类别1和类别2中有不同数量的图像?假设第1类中有10幅图像,第2类中有60幅图像?当两类中的图像数量相同时,我获得了85%到98%的期望精度,但当第1类和第2类中的图像数量不同时(例如第1类中有10幅图像,第2类中有60幅图像),则精度增加到100%。即使对于测试映像不属于的某些模型,精度也为100%。@Sid:只有在类1是单个1的映像时,才调用svmtrain类2是单个2的映像。。。第七类是第七个体的图像。