[OCR] Text Detection

HipJaengYiCat·2023년 5월 24일
0

OCR 시스템에서 가장 먼저 수행되는 단계는 무엇일까? 바로 글자 검출이다.
글자 검출은 이미지에서 읽어낼 글자가 놓여있는 영역을 찾아내는 기술이다.
글자 영역을 표현하는 방식 등 글자 검출 관련 기술과, 글자 검출 방법론들을 알아보겠다.

Object Detection VS Text Detection

  • Object Detection : 클래스와 위치를 예측하는 문제
  • Text Detection : 모든 객체는 텍스트 영역, 텍스트라는 단일 클래스의 위치만 예측하는 문제

Text Detection 특징

  1. 매우 높은 밀도

  2. 극단적 종횡비

  3. 특이 모양 - 구겨진 영역, 휘어진 영역, 세로 쓰기 영역

  4. 모호한 객체 영역

  5. 크기 편차

글자 영역 표현법

사각형

  1. 직사각형 (RECT, Rectangle)
  • 𝑥1, 𝑦1, 𝑤𝑖𝑑𝑡h, h𝑒𝑖𝑔h𝑡 or (𝑥1, 𝑦1, 𝑥2, 𝑦2)
  1. 직사각형+각도 (RBOX, Rotated Box)
  • 𝑥1, 𝑦1, 𝑤𝑖𝑑𝑡h, h𝑒𝑖𝑔h𝑡, 𝜃 or (𝑥1, 𝑦1, 𝑥2, 𝑦2, 𝜃)
  1. 사각형 (QUAD, Quadrilateral)
  • (𝑥1,𝑦1,...,𝑥4,𝑦4)

다각형

  • Polygon - (𝑥1, 𝑦1, ... , 𝑥n, 𝑦n)
  • Arbitrary-shaped text를 주로 다루는 최근의 벤치마크들에 적합
  • 일반적으로 2N points를 이용하고,위의 두 점과 쌍이 되는 아래의 두 점을 잡으면 특정 글자 영역이 되도록 상하 점들이 쌍을 이루도록 배치

Regression-based vs Segmentation-based

  • Regression-based : 이미지를 입력 받아 글자 영역 표현값들을 바로 출력함

  • 단점
    Arbitrary-shaped text : 불필요한 영역을 포함 (Bounding box 표현 방식의 한계)
    Extreme aspect ratio : Bounding box 정확도 하락 (Receptive field의 한계)

  • Segmentation-based : 이미지를 입력 받아 글자 영역 표현값들에 사용되는 화소 단위 정보를 뽑고, 후처리를 통해서 최종 글자 영역 표현 값들을 확보!

  1. 각 화소별로 글자 영역에 속할 확률
  2. 글자영역에 속할 확률 -> 8개의 방향으로 이웃한 화소가 글자 영역에 속할 확률


  • 단점
    복잡하고 시간이 오래 걸리는 post-processing이 필요할 수 있음
    서로 간섭이 있거나 인접한 개체 간의 구분이 어려움.

Hybrid


Character-Based Methods

  • Character 단위로 검출하고 이를 조합해서 word instance를 예측
  • Character-level GT 필요
  • Character region과 affinity(연결성)을 예측 -> Word로 조합

Word-Based Methods

  • Word 단위로 예측
  • 대부분의 모델이 해당

EAST(An Efficient and Accurate Scene Text Detector, CVPR, 2017)

  • Simple 2-Staged System
  • Fast inference & end-to-end train

  • 네트워크가 2가지 정보를 pixel-wise로 출력
  1. 글자 영역 중심에 해당하는지 : score map
  2. 어떤 화소가 글자 영역이라면 해당 Bounding box의 위치는 어디인지 : geometry map

Multi-Channel FCN

  • FCN : U-net 구조
  • Segmentation의 base가 되는 network 구조
  • pixel-wise prediction

  1. Feature extractor stem (backbone): PVANet, VGGNet (Code), ResNet50
  2. Feature merging branch: Unpool로 크기 맞추고 concat 1 x 1, 3 x 3 convolution으로 channel 수 조절
  3. Output: H/4 x W/4 x C maps

Score Map

글자 영역 중심에 해당하는지
H/4 x W/4 x 1 binary map - 글자 영역의 중심이면 1, 배경이면 0
GT bounding box를 줄여서 생성 (글자 높이의 30%만큼 end points를 안쪽으로 이동)

Geometry Map

어떤 화소가 글자 영역이라면 해당 Bounding box의 위치는 어디인지
RBOX (rotated box, 직사각형+각도) 형식:
회전 각도 예측 -> 1 channel,
Bounding box의 4개 경계선까지의 거리를 예측 -> 4 channels

QUAD (quadrilateral, 좌표 4개) 형식:
Bounding box의 4개 점까지의 offset을 예측 -> 8 channels

Post-processing : RBOX 기준

Locality-Aware NMS

Standard NMS : 복잡도가 O(N^2) 로 Dense prediction 상황에 부적합
Locality-Aware NMS : 인접한 픽셀에서 예측한 bounding box들은 같은 text instance일 가능성이 높음
-> 위치 순서(행 우선)로 탐색하면서 비슷한 것들을 하나로 통합하자. (IoU 기반)
-> 통합 시 score map값으로 weighted merge

Loss Terms : RBOX 기준

loss function = loss for score map + loss for geometry map

  • Ls : Score map loss

  • Lg : Geometry map loss
    직사각형은 IoU loss + 각도값은 cosine

F-score & Speed

Speed : Real-time 수준은 아니지만 빠른 속도 (일반적으로 30fps 정도부터 real-time)
LA-NMS의 속도 개선은 효과적 (T!: 네트워크 계산 시간, T": 후처리(NMS) 시간)

profile
AI Learning, Parcelled Innovations, Carrying All

0개의 댓글