我正在尝试训练SVM来预测交通标志,但我总是得到差异输入图像的相同预测结果。
任何人都可以为我解释原因吗?
这是我的代码:
我还打印并比较测试图像和训练图像的HOG值,它是相同的,但为什么预测结果总是相同的值。
答案 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);