2013-05-28 5 views
7

Я разрабатываю проект классификации изображений с использованием модели BOW и SVM. Я хочу узнать вероятность предсказания SVM, но в opencv svm нет такой функции. Есть какой-либо способ сделать это? Я хочу узнать вероятность прогноза в SVM n-класса.OPencv SVM вероятность прогноза

ответ

3

Нет, вы не можете сделать это с помощью CvSVM. Реализация SVM в OpenCV основана на очень старой версии libsvm. Загрузите последнюю версию libsvm и используйте ее вместо этого. Конечно, вам придется написать оболочку для преобразования форматов данных. См. http://www.csie.ntu.edu.tw/~cjlin/libsvm/

+2

в качестве альтернативы, вы можете осуществить Platt масштабирование решения ценности себя как пост-обработки шаг, чтобы получить вероятности. –

+2

Это еще предпочтительный подход к апрелю 2015 года? – Poyan

-1

Вы можете попробовать создать матрицу путаницы, это должно рассказать вам о вероятности каждого изображения, принадлежащего к любому из классов. Confusion Matrix

А вот у вас есть фрагмент кода, я нашел, хотя она неполна это может дать вам некоторые идеи:

map<string,map<string,int> > confusion_matrix; // confusionMatrix[classA][classB] = number_of_times_A_voted_for_B; 
map<string,CvSVM> classes_classifiers; //This we created earlier 

vector<string> files; //load up with images 
vector<string> classes; //load up with the respective classes 

for(..loop over a directory?..) { 
Mat img = imread(files[i]),resposne_hist; 

vector<KeyPoint> keypoints; 
detector->detect(img,keypoints); 
bowide->compute(img, keypoints, response_hist); 

float minf = FLT_MAX; string minclass; 
for (map<string,CvSVM>::iterator it = classes_classifiers.begin(); it !=  classes_classifiers.end(); ++it) { 
    float res = (*it).second.predict(response_hist,true); 
    if (res < minf) { 
    minf = res; 
    minclass = (*it).first; 
    } 
} 
confusion_matrix[minclass][classes[i]]++; 
} 

Я не проверял еще, так что в этом случае вы получите, чтобы сделать это работа, которую я был бы признателен, что вы связываете его здесь :)

источник: a-simple-object-classifier-with-bag-of-words

+1

Я бы не согласился. Вероятность Матрицы Путаницы - это частотный подход с учетом истины. Матрица путаницы бесполезна для невидимого изображения. –

Смежные вопросы