使用openCV的7级SVM

时间:2014-01-21 21:31:12

标签: opencv svm libsvm

我必须将7种类别的危险物质标签(在下面的链接中给出)分类。 http://en.wikipedia.org/wiki/Dangerous_goods#Classification_and_labeling_summary_tables

我的训练功能如下:

svmTraining()    
{

    Mat train, response;

    createTrainingDateUsingBOW(1, train, response, 1.0);
    createTrainingDateUsingBOW(2, train, response, 2.0);
    createTrainingDateUsingBOW(3, train, response, 3.0);
    createTrainingDateUsingBOW(4, train, response, 4.0);
    createTrainingDateUsingBOW(5, train, response, 5.0);
    createTrainingDateUsingBOW(6, train, response, 6.0);
    createTrainingDateUsingBOW(7, train, response, 7.0);

    CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON);
    CvSVMParams svm_params = CvSVMParams (CvSVM::C_SVC, CvSVM::LINEAR, 10.0, 8.0,1.0,10.0  , 0.5 , 0.1 , NULL         , criteria);

 }

然后我得到的结果是svmPredict(),从1到7不等。但是我得到的结果没有任何意义。他们总是在大多数时间保持在4到7之间。我试图使用SVM :: RBF和SVM :: LINEAR内核类型。目前,我正在使用每个类别约300个样本。

1 个答案:

答案 0 :(得分:0)

这可能是由数据分发中的问题引起的。我建议为1到3级培训单独的SVM,并检查是否有效。如果可行,您可以继续一次添加其他类。

另一个需要检查的地方是SVM参数。例如,您可以尝试使用CvSVM :: POLY而不是CvSVM :: LINEAR。