PuzzleNet: Scene Text Detection by Segment Context Graph Learning

Inc Lomin's avatar
Apr 18, 2021
PuzzleNet: Scene Text Detection by Segment Context Graph Learning
Scene text detection 연구에서 bottom-up 방식은 top-down 방식에 비해 크게 주목을 받지 못하여 왔습니다. 아마도 가장 어려운 점은 작은 조각들을 연결하여 전체 단어 polygon을 만드는 과정이 복잡하고 경험에 의존하는 많은 post-processing이 필요한 것이었다고 생각합니다. 이 연구에서는 그 과정 중의 일부를 Graph Neural Network를 사용하여 해결하고자 합니다. 여전히 복잡한 post-processing과 GT 생성 rule이 존재하지만, 처음으로 GNN을 bottom-up 방식에 사용하여 문제를 해결하였다는 점이 인상적입니다.
 

Introduction

최근 text detection 연구는 크게 세 가지로 분류할 수 있습니다.
1) Regression-based methods
R-CNN와 비슷한 접근법을 사용하는 것으로, 여러 개의 anchor box를 두고 텍스트 영역에 해당하는 box의 좌표를 regression하는 방식입니다. TextBoxes, RRPN 등이 이에 해당합니다.
2) Segmentation-based methods
텍스트 영역 안에 있는 pixel들을 positive, 바깥 pixel을 negative로 학습하는 방식입니다. Pixellink, Textsnake, PSENet 등이 이에 해당합니다.
3) Decomposition-based methods
텍스트 영역을 글자 또는 더 작은 영역으로 나누어서 예측한 뒤 이것들을 모아서 전체 텍스트 영역을 유추하는 방식입니다. CTPN, WordSup, Wetext, CRAFT 등이 이에 해당하는 연구입니다.
본 논문은 세 번째 카테고리에 해당합니다. 다른 연구들과 다른 점은 bottom-up 접근법에서 조각들을 그룹으로 만들 때 조각들의 로컬한 정보만을 활용하지 않고, GCN을 사용하여 주변 context를 모두 활용한다는 것과 arbitrary shaped 글자를 검출하는데 더 초점이 맞춰져 있다는 것입니다.
 

Proposed Method

전체 구조는 아래와 같이 세 단계로 이루어집니다.
notion image
 

Backbone Network

ResNet-50 + FPN을 사용합니다.
Non-local block을 C2, C4 뒤에 삽입하여 long range dependency를 모델링할 수 있도록 합니다.
 

Segment Detection

Segment Proposal Network(SPN)은 서로 인접한 segment끼리 비슷한 orientation을 가지고 있도록 segment를 예측하는 일을 수행합니다.
SPN을 학습하기 위하여 GT polygon을 GT segments로 변환하는 과정은 아래와 같이 세 단계입니다.
notion image
1) Polygon으로부터 Textsnake에 제안된 방법을 따라 text center line(빨간색 선)을 추출하고, 이 center line을 50조각으로 나눈 뒤 각 조각을 중심으로 하는 정사각형을 모두 만듭니다(초록색 박스).
2) 인접한 두 개씩의 box을 둘을 모두 감싸는 rectangle로 바꿉니다(보라색 박스).
3) 인접한 rectangle들 중 각도의 차이가 10도 미만인 쌍은 merge하였을 때 aspect ratio가 3보다 작은 경우 마찬가지로 merge하여 더 긴 rectangle로 바꿉니다(오렌지색 박스).
이 segment를 예측하는 SPN은 RRPN의 구조를 사용합니다. RRPN은 anchor가 bounding box로만 표현되는 것이 아니라 theta라는 추가적인 인자를 가져 임의의 돌아간 사각형을 타이트하게 표현할 수 있는 구조입니다. SPN은 여기서 나아가 RRoI의 다른 스케일을 다른 feature pyramid에 할당하고, RRoI Pooling 대신 RRoI Align을 사용하였습니다.
 

Segment Context Graph Learning

notion image
Segment를 구한 다음에는 각각의 segment 쌍이 같은 단어에 속하는지 그 관계를 예측합니다. 같은 단어에 속하는 segment는 비슷한 appearance를 가지고 있으며, 공간적으로는 자연스러운 그래프 구조를 이룹니다. 따라서 appearance, geometry 두 가지 측면에서 feature를 추출하여 각각의 segment가 node가 되는 graph를 구축하고, 임의의 두 segment가 연결된 것인지(같은 단어에 속하는지)를 예측합니다.
  • Appearance feature
    • Feature pyramid에서 RRoI Align으로 추출한 Feature를 사용합니다. 512-dimension의 3개의 convolution과 d-dimension을 가지는 FC를 거친 뒤 N개(segment의 갯수)만큼의 appearance feature가 생성됩니다.
  • Geometric feature
    • 앞서 설명한 rotated box인 segment representation으로부터, 다음과 같은 값을 정의합니다. 이 값들(N개)는 마찬가지로 d-dimension FC를 거쳐 geometric feature가 됩니다.
      notion image
얻어진 appearance, geometric feature는 node가 되어 각각 아래와 같이 정의되는 appearance similarity, geometry similarity라는 두 edge를 사용하여 연결됩니다.
notion image
여기서 K는 두 feature간의 similarity 함수를 의미하며, cosine similarity, Gaussian similarity, Jensen-Shannon similarity의 학습되는 weighted sum입니다.
notion image
이제 임의의 두 노드(segment)간의 similarity까지 계산이 완료되었습니다. 남은 일은 이 similarity로부터 실제로 어떤 노드(semgment)가 연결된 것인지 유추하는 것입니다. 여기서는 이 similarity를 adjacency matrix로 하는 GCN을 사용하겠습니다. GCN의 한 layer는 아래와 같이 표현됩니다.
notion image
여기서 G는 adjacency matrix, X는 input features, W는 weight matrix, Y는 output features입니다. 본 논문에서는 appearance, geometry 그래프를 따로 구축하여 3-layer GCN으로 각각 학습하였습니다. 마지막 부분에서는 feature를 concat하여 N x 2d 크기로 만든 후 N-dimension FC layer와 1 x 1 x 2 커널의 convolution을 적용하여 N x N x 2 크기의 feature map을 생성합니다. 마지막에는 position-wise softmax를 적용하여 combination score map을 얻어냅니다.
 

Segment Post Processing

연결된 segment들을 모아 polygon으로 만들기 위해서는 post-processing이 필요합니다. 이는 아래에서 설명하는 두 단계로 이루어집니다.
  1. Segment grouping
    1. 첫 번째 단계는 combination score map으로부터 연결된 segment들을 cluster로 묶는 것입니다. 이 단계에서는 각각의 segment가 다른 segment와 같은 클러스터인지 pairwise로 비교합니다. 여기서는 k-Nearest Neighbors with Radius (kNNR) 알고리즘을 사용합니다. m번째 segment에 대하여 n번째 segment는 다음의 두 가지 rule을 만족할 때 같은 cluster입니다.
      A. 두 segment의 center 사이의 Euclidean distance에 의해 결정되는 k-Nearest Neighbor에 속해야 합니다.
      notion image
      B. 이 Euclidean distance는 아래 값보다 작아야 합니다.
      notion image
      여기서 k, alpha는 0, 2.5 입니다. 여기서 연결된 segment들의 combination score중 최댓값은 0.5보다 커야 한다는 조건을 추가로 적용합니다.
  1. Segment Merging
    1. 각각의 cluster에서, 아래 그림과 같이 segment를 짧은 축 방향으로 절반으로 나누는 segment bisection line과, 인접한 segment bisection line을 각도상 절반으로 나누는 angle bisection line을 구합니다. 다음으로, 가장 가까운 short side의 vertices 중 angle bisection line에서 가장 먼 두 vertices가 남겨집니다. 남은 점들(붉은색 점)이 contour point가 됩니다. 마지막으로 boundary curve를 더 부드럽게 만들기 위하여, thin plate spline(TPS)가 사용되었습니다.
      notion image
 

Experiment

Training Strategy

학습은 end-to-end로 이루어지며, 다음과 같이 SPN의 loss와 GCN의 combination loss를 같이 사용합니다.
notion image
Regression loss는 smoothed L1 loss를 사용합니다.
notion image
notion image
notion image
Comtination score map은 다음과 같은 combinational label map으로 학습됩니다. S^(P), S^(Q)는 각각 P-th, Q-th GT polygon에 속하는 segment들의 집합을 의미합니다.
notion image

Datasets

SynthText를 사용하여 pre-train시키고, 다른 데이터셋으로 fine-tuning 하였습니다.
실험에는 MSRA-TD500, ICDAR 2015, SCUT-CTW1500을 사용하였습니다.
 

Ablation Study

PuzzleNet에서 appearance feature, geometry feature, graph를 제거한 모델과 single cosine similarity만을 사용한 모델, segment representation대신 SegLink에서 제안된 square box를 사용한 모델, 그리고 multi-scale input을 사용하지 않는 모델을 비교하였습니다.
SCUT-CTW1500 데이터셋에서의 ablation study 결과
SCUT-CTW1500 데이터셋에서의 ablation study 결과
 

Comparison with SOTAs

notion image
notion image
notion image
notion image
 

Conclusions

이 논문에서는 decomposition-based 방법으로 scene text detection 문제를 해결하는 새로운 방법을 제시하였습니다. 제안된 알고리즘은 임의의 형태로 생긴 text 영역을 더 작은 segment로 나누고, 이 segment들을 학습하되 graph cnn을 사용하여 context를 고려할 수 있도록 하였습니다. 실험에서는 특히 arbitrary-shaped text에서 높은 성능을 보여주었습니다.
 
 
 
Share article