Document Type Classification Competition | 문서타입 분류 대회
Image Classification Competiton : 여러 종류의 이미지가 있을 때, 이미지 별로 문서 타입을 분류하는 대회
Computer Vision 모델 학습부터 평가까지의 프로세스에 대한 경험
데이터 - 모델 - 학습, 추론, 평가
- 데이터 전처리 및 가공
- 적절한 모델 선택 및 파라미터 튜닝
- 평가 및 피드백
대회 개요
- 문서타입 분류 경진대회
- 실제 산업현장에서 필요로 하는 테스크
- 문서데이터는 금융 의료 보험 물류 등 도메인을 가리지 않고 존재
- 많은 회사에서 아날로그 데이터의 디지털화를 희망하고 있음 (디지털 혁신)
- 이를 위해 아날로그 문서 데이터의 종류를 식별하고자 함
목적
- 총 17종의 문서 타입을 분류
: 계좌번호, 자동차 번호판, 자동차 계기판, 진료비 영수증, 여권, 운전면허증
: 주민등록증, 자동차 등록증, 약제비 영수증, 처방전, 통원/진료 확인서, 입퇴원 확인서
: 진단서, 진료비 납입 확인서, 이력서, 소견서, 건강보험 임신출산 진료비 지급 신청서
학습데이터
- 총 1570장의 문서이미지
: 총 17개의 클래스
: 각 클래스 별로 46~100장의 이미지
학습데이터 구조
- train.csv : 학습이미지 이름(ID), 클래스(target)
- meta.csv : 클래스 이름과 인덱스의 mapping 정보 | target, class_name
- train/ : 학습이미지가 들어있는 directory
테스트 데이터
- 총 3140장의 문서 이미지
총 17개의 클래스
대회의 난이도 조절을 위해 여러 augmentations 적용돼있음
- 실제 현실시계의 데이터는 노이즈가 굉장히 많음 (구겨짐, 물에 젖음, 빛번짐,...)
- 어떤 augmentations는 secret
- EDA를 통해서 파악해볼 수 있음
-> 어떤 노이즈를 테스트 데이터에 추가했는지 분류필요 (가우시안블러, 회전, 구김)
학습데이터 구조
- sample_submission
- test/ : 테스트 이미지 디렉토리
Evaluation Metric
F1 Score
- 이번 대회에서는 Macro f1 Score를 사용
: Macro f1 score : 각 클래스에 대한 f1 score를 개별적으로 개산 후, 평균
: Micro f1 score : 모든 클래스에 대한 precision과 recall을 합산하여 계산
Confusion Matrix
- TP : 실제 Positive 모델 Positive
- FP : 실제 Negative 모델 Positive
- FN : 실제 Positive 모델 Negative
- TN : 실제 Negative 모델 Negative
Precision
- 모델이 Positivie로 예측한 데이터 중에서 실제로 Positive인 데이터 비율
- TP / TP + FP
- Corrected Positives / Predicted Positives
Recall
- 실제로 Positive인 데이터 중에서 모델이 Positive라고 예측한 데이터의 비율
- TP / TP + FN
- Corrected Positives / Actual Positives
F1 Score
Precision과 Recall의 조화평균 (데이터가 imbalance할 경우 더 정확한 metric)
학습이미지
- 주민등록증, 일반 문서, 여권 : 이미지의 사이즈
- 차량번호판 : 매우 이질적
테스트 이미지
- Rotation, Flip, Crop, Noise(Gauisian Blur)
EDA
이미지 시각화
-
학습데이터는 Clean, 테스트 데이터는 Noisy
-> augmentation이 중요
-
시각화 했을 떄, 테스트 이미지의 경우 rotate된 경우가 많았음
-> Test 이미지를 다시 원래 각도로 돌린다?
-> 학습 데이터에 rotation 관련 augmentation을 추가할까?
-
다른 문서들과 이질적인 이미지들이 존재 (차량 대시보드, 번호판,...)
-> 해당 이미지를 제거하여 학습하면 성능이 올라갈까?
-> 해당 이미지를 식별하는 binary classifier를 만들어 볼까?
분포관련 EDA
-
Image Size 분포를 파악
-> 학습에 적합한 이미지 크기는 어떻게 될까?
-> Multi-scale Trining 하는 것도 괜찮을까?
-> 문서 이미지를 보니 직사각형이 많은데, 정사각형으로 resize하는것이 맞을까?
-
Label 분포를 보아하니, 상대적으로 imbalance -> StratifiedKFold 사용할까?
W & B
- ML 실험을 관리하고 시각화하며, 공유하는데 도움이 되는 도구
- Features
실험관리 : 모델 학습 중에 사용되는 파라미터, Metrics, Logs를 자동으로 기록
대시보드 : 실험결과를 시각화하는 대시보드
협업 플랫폼 : 팀원들과 실험을 공유하고 함께 작업 가능
통합성 : Tensorflow, Pytorch, HuggingFace 등 다양한 프레임 워크와 라이브러리 지원
Augraphy
: 문서이미지를 Ink, Paper로 분리 후 augmentation 처리
Ensemble
모델 및 데이터 기반
- Model Ensemble
- Data Ensemble
- Framwork Ensemble
학습 방법 기반
- Seed Ensemble
- Hparams Ensemble
- Snapshot Ensemble
- SWA
- Model Soup
예측결과 기반
- Soft-cls, Hard-cls
- Soft-NMS, Hard-NMS
- WBF
- Seg-soft, Seg-Hard