Shape Robust Text Detection with Progressive Scale Expansion Network - 리뷰 - 1

2019. 5. 28. 22:24관심있는 주제/OCR

728x90
https://arxiv.org/abs/1806.02559
https://arxiv.org/abs/1903.12473
https://github.com/whai362/PSENet https://github.com/liuheng92/tensorflow_PSENet

 

CNN 발전으로 장면 텍스트 감지는 잘하고 있지만, 산업에서 쓰기에는 여전히 2가지 문제가 있다고 합니다.

1. 최신 논문에서는 임의의 박스로 잡아주는데, 그러다 보니 부정확한 위치에 잡히게 된다.

2. 2개의 글자 객체가 서로 가깝게 있는 경우 2개를 포함하게 감지한다는 것이 문제가 된다.

 

1번째 문제는 Segmentation-based approach로 해결할 수 있지만, 여전히 2번째는 문제가 됩니다.

저자는 이 2가지 문제를 해결하기 위해 Progressive Scale Expansion Network(PSENet)을 제안한다고 하네요.

먼가 논문 이름만 보면 점전직으로 스케일을 키워서 위의 2가지 겹치지는 문제라든지 부정확한 위치에 있는 것을 해결할 것 같다는 느낌이 드네요.

 

이 논문대로 하면 정확하기 임의의 모양의 글자 객체를 잡을 수 있고, 더 나아가서 각각의 글자 객체에 대해 서로 다른 크기의 커널을 생성하고 최소 규모의 커널을 전체 모양의 텍스트 객체로 점차 확장하는 방식으로 한다 합니다.

최소 규모의 커널들 중에서 기하학적인 마진이 가장 큰 것을 하기 때문에 가까운 글자 객체도 잘 탐지하고

임의의 텍스트 객체를 잘 탐지하는 Segmentation-based method에서 더 쉽게 할 수 있다고 하네요.

 

a) 원본

b) Regression based

c) 기본 semantic segmentation 3줄을 1개로 인식

d) 제안하는 방식 4개를 서로 다르게 인식하게 됨.

 

 

 

기존 논문들 보다 6.6% 더 좋은 성능을 낸다고 하네요

 

 

 

1. Introduction

흔히 CNN 방법을 2가지로 나눌 수 있는데, 1. regression-based approach 2. segmentation-based approach

이 논문은 일단 Regression base에 대해서 임의적인 모양을 잡는데 어려움이 있다( 예를 들어 휜 글씨) (b)

하지만 Segmentationed-based 같은 경우에는 pixel-level을 기반으로 잘된다고 하는 것 같다.

그래도 여전히 서로 붙어 있는 경우에는 어렵다고 한다. (c)

 

보통 segmentation-based 방법론은 가까이 있는 것을 하나로 보는 경향이 있다고 하고,

그래서 저자는 참신한 kernel-based 방식을 제안한다고 한다.

 

두 가지 이점이 있다고 하는데,

 

1. segmentation-based method 방법이어서 pixel-level segmentation 방법으로 한다. 

이 방법으로 하면 임의의 영역을 정확하게 잘 잡을 수 있다.

2. progressive scale expansion 방법을 쓴다. 이것을 하면 d)처럼 인근을 잘 잡을 수 있다.

 

구체적으로 말하면 각각의 text instance의 여러 개의 예측된 segmentation 영역을 잡는데 이것을 간단히 kernels라고 명시한다고 한다.

 

각각의 kernel은 다른 스케일을 가지지만, 유사한 모양을 가질 것이다. 

그래서 여기서 마지막으로 detection을 하기 위해 Breath-First-Search(BFS) 기반으로 한

progressive scale expansion 알고리즘 쓰겠다고 한다.

 

BFS는 3가지 단계로 이루어진다고 한다.

1. kernels로 부터 최소환의 규모를 잡는 것으로 시작

2. 점직적으로 더 큰 kernels로 면적을 확장시킨다.

3. 완전한 text 객체가 될 때까지 계속한다.

 

이걸 선택한 이유가 있다고 하는데,

1. 최소한의 스케일을 가진 커널은 경계가 서로 멀어지기 때문에 분리되기 쉽습니다.

2. 최소한의 스케일을 가진 커널은 완전한 text 객체를 덮을 수 없다. 그러므로 작은 커널에서 text 객체까지 복원할 필요가 있다.

3. 이 알고리즘은 작은 커널에서 완전한 text 객체로 확장시키기까지 쉽고 효율적이다.

 

4가지 실험을 했다고 한다.

including ICDAR 2015 [17], ICDAR 2017 MLT [1] , CTW1500 [24] and Total-Text [2]. Among these
datasets, CTW1500 and Total-Text are explicitly designed  for curve text detection.

여기서 좋은 성능을 보였다고 한다. 

 

 

2. Related work

1. Regression-based method

  • Faster R-CNN
  • EAST
  • RRPN
  • RRD

그러나 대부분의 회귀 기반 방법은 복잡한 앵커 디자인과 복잡한 다중 단계를 필요로 하기 때문에 철저한 조정이 필요하고 최적 이하의 성능으로 이어질 수 있습니다.

그리고 curved text 다룰 때는 실패한다.

 

2. Segmentation-based methods

  • FCN(fully convolutional network)
  • PixelLink
    • 2개의 다른 text 객체 사이에 픽셀 연결을 예측함으로써 서로 가까운 text를 떨어트리는 방식
  • TextSnake
    • curve text detection 표현할 때 사용
    • 시간이 많으 걸리고 복잡한 사후 처리 step이 필요하다.
  • SPCNet
    • instance segmentation

3. Proposed Method

3.1 Overall Pipeline

  • Resnet 사용 
  • low-level texture feature와 high-level semantic feature를 concate 해준다.
  • 다양한 receptive field를 F에 encode를 해준다.
    • 이러면 직관적으로 다양한 스케일 커널들의 생성을 용이하게 할 수 있는 효과 기대!
  • 애를 다시 S1 S2... Sn 생성을 시킨다.
  • 각각의 S_i 특정 스케일에서  모든 text instances segmentation mask가 될 것입니다.
  • 이런 다른 Segmentation mask의 규모들은 hyper parameter로 결정됩니다.
    • 예를 들어 S1은 가장 작은 Scales를 보여준다.
    • Sn 은 모든 segmentation mask를 획득한 후에 가장 큰 maximal kernels
    • S1 작은 부분에서 Sn 가장 큰 부분으로 점진적으로 확장시켜서 만듭니다.

3.2. Network Design

P1, P2, P3, P4에서 각각 256개를 빼온다. 

낮은 것부터 높은 것으로 결합시킨다. 

4개 feature(256*4)를 합쳐서 새로운 Feature를 얻습니다.

여러 가지 UpSamping , batch normalization 같은 것을 해준다.

3.3. Progressive Scale Expansion Algorithm

 

이걸 보면 알듯이, 서로에게 가까운 text instance를 구별하기 참 어렵다. 

이것을 해결하기 위해 Propose a progressive scale expansion algorithm

Breadth-First-Search(BFS) 아이디어를 가져왔다고 한다.

 

 

예제로 여기선 3개의 Segmentation results를 가진다고 하자. S = {S1 , S2 , S3}

최소 커널 (S1) 보면 알 수 있듯이 뚜렷하게 나온다 (c1, c2, c3, c4) 그 색깔을 다르게 표현했다.

그다음 b -> c로 갈 때 s2를 merge를 함으로써 확장하는 모습이 보인다.

(g) 부분이 BFS를 기반으로 확장하는 모습을 보여준다.

반복적으로 근접한 텍스트 픽셀을 merge 한다. 그러다 보면 빨간색 박스처럼 충돌하게 된다. 

이럴 때 Progressive expansion 절차 덕분에, Boundary Conflict를 마지막 detection과 성능에 영향을 끼치지 않게 된다!

 

3.4. Label Generation

PSENet에서 Segmentation result를 생상하게 된다 다른 스케일의(s1 , s2, s3,... sn) 

그러므로 학습하는 동안 다른 커널 스케일의 ground truth가 된다!

실제로 이러한 ground truth labels을 간단히 시행된다. 그리고 효과적으로 기존 text 객체를 축소함으로써 시행된다.

이렇게 각각의 축소된 Polygon 순차적으로 함으로써 label ground truth를 마스킹 씌운다.

3.5. Loss Function

L_c : 복잡한 text 객체

L_s : 개별적으로 축소된 것

lambda : L_c , L_s 사이에서 중요도

일반적으로 텍스트 인스턴스는 자연 이미지에서 매우 작은 영역만 차지하므로 비 텍스트 영역에 대한 네트워크 바이어스를 예측할 수 있습니다.

이러한 것에 영감을 받아서 dice coefficient를 채택한다고 한다.

 

S_ixy G_ixy는  각 S와 G의 사이에서  픽셀 (x, y)

그러므로 이러한 패턴들을 잘 분리하기 위해 학습하는 동안 L_c에 Online Hard Example Mining(OHEM) 채택한다.

L_c는 텍스트와 비 텍스트 영역에 초점을 맞춘다.

L_s는 축소된 텍스트 객체의 Loss입니다.

때문에 완전한 text 객체의 기본 면적을 아우를 수 있다.

그것들은 완전한 텍스트 인스턴스의 원래 영역으로 둘러싸이기 때문에, 우리는 특정 중복성을 피하기 위해 분할 결과 Sn에서 비 텍스트 영역의 픽셀을 무시합니다.

W는 SN 사이에 비 텍스트 지역의 픽셀을 무시하는 것

Snxy는 Sn 안에 픽셀 (x, y)의 값이다.

 

728x90