
Naver Clova 팀에서 올해 4월에 공개한 OCR 논문입니다.
이 논문의 저자는 OCR 영역에서 Localization 쪽에 초점을 두어 연구를 수행하였고, 글자가 curve / arbitrary shape / extremely long 한 경우에도 글자 영역을 잘 찾아 낼 수 있는 방법을 제안합니다.


1. Introduction
기존에 수행되었던 많은 OCR 방법들은 word-level의 Bounding Box의 위치를 찾기위해서 네트워크를 활용한다. 하지만 이러한 방법들은 텍스트의 형태가 curve이거나 deformed, extremely long한 상황에서는 잘 찾아내기가 어렵다.
본 논문에서 제안하는 Character-level의 인식 방법은 각 문자들을 연결(linking)함으로써 단어 영역을 찾아낼 수 있기 때문에 이점이 있다.
기존의 방법에서는 word-level로 영역을 찾아내고자 하기 때문에, 큰 영역을 찾고자 할 경우에 receptive field 영역이 제한되는 등의 어려움이 있지만, 제안하는 방법은 Character-level의 영역을 우선 찾기 때문에 이러한 문제점을 극복할 수 있다.
CRAFT(Character Region Awareness for Text detection) 모델은 각 글자의 위치와 관련된 Region Score와 글자간의 밀접성(?)에 관련된 Affinity Score를 출력한다. Region Score는 글자 각각의 위치를 찾는데 사용되며, Affinity Score는 각 글자들을 Grouping하여 하나의 객체를 만드는데 사용된다.
본 논문의 방법에서는 Character Level의 방법이지만, 일반적인 OCR 관련 데이터셋은 대부분 Word-level의 Annotation만이 제공되기 때문에, Character Level의 데이터셋이 필요하다. 이를 위해 Weakly Supervised 방법의 Character Level의 GT 생성 방법을 제안한다.
3. Methodology

3.1. Architecture
FCN(Fully Convolutional Network) 구조를 차용하고 있다. Encoder 영역은 VGG-16 BN을 기반으로 하며, Decoder 영역은 U-Net 구조의 Upsampling과 Skip-Connection을 적용하여, 최종적으로 Region Score / Affinity Score 맵을 생성하게 된다.
3.2. Training

3.2.1. Ground Truth Label Generation
Character-level의 데이터셋이 없기 때문에, 별도로 Character-level의 GT를 생성해야한다.
GT는 주어진 이미지에 대응하는 각 픽셀마다의 Region Score와 Affinity Score GT가 필요하다.
여기서 Region Score는 각 픽셀이 글자의 중심 픽셀일 확률을 나타내는 값이며, Affinity Score는 각 픽셀이 인접한 두 글자의 중심 픽셀일 확률을 나타내는 값이다.
일반적인 Binary Segmentation 문제 영역과 다르게, 이 논문에서는 각 픽셀들을 Gaussian Heatmap을 통해 확률을 맵핑하였다. (위 그림의 히트맵 참조)
Affinity Box 생성 방법
1) Text box의 대각선의 교점을 Text box의 중심으로 설정
2) 두 대각선을 통해 생성되는 상 삼각형(upper triangle)과 하 삼각형(lower triangle)의 중심점 설정
3) 인접한 두 Text Box의 각 상/하 삼각형 중심점들을 연결한 사각형이 Affinity Box
히트맵 생성 절차(Region Score / Affinity Score 모두 동일한 방법)
1) 2D Gaussian 분포 생성 (정사각형태로)
2) 2D Gaussian 분포 영역의 4 point를 Character Box의 네 점에 맞게 변환하는 Perspective Transform 관계 계산
3) 찾아진 perspective transform 관계를 토대로, 2D Gaussian 분포의 값을 투영(Warping)
이렇게 생성된 GT는 Character-level의 영역을 나타내며, 각 Character 간의 인접(?)/밀접(?) (affinity)를 나타내기 때문에, 작은 receptive field만으로도 긴 word를 찾아내는 것도 가능해진다.
그렇다면, Text Box를 잘 잡아야 Score Mapping도 잘 할수 있을 텐데, 현재는 정확한 Text Box에 대한 정보가 없다… 이에 대해서는 어떻게 할까? –> Weakly-supervised Learning을 통해 해결
3.2.2. Weakly-Supervised Learning

합성 데이터셋이 아닌, 일반적인 real 환경의 데이터셋에는 word-level의 데이터셋만 있기 때문에 chracter level의 text box 정보가 없다. 그래서 논문에서는 weakly supervised learning 방법을 통해 character level의 text box를 생성하는 방법을 제안한다.
위 그림은 word level의 word-box로부터 character 단위로 split하는 전체전인 절차를 나타낸 것이다.
1) 원 영상으로부터 word-level의 박스를 crop하여 추출한다.
2) 모델은 cropped된 이미지로부터 region score를 predict하도록 학습한다.
3) watershed alg.를 통해 character region을 나누고, 이를 토대로 bounding box를 만든다
4) 각 바운딩 박스가 생성되면, 이를 다시 원 영상으로 projection(warping)하여 region score 맵을 생성한다.
이렇게 생성된 regions score pseudo-ground truths (pseudo-GTs, 유사 GT)를 토대로 위 그림3을 통해 affinity score의 계산도 가능하다.
이때 중요한 것은, 2번 step의 region score를 생성할 때, 어떻게 잘 생성할 것이냐는 것이다.
region score가 잘 학습될 수 있도록 objective function을 잘 설계해야하며, 이를 위해 “잘 생성되었다”를 나타낼 척도/지표 (measure)가 필요하다. 이를 위해 논문에서는 Confidence Map을 제안한다.
region score가 잘 생성하기 위해, 모델에 의해 생성된 각 pseudo-GTs의 퀄리티를 평가한다.
다행히 강력한 cue가 text annotation에 존재하며, 이는 글자의 길이이다. 대부분의 데이터셋에는 각 word box에 대한 transcription이 제공되며, 이를 통한 단어의 길이는 pseudo-GTs의 confidence를 평가하는데 사용될 수 있다.

l^c(w) : 얻어진 score map으로부터 얻어진 단어의 길이(bbox의 수)
s_conf -> 실제 박스 수와 추정된 박스 수가 같을 때 1, 다를때 0에 가까워짐

R(w) : word w가 차지하는 영역
S_c(p)는 각 픽셀마다의 confidence 값이며, S_c 맵은 픽셀마다, word-length를 기반으로 하여 0~1의 confidence 값을 지니게 된다.

L은 Weakly supervised learning을 위한 Objective Function으로, 이때 S_r* / S_a*는 각각 pseudo-GTs로부터 얻어진 region score와 affinity score를 나타낸다.
즉, S_r(p)와 S_a(p) 는 원본 이미지를 모델에 태워 생성된 score 값을 의미하며, S_r*(p)와 S_a*(p)는 원본 영상에서 word 영역을 crop하고, 이를 토대로 생성된 region / affinity score를 각각 원본 영상에 warping 하여 생성된 score map이다.
따라서, 원본으로부터 생성된 Score Map과 Pseudo-GTs로부터 생성된 Score Map의 차가 없도록 하며, 동시에 Pseudo GTs의 신뢰도를 높여주기 위한 word-length 기반의 Confidence인 S_c(p)를 곱하므로써, “글자의 분리가 잘 되고 curve/deformed 형태의 바운딩 박스도 잘 찾아지게끔” 하는 Loss Function의 의미를 갖는다.

3.3. Inference
인퍼런스 단계에서 최종 결과는 word-boxes, character boxes, polygon 등 다양한 형태로 나타날 수 있다.
논문에서는 word-level의 바운딩 박스인 Quad box를 S_a / S_r로부터 간단하고 강력한 post-processing을 통해 생성하는 방법에 대해 설명한다.
Bounding Box를 찾는 절차는 다음과 같다.
1) Binary Map M을 생성하고 0으로 초기화 한다. 이때, S_r(p) > tau_r 또는 S_a(p) > tau_a 일 경우 1로 설정한다.
2) Connected Component Labeling(CCL, 블럽컬러링 방법)을 M에 수행하여, 각각의 Label 그룹을 생성한다.
3) 각 라벨에 대응하는 연결된 컴포넌트를 둘러싼 최소 영역인 rotated rectangle을 찾음으로써 QuadBox를 찾는다.
CRAFT의 장점은 NMS (Non-Maximum Suppresion)과 같은 post-processing을 별도 수행할 필요가 없다는 것이다. 이는, 이미 CCL을 통해 각각 라벨에 대한 영역을 획득하였고, word-level의 바운딩 박스는 하나의 큰 박스로 표현될 수 있다. 그리고, CRAFT의 차별점은 픽셀 단위로 바운딩 박스를 정의할 수 있다는 점이다.

Polygon Box를 생성하는 방법
1) Scanning Direction 방향으로 Local Maximum 라인을 찾는다 (파란색 선)
2) 각 Local Maximum Line의 Center Point를 연결하여 Local Maxima의 Center Line을 만든다 (노란 선)
3) Center Line으로부터 수직인 방향으로 Local Maximum Line을 회전시켜 Control Points Line을 얻고 (빨간 선), 각 라인의 끝을 Control Point 로 설정한다(녹색 점)
3-1) 양 끝의 Control points는 바깥으로 Move하여 설정한다.
4) 각 Control Points를 모두 연결하면 Quad Box를 얻을 수 있다.
4. Experiment
quadrilateral-Type(사변형, 사각형)의 데이터셋에서의 성능 평가

Polygon Type의 데이터셋에서의 성능 평가

End-to-End 방법의 성능 비교


4.4. Discussion
Robustness to Scale Variance : 전적으로 단일 스케일의 데이터셋만으로 실험했으며, 텍스트의 크기는 매우 다양했다. 스케일 variance 문제를 다루기 위해 multi-scale에 대한 테스트를 수행했던 다른 주요 방법들과는 다른 차이점이다.
이는 각 Character마다의 localization을 수행하였고 이는 상대적으로 작은 receptive field만으로도 충분히 단일 character에 대해 커버할 수 있었기 때문이다. 이러한 것들이 CRAFT를 스케일에 강건하게 만들 수 있었다.
Multi-language issue : IC17 데이터셋에는 Bangla, Arabic 문자가 포함되어 있는데, 이는 합성 텍스트 데이터셋에 포함되어 있지 않아 있으며, 두 언어는 모두 필기체로 작성되어 있기 때문에 각 chracter들을 분리해내기 어려웠다. 이에 두 언어에 대해서는 타 언어에 비해 성능이 떨어졌다.
반면, 동아시아 문자(한국어, 중국어, 일본어 등)는 문자가 같은 너비로 분리가 쉬워, weakly-supervision을 통한 모델 학습이 좋은 성능을 나타내었다.
Comparison With End-to-end methods : CRAFT는 Detection만을 위해 학습되었음에도 불구하고, 다른 End-to-End 방법과 비교할 정도로 성능이 좋았다. 실패한 케이스에 대해서는, 특히 ground truth words가 semantic 정보에 의해 분리될 경우에는 recognition 단계를 통해 성능에 이점이 있을 것으로 보인다.
Generalization ability : 제안하는 방법은 각 데이터셋에 대한 별도의 fine-tuning 없이도 SOTA를 찍었음.