안녕하세요, 마흔한 번째 X-Review입니다. 이번 논문은 2023년도 CVPR에 게재된 Self-supervised Implicit Glyph Attention for Text Recognition입니다. 바로 시작하도록 하겠습니다. 🧙🏽♂️
1. Introduction
Scene text recognition (STR)은 텍스트 중심의 영상을 입력으로 받아 무슨 문자인지 예측해내는 task인데요, 최근에 이 STR task는 어텐션 기반의 모델을 사용함으로써 text 이미지에서 중요한 영역만을 집중하도록 하여 character-level의 표현을 추출하고자 하는 시도가 왕왕 있어왔습니다. 이런 방법론들은 implicit attention 방식과 supervised attention 방식으로 요약해볼 수 있습니다.
위 fig 1에서 (a)가 implicit attention을 보여주고, (b)가 supervised attention을 보여주고 있는데요, 이 둘은 character level의 어노테이션의 유무에 따라 방식이 나눠지는데, (a)를 보시면 COPTER라는 글씨가 써진 영상 내에 각 글자마다 attention이 되어 있고 1, 2, 3, 4, 5, 6이라고 적혀 있는데 이는 character-level로 어노테이션이 없다보니 각각의 category가 무엇인지는 알 수 없으나 일단 문자 문자 별로 구분을 하고 있는 모습을 볼 수 있으며, (b)의 경우에는 character-level의 어노테이션이 있는 경우여서 C가 heat된 경우 옆 숫자를 보면 3이라고 적혀 있는데 이는 a, b, c순서로 c가 세 번째기에 3이 적혀져 있는 것이며 각 category에 의존적인 채널을 사용하는 것을 의미하고 있습니다.
Implicit attention 같은 경우 1D혹은 2D space의 모든 위치에서 attention score를 계산해 sequence-level의 text annotation으로부터 학습됩니다. 하지만 이 implicit attention 기법은 alignment-drifted attention 문제가 존재합니다. 이는 decoding 과정에서 attention 되어야 할 영역을 찾게 되는데 처음에는 영역을 잘 찾다가 점점 잘못된 위치에 attention하게 되는 문제입니다. 반면에 supervised attention 은 character -level의 bounding box를 통해 생성한 segmentation map을 사용해서 학습을 진행하기 때문에 앞서 언급한 문제로부터 영향을 덜 받게 됩니다. 하지만, 이렇게 문자 하나하나마다 어노테이션을 하는 것은 많은 노동을 필요로 할 뿐만 아니라 각 문자 카테고리마다 어텐션 맵을 생성하게 된다면 문자 카테고리가 엄청 큰 경우 (가령 중국어 데이터라던지) 메모리 이슈가 있을 것입니다.
이런 문제들을 해결하기 위해 본 논문의 저자는 SIGA(Self-supervised implicit glyph attention)이라고 하는 STR을 위한 새로운 어텐션 기반 방식을 제안하게 됩니다. (Figure 1-(c)에 해당) 간단하게만 설명하자면, 이 SIGA는 text 이미지의 glyph 구조를 명확히 정의를 하는데요, 여기서 glyph란 text의 시각적 형태를 의미합니다. 먼저 self-supervised 방식을 통해 text 이미지를 segmentation 하고, implicit attention alignment를 통해 각 문자의 정확한 위치 정보를 얻을 수 잇도록 한 다음 이 attention vector와 text foreground representation을 결합하여 glyph pseudo label을 생성해 내게 됩니다. 즉, 간단히 말하자면 이 SIGA는 추가적으로 character level annotation을 하지 않더라도 텍스트 이미지 내에서 각 문자의 위치를 정확하게 파악하고 attention map의 정확도를 향상시켜 text recognition 성능을 개선한다고 보면 되겠습니다.
본 논문의 contribution을 정리하자면 다음과 같습니다.
- SIGA라고 하는 character level의 어노테이션 없이 text 영상의 glyph 구조를 self-supervised text segmentation과 implicit attention alighment를 통해 명확히 정의하는 새로운 어텐션 방식을 제안
- 여러 벤치마크에서 SOTA 달성
2. Methodology
2.1. Implicit Attention Method over 1D Space
먼저 implicit attention 방식에 대해 설명드리겠습니다. Implicit attention 방식은 transformation layer와 인코더, 디코더로 구성이 되는데요, 먼저 transformation layer 같은 경우 Thin Plate Spline(TPS)를 사용하여 입력 영상 X를 정규화된 영상 X’로 변환합니다. 이 TPS는 Spatial transformation network를 변형한 것으로 곡선 형태의 text가 입력 영상으로 들어오는 경우가 있는데 이를 평평하게 펴주는 변환을 수행하는 전처리 과정이라고 보면 됩니다. 그 다음 인코더는 조금 변형한 ResNet을 통해 정규화된 영상 X’∈R^{C \times H \times W}에서 sequential한 feature H∈R^{C \times 1 \times N}을 추출해낸 후 이를 고정된 길이 sequence \{h_i\}_{i=1,,,,N}로 분할을 합니다. 그 다음으로 디코더를 태워서 이 인코딩된 시퀀스를 LSTM이나 GRU같은 recurrent 모듈에 넣어 디코딩 단계 t마다의 새로운 state vector s_t를 생성합니다. 식으로 살펴보자면 아래 식1과 같겠죠.
위 식에서 (g_t, E(y_{t-1}))는 이전 디코딩 단계에서 예측된 character category (a, b,, c와 같은)의 임베딩 벡터와 attention 방식을 통해 계산된 glimpse g_t의 조합을 나타냅니다. 이때 y_0은 임의로 정의되는 <start> 토큰이구요. 이 glimse g_t는 아래 식 2와 같이 계산됩니다. glimse에 대한 설명을 간단하게 하자면, attention 방식을 통해 중요한 부분을 집중적으로 보는 것입니다. 즉, 중요한 정보가 담긴 부분을 강조하는 것으로 보면 되겠습니다.
식2에서는 attention 가중치를 계산하구, softmax를 태워 확률 값으로 변환한 다음 최종적으로 각 h_i마다 attention 가중치 a_{t,i}를 곱해 가중합함으로써 계산되는 것입니다.
식에서 w, W, V는 learnable한 파라미터구요, 최종적으로 식1을 통해 나오는 x_t는 현재 디코딩 단계 t에서 linear layer를 통해 character classification을 예측해낸 값입니다.
2.2. Our Self-supervised Implicit Glyph Attention
다음으로는 본 논문에서 제안하는 self-supervised implicit glyph attention에 대해 살펴보겠습니다. 본 논문은 앞서 설명드린 implicit attention 방식을 base로 삼고, 새로운 online glyph pseudo-label 생성 모듈을 제안해서 이 모듈로 생성한 glyph pseudo-label을 어텐션의 label로 사용하여 학습하게 됩니다. 그럼 먼저 이 Glyph Pseudo-label을 생성하는 방식에 대해 살펴보겠습니다.
2.2.1 Glyph Pseudo-label Construction (GPC)
정규화된 이미지가 있으면, (TPS 등의 transformation을 통해 생성된) 이 이미지의 text mask와 각 문자의 수평 정보를 통해 pixel-level의 어노테이션 없이도 각 문자의 glyph 구조를 쉽게 얻을 수 있다고 합니다. 그렇기에 본 논문에서는 self-supervised 방식으로 text segmentation을 한 후,, implicit attention alighment를 결합해 glyph에 대한 pseudo-label을 생성해 내는 방식을 고안한 것인데요, 이 sequence-aligned attention은 text 영상에서 문자가 어디 위치해 있는가에 대한 정보를 제공한다고 하여, 정리하자면 self-sup 방식으로 예측한 text mask와 aligned attention을 통해 각 문자의 수평 정보를 알 수 있으니 어노테이션 없이 plyph 구조를 얻어낼 수 있다는 것입니다.
1) Self-supervised Text Segmentation
먼저, glyph 구조를 생성하기 위해 어떻게 text 전경을 뽑아냈는지 살펴보도록 하겠습니다. text segmentation network를 학습하기 위한 pseudo-label S_{pl}를 얻기 위해 클러스터링 방식을 사용했다고 하며, 단순히 k-means 클러스터링 알고리즘을 사용하였다고 합니다. 전경과 배경을 구분하기 위해 K=2로 설정을 하였는데, 즉 텍스트와 텍스트가 아닌 배경 영역을 두 군집으로 나누는 것이라고 보면 됩니다. 실험 결과 대부분 text영상에서 glyph의 구조가 잘 클러스터링 된다고 합니다. 무튼, 이 클러스터링을 통해 생성된 pseudo 라벨을 바탕으로 segmentation network로부터 text의 foreground를 추출해낼 수 있겠습니다.
구체적으로 살펴보자면 ResNet의 conv 0, Block 0, Block 1의 output을 각각 P0, P1, P2로 정의를 하고 이를 top-down 피라미터 구조로 만들었는데 식 3에서 이를 살펴볼 수 있습니다. 최종적으로 O_0가 text segmentation mask S_m를 생성하는데 사용되는 것이죠.
이렇게 예측된 text segmentation mask S_m와 클러스터링을 통해 생성한 pseudo-label S_{pl} 사이의 binary cross entropy loss L{ins}를 통해 text segmentation network를 학습하게 됩니다.
segmentation의 시각화 예시는 위 fig3에서 확인해볼 수 있는데 (a)가 입력으로 들어가는 원본 영상이며 (b)가 k-means를 통해 생성한 pseudo-label text mask구 (c)가 본 segmentation network가 예측한 text map입니다. 보시면 예측 결과가 각 glyph 구조를 잘 캡쳐해내고있음을 확인할 수 있습니다.
2) Implicit Attention Alignment
이 implicit attention alighment는 디코딩 과정에서의 attention 가중치를 정렬해 text recognition 정확도를 높히는 방식인데요, 앞서 introduction에서 언급한바 있는 alignment-drifted attention 문제를 해결하기 위해 제안이 되었습니다.
디코딩 과정에서는 입력 sequence의 중요한 부분에 집중하기 위해 implicit attention weight a가 사용이 되는데, 이 가중치는 sequence의 각 단계 t에서 문자 간의 의존성을 파악하려고 합니다. 즉, 간단히 말해 디코딩 과정에서는 입력 시퀀스의 모든 요소를 동일하게 처리하는 대신 어텐션 가중치를 통해 중요한 부분에 집중을 하겠다는 것인데 예를 들어 ‘hello’라는 단어를 인식한다고 할 때 decoding step t에서 ‘h’가 중요할수도 있고 다음 단계 t+1에서는 ‘e’가 중요할수도있겠죠. 이를 통해 각 문자가 어떻게 연결되고 어떤 영향을 주는지 파악하려 한다는 것입니다 .. .
하지만 이 디코딩 과정에서 시간이 지남에 따라 time information이 다른 정보들에 의해 묻혀버리는 time information drowned 현상이 발생할 수 있으며, 이로써 attention 가중치가 text sequence와 정렬되지 않는 alignment drift 문제가 발생하게 됩니다. 이러한 문제를 해결하기 위해 본 논문에서는 implicit attention weight에 orthogonal constraint를 적용해 sequence-aligned attention vector를 얻는 방식을 제안하고 있습니다.
제안된 방식을 좀 더 자세히 살펴보기 전 fig 4를 통해 sequcne-unaligned attention 예시들을 살펴보도록 하겠습니다. (a)에 디코딩 과정이 도식화 되었으며 (b)가 예시를 보여주고 있는데, attention해야 할 위치를 잘못 찾고 있는 모습이 보여집니다.
무튼, 이 이슈를 해결하기 위해 제안된 방식을 좀 더 구체적으로 살펴보자면 learnable한 attention weight a_t를 vector로 보고, 이 vector들이 서로 직교하도록 하여 각 vector가 text segmentation mask S_m의 해당 문자와 정렬되도록 한 방식입니다. Text 영상의 문자 수를 L이라고 할 때 L개의 attention vector 사이의 correlation coefficient S_{cor}를 계산하고, attention vector를 통해 character saliency map S_{sal}을 추출해 내는 것이죠.
앞서 말한 내용이 식 4에 잘 나와잇으며 ξ는 1D linear interpolation이구 σ(⋅)는 각 vector를 [0, 1]로 매핑하는 활성함수입니다.
loss 함수는 위와 같은데, 먼저 L_{cor}은 attention weight vector들간의 correlation을 최소화하는 것을 목표로 하는 손실함수로 어텐션 가중치 벡터들이 서로 독립적이고 직교하도록 해서 시퀀스 내에서 고유한 정보를 갖도록 합니다. 식4에 나와있는데 이 S_{cor}는 모든 어텐션 가중치 벡터들간의 내적 합으로 계산되는 것을 확인할 수 있습니다. 벡터들이,, 직교할 경우 내적하면 0이 되기 때문에 이를 최소화함으로써 최대한 직교하도록 만들려는 것이죠. 다음으로 L_{dif}같은 경우 segmentation text mask S_m와 문자 saliency map S_{sal}간의 차이를 최소화하는 것을 목표로 하여 binary cross entropy loss를 사용합니다. 최종 손실함수는 이 둘L_{cor}, L_{dif}을 더하여 계산됩니다.
3) Glyph Pseudo-label Construction
최종적으로 aligned 어텐션 가중치 B={B_t\}_{t=1,…,T}와 segmentation mask S_m 사이의 내적을 통해서 glyph pseudo-label을 얻어낼 수 있습니다. 내적하는 이유는 이 어텐션 가중치 벡터의 각 요소가 해당 문자의 위치와 일치하도록 text segmentation mask의 해당 위치에 가중치를 적용하는 것이죠. 이를 통해 glyph 형태와 구조를 나타낼 수 있습니다.
이 계산된 내적 결과(glyph pseudo-label)는 아래 식7과 같은 형태로 구성됩니다.
이렇게 생성된 glyph pseudo-label은 학습 과정에만 사용되어, 실제 text recognition을 수행할때는 이pseudo-label이 사용됮 ㅣ않습니다. 생성된 glyph pseudo-label의 시각화 결과를 아래 그림 5에서 살펴볼 수 있습니다. 각 문자마다 glyph가 잘 뽑힌것을 볼 수 있습니다.
2.2.2 Glyph Attention Network (GLAN)
이제 본 논문에서 생성해낸 glyph pseudo-label을 활용한 glyph attention network의 구조에 대해 살펴보도록 하겠습니다.
그 전에,,, 현존하는 STR(scene text recognition)에서 사용되는 supervised attention 방식에는 다음의 몇 한계점이 존재합니다. 1) 언어의 문자 종류가 많을 경우 메모리 사용량이 많고, 처리 속도가 느려질 수 있는데, 이는 문자 카테고리마다 다른 character segmentation map을 생성하기 때문이다. 2) CNN으로 예측된 segmentation map에서 직접 문자의 순서를 얻기 어렵기에 순서를 맞추기 위한 추가적인 branch가 필요하게 되며 이는 계산 복잡도와 시간을 증가시킨다. 3) character level의 bbox 어노테이션이 필요하며,,, 이는 굉장히 번거로운 작업이다.
저자가 제안한 자체적으로 구축된 glyph pseudo-label을 사용하면 character의 순서가 잘 보장되고 잘 정렬이 되어 있기 때문에 위에서 언급한 한계점을 극복할 ㅅ ㅜ있다고 합니다. glyph attention network는 고정된 길이와, 카테고리별 독립적인 채널로 glyph attention map을 생성합니다. 구체적으로 본 네트워크는 여러 cnn을 통과한 후 식 3의 O_k feature를 추출해내게 되는데요, 이 feature는 glyph attention map S_{gam}를 예측하는데 사용이 됩니다. 이 attention map은 N_s 채널을 갖게 되는데 이는 1+M으로 설정이되며 여기서 M은 text 영상에서 설정된 최대 문자 길이를 의미합니다. 실험에서 26으로 고정했다고 하네요.
이런 방식이 기존 방식과 메모리와 계산 효율 측면에서 비교를 해본다면, 중국어 데이터셋인 GB2312를 예로 들 떄 이 데이터셋은 6763개의 카테고리를 갖고 있습니다. 기존 supervised attention 방식에서는 각 카테고리를 개별 채널로 처리를 해줬어야 해서 256개의 feature channel에 6763개의 카테고리를 곱해 약 1.7M개의 파라미터를 사용했어야 했는데, glyph attention network는 모든 문자를 포괄하는 27개의 channel만을 사용하기 때문에 256 x 27로 6.9K개의 파라미터만을 사용하게 됩니다. 즉, 문자의 종류가 엄청 많은 언어를 처리할 때 큰 이점을 갖게 되겠죠.
손실 함수는 multi-class Dice loss와 cross-entropy loss를 사용하였습니다.
w_{j,i}, w^{*}<em>{j,i}는 각각 pseudo-label
S</em>{gt}와 glyph attention map S_{gam}의 j번째 map의 i번째 pixel p_i의 confidence score입니다. L은 text 영상에 있는 문자의 개수입니다.
2.2.3 Attention-based Character Fusion Module
마지막으로 저자는 glimpse(이미지 내의 각 문자가 어떻게 보이는지에 대한 정보를 담은..)와 glyph feature(문자의 구조에 대한 정보를 담은,,,) 이 둘을 fusion하도록 하였는데요, 이 둘을 서로 각각 유사해보이지만 다른 정보를 제공합니다. glimse는 시각적 정보를 glyph feature는 구조적인 정보를 제공하기 때문에 각각의 정보를 잘 사용하고 싶어 fusion했다고 하며 이렇게 fusion된 feature sequcne는 decoder 로 전달되어 최종 분류 결과(어떤 문자인지)를 예측해내게 됩니다.
4. Experiments
데이터셋은 SynthText와 MJSynth와 같은 대용량 합성 데이터셋으로 학습을 하였고, 9개의 STR 데이텃셋을 평가하는데 사용하였습니다. 크게 7개의 context 벤치마크 (ICDAR, CUTE80 등)와 두 개의 contextless 벤치마크 (MPSC, ArbitTexxt)를 사용하였는데, 이 context와 contextless 벤치마크의 차이점은 아래 fig6에서 확인하실 수 잇습니다.
보시면 context benchmark는 일상 scene에서의 text를 담고 있어서 의미가 담겨 있는 house라던지 everyday라던지 하는 단어들이 주를 이루고 있습니다만, contextless 벤치마크 예를 들어 MPSC같은 경우는 산업 환경에서 제품에 새겨져있는 시리얼 번호들이 주를 이루고 있는데 이 단어들은 대게 아무런 문맥적 의미가 없다는 차이가 있습니다.
4.1. Comparisons on context benchmarks
먼저 context한 benchmark에 대한 비교 실험입니다. 먼저 language-free 모델에 대한 실험 결과를 살펴보도록 하겠습니다. language-free 모델이란 시각적 정보만을 이용해 text를 recognition하는 것으로 텍스트의 의미나 문맥에 대한 정보 없이 이미지 자체에서 문자를 인식하는 것에 초점을 맞춘 모델이라는 것입니다. 예를 들어 language-free 모델의 반대인 language-aware 모델 같은 경우 의미적으로도 추론을 하여 recognition을 좀 더 잘하도록 한 것인데요, text가 university인데 이걸 unjversity라고 예측했다면 문맥을 고려해 university로 수정하는 등의 작업을 통해 recognition 정확도를 향상시키는 모델이 languange-aware 모델이고 이의 반대가 language-free 모델이라고 보시면 되겠습니다.
무튼, 위 table2에 langue-free 모델에 대한 실험 결과가 나와있는데 본 논문의 SIGA는 CNN 기반 방법론들 중에서 7개의 benchmark에서 sota를 달성하였습니다. 또 transformer 기반 방법론에서도 물론 모델이 하나밖에 존재하지 않지만, SIGA가 IIT, SVt, IC03, IC13, CT 벤치마크에서 SOTA를 달성한 것을 확인할 수 있습니다.
다음으로 language-aware model에 대한 실험 결과는 table3에서 살펴볼 수 있습니다.
본 논문의 SIGA는 이런 language-aware 모델들과 비교했을 때도 경쟁력있는 성능을 보였는데요, 이 SIGA는 semantic reasoning task를 사용하지 않으면서도 8개의 벤치마크 중 6개의 벤치마크에서 SOTA를 달성하였습니다.
4.2. Comparisons on contextless benchmarks
그 다음으로 contextless 벤치마크에 대한 실험 결과입니다. context 벤치마크와는 달리 contextless한 text는 의미적인 정보가 적기에 언어적인 문맥에 의존하는 모델들은 이런 텍스트에 적합하지 않습니다. 즉, 문맥이 없는 contextless한 벤치마크에서는 text 이미지의 시각적인 특징을 최대한 활용하는 것이 중요하겠죠.
표 4에서 확인할 수 있는 실험은 MJ나 ST같은 동일한 대용량의 합성 데이텃세을 통해 학습을 한 후 각 데이터셋에 대한 evaluation을 수행한 것입니다. 실험 결과 본 논무느이 SITA가 두 데이터셋에서 가장 좋은 성능을 보인 것을 확인할 수 있는데 이는 제안된 glyph attention 방식이 시각적인 특징을 잘 활용하여 문맥이 없는 데이터셋에서도 좋은 성능을 보인 것으로 판단됩니다.
안녕하세요. 좋은 리뷰 감사합니다.
contextless 벤치마크 실험 결과에서 context와 달리 의미적인 정보가 적어 언어적인 문맥에 의존하는 모델들은 이런 텍스트에 적합하지 않다고 하셨는데 그럼 보통 context를 기저에 깔고 모델을 설계하게 되는지 아니면 contextless를 가정하고 모델을 설계하는지 궁금합니다.
제가 보기에 이 모델은 딱히 문맥에 의존하는 모델로 보이지 않는데 문맥에 의존하는 모델은 어떤 방식으로 설계하는 건가요?
감사합니다.