預測我用衝浪訓練SVM和弓,現在wher我預測的圖像,它總是返回我1,甚至當我去的負面形象還給我1作爲輸出每次得到積極的結果,而從SVM
下面是SVM參數:
CvSVMParams Params;
Params.svm_type=CvSVM::C_SVC;
Params.kernel_type=CvSVM::LINEAR;
Params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
Params.gamma=3;
CvSVM svm;
svm.train(training_mat,labels,cv::Mat(),cv::Mat(),Params);
,這裏是我的預測碼:
predict_img = cvLoadImage("ss.jpg",0);
detector.detect(predict_img, keypoint2);
RetainBestKeypoints(keypoint2, 20);
dextract.compute(predict_img, keypoint2, descriptors_2);
Mat my_img_3 = descriptors_2.reshape(1,1);
float response = svm.predict(my_img_3);
cout<<response;
這裏是intializatio:
BOWImgDescriptorExtractor dextract(extractor,matcher);
SurfFeatureDetector detector(500);
是我使用的正面和負面形象同樣數額,但我通過不同的目錄,不同的目錄正面形象以及爲負的不同培養他們,我不明白你對'C' – Rocket
概念SVM模型最重要的參數之一是'C',即錯誤分類的「懲罰」數量。它應該在模型params中設置:'Cvalue - 一個SVM優化問題的參數C(C_SVC/EPS_SVR/NU_SVR)。「http://docs.opencv.org/modules/ml/doc/support_vector_machines.html,by默認情況下它設置爲'C = 1000',它可能是行數量級的小 – lejlot
@lijlot你問這個:'CvParamGrid CvSVM = get_default_grid(CvSVM :: C);'但它給我錯誤get_default_grid(CvSVM: :C)'沒有定義 – Rocket