2013-05-28 16 views
7

BOW modeli ve SVM kullanarak bir görüntü sınıflandırması projesi geliştiriyorum. SVM'lerin tahmin olasılığını bulmak istiyorum ancak opencv svm'de böyle bir işlev yok. Bunu yapmanın bir yolu var mı? N sınıfı SVM'de tahmin olasılığını öğrenmek istiyorum.OPencv SVM tahmin olasılığı

cevap

3

Hayır, bunu CvSVM ile yapamazsınız. OpenCV'nin SVM uygulaması, libsvm'nin çok eski bir versiyonuna dayanmaktadır. En son libsvm sürümünü indirin ve bunun yerine kullanın. Elbette veri formatlarını dönüştürmek için bir sarıcı yazmanız gerekecek. Bkz. http://www.csie.ntu.edu.tw/~cjlin/libsvm/

+2

Alternatif olarak, karar olasılıklarını elde etmek sonrası bir işlem adımı olarak kendinizi değerleri üzerinde Platt ölçekleme uygulayabileceği: iş ben buradan iletişim kurduğu :)

kaynağını takdir ediyorum. –

+2

Bu, Nisan 2015'e göre hala tercih edilen yaklaşım mı? – Poyan

-1

Bir karışıklık matrisi oluşturmayı deneyebilirsiniz, bu, her bir görüntünün sınıfların herhangi birine ait olma olasılığını anlatmalıdır. durumunda bunu yapmak için olsun, böylece

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]]++; 
} 

Ben henüz test etmedi: Confusion Matrix

Ve işte eksik olsa bu size bazı fikirler verebilir buldum pasaj olmasını a-simple-object-classifier-with-bag-of-words

+1

Kabul etmem. Karışıklık Matrisi olasılığı, zemin gerçekliği göz önüne alındığında sık sık uygulanan bir yaklaşımdır. Karışıklık matrisi, görünmeyen bir görüntü için işe yaramaz. –