OpenCv3.0.0中SVM预测的置信度

时间:2016-04-29 09:00:35

标签: c++ visual-studio-2013 svm opencv3.0 predict

我使用aprogram来对道路分类进行分类,我希望在0-1之间获得预测的信心。 好吧,我试图计算置信度并将其与概率进行比较,但它不起作用,因为那里的图像代表(对于exp 60 Km / h),并且速率低于0.9,另一个(也代表) 60公里/小时的比率更高,达到0.9。

但是同样的事情在未被识别的交通中重复出现:那里的图像不代表流量唱歌,而且其速率小于0.9,而其他图像的速率大于0 9。 我试过这个

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

我发现here但它确实在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 = %f\n",
        decision.at<float>(0), response);

我想知道你好吗?

1 个答案:

答案 0 :(得分:2)

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

中的预测(p,true)

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

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