2015-01-28 4 views
0

OpenCV의 CvSVM을 사용하여 29 개 클래스의 SVM 분류자를 학습합니다.CvSVM이 교육 데이터를 확장합니까?

응용 프로그램이 얼굴 인식이고, 나는 3x6 격자로 얼굴 이미지를 나눕니다. 그리드의 각 블록에 대해 블록에서 추출한 SURF 피쳐의 SVM 분류자를 학습합니다.

여기에서 읽는 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하는 래퍼 클래스도있다.

관련 문제