2015-01-28 5 views
0

Я использую CvSVM OpenCV для изучения классификаторов SVM для 29 классов.CvSVM масштабирует данные обучения?

Приложение - Распознавание лиц, и я деляю изображение лица на сетку 3x6. Для каждого блока в сетке я обучаю классификатор SVM для функций SURF, извлеченных из блока.

Я читал здесь http://www.csie.ntu.edu.tw/~cjlin/talks.html, что очень важно масштабировать данные обучения и тестирования аналогичным образом.

Имеет ли CvSVM масштаб данных? Если нет, поддерживает ли OpenCV любую функцию, которую я могу использовать для масштабирования?

+0

'CvSVM' не автоматически масштабирует данные. В зависимости от того, какой тип нормализации вы хотите сделать, OpenCV почти наверняка будет оптимизирован для ее реализации. –

ответ

0

есть очень хорошая библиотека кросс-платформенная для использования алгоритмов машинного обучения на практике:
http://www.nickgillian.com/software/grt

Я не знаю, дает ли OpenCV возможность для масштабирования данных обучения/тестирования для достижения лучшего результата классификации, но с GRT вы можете это сделать:
https://github.com/nickgillian/grt/blob/master/GRT/ClassificationModules/SVM/SVM.h

... 
@param bool useScaling: sets if the training/prediction data will be scaled to the default range of [-1. 1.]. The SVM algorithm commonly achieves a better classification result if scaling is turned on. The default useScaling value is useScaling=true 
... 
SVM(UINT kernelType = LINEAR_KERNEL,UINT svmType = C_SVC,bool useScaling = true,bool useNullRejection = false,bool useAutoGamma = true,double gamma = 0.1,UINT degree = 3,double coef0 = 0,double nu = 0.5,double C = 1,bool useCrossValidation = false,UINT kFoldValue = 10); 

Это также класс-оболочка для libsvm.

Смежные вопросы