늦깎이 공대생의 인공지능 연구실

TextSnake: 유연한 모양으로 글자를 찾아내는 모델(A Flexible Representation for Detecting Text of Arbitrary Shapes) 본문

논문

TextSnake: 유연한 모양으로 글자를 찾아내는 모델(A Flexible Representation for Detecting Text of Arbitrary Shapes)

Justin T. 2023. 7. 22. 21:42

 
 최근 딥러닝 기반 문자인식 기술은 정형화된 글자 뿐 아니라 사람이 손으로 휘갈겨쓴 필기체도 정확하게 인식할 정도로 많은 발전을 이루었습니다. 차후 AR 기술이 발달한다면 해외여행시 휴대폰으로 사진을 찍어 글자를 그자리에서 번역해주는 기술이 등장할 것을 기대할 수 있습니다.
 이번 포스팅에서는 이미지에서 문자의 위치를 Bounding Box와 같이 정해진 모양이 아닌 유연한 형태로 문자를 찾아내는 TextSnake 논문에 대해 소개해드리도록 하겠습니다.

요약

 심층 신경망과 대규모 데이터셋에 의해 구동되는 STR(Scene Text Recognition:장면 텍스트 감지) 방법은 지난 몇 년 동안 상당히 발전하여 다양한 표준 벤치마크의 성능 기록을 지속적으로 갱신했습니다. 그러나 텍스트를 설명하기 위해 채택된 표현 방식들(Bounding Box와 같은 직사각형 형태 등)이 정형화 되어 있어, 실제 시나리오에서 매우 일반적인 곡선 텍스트와 같은 훨씬 더 자유로운 형식의 텍스트 인스턴스를 처리할 때 기존 방법만으로는 표현에 한계가 있습니다. 이 문제를 해결하기 위해, 저자들은 TextSnake라고 하는 장면 텍스트에 대한 보다 유연한 표현 방식을 제안합니다. 이는 수평, 방향 및 곡선 형태로 텍스트 인스턴스를 효과적으로 표현할 수 있습니다. TextSnake에서 텍스트 인스턴스는 대칭 축을 중심으로 정렬된 겹친 디스크의 시퀀스로 설명되며, 각 디스크는 잠재적으로 가변 반경 및 방향과 연관됩니다. 이러한 기하학적 속성은 Fully Convolutional Network(FCN) 모델을 통해 추정됩니다. 실험에서 TextSnake를 기반으로 하는 텍스트 검출기는 자연 이미지에서 곡선 텍스트에 특히 중점을 두고 새로 공개된 Benchmark 데이터셋에 상당히 좋은 성능을 나타내고 있습니다. 특히 TextSnake는 F-measure에서 Total-Text의 기준을 40% 이상 능가합니다.

Introduction

 비전 분야에서 인공지능 모델을 개발함에 있어 해당 모델의 성능을 검증하기 위해 분류지표 평가로 Precision, Recall, F1-Score등의 방법들이 사용됩니다. 다만, 해당 방법들의 경우 이미지에서 물체를 찾아냈는지의 여부는 확인할 수 있으나, 물체의 위치를 정확하게 판단함에 있어서는 모호한 기준입니다.
 일반적으로 Object Detection에서는 이미지의 위치를 Bounding Box로 표시합니다. 사람의 눈으로 보았을 때, 위치가 어디 있는지 파악하기 쉬운 방법이지만, Bounding Box 내에서 물체의 비중은 천차만별입니다.

 그림 (a)의 경우 보편적으로 사용되는 Bounding Box 방식을 사용하고 있는데, 실제 텍스트의 비중은 절반 가까이 되며, 나머지 절반은 텍스트가 아닌 영역입니다. Bounding Box만으로는 감지된 물체의 비중에 차이가 있음을 알 수 있습니다. (b)의 경우 Bounding Box를 기울여서 글자의 비중을 최대한 높였으나 Bounding Box가 그림의 영역 밖까지 벗어나버린 것을 보실 수 있습니다. (c)의 경우 Bounding Box를 직사각형에 구애받지 않고 사각형으로 표시하는 방법이나 여전히 Text 외의 비중이 차지하고 있는 것을 볼 수 있습니다. 반면 (d)는 저자가 제안하는 방식은 TextSnake 방식으로 이미지에서 Text의 부분에 최대한 비중을 두어 글자 외의 배경의 비중을 최소화하여 Text의 비중을 최대한 찾아내는 것을 확인할 수 있습니다.

Methodology

 TextSnake 알고리즘이 어떤 방법으로 그림 내 글자를 찾아내는지 설명해보도록 하겠습니다.

Representation

 TextSnake는 사진에서 글자를 유연하게 찾아내기 위해 수많은 Disk로 이미지를 찾아냅니다. 글자의 중심을 기준으로 Disk의 위치 c, 반지름 r, Tangent 방향 θ 값으로 이미지 내에서 글자를 표시합니다.

Pipeline

 규칙적이지 않은 글자 모양을 감지하기 위해, 저자들은 FCN 모델을 사용하여 글자 인스턴스의 위치를 예측합니다. FCN 기반의 신경망은 글자중심선(Text Center Line)과 글자 위치(Text Regions)의 점수지도(Score Map)을 예측해냅니다. Instance Segmentation을 수행할 때, TCL이 서로 겹치지 않도록 분리 집합(Disjoint Set) 작업을 수행합니다. Striding Algorithm은 중심축의 점 리스트를 추출하고 Text Instance Reconstruction 작업을 수행하여 그림에서 문자들을 모두 인식할 수 있도록 합니다. 
 

Network Architecture

TextSnake의 신경망 구조도는 FPN(Feature Pyramid Networks)과 U-net의 구조를 참조하여 만들어졌습니다. 두 알고리즘의 특징은 하나의 이미지를 여러개의 크기로 나누어 작은 사이즈에서는 전체적인 관점에서, 큰 사이즈에서는 좀더 디테일한 관점에서 글자를 감지하여 예측하는 과정을 통해 이미지에서 글자의 위치를 찾아냅니다.

Inference

 위에서 설명드린 신경망을 통해 TCL값과 TR값을 얻을 수 있습니다. 분리 집합(Disjoint-Set) 방법을 사용하여, TCL 픽셀을 서로 다른 텍스트 인스턴스로 분리 할 수 있습니다. Striding 알고리즘을 통해 텍스트 영역 내 점들을 추출하고 이 점들을 통해 텍스트 인스턴스의 영역을 재구성하는 방식으로 글자의 중심점 데이터를 수집합니다.

 

 

  Striding 알고리즘의 동작 방식은 총 3가지로 구성되어 있습니다. 먼저, 이미지에서 Text를 Segment한 부분에서 임의의 픽셀을 하나 선택한 후 글자영역의 중심점을 찾습니다. 이 중심점은 TCL의 일부가 됩니다. 다음으로 앞단계에서 설정하였던 중심점 주변으로 2개의 점을 찍어 뻗어나갑니다. 새롭게 찍은 2개의 점 또한 해당 위치에서 글자영역의 중심점을 설정하고, 글자영역 바깥으로 찍힌 점은 제외합니다. 이러한 과정에서 글자영역 내에 중심점 TCL을 모두 찾았다면 중심점으로부터 원을 그리면서 글자영역을 표시합니다.

 

 이러한 방식으로 이미지에서 글자 검출 뿐 아니라 이미지 내 글자의 영역까지 찾아낼 수 있습니다.

Label Generation

 삼각형, 혹은 사각형 모양의 글자는 계산이 쉬워 글자영역을 표시하는 것이 쉽지만, 오각형 이상의 모양에서는 글자영역을 모두 표시하는 것이 어렵습니다. 다각형 모양의 글자를 검출하기 위해 마치 뱀 모양의 텍스트 인스턴스를 찾는 알고리즘을 제안합니다.

  먼저 다각형의 글자 범위 내에서 뱀의 머리와 꼬리 역할을 하는 부분을 찾아낸 다음, 글자 인스턴스의 중심점인 TCL을 계산한 다음, TCL을 중심으로 동그라미를 그려나감으로서 글자의 Label을 생성합니다.

Training Objectives

 제안된 모델은 아래와 같은 Loss 함수로 학습을 수행합니다.

 

$$L=L_{cls}+L_{reg}$$

$$L_{cls} = \lambda_{1}L_{tr}+\lambda{2}L_{tcl}$$

$$L_{reg}=\lambda_{3}L_{r}+\lambda_{4}L_{sin}+\lambda_{5}L_{cos}$$

 

 위 식에서 \(L_{cls}\)은 TR과 TLC의 분류 오차를 나타내며, \(L_{reg}\)는 \(r\), \(cos\theta\), \(sin\theta\)의 회귀 오차를 표현합니다. 

 

$$\begin{pmatrix} L_r \\ L_{cos} \\ L_{sin} \end{pmatrix} = SmoothedL1\begin{pmatrix}\frac{\hat{r}-r}{r}\\\hat{cos\theta} - cos\theta \\\hat{sin\theta} - sin\theta\end{pmatrix}$$

 

 여기서 \(\hat{r}\), \(\hat{cos\theta}\), \(\hat{sin\theta}\)는 예측값이며, \(r\), \(cos\theta\), \(sin\theta\)는 Ground Truth값입니다. 

Experiments

 TextSnake의 실험 결과는 다음과 같습니다.

 첫번째 줄 사진에서 곡선 모양의 노란 선이 TextSnake가 감지한 Text이고, 끝부분이 각진 초록색 선이 Ground Truth입니다. 전반적으로 TextSnake가 글자를 잘 찾아내고 있는 것을 확인할 수 있습니다. 아랫줄의 사진은 Text Region(빨간색)과 Text Center Line(노란색)을 나타낸것입니다.

 또한, TextSnake에서 검출된 곡진 텍스트에서 개별 글자를 추출하여 글자를 변형하여 전반적인 텍스트 내용을 확인하실 수 있습니다.

 

Conclusion

 이 논문을 통해, 저자들은 임의의 모양에 다양한 방향으로 쓰여진 텍스트 인스턴스를 이미지에서 찾아내는 유연한 표현 방식을 소개하였습니다. 다양한 환경에서 글자들을 찾아내는 기술을 통해 글자 인식 기술이 지금보다 더 발전할 것이며, 다양한 분야에 적용될 것으로 기대됩니다.

 


참고논문: https://github.com/princewang1994/TextSnake.pytorch

 

GitHub - princewang1994/TextSnake.pytorch: A PyTorch implementation of  ECCV2018 Paper: TextSnake: A Flexible Representation for

A PyTorch implementation of ECCV2018 Paper: TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes - GitHub - princewang1994/TextSnake.pytorch: A PyTorch implementation of EC...

github.com

 

반응형