Я пытаюсь обучить SVM с дескрипторами SIFT, взятыми из изображений. И затем я хочу сохранить SVM в формате .xml
, чтобы снова загрузить его.
Моя структура: у меня есть 10 классов по 100 образцов из каждого класса.
Вопрос: Если я использую 10-50 образцов для каждого класса, тогда SVM сохраняется, и я вижу файл classifer.xml
в своей папке. Но если я хочу использовать больше образцов, например. ~100 образцов на класс, тогда SVM не сохраняется.
Я думал, что это может занять некоторое время, чтобы сохранить, но я уже так долго ждал (и я делал это несколько раз).
Мой код для обучения SVM следующий:
void svm::svmTrain()
{
cv::Mat trainme; // it should contain the feature vectors
cv::Mat labels; // it will contain the class labels
createTrainingDateUsingBOW( trainme, labels);
//svm parameters
CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON);
CvSVMParams svm_params = CvSVMParams (CvSVM::C_SVC, CvSVM::POLY, 10.0 , 8.0 , 1.0 , 10.0 , 0.5 , 0.1 , NULL , criteria); //CvSVMParams --it is a struct
//( svm_type, kernel_type, degree , gamma , coef0 , Cvalue, nu , p , class_weights, term_crit)
cout<<"\n saving SVM \n";
cv::SVM svm;
svm.train(trainme, labels, cv::Mat(), cv::Mat(), svm_params);
svm.save("classifier.xml");
cout<<"\n SVM classifier is saved.";
}
PS: Таким образом, если мои образцы больше 40-60 на класс, то я достигну saving SVM
из приведенного выше кода, но никогда не достигну SVM classifier is saved.