정보공간_1

[6기 강남 김현호] 온라인 문자인식 with SVM #1 본문

IT 놀이터/Elite Member Tech & Talk

[6기 강남 김현호] 온라인 문자인식 with SVM #1

알 수 없는 사용자 2014. 9. 5. 11:37

저번에 Tesseract-OCR을 통해 오프라인 문자인식을 포스팅 했습니다.

이번에는 다양한 온라인 문자인식에 대해 알아 보겠습니다.


온라인 문자 인식이란 사용자가 필기하는 동안에 인식기가 문자를 인식하는것을 의미하는데, "실시간" 또는 "동적" 이라는 용어를 대신 사용하기도 합니다. 이로서 필기의 시간적, 공간적인 동적 정보를 얻을 수 있으며 획수, 획순, 필기 방향등의 정보를 알 수 있습니다.



온라인 문자인식 방법은 크게 전처리, 특징 추출, 특징을 통한 글자 판단 3가지 과정으로 진행됩니다.


1. 전처리

 전처리 과정은 특징 추출을 더욱 원할하게 하고, 정확한 값을 얻기 위해 특징 추출전에 행해지는 과정입니다.

대표적인 전처리 기법으로 스무딩(smoothing), 크기-위치 정규화, 리샘플링(resampling)이 있습니다.


(1) 스무딩

 문자를 필기할 때 발생하는 손의 떨림, 디바이스의 표면 문제 등으로 필기 입력 데이터의 분연속성을 제거하는 필터 방법 입니다.


(2) 크기 및 위치 정규화

 입력 데이터의 문자 영역 사이즈를 고정된 픽셀의 크기로 조정합니다. 정규화 후 글씨의 형태가 변환되지 않도록, 가로 세로축에 같은 비율로 정규화를 수행합니다.


(3) 리샘플링

 정규화된 문자의 크기에 맞춰 특징으로 사용될 포인트를 다시 샘플링 하여 추출합니다.


2. 특징 추출

 기계 학습에 사용될 특징을 추출하는 방법으로 대표적인 방법 3가지를 소개하려 합니다.


(1) Chain code

 8~16가지 방향 코드로 특징을 표현하는 방법으로, 온라인 필기의 특징을 추출하는게 좋은 방법 중 하나입니다.



실제 그려진 선(real strokes), 필기구가 떨어지고 난 후 다시 쓰여진 글자까지의 가상의 선(imaginary strokes)을 통해 다양한 특징을 추출 할 수 있습니다.




(2) Circular projection

 글자를 표현하는 모든 점의 위치의 중심을 찾아 중점으로부터 각 점 사이의 상대적인 거리와 방향으로 특징을 표현하는 방법입니다.


(3) Vector's degree

 글자를 표현하는 점 사이의 벡터간의 각도를 특징으로 사용하는 방법입니다.


3. 패턴 인식

(1) SVM (Support Vector Machine)

 신경망을 포함한 기존 방법들은 오류율을 최소화 하는 목적으로 설계되었으나, SVM은 더 나아가 두 분류의 사이의 여백(Margin)을 최대화 하여 분류 능력을 극대화 하는 선형 분류기 입니다.



SVM은 두 그룹을 나누고 여백을 극대화 하는 최적의 초평면(Hyperlane) 즉, 분류경계을 찾아야 합니다. 이때 분류를 위해 초평면에서 가장 가까운 벡터 데이터, 즉 여백의 크기를 결정하는 중요한 역할을 하는 데이터를 Support Vector라 합니다.



그렇다면 이렇게 단순히 2가지를 분류하는 선형 분류기로 어떻게 글자를 인식할 수 있을까요?


앞서 추출한 특징을 통해 SVM에 학습 시킬 수 있습니다. 이렇게 각 글자에 대해 Multiclass SVM을 만들고 인식하는 방법이 있습니다.


위 그림은 글자들을 인식하도록 만든 Multiclass SVM으로서, 특징 벡터의 수 만큼 차원을 갖는 공간 내에서 각 글자에 대한 Positive Set 과 Negative Set을 구성하여 사이를 구분하는 최적의 초평면(분류경계)를 찾게 됩니다. 어느 글자가 들어오면 전처리 과정을 통해 특징을 추출 후 각 글자별 SVM의 분류경계와의 거리에 따른 신뢰도를 계산해 가장 높은 신뢰도를 갖는 클래스를 해당 글자로 인식하게 됩니다.


SVM에 관한 자세한 내부 과정과, 고급 기법들은 #2에서 다루도록 하겠습니다.