Классификатор SVM не сохраняется в формате «.xml»?

0

Я пытаюсь подготовить 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.

Теги:
opencv
filesystems
libsvm

1 ответ

1

попробуйте эту замену, вы обнаружите, что, занимая слишком много времени для обучения, после обучения, это вряд ли займет минуту, чтобы сохранить файл.

cout<<"\n training SVM \n";

cv::SVM svm;
svm.train(trainme, labels, cv::Mat(), cv::Mat(), svm_params);
cout<<"\n saving SVM \n";
svm.save("classifier.xml");

cout<<"\n SVM classifier is saved.";

Я никогда лично не сталкивался с SVM, но, имея до 1000 образцов, он не тренируется менее чем за час. В моем случае, когда я пробовал вещи для рыбаков с таким же количеством образцов, это заняло более 2-3 часов.

  • 0
    с 35 семплами / классом, он спасается в течение минуты, но если я выбрал 40 семплов / класс ... это не спасается ... не странно? (Я еще не попробовал ваше предложение)
  • 0
    о, да, это звучит странно, не могу предположить причину этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню