pstage4

Pstage4_수식인식

Github Repository

팀 소개

🎸 조원

  • SATRN (Locality Feedforward, Shallow CNN) 구현

  • Augmentation (Resize & Noramlization& pixel 평균에 따른 이진화…) 제안 & 실험

  • Ensemble (soft voting) 구현 & 실험

  • teacherforcing ratio scheduling 실험

  • Beam search 구현

  • 부족한 token에 대한추가 Data 생성

  • BERT를 사용한 misspelled된 수식 잡아내기 제안

  • CSTR 논문 reading & 공유

협업

  • Git의 Discussion, Pull & Request, Wiki를 활용하여 토론, 자료, 결과공유
  • Wandb를 사용하여 실험공유

수식인식 Competition Overall

  • 상세개요

    수식 이미지를 latex 포맷의 텍스트로 변환하는 문제입니다. 수식은 여러 자연과학 분야에서 어려운 개념들은 간단하고 간결하게 표현하는 방법으로서 널리 사용되어 왔습니다. Latex 또한 여러 과학 분야에서 사용되는 논문 및 기술 문서 작성 포맷으로서 현재까지도 널리 사용되고 있습니다.

    일반적인 OCR과 달리 분수, 시그마, 극한과 같은 표현을 인식하기 위해 multi line recognition을 특징으로 가집니다.

  • Dataset

    Scale : 각각의 image scale은 제각각

    Label : Latex 형식의 수식

    • Train Data

      • Hand Written Data : 50000
      • Printed Data : 50000
    • Evaluation Data

      • Public : 6000
      • Private : 6000
    • Prediction

      • 241개의 token class중 하나를 생성한 뒤 이들의 sequence
  • 평가 Metric

    0.9 x “Sentence Accuracy” + 0.1 x (1-“WER”)

    • Sentence Accuracy

      전체 추론 결과(수식) 중에서 몇 개의 수식이 정답(ground truth)과 정확히 일치하는 지

    • WER (Word Error Rate)

      단어 단위로 삽입(insertion), 삭제(deletion), 대체(substitution)된 글자 개수를 계산

Problem & Solving

EDA

  • 부족한 token data

    Train data에 등장하는 token들중 빈도수가 가장적은 50개를 뽑아보았다.

    10회 미만으로 등장한 token들에 대한 추가적인 data가 필요하다고 판단되었다.

    사이트를 활용하여 부족한 token들을 포함하는 수식을 train파일에 50개 정도의 data를 추가해주었다.

    train_100003.jpg \ominus \vdots \nexists \rightleftarrows A \supsetneq B

  • 세로형태의 수식 이미지

  • 다양한 Aspect Ratio

  • 잘못된 labeling

    P = 1이 아닌

    P = 으로 labeling 되어있음

  • 선이 그어져 있거나 형광팬이 칠해져 있는 case

Augmentation

  • Resize

  • Rotate

    OCR task에서 세로로 되어진 image들은 모두 noise로 작용

    EDA에서 적당한 Aspect ratio의 threshold를 찾은 뒤, threshold 미만인 data들에 한하여 Rotate

  • Normalization

    이미지의 각 pixel 값들을 0-1의 값으로 normalize 시켜준다

  • 이진화 & 가로선 제거

Model (SATRN)

  • Locality-aware feedforward layer

    Base-line model에 구현된 Fully-connected feed forward에서 논문에서 제시하고 있는 Convolutuon feed forward로 교체

  • Adaptive 2D Positional Encoding

    Baseline에서 구현된 일반적인 2D positional encoding에서 논문에서 제시한 학습가능한 adaptive 2D positional encoding으로 변경

  • Backbone

    1. EfficientNet
    2. DenseNet
    3. ShallowCNN
  • Mini SATRN for fast experiment

    다양한 실험을 빠르게 진행하기 위해 SATRN의 size를 줄여서 Mini SATRN으로 다양한 실험을 진행

  • SATRN의 layer parameter 수정

    1. Increase number of Decoder Layer

      mini model 기준, Decoder layer를 추가할수록 성능이 향상

    2. Change Activation Function

      ShallowCNN의 activation function을 ReLU대신 mish를 사용

Post - Processing

  • Beam search

    Token을 뽑을 때 argmax를 사용하여 하나의 token만을 뽑는게 아닌 각 step마다 beam size k 만큼의 token을 뽑아 최대한 적합한 sequence를 선택하려 시도함

  • Ensemble

    다양한 augementation을 거친 model들을 한번에 불러와서 soft voting을 사용하여 ensemble

    Baseline에는 빠져있는 torch.nograd로 memory 절약

  • Use Language Model (x)

    관련 토론 link

OCR Demo

데모페이지 주소 : http://35.74.99.158:8501/

Paper Review

프로젝트 진행을 위해 읽은 논문의 목록은 다음과 같음

CSTR.pdf

Misspelling Correction with Pre-trained Contextual Language Model.pdf

CRNN.pdf

An_Attentional_Scene_Text_Recognizer_with_Flexible_Rectification.pdf

CBAM.pdf

Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks.pdf

TextBoxes_A Fast Text Detector with a Single Deep Neural Network.pdf

Author

jo-member

Posted on

2021-07-12

Updated on

2021-07-12

Licensed under

Comments