CRAFT 논문 리뷰 — Character Region Awareness for Text Detection

딥러닝 기반 OCR 스터디 — CRAFT 논문 리뷰

강준영
18 min readJan 19, 2020

Character Region Awareness for Text Detection(이하 CRAFT)은 우리에게 친숙한 NAVER의 Clova AI팀에서 발표한 OCR관련 논문으로 제목을 통해 두 가지 힌트를 얻을 수 있다.

  • OCR 특히, Text Detection과 관련된 내용을 다룬다.
  • Character Region, 즉 ‘문자’ 단위로 영역을 인식한다.

그렇다면 왜, 그리고 어떻게 문자 단위의 인식을 통해 Text Detection을 수행했는지 들여다볼 예정이다.

무엇을 예측하는 모델인가?

CRAFT 알고리즘은 Scene Text Detection(이하 STD) 문제를 해결하기 위해 기본적으로 딥러닝 기반 모델을 이용한다.

모델의 목적은 입력으로 사용한 이미지에 대해 ‘픽셀’마다 다음의 두 값을 예측하는 것이다.

  • Region score
  • Affinity score

Region score는 해당 픽셀이 문자(Character)의 중심일 확률을 의미한다.

Affinity score는 해당 픽셀이 인접한 두 문자의 중심일 확률을 의미한다. 이 점수를 기반으로 개별 문자가 하나의 단어로 그룹화될 것인지가 결정된다.

여기서 ‘인접한 두 문자’의 기준은 아래에서 설명할 예정이다.

이미지처럼 Region score(좌측 하단)는 각 픽셀이 문자의 중심에 가까울수록 확률이 1에 가깝고 문자 중심에서 멀수록 확률이 0에 가깝도록 예측하는 모델을 학습하는 것이다.

이와 동시에 동일 모델은 각 픽셀이 인접한 문자의 중심에 가까울 확률인 Affinity score(우측 하단)도 예측할 수 있어야 한다.

잘 학습된 모델을 통해 입력 이미지의 Region scoreAffinity Score를 예측하면 최종적으로 다음과 같은 Text Detection 결과를 얻을 수 있다.

제안하는 모델의 목적을 알았으니 다음과 같은 질문들로 자연스럽게 이어질 것이다.

  • 모델은 어떤 구조로 구성되어 있는가?
  • 모델은 어떤 방식으로 학습하는가? 목적함수는 무엇인가?
  • Region, Affinity 두 점수로 QuadBox 및 Polygon을 어떻게 도출하는가?
  • 인접한 두 문자의 중심이란 정확히 무엇인가?
  • 입력에 대한 기대 정답, 즉 Ground-Truth는 어떻게 만드는가?
  • 기존의 접근 방식보다 어떤 면에서 유용한가?
  • 등등…

지금부터 이런 의문들을 하나씩 풀어가보자.

CRAFT Architecture — 모델의 구조는?

왼쪽은 논문에 명시되어 있는 CRAFT 네트워크 구조이고, 오른쪽은 Github에 공개되어 있는 코드를 통해 재구성한 CRAFT 네트워크 구조이다.

CRAFT 신경망 구조는 다음과 같은 특징을 갖는다:

  • Fully Convolutional network architecture
  • VGG-16을 기반으로함
  • Batch normalization을 사용함
  • U-net처럼 UpConv를 통해 Low-level 특징을 집계하여 예측함

VGG-16은 총 16개 레이어로 구성되어 있으며 3x3 필터를 사용한다(1x1 필터가 포함되기도 함). 활성화 함수로는 ReLU를 사용하며, Stride와 Padding은 각각 1로 설정한다.

CRAFT 모델의 출력은 Classification이 아닌 Image 형태이기 때문에 기존의 VGG-16을 Fully ConvNet으로 변형해 사용한다.

U-Net: Convolutional Networks for Biomedical Image Segmentation

사실상 CRAFT 논문의 핵심적인 부분은 은닉층의 구성보다는 출력층 및 학습방법에 있다.

네트워크 구성에 대한 구체적인 내용은 CRAFT 소스코드분석 글을 통해 별도로 소개하고 있다:

또한, CRAFT를 구성하는 주요 요소인 VGG-16, FCNs, U-Net 그리고 Batch Normalization 역시 개별적인 리뷰 포스팅을 통해 다루고 있다:

VGG-16 리뷰

FCNs(Fully Convolutional Networks) 리뷰

U-Net 리뷰

참고로, 최종 출력층에서는 비선형 함수가 포함되지 않은 1x1 Conv 연산을 이용해 16채널은 2채널로 줄였다.

정답 레이블은 어떻게 만드는가? Ground-Truth Labeling

CRAFT 모델은 위 이미지처럼 입력한 이미지에 대해 Region Score Map과 Affinity Score Map을 출력해야한다.

따라서, 학습 시에는 각 입력으로 사용될 이미지들의 기대 출력에 해당하는 기준 정답(Ground-Truth)이 필요하다.

특정 이미지에 대한 Ground-Truth를 생성하는 과정은 다음과 같다.

Region Score Map 생성하기:

  1. 2차원 isotropic Gaussian map을 준비한다.
  2. 이미지 내의 각 문자에 대해 경계상자를 그리고 해당 경계상자에 맞춰 가우시안 맵을 변형시킨다.
  3. 변형된 가우시안 맵을 원본 이미지의 경계상자 좌표와 대응되는 위치에 해당하는 Label Map 좌표에 할당한다.

구체적인 이해를 돕기 위해 예를 살펴보자.

2D 등방성(isotropic) Gaussian map을 준비한다.
원본 이미지의 절반 사이즈에 해당하는 Region score 맵을 만들고 모든 픽셀을 0으로 초기화 한다.
원본 이미지의 문자에 대한 경계상자를 그렸을 때, 대응되는 Region score map의 좌표에 경계 상자에 맞춰 변형시킨 가우시안 맵을 할당한다.
각각의 문자에 대해 동일한 과정을 거쳐 오른쪽과 같은 Region score에 대한 Ground-Truth를 만들 수 있다.

Affinity Score Map 생성하기:

Affinity Score Map은 Region Score Map을 생성할 때 사용했던 Character boxes를 활용한다.

아래 예시를 통해 앞에서 언급했던 ‘인접한 두 문자’ 의 정의를 명확히 해보자.

문자(Character) 경계 상자에 대각선을 그엇을 때 생기는 위쪽 삼각형과 아래쪽 삼각형으로부터 각 중심점을 구할 수 있다. 하나의 단어에 포함되는 인접한 두 문자에 대해 삼각형 중심점을 이었을 때 만들어지는 사각형이 바로 Affinity box가 된다.
Region score map 생성 시와 마찬가지로 원본 이미지의 Affinity box 좌표에 대응되는 Affinity score map의 좌표에 경계 상자(Affinity box)에 맞춰 변형시킨 가우시안 맵을 할당한다.
각각의 문자에 대해 동일한 과정을 거쳐 오른쪽과 같은 Affinity score에 대한 Ground-Truth를 만들 수 있다.

결국 문자 단위(Character-level)의 경계상자(Bounding-Box)만 결정되면 Region Score map과 Affinity Score map을 구할 수 있게된다.

위와 같은 방식으로 정의된 Ground-Truth는 문자를 개별적인 요소로 다룬다. 따라서 가로로 아주 긴 단어나 사이즈가 큰 텍스트를 비교적 작은 Receptive Field로도 잘 감지할 수 있다는 장점이 있다.

이것은 기존의 Bounding Box Regression과 같은 접근 방식이 지닌 문제점을 보완하는 데 탁월한 것으로 보인다.

그런데 문제는,

앞에서 제시된 Ground-Truth를 이미지마다 하나하나 만들기에는 너무 많은 비용이 요구된다.

기존에 공개되어 있는 대부분의 데이터 집합들은 Annotation이 문자 수준(Character-level)이 아닌 단어 수준(Word-level)으로 labeling 되어 있다.

이러한 문제를 해결하기 위해 CRAFT 연구팀에서는 기존의 Word-level Annotation이 포함된 데이터 집합을 활용하여 Character-box를 생성하는 방법을 제안했다.

이 방법에 대해서는 Ground-Truth를 활용한 학습 방법을 살펴본 이후에 소개할 것이다.

중간 모델 학습하기

Ground-Truth가 포함된 Training dataset을 이용해 모델을 학습하는 방법은 매우 간단하다. 다음의 목적 함수를 최적화하면 된다.

목적 함수 (Loss Function):

해석하자면, 각 픽셀 p에 대한 Region score의 예측값 Sr(p)와 정답 Sr*(p)의 유클리드 거리 오차와 각 픽셀 p에 대한 Affinity score의 예측값 Sa(p)와 정답 Sa*(p)의 유클리드 거리 오차의 총합을 Loss로 정의하며, 이 함수를 최적화하는 것이 학습의 방향이다.

개인적으로 군더더기 없이 깔끔한 Loss Function이라 마음에 든다.

문자 수준의 레이블이 포함된 학습 데이터가 충분히 많다면 위 방식의 학습만으로도 충분할 수 있다. 그러나 앞에서 언급했듯이 대부분의 벤치마크 데이터 집합들은 단어 수준으로 레이블링되어 있다.

따라서, 위 과정으로 학습이 완료된 모델은 완성된 것이 아닌 중간 단계의 모델로 Interim model이라 칭한다.

Interim Model을 개선하는 방법

기존의 많은 Word-level Annotation 기반 데이터 집합을 활용하기 위해 해당 데이터들이 주어졌을 때, 앞에서 학습한 interim model을 이용하여 Character-box를 생성하는 방법을 소개한다.

위 이미지는 Word-level Annotation과 함께 실제 이미지가 주어졌을 때 Character-level Annotation을 구하기 위한 일련의 과정이다.

  1. Word box 단위로 이미지를 Crop한다.
  2. Interim model을 이용하여 Crop된 이미지의 Region score를 예측한다.
  3. Watershed algorithm을 이용해 문자 영역을 분리하여 Character box를 결정한다.
  4. 마지막으로 분리된 Character box들이 Crop되기 이전의 원본이미지 좌표로 이동시킨다.

Word-level Annotation으로부터 Character-level Annotation을 도출한 후 각 Character box를 이용해 Region score map과 Affinity score map을 구할 수 있다.

이 방법을 통해 얻은 Ground Truth는 Interim model에 의해 예측된 것으로 실제 정답과는 오차가 존재한다. 따라서 Pseudo-Ground Truth라 부른다.

Interim model로 예측한 Character box를 통해 얻은 Pseudo-Ground Truth는 학습 시 모델의 예측 정확도에 악영향을 줄 수 있다. 따라서, 학습 과정에서는 Pseudo-Ground Truth의 신뢰도를 반영하여 최적화한다.

Pseudo-Ground Truth의 신뢰도

Pseudo-GT의 신뢰도(Confidence score)는 Interim model이 Cropped image에서 Character box를 얼마나 잘 분리했는지 정도로 결정된다.

Confidence score는 각각의 Word Box: w 마다 다음과 같이 계산된다.

실제 단어의 길이와 Interim model에 의해 Split된 Character box 개수 사이의 오차 비율을 계산하는 것이다.

예를 들어, ‘COURSE’ 라는 단어(L(w)=6)의 Word Box를 Character Box로 분리하는 과정에서 5개의 Character Box가 예측되었다면

‘COURSE’ Word box의 Confidence score는 5/6이 된다. {6-min(6, 6–5)}/6

주의 해야할 점은 Word Box의 Confidence score가 0.5보다 낮을 경우이다.

이 경우, 모델 학습 시에 부정적인 영향을 줄 가능성이 매우 높기 때문에 추청된 Character Box를 그대로 사용하는 대신에 Word Box를 단어 길이 L(w)로 등분한다. 그리고 Confidence Score는 0.5로 설정한다.

당연히 Pseudo-Ground Truth도 등분된 Character Box로 만들어낸다.

Generate Confidence Map

이미지의 각 Word-box에 대해 Confidence Score를 계산한 후 이 값들을 이용해 다음식을 만족하는 Confidence Map을 만든다.

픽셀 p에 대해 p가 원본 이미지에서 Word-Box의 영역에 포함된다면 해당 좌표와 대응되는 Confidence Map의 좌표값은 Word-Box의 Confidence Score로 설정한다.

나머지 영역은 모두 1로 설정한다.

이렇게 만든 Confidence map은 Pseudo-GT 데이터 집합을 학습할 때 목적함수(Loss Function) 내에서 사용된다.

결국 Word-box에 대응되는 픽셀들은 Interim model의 문자 영역 예측 정확도에 비례하는 가중치가 부여되는 것이다.

학습이 진행됨에 따라 Interim model은 문자를 점점 더 잘 예측하게 된다.

학습 과정을 요약하자면,

Character-level Annotation 데이터 집합의 부족함을 보완하기 위해 2단계의 학습을 수행한다.

  1. Ground Truth Label으로 1차 학습 : Interim model 생성
  2. Pseudo-Ground Truth Label으로 2차 학습 : Weakly-Supervised Learning

모델 학습 방법에 대해서 알아봤지만 여전히 다음과 같은 의문이 남아있다:

  • Region, Affinity 두 점수로 QuadBox 및 Polygon을 어떻게 도출하는가?
  • 기존의 접근 방식보다 어떤 면에서 유용한가?

개별 문자를 단어로 연결하기

앞에서는 CRAFT모델이 이미지 내의 문자 영역(Character Region)을 인식(Awareness)할 수 있도록 학습하는 방법을 알아봤다.

마지막으로 모델을 통해 예측한 Region Score와 Affinity Score를 이용해 최종 결과물을 도출해내는 방법을 살펴보자.

이 과정을 두고 논문에서는 추론 단계(Inference Stage)라 칭한다.

목적에 따라 Character box, Word box, Polygon 등 다양한 형태의 결과물을 만들어 낼 수 있다.

Word-Level QuadBox Inference

Region Score와 Affinity Score를 통해 각 문자를 하나의 단어로 그룹화하는 방법은 다음과 같다:

  1. 원본 이미지와 동일한 크기의 이진 맵 M을 모든 값이 0이 되도록 초기화
  2. 픽셀 p에 대해 Region Score(p) 혹은 Affinity Score(p)가 각각 역치값 Tr(p), Ta(p)보다 클 경우 해당 픽셀을 1로 설정
  3. 이진 맵 M에 대해 Connected component Labeling을 수행
  4. 각 Label을 둘러싸는 최소 영역의 회전된 직사각형 찾기(OpenCV에서 제공하는 connectedComponents()와 minAreaRect()를 활용)

Polygon Inference

Word-Level QuadBox를 다음과 같은 과정을 통해 문자 영역 주위에 다각형을 만들어 곡선 텍스트를 효과적으로 처리할 수 있다:

  1. 수직 방향을 따라 문자 영역의 Local maxima line(파란선)을 찾는다
  2. 최종 다각형 결과가 불균일해지는 것을 방지하기 위해 Local maxima line은 QuadBox 내의 최대 길이로 통일한다.
  3. Local maxima line의 중심점들을 연결하는 선인 Center line(노란선)을 구한다.
  4. 문자 기울기 각도를 반영하기 위해 Local maxima line을 Center line에 수직하도록 회전한다(빨간선).
  5. Local maxima line의 양 끝점은 다각형의 Control point 후보들이다.
  6. 두 개의 가장 바깥쪽으로 기울어진 Local maxima line을 Center line을 따라 바깥쪽으로 이동하여 최종 Control point를 결정한다.(텍스트 영역을 완전히 커버하기 위함)

자, 이렇게 해서 드디어 CRAFT 모델을 학습하는 방법과 모델의 예측값을 이용해 텍스트 영역을 추출하는 방법에 대해 모두 살펴보았다.

무엇이 CRAFT를 우월하게 만들었을까?!

전체 텍스트 대신 개별 문자를 인식하고, 상향식(Bottom-up)으로 문자들을 연결하는 접근 방식은

큰 이미지에서 비교적 작은 Receptive field로 하나의 문자를 감지하기에 충분하므로, 스케일이 가변적인 텍스트를 검출하는 데 있어서 견고하다.

또한 이러한 특성은 곡선이나 기형적 형태의 텍스트와 같은 복잡한 STD문제에서도 높은 유연성을 보여줄 수 있는 이유이다.

기존의 Bounding-Box Regression을 활용하는 Object detection 기반 접근 방식은 하나의 경계상자로 감지하기 어려운 텍스트를 포함한 이미지에서는 어려움이 많다. 이러한 문제를 보완하기 위해 다양한 스케일의 앵커박스가 요구된다.

CRAFT의 접근방식은 여러 개의 앵커박스가 필요하지 않기 때문에 Non-Maximum Suppression (NMS)과 같은 후처리 작업도 필요가 없다.

한계점

  • 각 문자가 분리되어 있지 않고 연결되는 특정 국가의 언어 혹은 필기체에 대해서는 학습이 쉽지 않다.
  • 아쉬운 FPS

CRAFT 모델은 기존의 Scene Text Dectection을 위한 접근 방식들에 비해 뛰어난 결과를 보여주고 있다. 이 글의 목적은 모델에 대한 이해를 돕기 위함으로 실험 결과에 대해서는 자세히 다루지는 않는다.

실험 결과에 대한 자세한 분석은 원문을 참고하자

TODO

CRAFT 모델의 완벽한 이해를 위해, 모델을 구성하는 메커니즘에 관련된 연구 및 본 연구에 영감을 준 모델 등에 대해서도 하나하나 뜯어볼 예정이다.

--

--