본문 바로가기

NLP

An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

Baoguang Shi, Xiang Bai, Cong Yao의 'An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition' 논문을 읽고 정리해 보고자 한다. 

[Abstract]

이미지 기반 sequence recognition. 해당 논문에서는 scene text recognition(STR)의 문제에 대해 살펴보고, 본 논문의 방법론을 제안함. 특징 추출, 시퀀스 모델링, 그리고 transcription을 통합된 프레임워크로 통합시키는 neural network 구조를 제안한다. 기존의 STR과 비교했을 때, 제안된 구조는 4가지 구분되는 특징을 보유하고 있다. 

(1) end-to-end trainable. (vs separately trained and tuned) 

(2) 문자 분할이나(character segmentation) 수평 스케일 정규화(horizontal scale normalization)를 포함하지 않는 임의의 길이의 시퀀스를 자연스럽게 처리한다.

(3) 사전 정의된 어휘에만 국한되지 않고, 사전이 없는 장면 및 사전 기반 장면 text recognition 작업 모두에서 놀라운 성능을 달성할 수 있다.

(4) 효과적이지만 훨씬 더 작은 모델을 생성하며, 따라서 실제 현실 적용 시나리오에서 보다 실용적일 수 있다.

Standard benchmark 실험은 IIIT-5K, Street View Text and ICDAR dataset을 사용해 수행했다.

 

** STR - 일상 속 텍스트를 인식하고 싶을 때 주로 사용. 글자 영역을 찾는 Text Recognition과 영역 속 글자를 인식하는 Recognition 과정을 거치며, End-to-End Scene Text Detection & Recognition(=Text Spottig)은 Detection과 Recogition 전 과정을 의미한다. 

 

[1. Introduction] 

해당 논문은 computer vision의 클래식한 문제 : image based sequence recognition를 다루었다. 일반적인 object recognition과 다르게, sequence-like object를 인식하는 것은 종종 하나의 label이 아닌 다수의 object label을 예측하는 형태로 받아들일 수 있다. 또 다른 sequence-like object의 특징은 그들의 길이가 굉장히 다를 수 있다는 점이다. 예를 들면, 2글자만으로 이루어진 "OK", 15글자로 이루어진 "congratulations" 단어들이 모두 영단어에 포함되어 있다. 따라서 가장 대표적인 DCNN과 같은 모델은 sequence prediction에 직접적으로 적용되기 어렵다. DCNN 모델들은 종종 고정된 자수의 입력, 출력에서 작동하므로 가변 길이의 레이블 시퀀스를 생성할 수 없기 때문이다. 

RNN(Recurrent Neural Networks) 모델들은 sequences를 주로 다룰 수 있는 모델이며, RNN모델의 장점 중 하나는 훈련과 테스트 모두에서 sequence object image에서 각 요소의 위치가 필요하지 않다는 것이다. 하지만 input object image를 sequence of image features로 변형하는 독립적인 전처리 과정이 대부분 필수적이다. 따라서 현존하는 RNN에 기반한 시스템들은 end-to-end의 의미로 학습되고 최적화되기에는 충분치 않다.

해당 논문에서는 이미지로부터 sequence-like object를 인지하는데에 특화된 novel neural network model에 해당하는 network 구조에 주목했다. 본 논문에서는 DCNN과 RNN을 결합해 만들어진 CRNN(Convolutional Recurrent Neural Network)를 주로 사용했다. Sequence-like object에 대해 CRNN은 CNN 모델들보다 몇가지 특징적인 장점을 보유하고 있다.

 

(1) 추가적인 detailed annotation(ex, characters) 따로 없이도 직접적으로 sequence labels(ex, words)만으로 학습될 수 있다.

(2) 이미지 데이터로부터 직접적으로 informative representation를 학습하는 데 DCNN과 동일한 특서을 가지며, binarization/segmentation, component localization 등을 포함한 전처리 과정이나 hand-craft features들이 필요하지 않다.

(3) sequence of labels를 생성할 수 있어 RNN과 동일한 특징을 보유한다. 

(4) 학습과 테스트 단계에서 height normalization만 있다면 sequence-like objects의 길이에 구애받지 않고 학습이 가능하다.

(5) scene text에 대해서는 더 좋은, 그리고 비견될 만한 성능을 달성했다.

(6) 일반적인 DCNN 모델들보다 훨씬 적은 모수를 가지고 있기 때문에 훨씬 저장공간을 적게 소모한다. 

 

 

[2. The Proposed Network Architecture] 

CRNN의 Network architecture는 아래와 같다. 

 

총 3가지 파트로 나뉘어져 있음.

(1) convolutional layer - input image로부터 feature sequence를 추출함

(2) Reccurent layers - 각 frame에서 label distribution을 예측함.

(3) Trascription layer - 각 frame label 예측결과들을 final label sequence로 번역함.(translates)

 

가장 아랫단인 Convolution layer에선 각 input image들로부터 feature sequence를 추출해낸다.

그 위에는 Recurrent Network를 구성해서 각 feature sequence의 각 frame들의 prediction을 수행한다. 

가장 마지막 단인 transcripton layer는 per-frame 예측결과들을 label sequence로 번역한다. 

 

 

 

[2.1 Feature Sequence Extraction]

CRNN모델에서 convolutional layers의 요소는 일반적인 CNN의 convolutional과 max-pooling layers로 구성되어있다. 해당 요소들은 input image로부터 sequential feature representation을 추출하기 위해 사용된다. network에 들어가기 전에, 모든 inpt 이미지는 동일 높이로 스케일 조정이 필요하다. 이후 convolutional layer의 component에 의해 생성된 feature map들로부터 sequence of feature vectors를 추출 할 수 있다. 이후 이는 RNN의 input으로 사용된다. 특히 feature sequence의 각 feature vector는 feature map에서 열별로 왼쪽에서 오른쪽으로 생성된다. 이는 즉, $i$-th feature vector는 곧 모든 map들의 $i$-th 열들의 연결임을 의미한다. 현재 세팅에서 각 열들의 너비는 single pixel로 고정되어있다.

 

 convolution, max-pooling, 그리고 요소별 활성화 함수의 layer들이 local region에서 작동하므로, 변환 불변이다. 따라서 각 feature map들의 열은 기존 이미지의 직사각형 영역에 해당하며(receptive field), 해당 직사각형 영역은 feature map들에서의 왼쪽에서 오른쪽 방향의 각 열들의 순서에 상응한다. 아래 그림을 보면 쉽게 이해된다. 

 
-> 추출된 feature sequence의 각 벡터들이 input image의 receptive field와 연결되어 있으며, 해당 필드의 feature vector로 생각할 수 있다. 
 
 
CRNN에서는 sequence-like object들의 다양한 길이에 영향받지 않도록 deep feature들을 sequential representation으로 이동시킨다.
 
 
 
 
 
 
[2.2 Sequence Labeling]
Deep bidirectional Recurrent Neural Network는 convolutional layer의 윗 단에 쌓인다. Recurrent layer들은 feature sequence $\mathbf{x} = x_1, x_2, \cdots, x_T$의 각 frame $x_t$에 대해 label distribution $y_t$를 예측한다. 이런 recrrent layer의 장점은 3단계가 있다. 
첫번째로, RNN은 sequence 안에서 상황적인(문맥적인) 정보를 잡는데 강한 장점이 있다. 이미지 기반 시퀀스 인식을 위해 상황별 신호를 사용하는 것이 각 symbol을 독립적으로 처리하는 것 보다 더 안정적이고 도움이 된다.  STR을 예시로 들자면, 위 그림과 같이 넓은 문자는 완전히 묘사하기 위해 여러 개의 연속된 프레임이 필요할 수 있다. 반면, 분명한 문자들은 상황, 문맥을 살펴봤을 때 구분이 더 쉬울 수 있다. e.g. 'il'을 인식하는 데 있어 각각을 독립적으로 인식하는 것 보다 문자 높이를 비교하는 것이 더 쉽다. 
두 번째로, RNN은  입력, 즉 convolutional layer으로 오차의 차이를 역전파 할 수 있어 통합된 네트워크에서 recurrent layer와 convolutional layer를 공동으로 훈련할 수 있다. 
세번째로, RNN은 임의의 길이의 sequence를 작업할 수 있다. 
 
전통적인 RNN 유닛은 input과 output layer 사이에 self-connected hidden layer를 가지고 있다. sequence의 $x_t$ frame을 받을 때 마다, 현재 입력 $x_t$와 과거 상태 $h_{t-1}$를 모두 입력으로 사용하는 비선형 함수 $h_t = g(x_t, h_{t-1})$로 내부 상태 $h_t$를 업데이트 한다. 이후, 이 $h_t$에 기반해 예측값 $y_t$를 구할 수 있다. 이런 방식으로 과거 문맥 $\{x_{t'}\}_{t' < t}$이 prediction에 사용될 수 있다. 
하지만, 이런 전통적인 RNN unit은 vanishing gradient 문제를 겪을 수 있다. Long-Short Term Memory(LSTM)은 RNN의 한 종류로, 이 문제를 해결하기 위해 디자인 되었다. LSTM은 아래 Fig3(a)에서처럼 memory cell과 3개의 multiplicative gates로 구성되어있다. memory cell은 과거의 문맥을 기억하고 있고, input과 output gate는 긴 기간동안 문맥을 저장할 수 있도록 하는 역할을 한다. 동시에, cell이 보유한 기억은 forget gate에 의해 지워질 수 있다. 
 
LSTM은 주로 과거의 문맥만을 사용하지만, 이미지 기반 sequence에서는 양쪽 방향의 constext들이 유용하며 서로에게 영향을 준다. 따라서, Fig3-b의 bidirecional LSTM을 사용했다. 더욱이, bidirectioanl LSTM 여러개를 쌓을 수 있으며, deep bidirectional LSTM을 구성할 수 있다. 깊은 구조는 얕은 구조보다 더 높은 차원의 추상화를 가능케 해 주며, speech recognition 작업에서 엄청나게 유의미한 성능을 거둔 바가 있다. 
 
Recurrent Layer에서 error 차분은 위 Fig. 3.b에 표시된 화살표들과 반대 방향으로 전파된다. (i.e. Back-Propagation Through Time BPTT) recurrent layer의 가장자리에서 전파된 미분값들의 sequence가 map과 연결되며, feature map을 feature sequence로 변환시키는 연산을 반대로 만들며, convolutional layer로 fed back한다. 실제로는, 'Map-to-Sequence' cutom network layer를 생성해 convolutional layer와 recurrent layer 사이의 다리로서 사용하였다. 
 
 
[2.3 Transcription]
 
반복 레이어에서 오차 차이는 그림 3.b에 표시된 화살표와 반대 방향으로 전파된다.
 
### 작성중...