当前位置: 首页 > 知识库问答 >
问题:

OpenCV4Android SVM没有给出正确的预测

郏景澄
2023-03-14

我是机器学习和OpenCV的新手。我从Cohn-Kanade人脸数据库中为每种情绪(中性和快乐)拍摄了一组10张图像。然后,我从每个图像中提取面部特征,并将它们放入我的训练数据矩阵中,并为各自的情绪分配标签(例如:0表示中性,1表示快乐)。

我使用了gamma=0.1和C=1的RBF内核。经过训练后,我将从智能手机摄像头中提取出的面部特征用于预测。预测总是返回1。

如果我增加中性表达式的训练样本数(例如:15个中性表达式图像和10个快乐表达式图像),那么预测总是返回0,如果训练样本中每个表达式有相等数量的图像,那么SVM预测总是返回1。

为什么SVM的行为是这样的?如何检查我是否对伽马和C使用了正确的值?还有,SVM是否依赖于训练图像和测试图像的分辨率?

共有1个答案

曾实
2023-03-14

我会请求您上传SVM函数,这样我们就可以理解您的代码。其次,我以前使用过支持向量机,您需要对训练数据和标签进行规范化。您还应该确保使用了正确的分类器,因为并非所有的分类器都受支持。以下是一些教程的链接:http://docs.opencv.org/3.0-beta/modules/ml/doc/support_vector_machines.html

对于回答你的其他问题,不幸的是你必须自己找到gamma和C的最佳组合,这是SVM的一种缺点。https://www.quora.com/what-are-c-and-gamma-with-regards-a-support-vector-machine

是的,SVM确实依赖于分辨率,因为你的特征/特征向量会根据分辨率而改变,因此也会根据输入和标签而改变。附注。这应该是理想的评论,但不幸的是,我没有足够的点这样做。

 类似资料: