OpenCv3.0.0中的非线性SVM

non lineaire SVM in OpenCv 3.0.0

本文关键字:SVM 非线性 OpenCv3      更新时间:2023-10-16

我正在C++中使用一个道路识别程序(visual studio 2013),我会用非线性SVM对路标进行分类,但我不知道如何在OpenCv 3.0中选择其参数。这就是我所尝试的,它将重新连接的道路分类为最佳类别(例如60 Km/h,80 Km/h…),但当我给它一条未被它重新连接的其他道路时,它将其分类为三个类别之一(60/80/100),你能告诉我OpenCv 3.0.0中非线性SVM的参数是什么吗?

svm = SVM::create();
    svm->setType(SVM::C_SVC);
    svm->setKernel(SVM::KernelTypes::LINEAR);
    svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 500, 1e-6));

    toolStripStatusLabel1->Text = "Training begin .....";
    Ptr<ml::TrainData> tData = ml::TrainData::create(trainingDataMat, ml::SampleTypes::ROW_SAMPLE, traningLabels);
    svm->train(tData);

神经网络,就像大多数分类器一样,会将对象放入他们知道的类中。如果你告诉它世界存在三个类,它就会把世界放在这三个类中。没有什么大的惊喜。

有很多方法可以解决这个问题。到目前为止,最常见的是在训练中添加一个类别"其他",并为其提供数千张其他图像。

在这种特殊的情况下,我会使用3个额外的"其他"类别:形状相似的路标(即欧洲限速的圆形红边)、所有其他路牌,以及"非路牌"。