더북(TheBook)

SVM 알고리즘 타입과 커널 함수 종류를 설정한 후에는 각각의 타입과 커널 함수 정의에 필요한 파라미터를 설정해야 합니다. SVM 클래스에서 설정할 수 있는 파라미터는 C, Nu, P, Degree, Gamma, Coef0 등이 있으며, 이들 파라미터는 차례대로 1, 0, 0, 0, 1, 0으로 초기화됩니다. 각각의 파라미터는 파라미터 이름에 해당하는 setXXX()getXXX() 함수를 이용하여 값을 설정하거나 읽어 올 수 있습니다. 예를 들어 SVM::Types::C_SVC 타입을 사용하고 SVM::KernelTypes::RBF 커널을 사용할 경우, SVM::setC() 함수와 SVM::setGamma() 함수를 사용하여 적절한 CGamma 파라미터 값을 설정해야 합니다.

SVM 객체를 생성하고 타입과 커널 함수 선택, 그리고 파라미터를 설정한 후에는 StatModel::train() 함수를 이용하여 학습시킬 수 있습니다. 그러나 SVM에서 사용하는 파라미터를 적절하게 설정하지 않으면 학습이 제대로 되지 않는 경우가 발생합니다. 사실 대부분의 훈련 데이터는 다차원 공간에서 다양한 분포와 형태를 갖기 때문에 SVM 파라미터 값을 어떻게 설정해야 학습이 잘 될 것인지를 직관적으로 알기 어렵습니다. 그래서 OpenCV의 SVM 클래스는 각각의 파라미터에 대해 설정 가능한 값을 적용해 보고, 그중 가장 성능이 좋은 파라미터를 자동으로 찾아 학습하는 SVM::trainAuto() 함수를 제공합니다. SVM::trainAuto() 함수 원형은 다음과 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.