Я новичок в SVM. Я хочу использовать Multiclass SVM для классификации в моем проекте распознавания действий. Мой набор данных состоит из 15 классов, таких как бег трусцой, ходьба на велосипеде и т.д. Я понимаю двоичный SVM и видел много примеров. Я получаю путаницу в одном против одного мультикласса SVM и один против остальных мультикласса SVM.
Мой вопрос таков: должен ли я создавать и обучать SVM для каждого класса, например SVM1 для бега, SVM2 для бега ... и т.д. ....... 14) или (0,1). как определить модель для мультиклассовой классификации. как будет прогнозироваться результат?
Я пытался что-то вроде этого:
Mat trainData, trainLabels;
for (int i = 0; i < 15; i++ )
{
sprintf_s(filename, "VocabularyHOG/Dictionary%d.yml", i);
Mat feature;
FileStorage fs(filename, FileStorage::READ);
fs["vocabulary"] >> feature;
feature.convertTo(feature, CV_32F); // make sure we got float data
trainData.push_back(feature.reshape(1, 1)); // as a flat column
trainLabels.push_back(i); // the classlabel
}
// Train the SVM
Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));
svm->train(trainData, ROW_SAMPLE, trainLabels);
Mat testData;
FileStorage fs("DictionaryrunningHOG.yml", FileStorage::READ);
fs["vocabulary"] >> testData;
int response = svm->predict(testData.reshape(1, 1));
if (response == 1)
cout << "boxing";
else
cout << "negative result";
waitKey(27);
return 0;
но получаю ошибку. что тут не так ?? Как правильно кодировать один против остальных мультикласса SVM. Какова метка для каждого SVM? Спасибо