iskees 32 Жалоба Опубликовано September 21, 2015 (изменено) SVM light в качестве результатов обучения выдает файл. Кто знает как его переделать под формат svm который в opencv (ядро радиальная базисная функция)? Изменено September 21, 2015 пользователем iskees Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 28, 2015 файл обученной модели? что в файле support vector's? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
iskees 32 Жалоба Опубликовано September 29, 2015 SVM-light Version V6.022 # kernel type3 # kernel parameter -d 1 # kernel parameter -g 1 # kernel parameter -s 1 # kernel parameter -r empty# kernel parameter -u 11 # highest feature index 168015 # number of training documents 36580 # number of support vectors plus 1 0.52852846 # threshold b, each following line is a SV (starting with alpha*y)-0.49999999999727612 1:1 2:-0.97321862 3:0 4:0 5:0.31793973 6:38.749599 7:-1 8:1 9:1 10:1 11:90.104164 #0.49999999999727612 1:1 2:-1 3:0 4:0 5:0.41736919 6:24.041599 7:-1 8:0.98609132 9:0.88873035 10:1 11:92.61364 #и так далее строки с цифрами на 4 метра Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 2, 2015 Думаю самый простой вариант это посмотреть как сохраняется модель .yml или .xml от SVM в opencv и скопировать данные из SVM-lightпример сохранения классификатора в train_svmhttps://github.com/Itseez/opencv/blob/b46719b0931b256ab68d5f833b8fadd83737ddd1/samples/cpp/train_HOG.cpp Да и большая ли разница между SVM-light и LibSVM (которая используется в opencv)?https://github.com/Itseez/opencv/blob/4997f5dfe9d1fa44f9576649a9f604026714ac1a/modules/ml/src/svm.cpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kilop 7 Жалоба Опубликовано October 21, 2015 iskees, в результате задачу решили? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 21, 2015 (изменено) Меня лично интересуют быстрые линейные модели.например в opencv SVM с линейным ядром сохраняется так %YAML:1.0my_svm: !!opencv-ml-svm svm_type: C_SVC kernel: { type:LINEAR } C: 1.0000000000000001e-05 term_criteria: { epsilon:1.1920928955078125e-07, iterations:10000 } var_all: 4 var_count: 4 class_count: 2 class_labels: !!opencv-matrix rows: 1 cols: 2 dt: i data: [ 0, 1 ] sv_total: 1 support_vectors: - [ 6.45558350e-03, 3.20321769e-02, -7.84457382e-03, -1.01621241e-04 ] decision_functions: - sv_count: 1 rho: 1.3422618222817990e+00 alpha: [ 1. ] index: [ 0 ]и для линейного ядра предикшн будет выглядеть как то так: double *w= get_weights(); double bias= get_bias(); for(int y=0;y<data.rows;++y) { double res= 0.0; for(int i=0;i<data.cols;++i) { res+= data.at<float>(y,i)*w; } int label= ((res+bias)>0)?1:0; // output labels [0,1] }И я так понимаю, что "support_vectors:" это как раз weights, а "rho" это bias.SVM в Opencv на базе LibSVM и это медленно, не знаю что быстрее в случае нелинейности, но Liblinear явно быстрее в линейном случае.Возможно скоро сделаю биндинги Liblinear для opencv и небольшой бенчмарк. Кстати не знаю в каком состоянии сейчас этот репозиторий, но на первый взгляд там есть libsvm и svmlighthttps://github.com/DaHoC/trainHOG в самом opencv есть примерhttps://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/samples/cpp/train_HOG.cpp Изменено October 21, 2015 пользователем mrgloom Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 22, 2015 (изменено) Есть какой то способ получить bias из Opencv Linear SVM?sign(x*w+b). //print weights cout << "support_vector_count: " << svm.get_support_vector_count() << endl; cout << "w" << endl; for(int i=0;i<svm.get_support_vector_count();++i) { cout << *svm.get_support_vector(i); } cout << endl; Изменено October 22, 2015 пользователем mrgloom Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kilop 7 Жалоба Опубликовано November 26, 2015 (изменено) mrgloom, забыл сказать спасибо, ссылки очень помогли Изменено November 26, 2015 пользователем kilop Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах