728x90
핵심키워드
- Scene Text Recognition (STR)
- TPS(Thin-Plate-Spline)
- Connectionist Temporal Classification (CTC)
- Attention
Text Recognition - Data Set
- Regular: 가로로 배치되어 있으며 문자 사이 간격이 균일한 문자가 있는 텍스트 이미지를 지칭
- Irregular: 보통 휘어져 있거나 회전되어 있는 텍스트가 포함된 이미지를 지칭하며, Regular보다 글자를 인식하기 더 어려운 케이스가 포함됨
- 인식하기 어려운 이미지들
- Transformation: Irregular 텍스트를 regular 텍스트처럼 보정 해주는 변환 작업
- Labeled Dataset의 부족
- Real Dataset 같은 경우 이미지에서 word box 찾은 후 해당되는 하나하나 어떤 단어인지 글자를 Trasnformation해줘야 되는데, 생각보다 label 비용이 비싸다.
- Text-Detection과 비교하면 Text-Recognition는 박스를 친거에 하나하나 글자를 다 수기로 입력해야하기 때문에 라벨링 비용이 비싸서 라벨링된 real 데이터가 부족하다.
- 데이터셋이 부족한 한계를 극복하기 위해 합성 데이터(Synthetic Dataset)을 활용하기도 한다.
Text Recognition 구조
Scene Text Recognition (STR)의 구조
Text Recognition = 인식기를 보통 Scene Text Recognition (STR)이라고 부른다.
- Vision Encoder: 텍스트가 존재하는 word image에서 feature를 추출하는 역활
- Text Decoder: 추출된 feature를 기반으로 어떤 text인지 출력하는 역활
- Scene Text Recognition(STR) 의 대표적인 프레임워크
- foure stages로 보면
- 1) Transformation Stage
- 왜곡되어 있는 텍스트를 인식 모델이 가장 인식하기 쉬운 형태로 변환한 뒤 Normalize를 해주는 단계
- 2) Feature Extraction Stage
- 일반적인 CNN Architecture를 활용하여 이미지의 Feature를 추출하는 단계
- 3) Sequence Modeling Stage
- CNN으로 추출한 Feature 들의 순차적인 상관관계를 추출하기 위한 단계
- 이 Stage가 있는 이유는 CNN같은 경우 receptive field가 local하게 제한되기 때문에 이미지 전체에 대해 global-level에대해 relation또한 이용하고 싶기 때문에 이 Stage를 이용해서 맨 앞에있는 visual feature와 맨 뒤에있는 visual feature간의 관게를 추가적으로 모델링 해주는 것이다.
- 4) Prediction Stage
- Contextual Feature를 기반으로 최종적으로 어떤 글자인지 예측하는 단계
- 1) Transformation Stage
STR Framework : TRBA
https://arxiv.org/pdf/1904.01906
- TRBA에서는 4단계 모듈(Trans, Feat, Seq, Pred)로 구성된 STR Framework를 도입함
- 각 단계에서 사용되는 TPS-ResNet-BiLSTM-Attn 의 앞 글자를 따서 'TRBA'라고 부른다.
Transformation Stage
- 이 단계에서는 TPS(Thin-Plate-Spline)를 활용하여 입력 이미지 (X)를 정규화된 이미지 (X~)로 변환해 준다.
- 텍스트를 감싸는 여러 개의 기준점(fiducial points)를 찾아 문자 영역을 미리 정의된 사각형으로 정규화한다.
- 다양한 형태로 나타나는 텍스트를 기하학적 구조와 관련된 학습을 할 필요가 없도록 변환해 주는 역활을 한다.
- + : fiducial points
Feature Extraction Stage
- 이 단계에서는 이미지에 대한 Visual Feature Map (V)를 추출하게 된다.
- 어떤 아키텍처를 사용하기 위해 대표적인 CNN모델인 VGG, RCNN, ResNet 대상으로 성능비교 진행 -> ResNet이 가장 높은 성능
- 원본 방식의 RexNet을 이용할 경우 가로로 긴 텍스트 이미지가 많이 들어오는 STR에는 적절하지 않다.
- Original Architexture of ResNet을 보면 마지막 output이 1x1로, 즉 spatial 차원을 다 aggregate되서 다 사라진 상태이다.
- 원본 ResNet 같은 경우 Horizontal 방향의 경우 끝까지 다 downsampling하지만 변형된 ResNet은 Horizontal방향 으로는 downsampling하지 않는다. -> receptive field를 살린 상태의 구조로 변형해서 ResNet을 사용한다.
- 변형된 RexNet 표를 보면 Output 마지막을 보면 1x1이 아닌 26x1인 것을 확인할 수 있다. 즉 변형된 ResNet을 통과하면 Horizontal방향으로 26개의 feature들이 뽑힌다. 여기서 Horizontal방향같은 경우 글자자체가 가로로 긴 경우이기 때문에 하나하나 feature가 글자에 대응되는 hidden state라고 볼 수 있다.
Sequence Modeling Stage
- CNN으로 추출한 Feature들의 순차적인 상관관계를 추출하기 위한 단계, TRBA에서는 이를 위해 BiLSTM을 사용함
- 오른쪽 그림을 보면, 하나하나 feature map들을 실제로 이미지에 대응시켜보면 가로이미지 전체에 대해서 다 사용되는 것이 아니고 제한적으로만 정보를 활용해서 만들어진 feature들인것을 알 수 있다.
- 이런 Local한 receptive field만 가진 feature를 이용하면 예컨데 맨 앞 글자를 예측할 때 맨 마지막 글자의 시각적인 정보를 이용하고 싶지만 이용하기 어려울 수 있기 때문에 Sequence Modeling을 사용한다.
Prediction Stage
이 단계에서는 CTC or attention 방법이 있다.
Connectionist Temporal Classification (CTC)
- Sequence Modeling Stage로 부터 들어온 contextual feature벡터의 개수만큼 글자를 예측하는 방법론이다.
- 이때 글자를 예측할 때, 이전 글자들에 대해서 dependency가 없는 방법, 즉 벙렬적으로 non auto regressive하게 모든 글자들을 한꺼번에 예측하는 방법론이다.
- 이 방법은 고정된 feature 벡터가 들어오면 이를 이용해 각각 대응되는 글자들을 예측하는건데, 이렇게 되면 항상 예측할 수 있는 글자수가 고정되기 마련이다. 실제 이미지에서는 항상 같은 개수의 글자가 있지 않기에 일정한 수의 feature를 통해 일정하지 않은 개수의 글자를 예측하는 문제를 풀어야한다. 예시를 통해 확인해보자
- 다음 그림에서 length of sequence, T=16 일 때
- feature 벡터가 16개 들어오고, CTC는 16개의 feature 벡터에 대해서 16개의 글자를 예측해야한다. 그러나 실제 이미지에 있는 글자는 16개가 아닌 총 6개의 글자뿐이다. 앞서 말한것처럼 각각의 feature들이 가로방향으로 일정크기의 receptive field에 대응되는 정보를 갖고있다.
- 보이는 그림과 같이 이 feature 벡터들이 실제 Text 이미지에 overlay했을 때 각각의 feature마다 예측되는 글자들이 서로 달라지게 된다는 것을 알 수 있다.
- mapping function을 통과하여 공백과 중복을 제거함으로써 우리가 원하는 VISION 글자가 나오게된다.
Attention-based Sequence Prediction
- CTC와 다르게 Auto regressive(AR)방식으로 한글자씩 예측하는 방법론이다. AR한 방식이기 때문에 sequence Modeling에 용이한 LSTM을 많이 이용한다.
- LSTM을 이용해 각 step마다 각각 하나의 글자를 예측해야 하는데, 이때 지금까지 글자들 중에서 각각의 글자마다 얼마나 attend해야하는지 Attention Weight를 구하고, 해당 weight를 이용해서 LSTM의 hidden state의 계산을 보정해주게 된다. 그 다음 LSTM의 hidden state에 대해 매 step마다 글자들이 예측하는 방식으로 동작한다.
Experiment and Analysis
- 학습 데이터에 대한 분석
- MJSynth, SynthText 데이터셋으로 학습한 결과
- 단독적으로 사용하는 것보다는 두 데이터셋을 함께 사용했을 때 성능이 가장 좋다.
- 또한 단순히 비슷한 학습 데이터의 개수가 많은 것보다도 높은 다양성을 가지고 있는 것이 성능을 높이는 데에 도움이 될 수 있다.
- 아래 표를보면 MJSynth20% + SynthText20%을 섞은게 2.9M으로 적은 데이터셋을 사용했음에도 높은 다양성을 가지고 있기에 성능이 준수하다.
- MJSynth, SynthText 데이터셋으로 학습한 결과
- 모듈 조합에 대한 분석
- 모듈별 실험을 통해 성능 향상을 위해서는 어떤 모듈을 우선적으로 도입시키면 좋은지 알 수 있다.
- VGG에서 ResNet 도입 -> Sequence modeling 없는것에서 BiLSTM도입 -> 일반적인 transformation에서 TPS도입 -> CTC대신 ATTn 도입 순으로 모델 업그레이드시 효율적으로 성능을 올릴 수 있다.
- 모듈별 실험을 통해 성능 향상을 위해서는 어떤 모듈을 우선적으로 도입시키면 좋은지 알 수 있다.
- 모듈별 정성적 분석
- 각 모듈이 어떤 케이스에서 실패하는지를 확인해 보기 위한 정성적 분석
- 특정 모듈이 없었을 때는 틀렸으나, 해당 모듈을 도입한 모델에서는 맞춘 케이스들의 예시를 보여준다.
- 다음 그림을보면 Trans(None->TPS) 에서 TPS를 도입한경우 이전보다 curved text나 rotated text를 더 잘 맞출 수 있게 되었다.
- 또한 CTC 대신 Attn 모듈을 도입한 경우 전에 예측한 글자에 대해 dependency가 있기 때문에 HOUSE 글자 같은경우 H, O, U, S까지 봤으면 E가 나올 가능성이 높다라는 추가적인 정보를 활용한 것이기에 occlusion에 대해 강건한 모습을 보이고 있다.
'DL' 카테고리의 다른 글
[OCR] [4] 인식기 - ParSeq (2) | 2024.10.29 |
---|---|
[OCR] [2] 검출기 - DBNet++ (0) | 2024.10.28 |
[OCR] [1] 개요 및 검출기 - CRAFT (1) | 2024.10.27 |
[Transformer] Vision Transformer이해하기 (0) | 2024.10.24 |
[LLM]Large Language Model 근간 이론 (7) | 2024.09.24 |