Search
Duplicate

OpenCV로 배우는 영상 처리 및 응용/ 영상 처리 응용 사례 II

SVM을 이용한 차량 번호 검출 프로그램

SVM(Support Vector Machine)의 개념

아래 그림 왼쪽과 같이 흰색 원과 검은색 원이 학습용 데이터로 주어졌고, 새로운 데이터가 입력되었다고 하자.
일반적으로는 각 그룹 내에서 데이터 간 거리를 측정하여 중심점(center)를 구한다. 그리고 두 중심점의 중간에서 최적의 분리 경계면을 구한다. 이 판별 경계를 기준으로 새로운 데이터에 대하여 분류할 수 있다. 이런 방식을 선형 판별법이라고 한다.
SVM은 데이터들을 분리하는 분리 경계면 중에서 각 분류 데이터들과의 거리(margin)가 가장 먼 분리 경계면을 찾아냄으로써 데이터를 분리하는 방법이다.
즉 분리 경계와 실제 데이터들 사이의 여유(margin)이 가장 크도록 분리 경계를 설정하는 것이다.
이 여유 공간을 설정함으로써 새로운 데이터에 대한 판별의 정확도를 높이며, 일반화 오류를 줄인다.
SVM에서는 각 그룹의 중심점이 아닌 두 그룹 사이의 경계에 있는 데이터(support vector)에 초점을 맞춘다.
즉, 흰색과 검은색의 각 그룹의 경계에서 먼저 H1과 H2 선을 긋고, 그 선 안에서 가운데 새로운 선을 그어 최적의 분리 경계면을 정한다.
여기서 H1과 H2를 구하는 방식은 무한히 존재할 수 있다. 다만 두 선분 사이에 학습 데이터가 존재하지 않는다는 점과 두 선분 사이의 거리가 최대가 된다는 제약 조건을 둠으로써 SVM의 분리 경계면이 하나로 정해지도록 한다.
아래 그림에서 선형 판별법은 test 데이터를 검은색으로 분류하지만, SVM은 흰색으로 분류하게 된다.
(이하 예제 코드 설명 내용 생략)