【问题标题】:7-class SVM using openCV使用 openCV 的 7 类 SVM
【发布时间】:2014-02-11 17:15:14
【问题描述】:

我必须将危险材料标签(在下面的链接中给出)分为 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 个样本。

【问题讨论】:

    标签: opencv svm libsvm


    【解决方案1】:

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

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

    【讨论】:

    • 我也尝试过 SVM::Linear,但我的结果一直在 4 类和 7 类之间随机切换。我只训练了 4 节课,每节课有 200-400 个样本。我并不期待完美的结果,但这个 SVM 给出了完全随机的结果。
    猜你喜欢
    • 2013-05-22
    • 2014-06-11
    • 2012-04-19
    • 2013-11-17
    • 1970-01-01
    • 2013-01-19
    • 2012-06-05
    • 2019-08-15
    • 2016-01-22
    相关资源
    最近更新 更多