2013-05-27 2 views
2

opencv를 사용하여 매우 간단한 이미지 분류기를 개발하고 있습니다. svm type poly를 사용하고 싶지만 Sigmoid와 같은 오류가 발생하지만 RBF는 정상적으로 작동합니다.SVC in openCV

SVMParams params; 
params.svm_type = SVM::C_SVC; 
params.kernel_type = SVM::POLY; 
params.gamma = 20; 
params.degree = 0; 
params.coef0 = 0; 

params.C = 7; 
params.nu = 0.0; 
params.p = 0.0; 

params.class_weights = NULL; 
params.term_crit.type = CV_TERMCRIT_ITER +CV_TERMCRIT_EPS; 
params.term_crit.max_iter = 1000; 
params.term_crit.epsilon = 1e-6; 

오류는 OpenCV의 오류 읽습니다 : 인수 '값 중 하나가 CvSVM :: set_params의 범위 (커널 매개 변수는 양수 여야합니다)를 벗어 다음과 같이 내가 매개 변수를 정의했다. 나는 무엇에 관한 오류인지 확신 할 수 없다.

+1

아마도 '학위'입니다. 차수 제로 다항식 커널은 그 값이 상수이기 때문에 의미가 없습니다. –

+0

어떤 버전의 OpenCV를 사용하고 있습니까? –

답변

8

다항식 커널의 경우 degree은 1보다 커야합니다 (0은 유효하지 않고 1은 선형 임). 대부분의 패키지에서 degree의 기본값은 3입니다.

RBF 및 sigmoid 커널은 degree을 사용하지 않기 때문에 설정에 문제가 없습니다. 참고로, 문제의 커널 기능은 다음과 같습니다

  • 다항식 : k(u,v)=(gamma*u'*v + coef0)^degree,
  • RBF : k(u,v)=exp(-gamma*|u-v|^2),
  • 시그 모이 : k(u,v)=tanh(gamma*u'*v + coef0).