강승현 | 김형수 | 이소영A | 김창희 | 진성준 | 김하연 |
팀장, 담당 역할 | 담당 역할 | 담당 역할 | 담당 역할 | 담당 역할 | 담당 역할 |
- (컴퓨팅 환경) 인당 RTX 3090 서버를 VSCode와 SSH로 연결하여 사용
- (협업 환경) Github, Wandb
- (의사 소통) Slack, Zoom
- computer vision domain에서 이미지 분류를 위한 대회로, 주어진 문서의 이미지를 해당 문서 유형으로 분류하는 대회
- February 5, 2024 - Start Date
- February 19, 2024 - Final submission deadline
├── README.md
├── changhee
│ ├──DTC.ipynb
│ ├──DTC10.ipynb
│ ├──DTC11.ipynb
│ ├──DTC12.ipynb
│ ├──DTC13.ipynb
│ ├──DTC14.ipynb
│ ├──DTC15.ipynb
│ ├──DTC16.ipynb
│ ├──DTC17.ipynb
│ ├──DTC18.ipynb
│ ├──DTC19.ipynb
│ ├──DTC2.ipynb
│ ├──DTC20.ipynb
│ ├──DTC2_mixup.ipynb
│ ├──DTC3.ipynb
│ ├──DTC4.ipynb
│ ├──DTC5.ipynb
│ ├──DTC6.ipynb
│ ├──DTC7.ipynb
│ ├──DTC8.ipynb
│ ├──DTC9.ipynb
│ ├──aug_data1.ipynb
│ ├──aug_data2.ipynb
│ ├──aug_data2A.ipynb
│ ├──aug_data3.ipynb
│ ├──aug_data4.ipynb
│ ├──aug_data5.ipynb
│ └── eda.ipynb
├── hayeon
│ ├── Denoising.ipynb
│ ├── EDA.ipynb
│ ├── HybridEfficientNetSwinTransformer.ipynb
│ ├── efficientnetb0.ipynb
│ ├── efficientnetb1.ipynb
│ └── efficientnetb2.ipynb
├── hyeongsoo
│ ├── augmentation_1.ipynb
│ ├── augmentation_2.ipynb
│ ├── augmentation_3.ipynb
│ ├── augmentation_4.ipynb
│ ├── augmentation_5.ipynb
│ ├── eda_1.ipynb
│ ├── eda_2.ipynb
│ └── eda_3.ipynb
├── seongjun
│ ├── 02.ipynb
│ ├── 04.ipynb
│ └── EDA01.ipynb
├── seunghyun
│ ├── augment.ipynb
│ ├── augmentation.ipynb
│ ├── augmentation_240213.ipynb
│ └── model_240215.ipynb
└── soyoung
├── offline_augmentation.ipynb
├── eda_code.ipynb
├── custom_efficientnetb4.ipynb
└── 3_7_14_classifier.ipynb
- (훈련 데이터셋) 운전면허증, 진료확인서, 이력서, 차량 번호판 등 총 17종의 1570장의 문서 이미지
- (테스트 데이터셋) 훈련 데이터셋과 동일하게 17종의 문서 유형을 가진 3140장의 문서 이미지
-
클래스 불균형
-
테스트셋에서의 이미지
- 비교적 선명하고 정방향인 훈련 데이터셋과 달리 원본사진에서 회전, 좌우반전, 이동, 잉크번짐 등으로 변형된 사진들을 다수 확인할 수 있음.
-
이미지 크기
-
학습 데이터에서 잘못 레이블 되어 있는 데이터를 찾아 수정
-
Augmentation
-
주어진 학습 데이터의 수(1,570장)가 평가 데이터(3,140장)의 수보다 적고, 정방향의 선명한 학습 데이터와 다르게 평가 데이터는 많이 변형되어 있기 때문에 다양한 augmentation 기법을 활용하여 이를 보완하였음
-
학습 시간 단축을 위해 augmentation을 거친 이미지를 저장하여 사용하는 offline 방식으로 증강
-
Albumentation: Albumentation 라이브러리에서 Transpose, ToGray, HorizontalFlip, Blur,GaussianNoise, ShiftScaleRotation 등을 활용하여 훈련데이터를 변형하고 데이터의 수를 증강
-
Augraphy: Augraphy 라이브러리에서는 PatternGenerator, BrightnessTexturize와 InkBleed 방식을 활용하여 훈련데이터를 변형하고 데이터 수를 증강
-
-
클래스 불균형을 oversampling을 통해 보완
- 이소영
- resnet50, resnext50, efficientnet_b0, efficientnet_b4 pre-trained 모델로 실험
- 성능이 가장 좋았던 efficientnet_b4으로 고정
- resnet50, resnext50, efficientnet_b0, efficientnet_b4 pre-trained 모델로 실험
- 강승현
- timm : resnet34, resnet50, wide_resnet101_2, efficientnet_b0
- huggingface transformers : dit-large-finetuned-rvlcdip
- 학습 시간과 리더보드 결과를 고려했을 때 efficientnet_b0 최종 선택
- 김하연
- Hybrid EfficientNet Swin-Transformer, efficientnet_b0, efficientnet_b1, efficientnet_b2
- 김창희
- resnet_34, deit_base_patch16_224, vit, efficientnet_b0, efficientnet_b4 중 efficientnet_b4가 가장 성능이 좋아 선택
-
이소영
-
이미지 전처리 시 Resize 대신 문서의 가로 세로 비율이 유지되도록 Padding 적용 -> 성능 향상
-
예측 결과를 시각화하여 양식이 유사한 3, 7, 14 클래스에 대한 예측 성능이 떨어진다는 것을 확인
- 3, 7, 14 클래스에 대한 샘플링 가중치를 증가시킴 -> 성능 향상
- 3, 7, 14 클래스 별도 학습
- efficientnet_b5 pre-trained 모델로 해당 클래스만 따로 학습하여 기존 결과값 대체 -> 스코어 향상
-
Test-Time Augmentation 적용
- nference 단계에서 평가 이미지에 Flip(반전), RandomRotate(90도 단위 랜덤 회전)을 적용해 online 방식으로 augmentation하여 N회 예측 수행
- 20회 inference 후 soft-voting 앙상블 -> 스코어 향상
- nference 단계에서 평가 이미지에 Flip(반전), RandomRotate(90도 단위 랜덤 회전)을 적용해 online 방식으로 augmentation하여 N회 예측 수행
-
리더보드 기준 최상위 예측값들을 hard-voting으로 앙상블 -> 최종 리더보드 Public 스코어 0.9631 달성
-
-
강승현
-
데이터 분할
- K-Fold Cross-Validation 후 voting
- 8 : 2 , 9 : 1 random split
- 최종 선택 : K-Fold Cross-Validation 후 voting
-
학습률(LR) : 0.001 ~ 0.005
- 최종 선택 : 0.001
-
Earlystopping 적용(patience : 2 ~ 5)
- 최종 선택 : 5
-
손실 함수는 Cross-Entropy Loss 최적화 알고리즘은 Adam 사용
-> 최종 리더보드 Public 스코어 0.9397 달성
-
-
김하연
-
Hybrid EfficientNet Swin-Transformer
- ImageNet이 사전학습된 EfficientNet 인코더와 swin transformer block을 활용하는 Hybrid Swin Transformer 사용
- Train Accuracy: 0.8893, Train F1 Score: 0.8546, Validation Accuracy: 0.8604, Validation F1 Score: 0.8224
-
EfficientNet Ensemble
EfficientNet-B0 EfficientNet-B1 EfficientNet-B2 - EfficientNet B0, B1, B2는 모델 크기와 input image resolution에서 차이가 있으며 B0가 가장 작은 크기를 가지고 B2가 상대적으로 큰 크기를 가짐
- 각 모델을 K-Fold 진행
- 세 모델 결과값 hard voting ensemble하여 최종 제출 결과 f1 score 0.9384
-
김창희
- 3, 4, 7, 14 번에 예측 성능이 떨어지는 것을 확인
- 3, 4, 7, 14번에 클래스 가중치 적용
- 3, 4, 7, 14번 데이터 추가적인 증강
- fine-tuning에서 lr과 batch_size에는 양의 상관관계가 있다는 것을 확인
- 최적의 조합인 batch_size : 16, lr : 1e-4 사용
- 최종적으로 상위 3개의 예측값들을 hard-voting으로 앙상블 -> public f1 score 0.9560
- 3, 4, 7, 14 번에 예측 성능이 떨어지는 것을 확인
- Leader Board
- F1 Score: 0.9547
- https://docs.google.com/presentation/d/1iv7GAZ4cH0iCpFHj8IhVVAvt-fD_SzIziVl9zdpGBP8/edit#slide=id.g2ba9187747f_0_128
- Insert related reference