Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv CvSVM.predict()给出';楠';输出和低精度_Opencv_Svm - Fatal编程技术网

Opencv CvSVM.predict()给出';楠';输出和低精度

Opencv CvSVM.predict()给出';楠';输出和低精度,opencv,svm,Opencv,Svm,我使用CvSVM只对两种面部表情进行分类。我使用基于LBP(局部二进制模式)的直方图从图像中提取特征,并使用cvSVM::train(data\u-mat,labels\u-mat,mat(),mat(),params)进行训练,其中 数据_mat的大小为200x3452,包含200个样本的标准化(0-1)特征直方图,采用行主形式,每个特征3452个(取决于邻域点的数量) labels_mat是只包含两个值0和1的对应标签矩阵。 参数包括: CvSVMParams参数 params.svm_ty

我使用CvSVM只对两种面部表情进行分类。我使用基于LBP(局部二进制模式)的直方图从图像中提取特征,并使用
cvSVM::train(data\u-mat,labels\u-mat,mat(),mat(),params)
进行训练,其中

数据_mat的大小为200x3452,包含200个样本的标准化(0-1)特征直方图,采用行主形式,每个特征3452个(取决于邻域点的数量)

labels_mat是只包含两个值0和1的对应标签矩阵。 参数包括:

CvSVMParams参数

params.svm_type     =CvSVM::C_SVC;
params.kernel_type  =CvSVM::LINEAR;
params.C            =0.01;
params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER,(int)1e7,1e-7);
问题在于:-

  • 在测试过程中,即使使用不同的内核和train_auto()函数,我也会得到非常糟糕的结果(大约10%-30%的精度)

  • CvSVM::predict(测试数据,真)
    给出“NaN”输出


  • 我将非常感谢您在这方面提供的任何帮助,这让我感到困惑。

    我想,您的类在您使用的特征空间中是线性硬/不可分离的。 在分类器训练步骤之前,最好对数据集应用PCA 并估计该问题的有效维数。 另外,我认为使用其他分类器测试数据集是很有用的。 为此,您可以采用标准opencv示例points_classifier.cpp。
    它包括许多不同的分类器,具有相似的界面,您可以使用。

    SVM的泛化能力很低。首先,通过主成分分析降低数据维度,然后将SVM kerenl类型更改为RBF