부스트캠프 12,13주차 #1 - Data Centric, OCR, EAST
1. 서
12,13주차에서는 Data Centric이라는 이름으로 OCR 대회가 진행되는데, 이름에서 알 수 있듯이 데이터를 컨트롤하면서 모델의 성능을 끌어올리는 데이터 중심의 대회이다. 앞서 진행되었던 두 번의 대회에서는 모델의 파라미터를 조정해가면서 성능을 끌어올리는 작업을 했었는데, 돌이켜보면 나의 생각과는 다른 모델의 반응에 당황했던 적이 많았었다. 이번 대회에서는 타당한 가설을 세우고 가설에 따른 데이터셋을 직접 제작하여 성능 개선을 이끌어내 보는 것이 개인적인 목표이다.
블로그를 운영하면서 나의 성장과정을 기록으로 남기는 작업을 하고 있는데, 이게 보람차면서도 만만치 않은 작업임을 피부로 느끼고 있다. 다행히 이번 대회는 Data Centric이라는 주제의 특성상 정리가 크게 어려울 것 같지는 않다. 어쨌든, 이번 대회 또한 기존 대회와 마찬가지로 3번에 걸쳐 관련된 이론을 정리하고 4번째 포스팅에서 대회에 대한 회고를 남기려 한다.
2. 학습내용 리뷰 - Data Centric, OCR, EAST
(1) Data Centric
1) AI Project와 데이터
AI Project의 lifecycle을 간략하게 살펴보면 다음과 같다.
- Project Setup : 모델 요구사항 확정
- Data Preparation : 데이터셋 준비
- Model Training : 모델 학습 및 디버깅
- Deploying : 설치 및 유지보수
AI 프로젝트에서는 당연하게도 요구사항을 충족시키는 모델을 지속적으로 확보해야한다. 여기에는 두가지 방법이 있는데, 첫째로 데이터 수정만으로 모델의 성능향상 (Data Centric), 둘째는 데이터는 고정시킨 채로 모델의 성능을 향상시키는 방법 (Model-Centric) 이다.
Data centric과 model centric의 비중은 서비스 출시전에는 거의 50대 50정도로 보고 있지만 서비스 출시 후에는 80대 20으로 비중의 차이가 나타난다고 한다. 왜냐하면, 출시 후에는 정확도에 대한 성능 개선 요구가 주를 이루는데, 이를 위해 모델의 구조를 변경하는 것은 여러 요구사항(처리속도, gps, 메모리 크기 등)에 대한 검증을 수반해야 해서 비용소모가 크기 떄문이다.
2) Software1.0 & Software2.0
SW1.0과 2.0은 소프트웨어 개발과 배포의 두가지 다른 패러다임을 나타내는 용어이다. SW2.0과 비교할때, SW1.0은 개발자가 프로그램의 모든 동작을 제어하고 예측할 수 있는 패러다임이라는 점이 특징이다. SW1.0에서 개발자는 명확한 명령과 알고리즘을 작성하여 프로그램이 어떻게 동작하는지 정확하게 지정한다. 이러한 SW1.0은 정확성과 신뢰성이 중요한 시스템에서 여전히 중요한 역할을 한다.
SW2.0은 머신러닝과 인공지능이 중심이 되는 개발방식이다. 개발자가 명시적인 명령을 작성하는 대신 모델이 어떻게 학습하고 예측을 수행할지 정의하게 되고, 이러한 소프트웨어는 입력 데이터와 학습결과에 따라 동작이 달라질 수 있다. SW2.0은 이미지 인식과 같은 복잡하고 예측 불가능한 문제를 해결하는데 효과적인 개발방식이다. 이미지 인식 기술도 처음에는 SW1.0의 철학으로 개발되었는데, SW2.0의 등장과 함께 그 성능이 매우 크게 개선되었다.
SW2.0 패러다임에서는 데이터가 중심적인 역할을 하게 된다. 머신러닝 모델이 데이터를 통해 학습하고 데이터를 기반으로 예측을 수행하기 때문이다. 머신러닝 모델의 성능은 데이터의 품질과 양, 다양성에 크게 의존한다. 적절한 데이터의 제작과 수집은 SW2.0의 성공에 결정적인 요소로 평가받는다.
(2) OCR (Optical Character Recognition)
OCR은 '광학적 문자 인식'을 말한다. OCR기술은 이미 우리 생활 곳곳에 적용되어 있는데, 아이폰의 '사진 속 글자 인식' 기능이 OCR의 대표적인 적용예이다. OCR은 결국 이미지속에서 글자를 읽는 것인데, '글자를 읽는다'는 행위는 다시 글자의 영역을 찾아내고, 영역 내의 글자를 인식하는 단계로 분해할 수 있다. 글자의 영역을 찾아내는 것을 문자 검출(Text Detection), 영역 내의 글자를 인식하는 것을 문자 인식(Text Recognition)이라 한다.
Text Detection은 딱 보기에 일반적인 Object Detection과 유사해보인다. 내가 이해한 바로는 Object Detection의 일종으로 보아도 무방할 것으로 보인다. 다만 몇가지 차이점이 있는데, Text Detection은 글자영역에 해당하는지 여부에 대한 단일 클래스 판단에 해당한다는 점, 글자의 특성에서 비롯한 검출 영역의 극단적인 종횡비 및 객체 밀도 등을 들 수 있다.
텍스트 디텍션에서는 크게 두 가지 접근 방식이 있는데 회귀 기반(regression-based)의 방식과 세그멘테이션 기반(segmentation-based)의 방식이다. 회귀 기반의 방식은 이미지 내의 텍스트 영역을 직접 예측하는 방법인데, 이미지를 입력으로 받아 각 텍스트 영역의 bounding box를 직접 예측한다.
이와 달리 세그멘테이션 기반의 방식은 이미지를 픽셀 단위로 분석하여 각 픽셀이 텍스트인지 아닌지 판별하는 방법이다. 이 경우 우선 이미지를 입력받아 각 픽셀에 대한 텍스트 확률 맵을 출력한다. 어떤 픽셀이 글자 영역에 속할 확률을 뽑아냈다면 해당 픽셀에 인접한 8개의 픽셀이 글자 영역에 속하는지 여부를 파악할 수 있고, 이들을 활용하여 연결된 성분을 분석(Connected Component Analysis)한다. 최종적으로 이러한 정보를 바탕으로 후처리를 통해 텍스트 영역을 찾아낸다. 세그멘테이션 기반의 방식은 텍스트의 정확한 영역을 세밀하게 찾아낼 수 있으나, 복잡한 배경이나 겹친 텍스트 등에서는 회귀 기반의 방식보다 처리가 어려울 수 있다.
다시 돌아와서, OCR은 컴퓨터 비전과 자연어 처리의 교집합 부분에 해당한다. 굳이 분류해보자면 앞서 살핀 문자 검출까지를 컴퓨터 비전의 영역, 문자 인식을 자연어 처리의 영역으로 볼 수 있을 것이다. 자연어 처리의 영역에 대하여는 주요 개념어 정도만 눈에 익히고 넘어가자.
- Serializer는 인식된 텍스트 데이터를 특정 형식으로 변환하여 저장, 처리하는 역할을 한다. 예를들어 데이터를 JSON 형식으로 변환하여 다른 애플리케이션 간에 데이터를 쉽게 교환할 수 있게 한다.
- Text Parser는 주어진 텍스트를 분석하고, 문장의 구조를 이해하여 문장의 각 부분이 어떻게 연결되어 있는지 파악한다. 이를 통해 문장에서 주어 동사 목적어 등 구성요소를 식별하고 이들간의 관계를 이해한다.
- BIO 태깅은 개체명 인식 등의 작업에 사용되는 표기방법이다. BIO는 각각 Begining, Inside, Outside를 의미하는데, 텍스트에서 특정 개체나 정보가 어디에서 시작하고 끝나는지, 어떤 부분이 개체에 해당하는지 또는 아닌지를 표시하는데 사용된다.
(3) EAST (Efficient and Accurate Scene Text Detector)
EAST는 2017년 논문에서 제시한 방법으로, 이미지에서 텍스트를 빠르고 정확히 탐지할 수 있는 딥러닝 기반의 방법이다. 참고로 해당 논문은 SW 2.0 방식으로 개발되어 제대로 성과를 낸 첫 논문이라고 볼 수 있다고 한다.
위 그림에서 알 수 있듯이 EAST 모델은 세 가지 부분으로 구성되는데 1) 이미지를 입력받아 가장 작은 크기의 특징맵까지 추출하는 feature extractor stem, 2) 특징맵을 키워가며 여러 레벨의 특징들을 합쳐주는 feature merging branch, 3) 최종 출력(화소 단위의 정보)을 뽑아주는 output layer이다.
EAST는 간단히 요약하면 AI 모델을 통해 화소 단위 정보를 뽑고, 이를 후처리하여 텍스트 영역을 검출한다고 할 수 있다. 여기서 화소 단위의 정보에는 1) 각 화소가 글자 영역의 중심에 해당하는지를 나타내는 score map과 2) 글자영역이라면 해당 bounding box의 위치가 어디인지(ex RBOX - 회전각도, bounding box의 4개의 경계선 까지의 거리) 나타내는 geometry map으로 나눌 수 있다.
화소단위 정보를 얻었다면 이를 후처리하여 글자영역의 표현값을 계산해야 한다. Score map과 geometry map을 통해 사각형 좌표값을 복원하게 되는데, 글자영역 중심의 화소별로 bounding box가 생성되어 매우 많은 box들이 나타나게 된다. 이들을 하나로 합쳐주는 작업이 NMS(Non-Maximum Suppression)이다. EAST에서는 기존의 NMS에서 보다 연산량을 개선한 새로운 방법인 Locality-Aware NMS를 제안하였는데, 아이디어는 IoU 기반으로 비슷한 박스들을 하나로 통합하고, 통합시 score map값을 활용하여 weighted merge를 해주는 것이다.
EAST에서는 loss function으로 score map에서의 loss와 geometry map에서의 loss를 합쳐 사용한다.
$$ L=L_s +\lambda _gL_g$$
RBOX를 기준으로, geometry map의 loss는 다시 사각형에 해당하는 IoU loss와 각도값에 대한 cosine loss로 구성된다.
$$L_g = L_{AABB}+\lambda _\theta L_\theta $$
EAST 외에, 강의에서 Advanced Text Detection Models라는 주제로 세가지 모델에 대해 다루었는데, DBNet, MOST, TextFuseNet이다. 이들에 대하여는 핵심적인 아이디어만을 짚어보고, 자세한 내용은 추후 필요시 공부하는 것으로 한다.
DBNet | segmentation 기반의 방법은 인접한 개체 구분이 어려웠고, 기존에는 pixel embedding 등의 방법론이 제시되었었음. DBNet의 아이디어는 adaptive thresholding, 즉 글자영역 구분에서 threshlod값을 이미지 별로 모델이 알아서 정하도록 해보자는 것 |
MOST | EAST는 단순하고 빠르지만 종횡비가 큰 경우 성능이 떨어진다는 단점이 있었음. MOST는 EAST의 출력물인 geometry map과 score map을 활용하지만, 여기에 두 가지 모듈 TFAM과 PA-NMS를 추가하였음 |
TextFuseNet | 기존 instance segmentation 기반의 방법은 영역이 끊어져 있으면 합쳐지기 어려웠는데, 이를 단어 기반의 접근론의 한계로 지적하고 global 특징을 사용해야 한다고 제시하였음 |
3. 느낀점
이번 대회에서는 데이터 중심이라는 주제특성상 조금 이질적인 대회라는 느낌이 든다. 어쨌든 부스트캠프에서 진행되는 4가지 대회중 하나를 차지하고 있는 만큼 분명 데이터셋을 제작하거나 다뤄보는 경험은 큰 자산이 될 것이다. 또한 데이터는 아직은 어색한 모델구조에 비해 좀더 직관적으로 와닿는 면이 있기 때문에 모델이 보여줄 퍼포먼스에 대해 좀더 명확히 이해할 수 있지 않을까 기대해본다.