У меня есть 5 классов в учебном наборе, где каждый класс имеет 100 обучающих изображений. Я создал 5 классов в тестовой папке. Теперь каждое тестовое изображение будет сравниваться с учебными классами и на основе его близости к одному из классов обучения он будет помечен для соответствующего тестового класса. Я хочу знать, выполняю ли я правильные шаги в SVM-классификаторе?SVM-классификатор и тестовые изображения
ответ
Так в основном вы иметь следующую структуру:
поезд
|-- class1
| |-- 1.pgm
| |-- ...
| |-- 100.pgm
|-- class2
| |-- 1.pgm
| |-- ...
| |-- 100.pgm
...
|-- class5
| |-- 1.pgm
| |-- ...
| |-- 100.pgm
тест
|-- class1
| |-- 1.pgm
| |-- ...
| |-- n.pgm
|-- class5
| |-- 1.pgm
| |-- ...
| |-- n.pgm
Следующий шаг, чтобы извлечь дескриптор из поезда изображений. Используя извлеченные функции, вы генерируете (обучаете) классификационную модель. В конце вы используете один и тот же метод кодирования для извлечения функций из тестовых изображений, а затем используйте подготовленную модель для прогнозирования.
спасибо Liviu Stefan. Итак, нужно ли сначала классифицировать все тестовые данные вручную в разные классы, например, в наборе данных обучения? И должен ли каждый тестовый класс иметь такое же количество изображений и этот номер может отличаться от количества изображений в учебном классе? Тогда какова роль классификатора SVM? – wannabegeek
Нет, вам не нужно классифицировать все тестовые данные вручную в разных классах. Также классы тестов могут иметь любое количество изображений. Вы используете SVM для обучения базовой модели классификации на изображениях поездов, которые вы будете использовать для прогнозирования тестовых изображений. –
Я подытоживаю, что я делаю. Прокомментируйте, пожалуйста. У меня 5 классов с ярлыками «chat», «bike», «night», «eat», «office». Каждый класс имеет 100 изображений. У меня есть одна папка «test_data» со 100 случайными изображениями. У меня есть vocab.mat, train_features (train_bag_of_sift.mat) и test_features (test_bag_of_sift.mat). Данные обучения обучаются функцией svmtrain. "scores = [score; (W '* test_image_feats' + B)]" дает оценки, а соответствующая категория индекса (index (max_score)) является прогнозируемой категорией. Чтобы найти точность, это будет сравниваться с основными значениями истины. – wannabegeek
Точнее. Я не понимаю вопроса. Возможно, вы спрашиваете, как делать мультиклассическое обучение с помощью SVM, но, возможно, нет. Если это так, проверьте условия OneVsRest и OneVsOne в многоклассовом обучении. – sascha
начните с примеров SVM от opencv, замените их вашими данными. Посмотрите, какие результаты вы получаете и продолжаете оттуда (http://docs.opencv.org/2.4/doc/tutorials/ml/non_linear_svms/non_linear_svms.html) –