더북(TheBook)

10~12행 여덟 개의 점 좌표를 포함하는 train 행렬을 생성합니다. train 행렬은 CV_32FC1 타입이며 크기는 8×2입니다.

13행 훈련 데이터 점들의 클래스를 정의한 label 행렬을 생성합니다. 처음 네 개 점의 클래스는 0이고, 나머지 네 개 점의 클래스는 1입니다. label 행렬은 CV_32SC1 타입이며 크기는 8×1입니다.

15행 SVM 객체를 생성하여 svm에 저장합니다.

16행 SVM 타입을 C_SVC로 설정합니다.

17행 SVM 커널 함수를 RBF로 설정합니다.

18행 SVM::trainAuto() 함수를 사용하여 최적의 파라미터 C와 gamma를 자동으로 찾아 학습합니다.

20행 SVM 분류 결과를 나타낼 img 영상을 생성합니다.

22~32행 img 영상의 모든 픽셀 좌표에 대해 SVM 응답을 구하여 빨간색 또는 녹색으로 표현합니다.

34~43행 train 행렬에 저장된 훈련 데이터 점을 반지름 5인 원으로 표시합니다. 0번 클래스 점은 빨간색 원으로, 1번 클래스 점은 녹색 원으로 그립니다.

 

코드 15-5는 50행 정도의 길이로 작성되었지만, 이 중 SVM 알고리즘을 학습하는 코드는 10~18행까지이고 나머지 대부분은 SVM 학습 결과를 img 영상을 이용하여 비주얼하게 표현하기 위한 코드입니다. 코드 15-5에서는 SVM 타입은 C_SVC로 설정하였고, 커널 함수는 방사 기저 함수를 사용하였습니다. SVM 학습을 위한 입력으로는 train 행렬과 label 행렬을 지정하였고, 이 두 행렬의 모양과 원소 값을 그림 15-11에 나타냈습니다. 여기서 train 행렬은 CV_32FC1 타입이어야 하고, label 행렬은 CV_32SC1 타입을 사용합니다.

▲ 그림 15-11 SVM 학습을 위한 train과 label 행렬

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