为什么我的SVM使用HOG功能总是预测同一个类?

时间:2016-06-17 03:16:04

标签: opencv visual-c++ machine-learning svm

我正在尝试训练SVM来预测交通标志,但我总是得到差异输入图像的相同预测结果。

任何人都可以为我解释原因吗?

这是我的代码:

http://pastebin.com/6y2MgTb8

我还打印并比较测试图像和训练图像的HOG值,它是相同的,但为什么预测结果总是相同的值。

1 个答案:

答案 0 :(得分:0)

从你的代码:

hog.compute(img_gray, descriptorsValues, Size(0, 0), Size(0, 0), locations);
//vector to Mat
Mat fm = Mat(descriptorsValues);

//Classification data
Ptr<SVM> svm = Algorithm::load<SVM>(nameSVM);
std::cout << "Model Loaded" << std::endl;

Mat image1d(1, fm.rows, CV_32FC1);
imshow("gradient 1", image1d);

float result = svm->predict(image1d);

您不小心将新图像创建为空(image1d)并使用此未初始化的矩阵进行分类。请改用以下svm预测函数调用:

float result = svm->predict(fm);
相关问题