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
전체 구조는 아래와 같이 세 단계로 이루어집니다.
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로 변환하는 과정은 아래와 같이 세 단계입니다.
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
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가 됩니다.
얻어진 appearance, geometric feature는 node가 되어 각각 아래와 같이 정의되는 appearance similarity, geometry similarity라는 두 edge를 사용하여 연결됩니다.
여기서 K는 두 feature간의 similarity 함수를 의미하며, cosine similarity, Gaussian similarity, Jensen-Shannon similarity의 학습되는 weighted sum입니다.
이제 임의의 두 노드(segment)간의 similarity까지 계산이 완료되었습니다. 남은 일은 이 similarity로부터 실제로 어떤 노드(semgment)가 연결된 것인지 유추하는 것입니다. 여기서는 이 similarity를 adjacency matrix로 하는 GCN을 사용하겠습니다. GCN의 한 layer는 아래와 같이 표현됩니다.
여기서 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이 필요합니다. 이는 아래에서 설명하는 두 단계로 이루어집니다.
- Segment grouping
첫 번째 단계는 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에 속해야 합니다.
B. 이 Euclidean distance는 아래 값보다 작아야 합니다.
여기서 k, alpha는 0, 2.5 입니다. 여기서 연결된 segment들의 combination score중 최댓값은 0.5보다 커야 한다는 조건을 추가로 적용합니다.
- Segment Merging
각각의 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)가 사용되었습니다.
Experiment
Training Strategy
학습은 end-to-end로 이루어지며, 다음과 같이 SPN의 loss와 GCN의 combination loss를 같이 사용합니다.
Regression loss는 smoothed L1 loss를 사용합니다.
Comtination score map은 다음과 같은 combinational label map으로 학습됩니다. S^(P), S^(Q)는 각각 P-th, Q-th GT polygon에 속하는 segment들의 집합을 의미합니다.
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을 사용하지 않는 모델을 비교하였습니다.
Comparison with SOTAs
Conclusions
이 논문에서는 decomposition-based 방법으로 scene text detection 문제를 해결하는 새로운 방법을 제시하였습니다. 제안된 알고리즘은 임의의 형태로 생긴 text 영역을 더 작은 segment로 나누고, 이 segment들을 학습하되 graph cnn을 사용하여 context를 고려할 수 있도록 하였습니다. 실험에서는 특히 arbitrary-shaped text에서 높은 성능을 보여주었습니다.
Share article