Task | Date | Team |
---|---|---|
수식 이미지를 latex 포맷의 텍스트로 변환하는 문제 | 2021.05.24 ~ 2021.06.15 | 5조 ConnectNet |
P stage 4 대회 진행 과정과 결과를 기록한 Team Git repo 입니다. 대회 특성상 수정 혹은 삭제된 부분이 존재 합니다
- Rank : 7
- LB: 0.5639
Team 소개
Gound Rule
실험노트
설치 및 실행
ocRec 수식 인식 윈도우 프로그램
1.1 대회 전략
1.2 Model
1.3 Ensemble
1.4 실패한 부분
-
공유 코드 작성 시
작성자 표시
함수
단위 작성merge
시 .py 형식 사용
-
모델 로그 기록
Wandb
사용
-
회의 기록 작성
-
자료 공유 및 연락 - Slack
-
Code review
- Git에 code review 요청,
- Peer session 활용
-
결과 제출 시
- 실험 내용 결과 공유 및 기록
- 소스 다운로드
git clone https://github.com/bcaitech1/p4-fr-connectnet.git
- 설치
pip install -r requirements.txt
-
학습
-
SATRN(LB:0.7888)
python ./train.py --c config/SATRN.yaml
-
Aster(LB:0.7917)
python ./train.py --c config/Attention.yaml
-
평가
python ./inference.py --checkpoint aster.pth
- 유사한 task인 Scene Text Recognition을 참조하여 SOTA 논문 분석 및 리뷰
- 동일한 task인 논문을 참고해 베이스라인 아키텍처 수정 방향 논의
-
하이퍼파라미터 튜닝
- SATRN의 hidden dimension, filter dimension증가
- 0.01의 성능 향상
- SATRN의 hidden dimension, filter dimension증가
-
모델 앙상블
-
Penalty 추가
-
\frac{1}} 처럼 괄호가 맞지 않지 않는 경우가 발생
-
그러나, 이미 토큰단위에서 loss를 계산하기 때문에 2차적으로 stack을 이용해 1 - (짝이 맞는 괄호 쌍 / 전체 괄호 쌍)을 더해줌으로서 일종의 penalty 부여
$Loss = 0.8CE + 0.2 ParenPenalty$
-
-
데이터셋 추가
- Aida Dataset을 추가적으로 학습(100000+100000)
- 더 데이터를 추가하려했으나 서버용량 때문에 추가못함 10만개 == 약 12GB
- 학습 시간이 오래 걸림
-
Data Augmentation
-
Outlier Correction
- 가로/세로 가 0.75 보다 작은 경우 이미지의 내부의 글자가 세로로 출력되어 있음
-
Vertical Image는 못맞추는걸로...
-
Model
Paperswithcode 사이트를 참고해 Scene Text Recognition의 SOTA 모델들을 선택해 테스트 진행
1) SATRN
- DenseNet / Transformer (encoder + decoder)
- LB: 0.7888
- optimizer : Adam (learning_rate = 5e-4)
- loss: CrossEntropyLoss
- hyperparameters : batch : 16, epochs : 50
- image_size: (128, 256)
- 추가로 시도한 것
- Dense layer depth 증가
- 다양한 Augmentation 적용
- positionalencoding2D 을 adaptive2DpositionEncoder로 개선
- hidden dimension, filter dimension 증가
2) Aster
- CNN / Bi-LSTM / LSTM
- LB : 0.7917
- loss : CrossEntropy
- optimizer : Adam (learning_rate = 5e-4)
- hyperparameters : batch : 32, epochs : 50
- image_size: (80, 320)
- 추가로 시도한 것
-
Deformable conv layer
주어진 데이터셋에는 기울어진 수식들이 많이 들어있었음.
기존의 논문에서는 STN을 통과하여 이미지를 정렬시킴 → 연산량이 많다
마지막 3 block에서 conv layer를 Deformable conv layer로 바꾸어 성능 향상을 봄.
-
3) CSTR
- Naive CNN / CBAM & SADM / Multiple Linear
- LB : None
- Valid Acc : 0.28 ~ 0.31
- optimizer : AdaDelta (learning_rate = 0.0 ~ 1.0 CosineAnnealingWarmUp)
- loss : LabelSmooth (ratio = 0.1)
- hyperparameter : batch 100, epochs : 50
- image_size : (48, 192)
- 추가로 시도한 것
- 실험초반 오버피팅 이슈 발생 → dropout(p = 0.1), weight_decay (1e-3) 설정
- 이후 오버피팅은 일어나지 않았으나 성능 이슈 발생
- CNN Layer의 dim을 2배씩 늘려 전체적 파라미터를 2배로 size up → 실패
- 서로 다른 방향성을 가진 transformer기반의 Satrn과 attention기반 모델을 앙상블
- SATRN, Attention
- 멀티스케일 러닝의 효과를 보기위하 각 모델마다 다른 크기의 이미지입력을 사용
- 서로 다른 seed를 이용하여 서로 다른 train셋으로 학습하는 효과를 이용
- 앙상블1 : SATRN(128,384), SATRN(128,256), Aster(80, 320)
- 싱글 모델 보다 성능이 떨어짐 (LB : 0.74)
- 128, 128 이미지로 동일하게 inference 하여 성능이 떨어졌음
- 앙상블1 의 문제점을 보완하기 위해 앙상블 2를 시도
- 앙상블2 : SATRN(128,384), SATRN(128,256), Aster(80, 320) (TTA적용)
- 입력 이미지를 학습시 입력한 이미지 크기에 맞게 inference
- 메모리 폭파 → with torch.no_grad() 넣지 않아 발생한 문제
- 앙상블3 : SATRN (128, 256) + Aster(80, 320)
- 서버 문제 때문에 LB 점수를 알 수 없음
- 앙상블
- 제출방식에 있어 기존방식과 달라 예외를 완벽히 잡지 못함
- 앙상블 1은 모델의 성능이 하락
- 앙상블2와 앙상블3은 부스트캠프의 서버의 용량문제로 성능 측정 불가
- 새로운 모델 구현
- SRN, CSTR 구현 시도
- Efficientnetv2 FPN Backbone 구현 시도
- 기존 Attention 베이스라인에서 GRU 에러 fix 후 구현 → LSTM과 큰 차이 없음
- Beam search
- RNN, LSTM에 있어 각각 token 단위에서 예측하는 걸 보완해 top k개의 후보를 고려하는 알고리즘인데, 모든 word가 한 번에 입력되고 예측하는 transformer의 경우 성능 향상에 도움이 될지 미지수임
- 같은 이유로 RNN, LSTM에서와 달리 transformer에서는 token 선택 시 사전 확률 - 사후 확률이 달라지기 때문에 구현 난이도가 상당하고, 한다고 하더라도 연산량이 큰 폭으로 증가함
- 시각화
- attention map을 시각화 하려했지만 못함
- 데이터셋 추가
- Aida dataset을 추가하여 하였으나 점수가 별로 안올라서 포기
- Im2Latex를 추가하려고 하였으나 서버용량이 부족하여 추가하지 못함
- Translating Math Formula Images to LaTeX Sequences Using Deep Neural Networks with Sequence-level Training
- Image to Latex
- Pattern Generation Strategies for Improving Recognition of Handwritten Mathematical Expressions
- On Recognizing Texts of Arbitrary Shapes with 2D Self-Attention
- Detecting Mathematical Expressions in Scientific Document Images Using a U-Net Trained on a Diverse Dataset
- Painfree LaTeX with Optical Character Recognition and Machine Learning (CS229)
- Translating Math Formula Images to LaTeX Sequences Using Deep Neural Networks with Sequence-level Training
- OCR API for Math and Science
- 콴다(QANDA)앱
- Math survey
- “책을찍다”에 사용되는 Image Segmentation 기술 (전처리 관련)
- Translating Math Formula Images to LaTeX Sequences Using Deep Neural Networks with Sequence-level Training
- Image to Latex