[논문 공부] Character Decomposition to resolve class imbalance problem in Hangul OCR

IxxI·2022년 11월 7일
0

paper review

목록 보기
1/2
post-thumbnail

0. Abstract

  • 표음문자인 한글의 특징 중 하나는 11172개의 서로 다른 글자를 오직 52개만의 graphemes를 사용해서 조합할수 있다는 것이다.
  • 위와 같은 조합의 수는 일반적인 컴퓨팅 자원으로 다룰 수 있는 범위를 넘어섰기 때문에 일반적으로 한글 OCR에서는 "흔히 사용되는 글자를 정의"해서 학습을 시킨다.
  • 이렇게 학습을 시킬 때의 제한으로 인해 grapheme encoding을 사용했고, 본 논문의 저자들은 실험의 결과가 (1) class imbalance (2) target class selection이라는 2개의 문제점을 해결할 수 있었다고 주장한다.

1. Introduction

  • OCR기술은 이미지의 픽셀들을 사용해서 글자를 읽어내는 것을 목표로 하는데, 기존의 연구들은 총 26개의 알파벳으로만 구성된 영어 문자 인식에 집중되어 있었다.
  • 한글은 영어와 달리 <초성 + 중성>, <초성 +중성 + 종성>의 조합으로 생각할 수 있다. 그럼에도 기존의 방법대로 학습시킨다면 grapheme combination을 사용할 때와 달리 training data에 자주 등장하지 않는 글자에 대해서는 학습이 어렵게 된다.

-> 이 decomposition은 크게 2개의 장점을 갖는다.
1. The class-imbalance problem is significantly alleviated as we let the model learn to classify the graphemes in the majority class and minority class of characters to the same grapheme class.
2. It enables character recognition for the entire characters of hangul.

  • 기존에 text recognition으로는 feature extraction -> sequence modeling -> classification의 단계를 따르는 deep learning model이 많이 사용되었었다.
  • 그러나 11172개의 조합중에 학습 시키기 위해 선택한 조합 외의, 즉 out-of-the-box인 조합은 절대 맞출 수 가 없다는 한계를 기존의 모든 방법들은 갖고 있었다.

4. Method


위와 같은 네트워크 구조를 갖는다.

  1. Transformer Encoder
  • transformer 모델에서 사용하는 encoder의 구조를 그대로 사용한다.
  • 이 encoder을 통과하면 (H, W)의 크기였던 input image가 (H/4, W/4, N)의 크기의 feature map으로 바뀐다.
  • 여기서 N은 feature dimension의 값이다.
  1. Attentional Decoder
  • encoder의 output feature map을 입력으로 받아서 각각의 grapheme에 해당하는 feature을 얻어내는 과정을 학습한다.
  • 여기서 사용하는 가정은 <초성 - 중성 - 종성>이 각각 위치적인 prior이 존재한다는 것이다. 따라서 positional encoding이라는 방법을 통해서 grapheme각각의 feature map사이의 위치적인 관계를 얻어낼 수 있도록 한다.
  • encoder의 output과 동일한 크기의 reconstructed feature map인 K, positional encoding의 output인 Q, 그리고 encoder의 output인 V의 벡터곱을 통해서 predictor에 입력으로 넣어줄 feature이 만들어진다.
  1. Grapheme-based Predictor
  • 당연히 마지막의 layer은 classification layer인 만큼 output channel의 수는 전체 한글 grapheme의 개수인 C(=52)개이다.
  • 전체 sequence의 길이인 L에 대해서 각 grapheme의 class에 해당될수 있는 score의 정보를 예측한다. 그러면 argmax()를 사용하여 제일 점수가 높은 문자를 사용할수 있도록 한다.
  • 최종적으로 S = L // 3 의 길이의, 각각의 글자로 조합이 된 결과값이 최종 output이 된다.
  • 종성이 없는 경우도 있기 때문에 <first consonant, vowel, last consonant 혹은 no last consonant>로 조합을 하게 한다.

0개의 댓글