03_Deep Leaning

CV경진대회_문서타입분류

jiniby 2025. 1. 8. 23:45
728x90

1️⃣Overview 개요 

✔️ Pipeline : 데이터 -> 모델 -> 학습 및 평가 -> 추론 및 분석 (cycle -> 5 이상 iteration)

✔️ Task : Document Type Classification 

  ✓ Task type 

     Recognition vs  Generation → Recognition

     Classification vs Regression → Classification 

     Binary vs Multi-class → Multi-class

  ✓ Data type

      Unstructured vs Structured Unstructured  

  ✓ Data type

 

✔️ Data

  ✓ 총 17종 문서 타입

    - meta.csv:클래스이름 , 인덱스 매핑정보 

Target Text 내용
0 계좌번호 계좌번호
1 건강보험 임신·출산 진료비 지급 신청서 건강보험 임신·출산 진료비 지급 신청서
2 자동차 계기판 자동차 계기판
3 입퇴원 확인서 입퇴원확인서, 입퇴원사실확인서, 입원확인서, 입원증명서, 입원사실증명서
4 진단서 진단서, 일반진단서
5 운전면허증 운전면허증
6 진료비 영수증 진료비 영수증, 진료비 계산서 영수증
7 통원、 진료 확인서 진료 증명서、 통원확인서、 치료확인서、 입통원확인서、 외래진료사실확인서、 통원진료확인서、 통원증명서、 진료사실증명서
8 주민증록증 주민증록증
9 여권 여권
10 진료비 납입 확인서 진료비(약제비)납입확인서진료비(약제비)납입 영수증
11 약제비 영수증 약제비 계산서·영수증、 약제비 계산서 영수증
12 처방전 처방전
13 이력서 이력서、 자기소개서、 전문강사 지원서
14 소견서 소견서,의견서
15 자동차 등록증 자동차 등록증
16 자동차 번호판 자동차 번호판

  - traindata : 1570문서 이미지 

  각 클래스별 46~100장  클래스별 데이터 평균 크기 

 -> 클래스 불균형을 보완하기 위해 데이터 증강방법 검토 

 -> 데이터 크기차이를 고려한 전처리 및 학습데이터 준비

 -> 클래스별 데이터를 추가 분석하여 모델 성능 최적화 

  - testdata : 3140 (난이도 조절위해 augmentation<현실세계노이즈처럼>)

    1) sample_submission.csv: 예측값 채워넣을 더미 파일 (target 값을 예측으로 채워넣어야) ID (이미지 파일 이름.확장자),

                                                target (class label) 컬럼

    2)test/: 테스트 이미지 폴더

 

✔️ Evaluation Metric : Macro F1

 ✓ Macro F1 score : 각 클래스 F1 score 개별 계산 후 평균

 ✓  Micro F1 score : 모든 클래스에 대한 precision, recall 합산해 계산

→ 본 대회에서는 Macro F1 score 사용

 

✔️Confusion matrix

 ✓  예측값과 실제값을 분류하여 모델의 성능을 시각화 할 수 있는 matrix

  - TP(True Positive): 실제 positive인 것을 positive라고 예측 (정답)

  - FP(False Positive): 실제 negative인 것을 positive라고 예측 (오답)

  - FN(False Negative): 실제 positive인 것을 negative라고 예측 (오답)

  - TN(True Negative): 실제 negative인 것을 negative라고 예측 (정답)

 ✓   Precision 

모델이 + positive 로 예측한 데이터 중 실제 + 비율

 ✓   Recall

실제 + 중 모델이 + 예측 비율

 ✓   F1 : precision, recall 의 Harmonic mean 조화 평균 ( 데이터가 imbalance 할 경우 더 정확한 metric)

      -> class imbalance check → macro F1 (harmonic mean) 사용 근거 확보

 

2️⃣ Data EDA

✔️FiftyOne 을 활용한 오분류 데이터 확인 

◆ 잘못 라벨링 된 학습 데이터 식별

✔️ OCR을 활용한 오분류 데이터 확인  OCR을 활용한

오분류 데이터 확인

✔️ 오분류 레이블 리스트 R

 

✅ Wandb 

✔️  효율적인 실험 관리

  ✔ 프로젝트 진행 중 여러 실험 파라미터와 결과를 체계적으로 관리

  ✔ 실험 기록 자동화와 효율적인 버전 관리

✔️  데이터 시각화

 ✔ 실험 결과를 실시간으로 시각화 대시보드에서 확인 모델 학습 과정 및 성능 지표를 명확히 파악 가능.

 ✔ 주요 메트릭을 즉각적으로 확인 문제점 발견과 해결에 유용

✔️  팀 협업 강화

 ✔ 실시간 대시보드를 통해 동시 작업 및 피드백을 쉽게 진행

✔️  실험 추적

 

✔️ logging setup을 통한 실험 기록 공유

✅ Augmentation 

✔️  Albumentations : 회전 및 반전 / 약간의 노이즈 추가 

✔️  Augraphy

- Brightness: 밝기 조정

- BrightnessTexturize: 밝기 조정 및 질감 추가

- BadPhotoCopy: 흐림, , 색 왜곡 등

- DirtyDrum: 얼룩

- Faxify: 해상도 저하 및 노이즈

- Folding: 주름 및 그림자 효과

- LightingGradient: 그라데이션 조명 효과

 

 

3️⃣  Model Training & Evaluation 

✔️ 초기 실험 설계

▸ Dataset Split method 비교 ▸ Model 비교 ▸ Train Epoch 비교
✔ Stratified > Stratified k-fold > 
                  holdout > k-fold

초기 Dataset split
    : stratified / stratified k-fold
EfficientNet > ResNet > ViT
초기 모델
      :
EfficientNet
✔ 20 > 10 > ~ 1
➡ Epoch 은 길게 설정

 

✔️ 세부 실험 설계

 

4️⃣ Evaluate 

Final Leaderboard : 3등

Hydra & WanDB 적극 활용

   - 다양한 실험 환경을 유연하

Hydra & WanDB 적극 활용

   - 다양한 실험 환경을 유연하게 설정하고, 실험 결과를 시각적으로 한 눈에 파악할 수 있도록 해주어 팀원 간 진행 상황을 보다 원활하게 공유 협업 진행

깃허브, 노션, 슬랙을 적극 활용하여 협업을 진행

✔️  아쉬웠던 점설정하고, 실험 결과를 시각적으로 한 눈에 파악할 수

처음 데이터 증강을 진행할 때 Online 증강 방식을 주로 사용했지만, Offiline 증강 기법 또한 사용해서 더 풍부한 학습 데이터를 확보를 못한 것

뒤늦게 Offline 증강 기법을 사용하면서 시간적으로 여유가 많이 부족한 것

있도록 해주어 팀원 간 진행 상황을 보다 원활하게 공유 협업 진행

전체적인 파이프라인을 구축하고 WandB를 활용해 실험 결과를 모니터링하며 다양한 시도를 진행할 수 있었습니다. 이를 통해 데이터 분석 및 모델 성능 최적화를 위한 여러 도구와 기법을 배우는 의미 있는 시간이었습니다.

특히, Hydra 기반 Config 설정 관리와 WandB 실험 관리 셋업을 통해 설정값과 실험 결과를 체계적으로 관리할 수 있었습니다. 적극 활용하여 협업을 진행

728x90