안녕하세요 아홉 번째 X-Review입니다. 금주 리뷰할 논문은 ICCV 2021에 게재된 <What Is Wrong With Scene Text Recognition Model Comparisons? Dataset and Model Analysis>입니다. 새롭게 Scene text recognition task를 해결하는 방법론을 제시했다기 보다는 현존하는 Scene text recognition task에서의 문제점, 한계점을 언급하고 이를 해결하는 기준점을 세운 논문입니다. 바로 시작하도록 하겠습니다. 🤨
1. Introduction
Optical Character Recognition (OCR)은 책이나, 영수증과 같은 깔끔하고 정갈된 문서에서는 성공적으로 적용되었지만, 대부분의 OCR 방법론은 Scene text recognition(STR) task에서는 그다지 효과적이지 않았습니다. 왜냐하면 현실 세계에서 발생하는 다양한 text 모양과 이러한 scene을 캡쳐할 때의 조건도 불완전했기 때문이죠. 이러한 문제점을 해결하기 위해 multi-stage pipeline 방법론들이 제안되어 왔는데, 여기서 각 stage는 각자 다른 특정한 문제를 해결하도록 구성된 deep neural network입니다. 예를 들어, Shi et al. [23]은 입력으로 다양한 길이를 가지는 글자가 들어가는 것을 다루기 위해 RNN을 사용한 다음, 글자 수를 알아내기 위해 CTC 알고리즘을 사용하였습니다. 또, Shi et al. [24]는 curve된 input을 직전 text image로 normalize하는 transformation 모듈을 제안함으로써 downstream module에서 곡선으로 된 text를 다룰 때 부담이 적도록 하였습니다.
하지만 이러한 방법론들의 evaluation과 test 환경이 방법론마다 다르기 때문에 논문에 적혀있는 성능 수치를 그대로 비교하는 것과, 새로 제안된 방법론이 현존하는 방법론보다 더 나은 것인지의 여부를 판단하는 것이 어렵다고 합니다.
위의 [Table 1]은 training과 evaluation 세팅이 일치하지 않는 STR(scene text recognition) 모델의 성능을 보여줍니다. (중간 구분선 윗 부분 reported results에 해당) 이렇게 training, evaluation 세팅이 다 다른 점은 방법론들간의 공정한 비교를 힘들게 하겠죠. 그렇기에 본 논문에서는 데이터셋과 같은 세팅을 동일하게 한 다음 각 방법론들을 다시 실험한 결과를 보여줌으로써 공정한 비교가 가능하도록 하였습니다. (중간 구분선 아래 부분 Our experiment에 해당) [Table1]의 마지막 줄을 보면 본 논문이 제안한 방법론이 동일한 조건에서 실험을 했을 때 SOTA를 달성한 것을 확인할 수 있습니다. Train data의 MS, ST, C, PRI는 각각 MJSynth, SynthText, Character-labeled, private data를 의미합니다.
본 실험을 진행하면서 저자는 training dataset과 evaulation dataset 내에서 조금씩 편차가 존재함을 발견하였는데, 이는 같은 dataset 내에서도 모든 이미지를 사용한 경우도 있고, 그 중 일부만 사용한 경우가 있음을 의미한다고 보면 되겠습니다. 예를 들어서 IC13이라는 dataset을 사용했다고 할 때, IC13 전체 데이터셋을 사용한 경우와 subset으로 일부 데이터만 사용한 경우가 존재하는데, 이 둘은 15% 이상의 성능 차이가 발생할 수 있다고 합니다. 이러한 동일한 dataset내의 불일치 또한 같은 데이터셋을 사용했다고 해도 성능을 공정하게 비교한다고 볼 수 없겠죠.
본 논문은 이렇게 일관성이 없는 점으로 인해 공정한 성능 비교가 어려운 점을 해결하고자 하였습니다. 이를 위해 먼저 STR(scene text recognition) 논문에서 일반적으로 사용되는 모든 train, evaluation 데이터셋을 분석하였고, 같은 데이터셋을 사용했음에도 동일한 데이터셋을 사용하지 않은 원인을 밝혀냈습니다. 다음으로 기존 STR(scene text recognition) 방법론의 공통된 부분을 제공하는 STR 프레임워크를 제안하였는데, 구체적으로는 STR 모델을 transformation, feature extraction, sequence modeling, prediction 이 네 가지 다른 연속적인 단계로 나눈 것입니다. 이 프레임워크는 기존에 제안됐던 STR 모델들과 그 모델을 변형한 것들에 대해서 모듈별 기여도를 알아낼 수 있으며, 본 저자들은 동일한 실험 환경에서 속도, 정확도, 메모리 측면에서 모듈별 기여도를 확인하는 실험을 진행하였습니다.
저자가 발견한 데이터셋의 문제점들과, 저자가 제안한 STR 프레임워크의 각 모듈, 마지막으로 동일한 환경에서 진행한 실혐 결과 및 분석에 대해 차례대로 살펴보겠습니다.
2. Dataset Matters in STR
먼저, 저자들이 STR dataset에 대해 분석한 점을 알아봅시다. STR 데이터셋은 크게 학습에 사용되는 합성 데이터셋과 evaluation 과정에서 사용되는 Real-world 데이터셋으로 나눌 수 있습니다.
2.1. Synthetic dataset for training
STR(scene text recognition) 모델을 학습할 때 사용되는 text 이미지에 일일히 label을 붙이기엔 cost가 크기 때문에 real world 데이터셋을 사용하는 대신에 대부분 STR 방법론들은 synthetic dataset 즉, 합성 데이터셋을 사용해 학습해왔습니다. STR 논문에서 가장 많이 사용하는 두 가지의 합성 데이터셋을 알아보겠습니다.
MJSynth (MJ)
MJSynth 데이터셋은 Scene text recognition task용으로 사용하기 위해 만들어진 합성 데이터셋으로 890만 개의 word box가 포함되어 있습니다. 이 합성 데이터셋을 다음과 같은 과정으로 생성됩니다.
1)폰트 렌더링, 2)테두리와 그림자 렌더링, 3)배경 색 지정하기, 4)폰트, 테두리, 배경 구성, 5)projective 왜곡 적용, 6)실제 이미지와 섞기, 7)노이즈 추가
이렇게 만들어진 MJSynth 데이터셋의 예시는 [Fig1 – (a)]를 보면 되겠습니다.
SynthText (ST)
또 다른 합성 데이터셋은 SynthText는 원래 scene text detection task용으로 만들어진 데이터셋으로, [Fig1-(b)]와 같은 이미지로 구성되어 있습니다. SynthText는 detection용으로 만들어졌지만 이미지 내의 word box를 잘라내어 STR(scene text recognition)에 사용할 수 있습니다. word box를 잘라내고 영어 및 숫자가 아닌 문자를 걸러내면 약 550만 개의 이미지로 구성된 데이터셋이라고 합니다.
위의 [Table1]의 Reported results단을 보면 train data로 MJ를 사용하거나, ST를 같이 사용하거나 혹은 다른 데이터셋을 사용한 것을 볼 수 있습니다. 이렇게 train dataset이 일치하지 않은 점은 새로 제안된 방법론의 성능이 이전 방법론들보다 향상됐을 때, 새로 설계한 모듈로 인해 성능이 향상된 것인지 혹은 더 좋거나 큰 학습 데이터셋으로 인해 성능이 향상된 것인지 구분이 어렵겠습니다. 리뷰 뒷단에 이 train dataset가 벤치마크 최종 성능에 미치는 영향에 대해 저자가 실험한 결과에 대해 잠깐 다루도록 하겠습니다.
2.2. Real-world datasets for evaluation
학습을 마친 STR(Scene text recognition) 모델을 평가하기 위해서 주로 사용된 7개의 real world STR 데이터셋에 대해 알아보겠습니다. [Table1]을 보면, 데이터셋 아래에 몇 장의 이미지로 구성되어 있는지 써져 있는데, 같은 데이터셋 아래에 두 개의 숫자가 존재하는 경우가 있습니다. 이렇게 같은 데이터셋을 사용했음에도, 그 안에서 데이터셋 구성을 다르게 사용하여 평가한 경우에는 일관성이 있다고 보기 어렵겠습니다.
본 저자는 데이터셋을 글자가 모두 수평이고, 글자 사이에 일정한 간격이 있는 비교적 recognition하기 쉬운 regular dataset[Fig2 – (a)]과, 곡선 글자, 회전된 글자, 다양한 모양의 글자로 구성된 irregular dataset[Fig2 – (b)]으로 분류하여 소개하였습니다.
Regular datasets
먼저 4가지 regular dataset에 대해 알아봅시다.
IIIT5K-Words (IIIT)
IIIT 데이터셋은 구글에서 크롤링한 이미지로 구성된 데이터셋으로, ‘billboard’, ‘signboard’, ‘house numbers’, ‘house name plate’, ‘movie posters’와 같이 text를 담은 이미지가 나올 가능성이 높은 단어를 검색 단어로 지정하였습니다. train, test 이미지는 각 2000, 3000장입니다.
Street View Text (SVT)
SVT 데이터셋은 google street view에서 수집한 거리 이미지로 일부는 노이즈가 있거나 흐릿하거나 해상도가 낮습니다. train, test 이미지는 각각 256, 647장입니다.
ICDAR2003 (IC03)
IC03데이터셋은 2003년에 열렸던 카메라로 캡쳐한 사진의 글자를 읽는 Robust Reading 대회에서 사용하였던 데이터셋입니다. train, test이미지는 각각 1156, 1100개입니다. 여기서 3글자 미만으로 짧은 글자이거나 영어 숫자가 아닌 문자가 포함된 단어를 빼면 1100개의 test 이미지에서 867개의 이미지로 줄어들게 됩니다. 여기서 7개의 word box가 누락되어 860장으로 구성된test 데이터셋도 있는데, 이 두 버전의 데이터셋을 evalutation에 사용한 점이 앞에서 언급했던 같은 데이터셋을 사용하여 평가했는데, 구성 이미지가 달랐던 점이 되겠습니다.
ICDAR2013 (IC13)
IC13 데이터셋은 IC03 이미지를 대부분 포함하고 있으며, 2013년에 열린 Robust Reading 대회에서 사용하였던 데이터셋입니다. train, test이미지는 각각 848, 1095장입니다. 1095장의 test 이미지에서 IC03과 같이 영숫자가 아닌 글자로 이루어진 이미지를 제외하면 1015장이 됩니다. 이 1015장에서 3글자 미만인 단어들을 걸러낸 857장의 이미지와, 1015장을 사용하는 두 가지 버전으로 evaluation이 수행되었습니다.
Irregular datasets
다음으로 3가지 irregular dataset에 대해 알아봅시다.
ICDAR2015 (IC15)
IC15 데이터셋은 2015년에 열린 Robust Reading 대회에서 사용된 데이터셋이며, train test 이미지는 각각 4468, 2077개입니다. 마찬가지로 2077장에서 영숫자가 아닌 이미지와 극도로 회전된 것, 곡선 이미지를 제외하여 1811장으로 test 이미지를 구성하였고, evaluation 과정에서 이 두 버전이 사용되었습니다.
SVT Perspective (SP)
SP 데이터셋은 구글 street view에서 수집한 것으로 645장의 test 이미지로 구성되었습니다. 많은 이미지가 측면에서 찍은 이미지입니다.
CUTE80 (CT)
마지막 CT 데이터셋은 natural scene에서 수집한 것으로 288개의 test이미지로 구성되어 있습니다. 이 중 다수는 곡선 text 이미지입니다.
계속 언급했지만, [Table1]을 보면 이전 방법론들이 서로 다른 벤치마크 데이터셋에서 모델을 평가한 문제를 확인할 수 있습니다. 두 가지 버전이 존재하는 데이터셋에 대해 본 저자들이 수행한 평가 결과를보면 둘 사이의 성능차이가 존재하는 것을 확인할 수 있죠.. 특히 IC03보다는 IC13, IC15에서 더 큰 차이가 존재하고 있습니다.
3. STR Framework Analysis
저자는 STR(Scene text recognition) 모델 간의 공통점으로부터 도출된 4가지로 구성된 STR 프레임워크를 소개하였습니다. Scene text recognition task는 squence prediction task와 유사하기 때문에 CNN과 RNN을 활용할 수 있습니다. 이전 제 FOTS 리뷰에서도 언급한 적 있는 CNN과 RNN을 결합한 CRNN 모델을 예로 들 수 있겠네요. CRNN은 아래 그림과 같이 입력 text 이미지에서 CNN을 사용하여 feature를 추출한 후, RNN을 사용하여 squence prediction을 수행하였습니다.
CRNN의 등장 이후 성능을 개선하기 위해 여러가지 CRNN 변형 모델이 제안되었는데 예를 들자면 recognition을 쉽게 수행하기 위해 입력 이미지의 text 모양을 변환하기 위해 정규화하는 transformation 모듈이 제안되었습니다. 또,, inference time을 줄이기 위해 일부 방법론에서는 RNN단계를 생략한 것도 있으며 character sequence prediction을 개선하기 위하여 attention기반의 decoder를 사용하기도 하였습니다.
이러한 기존 STR 모델의 공통된 점을 모아 저자들이 구성한 STR의 4가지 단계는 다음과 같습니다.
- Transformation
Spatial Transformer Network(STN)을 사용하여 입력 text 이미지를 normalize하여 downstream 단계를 간단하게 합니다. - Feature extraction
글꼴, text 색상, text 크기, 배경과 같이 text recognition을 수행할 때 관련이 없는 feature들을 제외하고, text recognition과 관련된 feature들을 추출합니다. - Sequence modeling
각 character(문자)를 각각 독립적으로 처리하지 않고 character의 sequence 내에서의 문맥을 고려하여 다음 prediction 단계에서 각 character를 더 잘 예측할 수 있도록 합니다. - Prediction
이미지의 feauture들로부터 output character sequence를 추정합니다.
방금 설명한 일련의 단계들은 위 [Fig 3]에서 확인할 수 있습니다. 이제 각 stage를 좀 더 자세히 살펴보도록 하겠습니다.
3.1. Transformation stage
transformation stage의 모듈은 입력 이미지 X를 정규화된 이미지 \tilde{X}로 변환합니다. natural scene에서 text 이미지는 곡선 형태, 기울어진 형태 등 다양한 모양으로 존재하는데, 이러한 입력 이미지가 아무런 변환 없이 그대로 들어가게 되면 바로 다음 feature extraction단계에서는 이런 다양한 모양에 대해 invariant한 표현을 학습해야 합니다. 즉, 변하지 않는 text 고유의 특성을 학습하는데 좀 더 어려움이 있겠죠. 이러한 어려움을 줄이기 위해 Spatial transformation network(STN)을 변형한 Thin-plate spline (TPS) transformation이 다양한 aspect ratio를 가지는 text에 유연하게 적용되었습니다.
TPS는 fiducial points(기준점)에 대해 smooth한 spline interpolation을 수행하는 것인데, 더 자세히 말하자면 text 위쪽과 아래쪽을 둘러싸는 여러 point에 대해 fiducial points(기준점)들을 찾아 character 영역을 미리 정의해둔 직사각형으로 정규화하는 것입니다. 여기서 기준점이라 함은 [Fig3]의 입력 이미지에 표시된 초록색 + 표시를 의미합니다.
저자들이 제안한 프레임워크는 이 TPS과정은 수행할지 수행하지 않을지 선택할 수 있습니다.
3.2. Feature extraction stage
Feature extraction stage에서 CNN은 입력 이미지(X 또는 \tilde{X})에서 visual feature map V = {v_i}, i = 1, . . ., I(feature map의 column수)를 출력해냅니다. feature extractor에 의한 결과 feature map의 각 열은 입력 이미지의 horizontal 선을 따라 그에 해당되는 receptive field를 갖겠죠. feature들은 각 receptive field에서 character를 추정하는데 사용됩니다.
저자들은 이전 STR(scene text recognition)의 feature extractor로 사용되었던 VGG, RCNN, ResNet 이 세 가지 architecture에 대한 실험을 진행하였습니다.
3.3. Sequence modeling stage
Sequence modling 단계에서는 앞에서 추출한 feature들을 squence V로 reshape합니다. 즉, feature map의 각 열 v_i ∈ V이 sequence로 사용됩니다. 하지만 이 sequcne만으로는 context한 정보가 부족할 수 있기 때문에 일부 연구에서는 feature extraction 단계 이후에 BiLSTM을 사용함으로써 더 나은 sequcne H = Seq.(V)를 만들기도 합니다. 반면 계산 복잡도와 메모리를 줄이기 위해 BiLSTM을 사용하지 않는 경우도 있습니다.
저자들이 제안한 프레임워크는 이 BiLSTM을 사용할지 사용하지 않을지 선택할 수 있습니다.
3.4. Prediction stage
prediction 단계에서는 입력 H(sequence)로부터 character의 sequcne를 예측합니다. 이전 연구들이 자주 사용하는 방법으로는 크게 1) CTC(Connectionist temporal classification)과 2) attention 기반 sequcne prediction 방식이 있습니다. CTC는 고정된 수의 feautre가 입력으로 들어와도, 정해지지 않은 수의 sequence를 예측해낼 수 있습니다. CTC의 주요 방법은 각 열 (h_i ∈ H)에서 character를 예측한 후에 반복되는 문자와, 공백을 제거하여 전체 character sequcne를 고정되지 않은 character stream으로 수정하는 것으로 보면 되겠습니다. 반면에 Attention기반 방식은 입력 sequcne 내의 information 흐름을 자동으로 파악하여 output sequcne를 예측하는 것입니다.
4. Experiment and Analysis
저자는 위에서 제안한 4단계의 프레임워크에서 조합 가능한 모든 SRT(Scene tex Recognition) 모듈 조합에 대한 evaluation 및 분석을 진행했습니다. 조합 가능한 모든 SRT 모듈 조합이 무엇이냐 하면,, 위에서 각 모듈을 설명할 때 저자들이 제안한 프레임워크에서 TPS나, BiLSTM 등을 사용할지 사용하지 않을지 선택할 수 있다고 하였는데 이를 보아 총 몇가지로 모듈 조합이 이루어지는지 생각해본다면, 먼저 1단계 transformation stage에서는 TPS O/ TPS X의 두 경우가 있고, 2단계 feature extraction stage에서는 VGG, RCNN, ResNet 중 하나를 사용하여 3가지 경우가 있고, 3단계 Sequence modeling stage에서는 BiLSTM O/BiLSTM X 두 경우가 있으며, 마지막으로 4단계 prediction stage에서는 CTC / Attention 기반 예측방식 이렇게 2 가지가 존재하므로 총 2 x 3 x 2 x 2(24)개에 대한 evaluation 및 분석을 진행한 것으로 보면 되겠습니다.
- Dataset Matters in STR부분에서 설명했던 것처럼, train 및 test 데이터셋은 SRT(Scene text recognition) 모델의 성능에 큰 영향을 미치게 됩니다. 그렇기에 저자는 공정한 성능 비교를 할 수 있게 train, valid, test 데이터셋을 fix시켰습니다.
STR training and model selection
학습 데이터셋으로 합성데이터셋인 MJSynth 8,9M개와 SynthText 5.5M개를 동시에 사용하였습니다. 또 IC13, IC15, IIIT, SVT의 train 데이터셋을 validation data로 사용하였는데, 여기 validation data에 IC03 학습데이터가 포함되지 않는 이유로는 위에 데이터셋 설명에서 언급했듯이 IC03의 train 이미지 일부가 IC13의 test 이미지와 겹치기 때문입니다.
Evaluation metrics
본 논문에서는 accuracy, time, memory 측면에서 SRT(Scene text recognition) 조합(24가지로 나온거)에 대한 분석을 수행하였습니다. accuracy를 측정하기 위해 7개의 real-world dataset을 evaluation에 사용했으며(IIIT, SVT, IC03, IC13, IC15, SP, CT dataset) 오직 알파벳과 숫자 text만 사용하였고, 각 SRT 조합(24개)에 대해 5개의 random seed를 사용하여 이의 평균을 accuracy로 사용하였습니다. time을 평가하기 위해서는 동일한 computing환경에서 이미지당 주어진 text를 인식하는데 걸리는 시간인 per image average clock time을 측정하여 사용하였으며, 마지막으로 memory를 평가할 때는 SRT 파이프라인에서 학습가능한 파라미터 수를 계산하여 평가하였습니다.
4.1. Analysis on training datasets
저자들은 training 데이터셋에 구성이 성능에 미치는 영향을 실험하였습니다. 2.1. Synthetic dataset for training에서 이전 연구에서는 서로 다른 train dataset을 사용했기에 모델의 모듈이 성능 향상에 기여한 것인지 확실히 판단할 수 없었습니다. 이러한 문제를 해결하기 위해 다양한 조합의 train dataset을 사용하여 실험을 진행했는데 이를 위해서 저자들은 먼저 4가지 step의 프레임워크 중 최적의 모듈로 조합한 모델의 accuracy를 먼저 알아낸 후, 이 모델에서 다양한 train dataset을 사용하여 실험ㅇ르 진행하였습니다. MJSynth만 사용한 경우에는 80.0%, SynthText만 사용한 경우 75.6%, 두 가지를 모두 사용한 경우 84.1%의 accuracy를 얻어냈습니다. 즉, 두 데이터셋을 같이 사용한 경우가 단일로 사용한 경우보다 4%이상 성능 향상이 일어난 것이죠. 이 연구에서 저자들은 서로 다른 train dataset을 사용한 성능 결과는 비교할 수 없고, 이런 비교는 모델의 contribution을 증명할 수 없다는 결론을 내립니다.
여기서 흥미로운 점은 MJSynth의 20%와 SynthText의 20%를 사용하여 학습시킨 경우에 81.3%의 성능을 내었는데 이는 MJSynth, SynthText를 개별적으로 사용하여 학습한 결과보다 더 좋은 성능입니다. MJSynth와 SynthText는 distortion이나 bluring같은 다양한 옵션으로 생성된 것이기에 서로 다른 속성을 가지고 있는데, 이러한 성능 결과로 봐서는 train dataset의 크기보다는 train data의 다양성이 더 중요하다고 결론 내릴 수 있겠습니다.
4.2. Analysis on trade-offs for module combinations
이제 24가지의 모듈 조합의 accuracy-speed, accuracy-memory의 trade off를 살펴보도록 하겠습니다.
[Fig 4]의 왼쪽 부분이 accuracy와 time간의 trade off를 나타낸 것이며, 오른쪽이 accuracy와 memory간의 trade off 결과입니다. 그래프에서 별과 동그라미가 있는 것을 확인할 수 있는데, 여기서 별은 24개의 조합 중에 실제로 존재하는 모델을 나타내며, 동그라미는 저자가 제안한 프레임워크에서 조합하여 나온 모델(현존하는 모델 X)을 의미합니다.
왼쪽의 accuracy-speed trade off 측면에서 보면, 주황색 별인 Rosetta(None-ResNet-None-CTC 조합)와 노란색 별인 STAR-Net(TPS, ResNet-BiLSTM-CTC 조합)이 앞쪽에 있고, 나머지 4개의 모델은 그 안쪽에 존재합니다. 또, accuracy-memory trade off 측면에서는 민트색 별인 R2AM(None-RCNN-None-Attn 조합)이 앞단에 있고 나머지 5개 모델은 그 안에 위치합니다.
Analysis of combinations along the trade-off frontiers.
[Fig-4]의 표(a)에서 볼 수 있듯이 T1은 transformation이나, BiLSTM을 사용하지 않았기에 time이 가장 적게 소요됩니다. T1에서 T5로 넘어가면서 ResNet, BiLSTM, TPS, Attn 모듈이 하나씩 추가되었으며 점진적으로 성능이 증가하면서 속도가 감소하는 것을 볼 수 있습니다. ResNet, BiLSTM, TPS는 전반적인 속도 저하는 1.3ms → 10.9ms로 상대적으로 크지 않지만, accuracy는 69.5%에서 82.9%로 크게 향상되비다. 반면에 마지막 모듈 변경 사항인 Attn은 accuracy를 1.1% 향상시키지만 27.6ms 시간이 걸리는,, 속도 측면에서 효율성은 크게 떨어진다고 할 수 있겠네요.
표(b)에 표시된 accuracy-memory trade off의 경우 P1은 메모리 소비량이 가장 적은 모델이며, P1에서 P5로 넘어가면서 Attn, TPS, BiLSTM, ResNet 모듈이 하나씩 추가되거나 변경되었으며, 변경될 때마다 메모리가 증가하는 동시에 정확도가 향상됩니다. T1에서 사용된 VGG에 비해서 P1~P4의 RCNN은 더 가볍고 accuracy-memory 간의 trade-off가 좋습니다. 이 feature extractor를 제외한 나머지 trasformation, sequence modeling, prediction은 momory 측면에 크게 기여하지 않는 것으로 보이며, 전체적으로 이 세 모듈은 가벼우면서 정확도를 향상시킨다고 할 수 있겠습니다. 반면, 마지막 변경 사항이 ResNet은 파라미터가 7.2에서 49.6으로 증가하며 메모리 소비가 늘어나면서 정확도는 1.7% 향상된 것을 볼 수 있는데, 이를 보아 memory를 고려하는 경우에는 transformation, sequence modeling, prediction 모듈을 비교적 자유롭게 선택해도 되지만 feature extracor는 resnet과 같은 무거운 모델을 사용하는 것은 자제하면 될 것 같습니다.
The most important modules for speed and memory.
다시 정리해보자면, 속도와 메모리에 가장 영향을 많이 미쳤던 모듈은 각각 prediction 모듈과, feature extraction 모듈이었습니다.
위 [Fig5]는 이 두 모듈의 산점도를 나타낸 것인데,, 왼쪽 accuracy-time trade-off에서는 Attn이 CTC보다 시간이 많이 걸리는 것을 확인할 수 있고, 오른쪽 accuracy, memory trade-off에서는 ResNet이 메모리를 많이 잡아먹는 것을 볼 수 있습니다. 무엇을 기준으로 삼는지에 따라 가장 의미가 있는 모듈이 달라질 것이기에, 연구자는 자신의 제약 조건에 맞춰 모듈을 조합하면 될 것으로 보입니다.
4.3. Module analysis
이제, accuracy, speed, memory 측면에서 각 모듈별 성능을 알아보도록 하겠습니다. 각 step에서 모듈을 upgrade하게 되면 memory는 더 커지고, 속도도 느려지지만 성능이 향상됩니다. 이 성능 향상 폭은 Regular경우와 Irregular dataset을 사용한 경우의 차이가 약 2배에 달합니다.
time 대비 정확도 향상을 비교할 때, None-VGG-None-CTC의 기본 조합에서 ResNet, BiLSTM, TPS, Attn 순서로 모듈을 변경하는 것이 가장 효율적입니다. 반면에 정확도-메모리 관점에서는 RCNN, Attn, TPS, BiLSTM, ResNet 순으로 변경하는 것이 가장 효율적인 것으로 나타났습니다.
Qualitative analysis
[FIg7]은 모듈 변경에 따른 정성적 결과를 보여줍니다. 모듈 변경 전에는 text recognition을 수행하지 못했지만, 변경 후 text recognition이 가능해진 예시들인데, 이 예시들을 바탕으로 모듈별 기여도를 알아보도록 합시다.
먼저, TPS transformation같은 경우에는 곡선으로 된 text나 perspective text를 정규화하여 글씨를 평평하게 만들어줍니다. 그 결과로 위 [Fig7]의 맨 윗줄 그림의 곡선으로 된 POLICE나, ROSE, AIRWAYS와 같은 글자를 인식하는 기능이 향상된 것입니다.
다음으로 feature extractor를 VGG에서 ResNet으로 업그레이드 위 그림의 YMCA나, CITYARTS와 같이 배경이 복잡한 경우나, 글꼴이 잘 보이지 않는 NEUMOS같은 경우에 더 나은 표현력으로 이들을 인식할 수 있게 하면서 성능 향상을 이뤄냈습니다.
다음 BiLSTM을 사용한 경우에는 receptive field를 조정해서 context 모델링을 향상시키는데, 그 결과로 EXIT끝에 있는 I나 G20 옆에 있는 C와 같이 관련 없고, 잘려있는 문자를 잘 무시할 수 있게 됩니다.
마지막으로 CTC모듈에서 Attention 기반 예측 모듈로 변경한 경우에는, 누락되거나 가려진 문자를 잘 찾을 수 있게되는데 예를 들어서, 그림의 마지막 줄의 왼쪽그림 Hard에서 누락된 ‘a’ 그리고 가운데 to에서 누락된 ‘t’, 오른쪽의 HOUSE에서 누락된 ‘S’를 식별할 수 있게 됩니다.
이런 예시들을 통해 각 모듈이 실제로 text recognition을 개선하는데 어떻게 기여하는 부분인지 확인할 수 있었습니다.
4.4. Failure case analysis
저자들은 24개의 모듈 조합 모두에 대해 실패한 사례를 조사했는데, 본 논문에서 제시된 프레임워크는 현존하던 STR(Scene text recognition) 모델 간의 공통점으로부터 도출된 것이기에 여기서 나온 실패 사례는 이 SRT task에서 공통으로 해결해야 할 challenge에 해당하겠습니다.
실패 사례들은 8539개의 벤치마크 데이터셋 중에서 644개의 이미지에서 공통으로 발생했는데, 대표적인 실패 예시를 아래 [Fig 6]에서 확인할 수 있습니다.
Calligraphic fonts
‘Coca cola’와 같은 특정 브랜드 글자체나 ‘cafe’같은 거리 가게의 다양한 글씨체는 challenge한 문제입니다. 이런 다양한 문자의 표현은 일반화된 시각적 특징을 추출할 수 있는 새로운 feature extractor가 필요하다는 것을 시사하고 있습니다.
Vertical texts
대부분의 현재 STR(Scene text recognition) 모델들은 horizontal text 이미지를 가정하고 있기 때문에 세로로 된 text를 다룰 수 없는 구조적인 한계가 조재합니다. 일부 모델들은 vertical 정보를 활용하고 있기는 아지만 아직 완전히 다루어지지 않은 문제라고 합니다.
Special characters
현재 벤치마크 데이터셋은 특수 문자를 평가하지 않기 때문에, 기존 연구들은 특수 문자를 train 과정에서 학습하지 않았습니다. 이로 인해서 모델이 특수 문자를 알파벳이나 숫자로 오해할 수 있다는 문제가 있습니다. 따라서 저자는 학습 과정에서도 특수 문자 이미지를 포함하여 학습해야 한다고 제안합니다. 이렇게 학습한 결과 IIIT 데이터셋에서 87.9%에서 90.3%로 성능향상이 있었다고 합니다.
Heavy occlusions
현존하는 방법론들은 occlusion을 극복하기 위해 context 정보를 충분히 활용하고 있지 않다고 합니다.
Low resolution
기존 모델들은 낮은 해상도의 이미지를 처리하지 않고 있습니다.
Label noise
실패 예시들 중 라벨이 잘못된 경우도 있었습니다. 이런 잘못된 라벨의 비율을 확인한 결과 모든 벤치마크 데이터셋에 noise label이 포함되어 있는 것을 확인할 수 있었으며, 이 중 대소문자를 잘못 구분한 label의 비율은 무료 24.1%나 된다고 합니다.
저자들은 이렇게 모든 24개의 모듈 조합에서 실패한 사례들을 분석하여, 향후 앞으로의 Scene text recognition task의 발전 방향을 제시하면서 논문을 마무리하고 있네요.
안녕하세요. 좋은 리뷰 감사합니다. 뭔가 active learning이 생각나는 논문인 것 같습니다. 이 task에 대해서 이해도가 없어 간단한 질문 드리겠습니다.
1. 데이터셋이 보통 training은 합성 데이터셋, test는 real-world 데이터셋으로 구성되는 건가요? 합성 데이터셋에는 real-world 데이터셋이 전혀 포함되지 않는 건가요?
2. Transformation stage에서 smooth한 spline interpolation을 수행한다고 하셨는데 그러면 smooth하지 않은 spline interpolation도 있는 건가요?
안녕하세요. 댓글 감사합니다.
1. 네. 합성 데이터셋에는 real-world데이터셋이 전혀 포함되지 않습니다.
2. spline이라는 용어 자체의 의미가 몇 개의 점을 기준으로 부드러운 곡선을 그리는 것이기에 spline interpolation 자체가 smooth함을 가져가고 있다고 볼 수 있겠습니다. spline interpolation이 인접한 두 점 사이에 다항식 세워 이 다항식을 이용해 smooth한 함수를 구하는 것인데, linear spline interpolation 같은 경우에는,,, 구간 사이의 다항식을 1차식으로 표현하여 추정하는 것이기 때문에 smooth하다고 보기 어려울 것 같기는 하네요.
안녕하세요. 한가지 궁금한 점이 있는데,
TPS에 대한 설명에서 text 위쪽과 아래쪽을 둘러싸는 여러 포인트에 대해 기준점을 찾는다고 하셨는데, 기준점을 찾는 방법은 어떻게 되는 것이며, 위쪽과 아래쪽을 둘러싸는 여러 포인트들은 또 어떻게 정의할 수 있는 것인가요?
안녕하세요. 댓글 감사합니다.
fiducial points는 localization network를 통해 예측할 수 있습니다. localization network는 input image에 CNN을 사용해서 fiducial points를 regression하는데, 이 CNN은 convolutional layers, pooling layer, fc layer로 구성되어 있습니다. 다만,, 분류가 아니라 regression을 수행하는 것이죠. output layer인 fc layer의 출력 노드 수는 2K로 설정되어 있는데, [Fig3]의 녹색 십자가인 fiducial points 수를 세어보면 10개로 항상 짝수 수로 output이 나오게 됩니다.
즉, localization network를 통해 입력 이미지에서 text가 존재하는 영역 및, 위치 크기 등을 파악하고 fiducial points 위치를 예측하는 것입니다. 이후, localization network가 예측한 fiducial points의 위치를 기반으로 입력 이미지 내에 실제로 fiducial points를 배치하게 됩니다.
정윤서 연구원님, 좋은 리뷰 감사합니다.
해당 논문은 ‘일관되지 않은 데이터셋 사용으로 인한 정확한 성능 비교 불가능 문제를 개선하기 위해 Scene Text Recognition을 위한 프레임워크를 제안했다’ 정도로 요약할 수 있을 것 같습니다. 결국 또 근본적인 문제의 원인은 data 수집과 annotation의 어려움에 있다고 볼 수 있겠네요. 특히 데이터셋 구성에 대한 부분이 눈에 띄었습니다. 합성 데이터셋을 활용하는 부분이 특히 신선했습니다. 읽다보니 궁금증이 생겨 질문 남깁니다.
1. 실사 사진과 유사한 scene text recognition data를 생성시켜서 사용하면 annotation도 자동으로 되어있을거고 대규모 데이터셋 확보에도 용이할 것으로 보이는데, 혹시 이 방법의 한계나 문제점이 있을까요?
2. 글자 수를 알아내기 위해 CTC 알고리즘을 사용한다고 하셨는데, 무엇인지 간단하게 설명해주실 수 있을까요?
감사합니다.
안녕하세요. 댓글 감사합니다.
1. 아무래도 생성된 데이터셋이 실사 사진과 유사하지 않을 수 있다는 점과, 모델이 생성된 데이터를 학습하면서 실제 데이터에서 볼 수 있는 irregular한 text를 잘 학습하지 못할 수 있겠습니다 . .또, 이 생성 데이터에 오버피팅되면 실사 데이터에서는 잘 동작되지 않을수도 있겠네요.
2. CTC알고리즘이란, 저자들이 제안한 str 프레임워크에서 마지막 단계 prediction에서 사용되는 알고리즘입니다. 즉, 이 stage의 입력으로는 sequence가 들어오게 되는데, 이 sequence를 순차적으로 읽어오면서 이전 state와 중복되면 합쳐지도록 동작합니다. 예를 들어 ‘hhheeelll__lloo’이라는 15이라는 길이를 가진 sequence가 들어왔을 때 h e l l o 가 되기 위해서는 h 3개가 연속으로 중복되니 하나로 합치고, e도 하나로 합치고, l, 공백, l, o도 하나로 합친 후 공백을 제거하고 이어붙여 최종적으로 hello를 만들어내는 알고리즘이라고 보시면 되겠습니다.