영상 내 텍스트 인식하는 일을 하게 되어 네이버에서 공개한 코드를 사용해보았습니다.
그런데 역시나 제 이미지로 돌리면 잘 안나오기 마련이죠..
그래서 (성능향상을 위해) 관련 논문을 읽고 여기서 사용한 모델의 구조를 이해해보려고 합니다.
시작!
"STR 모델 비교 뭐가 문제인가?!!?!?!?! - 데이터셋과 모델 분석"
위 논문 제목에서부터 알 수 있듯 이 논문에서는 기존의 STR (Scene Text Recognition) 모델들을 공정하게 평가하기 위해 데이터셋과 모델을 분석하여 표준화하였다.
모델 별로 중구난방이었던 데이터셋을 일치시켰으며, 4단계의 STR 프레임워크를 제안하여 각 단계마다의 모듈을 객관적으로 평가할 수 있게한 것이다.
초록 내용은 다음과 같다.
Scene Text Recognition (STR)을 위한 모델이 새롭게 많이 나오고 있으며 기술 발전이 크게 있었지만, 학습 및 평가용 데이터셋이 일관되지 않아 공정한 평가가 이루어지지 않았다. 이 논문에서는 이를 세 가지 방법으로 해결하였다.
첫째, 학습 및 평가용 데이터셋이 얼마나 다른지 분석하고, 이러한 불일치로부터 성능 결과 차이가 얼마나 기인하였는지를 평가하였다.
둘째, 대부분의 SRT 모델이 갖고 있는 통합된 4 단계의 STR 프레임워크를 제안한다. 이를 통해 기존의 SRT 모듈들을 평가하고, 이전까지 분석되지 않았던 모듈들의 조합까지 평가할 수 있게 되었다.
셋째, 동일한 학습 및 평가용 데이터셋을 활용하여 정확도, 속도, 메모리 면에서의 모듈 별 기여도를 분석했다.
이를 통해 기존에 있었던 모듈이 성능에 얼마나 영향을 끼치는지에 대한 비교를 가능하게 하였다.
이 글에서는 데이터셋보다는 4 단계의 STR 프레임워크에 대해 정리하며 STR을 위한 각 모듈에 대해 살펴볼 것이다.
3. STR Framework 분석
STR이 object detection 등의 computer vision tasks와 sequence prediction tasks와 닮아있기 때문에, STR은 CNN과 RNN을 사용하여 좋은 성능을 낼 수가 있다. STR을 위해 CNN와 RNN이 처음 조합된 모델로는 CRNN이 있다. 이는 주어진 텍스트 영상으로부터 CNN feature를 추출하여 RNN을 통해 sequence prediction을 하는 모델이다. CRNN 이후로 변형된 다양한 모델들이 제안되며 STR 성능을 향상시켰다.
예를 들어, 다양한 모양의 text 형상을 사각화(rectify)하기 위해 RARE, Star-net, Char-net 모델에서는 transformation 모듈로 텍스트 이미지를 정규화하는 방식이 제안되었다.
그리고 글자 폰트나 복잡한 배경 등 잠재적인 어려움이 있는 텍스트 영상을 다루기 위해, 개선된 CNN feature extractor가 R2AM, Gated-RCNN, FAN에 도입되었다.
또한, 사람들이 inference time에 관심이 많아짐에 따라, Rosetta 모델에서는 RNN 단계를 없애기도 했다.
그리고 Character sequence prediction의 성능을 개선시키기 위해 R2AM, RARE에서는 attention based decoders가 사용되었다.
이러한 SRT 모델들을 참고하여 만든 4-stage는 다음과 같다.
1. Transformation (Trans.)
Spatial Transformer Network (STN)을 사용하여 입력으로 들어온 텍스트 이미지를 정규화하는 단계.
2. Feature extraction (Feat.)
인풋 이미지를 character recognition과 관련된 attributes에 초점을 맞춘 representation으로 매핑하는 단계.
글꼴, 색상, 크기 및 배경 등 글자 인식과 관련이 없는 특성들은 억제시킨다.
3. Sequence modeling (Seq.)
문자들의 시퀀스 속에서 맥락 정보를 학습하여 다음 단계에서 각 character를 더욱 robust하게 예측할 수 있게하는 단계.
4. Prediction (Pred.)
이미지의 identified features로부터 character sequence를 산출하는 단계.
3.1. Transformation stage
natural scene에서의 text image는 휘거나 기울어지는 등 다양한 모양을 갖고 있다.
이러한 이미지가 조정없이 모델에 넣어진다면, 이어지는 feature extraction stage에서 그러한 geometry에 대한 representation까지 학습해야 한다.
이러한 짐을 덜기 위해, 다양한 STR 모델에서 thin-plate spline (TPS) transformation이 사용되었다.
TPS는 위 그림에서의 초록색 '+' 점들인 fiducial points를 찾아서 character region을 predefined rectangle로 바꾸어주는 모듈이다.
이 framework에서는 TPS를 추가하는 것과 추가히지 않는 옵션이 있다.
3.2. Feature extraction stage
이 단계에서는 CNN이 인풋 이미지를 추상화하여 visual feature map을 만들어낸다. 여기서 visual feature map V는 특징추출기로부터 나온 feature map을 column 별로 나눈 셋이다. 각 feature map에서의 column은 이미지 상에 상응하는 부분(receptive field)이 있기 때문에, 이 column 별로 나누어 해당하는 receptive field에 있는 character를 예측하기 위해 사용된다.
이 framework에서는 STR 분야에서 특징추출기로써 많이 쓰여온 VGG, RCNN, ResNet을 옵션으로 사용한다.
3.3. Sequence modeling stage
Feat. 단계에서 추출된 특징들은 features V의 sequence가 된다. 즉, feature map에서의 각 column들은 sequence 형태를 가진다. 그러나, 이러한 sequence에는 문맥 정보가 들어있지 않다. 이를 위해 이전의 작업들에서는 feature extraction 단계 이후에 Bidirectional LSTM (BiLSTM)을 사용하여 더 나은 sequence H를 만들었다. 이와 반대로 Rosetta에서는 BiLSTM을 없애서 속도와 메모리 사용량을 감축시키기도 했다.
하여 이 framework에서는 BiLSTM을 사용하는 것과 사용하지 않는 옵션이 있다.
3.4. Prediction stage
이 단계에서는 input H로부터 character들의 sequence를 예측한다. 많은 모델들이 이 prediction을 위해 다음 두 가지 옵션을 사용했다. Connectionist temporal classification (CTC)와 attention-based sequence prediction (Attn)이다.
CTC는 다음의 방법으로 가변 길이의 sequence까지 예측을 수행한다. 각 column에서 character를 예측하고 이를 이은 전체 character sequence에서 반복되는 문자와 blank를 지움으로써 다양한 길이의 stream of characters를 만들어내는 것이다.
반면, Attn은 input sequence로부터 자동으로 정보의 흐름을 파악하여 output sequence를 예측한다. 이를 통해 STR 모델이 output class dependencies를 나타내는 character-level 언어 모델을 학습할 수 있다.
논문을 해석하는 과정에서 어색하게 작성된 부분도 있고, 잘 모르는 내용이라 틀린 채로 작성된 부분이 있을 것이라고 생각합니다.
그래도 짧은 글 작성하면서 STR의 기본적인 요소들에 대해 알 수 있었고, 이미지 쪽을 넘어서 텍스트라는 sequence와 관련된 작업을 하기 위해 attention에 대해 더 알고싶은 생각이 들었습니다.
다음에 기회가 된다면 attention에 대한 글까지 작성해보겠습니다 !
'딥러닝' 카테고리의 다른 글
Continual Learning (2) Deep Generative Replay 논문 번역 (0) | 2021.01.07 |
---|---|
적은 데이터로 딥러닝 잘 학습하기 (1) | 2020.11.28 |
CNN Computational Considerations (0) | 2020.01.07 |