컴퓨터비전 - Image Classification 대회

Sylen·2024년 7월 24일

Dive to Computer Vision

목록 보기
3/16

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
profile
AI가 재밌는 걸

0개의 댓글