Linjie Xing, Zhi Tian, Weilin Huang, Matthew R. Scott
https://arxiv.org/abs/1910.07954
이미지에서 text를 읽는 것은 2 단계를 거친다.
text detection & text recognition
text detection의 경우 각 text instance에 대하여 bounding box를 예측하는 것을 목표로 진행하며 object detection 기술이 사용된다.
text recognition은 crop된 이미지 패치로부터 character 일련의 label을 인지하는 것을 목표로 하고 주로 CNN에서 추출한 feature로부터 recurrent model을 활용한다.
그러나 2 step pipeline은 다양한 제약조건이 생긴다.
1) sub-optimization 문제로 인해 text 본연의 잠재적 탐색을 어렵게 한다.
2) task recognition 성능은 text detection의 성능에 크게 의존한다.
최근 text detection과 recognition을 동시에 적용하려는 통합 framework를 개발하려는 노력을 진행했으나 이 역시 한계점을 가지고 있다.
- patch를 활용한 ROI cropping이나 pooling을 RNN 모델에 활용하는 것은 어려운 일.
따라서 RNN기반의 sequential model보다 CNN model을 통한 character recognition이 효율적이다.
Contribution
1) text detection과 recognition을 동시에 진행할 수 있는 one-stage CharNet을 제안. character을 기본 unit으로 활용함으로써 two-stage에서의 제약을 극복함.
2) iterative character detection method를 사용하여 추가적인 char-level bounding box 제공 없이도 CharNet을 훈련할 수 있게 함.
3) CharNet은 다른 2 stage 접근법들 대비 높은 정량적 지표를 보여줌.
Text detection
Text recognition
End-to-end (E2E) text recognition
Character branch를 통해 character detection과 recognition을 진행
text detection branch를 통해 이미지 내 각 text instance의 bounding box 예측 진행
훈련 단계에서 instance-level, char-level의 bounding box가 모두 필요
Backbone
ResNet-50과 Hourglass network를 backbone으로 활용
ResNet-50에서는 4배의 down-sampling 비율을 가져감. 이를 통해 극도로 작은 text instance도 구별할 수 있게함.
Hourglass-88, Hourglass-57을 사용
RNN 기반의 text recognition에서 word-level optimization보다 char-level attention mechanism이 더 높은 성능을 가져다 주었고 이것이 지금 제안하는 작업의 영감이 되었다.
이를 단초삼아 저자들은 새로운 character branch를 도입한다.
character branch는 character를 basic unit으로 detection과 recognition에 사용한다.
여러 개의 conv layer의 stack
여기서의 input feature map은 input image의 1/4이며 3가지의 sub branch로 구성된다.
1) text instance segmentation 2) character detection 3) character recognition
1) text instance segmentation 2) character detection는 3개의 conv layer, filter : 3x3, 3x3, 1x1
3) character recognition 4개의 conv layer, 3x3 filter가 추가됨.
1) text instance segmentation
- 2개의 output (각 공간 영역별 text or non-text 확률)
2) character detection
- 각 character bounding box별 5개의 parameter(위, 아래, 좌, 우, 방향(orientation))
3) character recognition
- 68개의 character class (26 영단어, 10 숫자, 32 특별 symbol)
모든 sub-branch의 결과는 동일 resolution이며 char-level bbox는 0.95 confident value.
생성된 bbox label은 글자별 softmax의 최댓값
다수의 text instance들이 가까이에 붙어있고 곡선 형태의 다수의 방향성(orientation)을 가지는 경우 직접적으로 grouping character는 복잡하고 경험에 기반하게 된다.
여기서 최소한의 수정에 기반한 text detector를 활용해 굽어진 text-line이나 다수의 방향 단어들에 대한 감지를 진행하고자 한다.
Multi-Orientation Text
EAST detector의 간단한 약간의 수정을 진행한다.
text instance segmentation과 IoU loss를 사용하는 instance-level bounding box regression에 대한 2 sub-branch로 구성.
output : 2-channel(text or non-text 확률) + 5 channel(4 scalar bbox + orientation angle)
Curved Text
Textfield를 약간 수정하여 사용
본 모델은 char-level과 word-level bounding box와 character label이 필요하다.
그러나 char-level bbox는 획득하기 어렵고 비싸다. 이용할 수도 없음.
이에 synthetic data를 활용하여 character를 구분할 수 있도록하는 iterative character detection을 사용하기로함.
weakly-supervised 방식
그러나 table 1에서도 확인할 수 있듯 synthetic 이미지에 바로 훈련 시키고 real-world에 inference하는 것은 어려운 문제이다.
기본적으로 text recognizer보다 text detector가 상대적으로 강한 일반화 가능성을 보여줌.
이에 따라 text detector를 활용하여 synthetic data로부터 char-level annotation을 학습하여 real-world 이미지 데이터에 점진적으로 일반화가 가능하도록 함.
여기서 가정
text instance에서의 character bounding box의 숫자가 제공되는 isntance-level transcript에서의 character lebel이 정확하게 일치한다.
character가 일치하는지를 보는 것은 성능에 좋은 결과를 가져다 주지 않았기 때문에 숫자만 보는 것.
여러번 반복을 통해 점진적으로 일반화 성능이 올라가고 이에 따라 다수의 correct한 char-level bounding box가 생성하게 함.
Benchmark dataset : ICDAR 2015, Total-Text, ICDAR MLT 2017
4 iterative step을 진행.
synthetic data로 Synth800k를 5 epoch
GPU당 4 image, mini-batch 32 이미지
learning rate = 0.0002
learning rate decay는 식이 존재. (논문 참고)
simple augmentation 진행
https://github.com/msight-tech/research-charnet