꺼내먹는지식 준
Text Detection 본문
OCR의 여러 step에서 글자 영역을 검출(Detector)하는 기술에 대해 먼저 살펴보자.
일반 객체와 글자 영역의 차이
글자 객체의 특징
한 이미지 내에서 큰 글자 작은 글자 모두 등장할 수 있으며, 글자의 객체 영역이 달라 인식하기 어려운 경우가 발생한다.
다각형
Taxonomy
글자 영역 검출에서도 사람이 디자인한 MSER, SWT 와 같은 특징 추출 방식을 사용했었다.
SW 1.0 버전은 태생적으로 많은 모듈이 결합되어야 해서 복잡도가 높았다.
SW 2.0 은 파이프 라인의 단순화와 사람의 개입 정도를 현저히 줄일 수 있다.
물론 성능의 영역에서도 큰 성장이 있었다.
ICDAR 11: 0.7622 $\rightarrow$ 0.93
ICDAR 13: 0.8217 $\rightarrow$ 0.952 로 향상!
Regression-based, Segmentation-based 차이
Regression-Based
SSD 를 글자 영역 task에 맞게 수정한 연구
간단하게 말해보자면, SSD와 동일하게 고정된 anchor box 의 개수와 비율을 정한 후 (비율은 글자 형태에 맞게 비율 설정), GT와의 거리 비교
단점: 주로 사각형 위주의 글자표현 방식만 효과적 대응되어, 임의의 형태는 대응이 어렵다.
또한 Anchor box 보다 훨씬 큰 종횡비가 존재하면 또 인식이 어렵다.
Segmentation-based
이미지를 입력 받아 글자 영역 표현값들에 사용되는 화소 단위 정보를 뽑고, 후처리를 통해서 최종 글자 영역 표현 값들을 확보
PixelLink
화소 별 글자 영역속하는지 확인, 속한다고 확인 된 영역 근방 8개 파악 가능, 해당 방식으로 경계선도 파악 가ㅡ능
(2) 8개의 방향으로 이웃한 화소가 글자 영역에 속할 확률 채널로 표현
후처리를 통해 최종 글자 영역 표현 값들을 확보
고성능을 위한 후처리가 복잡해지고 시간이 오래걸릴 수 있다.
서로 간섭이 있거나 입접한 개체 간의 구분이 어려움
Hybrid (Regression-based + Segmentation-based)
Fast R CNN으로 사각영역을 찾아내고, 해당 사각 내역에서 좀더 자세히 찾아내기 위하여 화소 정보 뽑아내기
Character-based, Word-based 비교
대부분은 단어 기반으로 한다. (character 는 조합하는 과정이 필요하기에 )
해당 동작을 위해서는 글자별 위치에 대한 labeling이 필요하다.
Craft는 단어 단위 라벨링 $\rightarrow$ 글자 단위 라벨링 추정하는 weakly supervised learning
EAST (An Efficient and Accurate Scene Text Detector) CVPR 2017
SW 2.0 방식으로 성공적인 첫 사례
단순한 pipeline구조로 속도도 빠르고 성능도 좋은 모델
segmentation 기법
AI model을 통해 화소 단위 정보를 뽑고, 후처리를 통해서 글자 영역 검출
크게보면 U 구조
segmentation 의 base가 되는 network 구조
pixel wise prediction
1) 이미지를 입력 받아서 가장 작은 크기의 featuremap 까지 추출하는 feature extractor stem(backbone):
PVANet, VGGNet, ResNEt50
2) Feature merging branch
unpool로 크기 맞추고 concat
1X1, 3X3 convolution 으로 channel수 조절
3) Output: H/4 x W/4 x C maps
Output
Output - RBOX
(이진화)
각 픽셀이 박스를 예측하므로 굉장히 많은 박스, nms 기법은 연산량이 너무 많다. 이에 따라 새로운 방식 제안
Results
Output - QUAD