코드 15-6에서 svm->train() 함수 대신 svm->trainAuto() 함수를 호출하면 상당히 오랜 시간 동안 학습이 진행되므로, 최적의 파라미터를 알아낸 후에는 svm->trainAuto() 함수 대신 svm->train() 함수를 사용하는 것이 효율적입니다.
코드 15-6의 svmdigits 예제 프로그램을 실행하면 검은색으로 초기화된 img 창이 나타나고, img 창에 마우스로 숫자를 쓰고 키보드의 Space 키를 누르면 인식된 결과 숫자가 콘솔 창에 나타납니다. svmdigits 프로그램에서 제대로 숫자가 인식된 영상의 예를 그림 15-14에 나타냈습니다. 그림 15-14에 나타낸 영상은 img 창에 실제로 마우스로 쓴 숫자 영상이며, 각각의 숫자는 모두 정상적으로 인식되었습니다.
▲ 그림 15-14 svmdigits 예제 프로그램에서 인식에 성공한 영상의 예
반면에 정상적으로 인식되지 않은 필기체 숫자의 예를 그림 15-15에 나타냈습니다. 그림 15-15(a)는 숫자 0을 적었지만 2로 인식되었고, 그림 15-15(b)는 숫자 1을 적었지만 4로 인식되었습니다. 그림 15-15(c)는 숫자 6을 적었지만 5로 인식되었고, 그림 15-15(d)는 숫자 9를 적었지만 7로 인식되었습니다. 숫자를 중앙이 아닌 한편으로 치우치게 적거나, 다른 숫자와 비슷한 형태로 쓴 경우에 잘못 인식하는 경우가 많이 발생합니다.
▲ 그림 15-15 svmdigits 예제 프로그램에서 인식에 실패한 영상의 예