OpenCv3.0.0中SVM预测的置信度

confidence of prediction in SVM in OpenCv3.0.0

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

我正在使用一个图来对道路信号进行分类,我希望获得0-1之间的预测置信度。好吧,我试图计算置信度,并将其与概率进行比较,但没有成功,因为有一些图像表示(exp为60 Km/h),其速率低于0.9,而另一个图像(也表示60 Kkm/h)的速率更高,达到0.9。

但同样的事情在未识别的流量sing中重复:有些图像不代表流量sing,其速率小于0.9,而其他图像的速率高于0.9。我试过这个

decision = svmob.predict(testData, true);
confidence = 1.0 / (1.0 + exp(-decision));

我在这里找到的,但它在OpenCv3.0中不起作用。你能帮帮我吗。

比我试过的要多:

 int classObject = decision.at<float>(currentFile) < 0.0 ? 1 : -1;
    float confidence = classObject == -1 ? (1.0 / (1.0 + exp(-decision.at<float>(currentFile)))) : (1.0 - (1.0 / (1.0 + exp(-decision.at<float>(currentFile)))));
    if(confidence<0.9)
        printf("le panneau n'est pas reconnu");
    else
        printf("decision = %f, response = %fn",
        decision.at<float>(0), response);

我想知道谁来做,好吗?

在opencv3.0中,我们应该使用接口predict(p,noArray(),cv::ml::StatModel::RAW_OUTPUT)。它的效果等于opencv2.4中的预测(p,true)

Opencv文档解释了接口:C++:float StatModel::predict(InputArray samples,OutputArray results=noArray(),int flags=0)const参数:samples–输入样本,浮点矩阵results–结果的可选输出矩阵。

flags–可选标志,取决于型号。一些模型,如Boost、SVM识别StatModel::RAW_OUTPUT标志,这使方法返回原始结果(总和),而不是类标签