[Fast-Up Report Guide 1을 기반으로 작성]
1. Abstract
- Goal of the Competition
- Document Type Classification | 문서 타입 분류
- 총 1570장의 train 이미지 데이터, 3140장의 test 이미지 데이터
- 17개의 클래스
- 주어진 이미지들을 여러 클래스 중 하나로 분류하는 것이 이번 대회의 목적
- 평가지표는 Macro F1 사용
- 따라서 Public 리더보드를 참고하여 private 리더보드(최종)에서 최대한 높은 F1 score를 받는 것이 목표
Macro F1 score 계산법
- 따라서 Public 리더보드를 참고하여 private 리더보드(최종)에서 최대한 높은 F1 score를 받는 것이 목표
- Timeline
- February 05, 2024 - Start Date
- February 19, 2024 - Final submission deadline
- Description of the work
- 팀원들과 데이터 EDA 진행
- 학습 데이터셋 클래스별 이미지 분석, 테스트 데이터셋 클래스별 이미지 분석
- 테스트 데이터셋에 적용되어있는 이미지 변형에 무엇이 있는지 파악
- 파악한 이미지 변형 정리
- 문서 자체의 변형에는 Rotate, Crop, Flip이 많은 부분을 차지
- Mixup 되어있는 경우도 확인
- Datat Augmentation으로 원본데이터에서 추가 노이즈 처리 진행
- 최종 데이터 갯수 52608개로 데이터 증강
- 최종 데이터 셋을 기반으로 팀원별로 다른 모델 및 방법으로 학습 진행
- 각자 학습한 결과가 성능 향상이 되었을 시 Github에 code 공유
- Public 리더보드 Macro F1 를 참고하여 최종 제출 파일 결정
2. Process : Competition Model
- Describe the structure of your System.
- 데이터 전처리
- 테스트 데이터셋에 적용되어 있는 이미지 변형이 무엇인지 파악 후 정리
- 피처엔지니어링
-
- 분석한 이미지 변형을 정리한 것을 바탕으로, Augraphy와 Albumentations을 사용하여 데이터 증강
- [Augraphy]
ColorPaper
OneOf: DelaunayTessellation, PatternGenerator, VoronoiTessellation 중 하나 선택적 적용
AugmentationSequence: NoiseTexturize와 BrightnessTexturize 순차적 적용
Post Phase: VoronoiTessellation
Ink Phase: Folding
Paper Phase: ColorPaper, ColorShift, ReflectedLight
Post Phase: VoronoiTessellation - [Albumentations]
HorizontalFlip
VerticalFlip
Rotate
GaussianBlur
RandomBrightnessContrast
HueSaturationValue
RandomGamma
ColorJitter
CoarseDropout
GaussNoise
RandomRotate90
Flip
OneOf: 여러 블러 기법 중 하나 선택 (예: MotionBlur, MedianBlur, Blur)
ShiftScaleRotate
OneOf: 여러 왜곡 기법 중 하나 선택 (예: OpticalDistortion, GridDistortion, PiecewiseAffine)
OneOf: 여러 명암 및 색상 조정 기법 중 하나 선택 (예: CLAHE, Sharpen, Emboss)
RandomBrightnessContrast
HueSaturationValue
-
- 최적화
- 팀원별로 코드를 따로 작성하였음
- 공통된 데이터셋으로 각자 다른 방법론으로 실험 진행 후 결과 공유
- 더 나은 점수가 나온 방향으로 전환하여 코드 최적화 진행
- 모델링
- 결과적으로 마지막에 사용한 코드(이명진님)
- mixup + scheduler = StepLR(optimizer, step_size=5, gamma=0.5),KFold
- test data gaussian blur + NonLocalMeansDenoising
- fc_layers = [(2048, 1024), (1024, 512), (512, 256), (256, 17)] batchnorm, dropout(p=0.2)
- "classifier 내 activation function : SiLU()
- EfficientNet_B4 모델 사용
- 결과적으로 마지막에 사용한 코드(이명진님)
- F1 Score 기록
- Public F1 Score : 0.9488
- Private F1 Score : 0.9400
- 결과 예측
- 제출 횟수는 남아있었으나 GPU 자원의 문제로 학습에 시간이 오래 소요되어 강제로 epoch를 중단시켜 결과를 저장하였음 (feat. 이명진님)
- 제 로컬 f1 score가 다른 팀원보다 낮았으므로, 제일 점수가 잘 나온 이명진님의 csv파일을 최종 제출
- 제출 횟수는 남아있었으나 GPU 자원의 문제로 학습에 시간이 오래 소요되어 강제로 epoch를 중단시켜 결과를 저장하였음 (feat. 이명진님)
- 데이터 전처리
3. Process : Issues
- Describe the issue that your team faced during the project.
- 1. 테스트 데이터셋을 분석하여 해당 이미지들에 적용되어있는 이미지 변형들을 파악한 뒤 해당 내용을 학습 데이터셋에 적용하였으나 f1 score가 오르지 않았음
- 2. 데이터 증강을 하였으나 다른팀들보다 리더보드 상으로 점수 격차가 좁혀지지 않았음
- 3. ViT 모델을 사용하여 학습을 하였으나 생각보다 점수가 좋지 않았음
- Describe the reason for the issue.
- 위 1번 사항에 대한 이유
- 테스트 데이터셋에 적용되어있는 이미지 변형들은 적절하게 파악한 것이 맞지만, 학습 데이터가 너무 적어 점수가 향상되지 않은 것이였음
- 위 2번 사항에 대한 이유
- 1차적으로 데이터 증강을 하였으나, 2만5천개의 데이터는 여전히 학습하기에 많은양의 데이터가 아니였음
- 위 3번 사항에 대한 이유
- ViT 모델은 매우 큰 규모의 데이터셋에서 뛰어난 성능을 발휘하도록 설계되었는데, 우리 팀이 학습에 이용한 데이터는 적은 규모여서 성능이 좋지 않았음
- 위 1번 사항에 대한 이유
- Describe the possible solution to imporve your project.
- 위 1번 사항에 대한 해결책
- 학습데이터를 5만개로 추가로 데이터증강시켜 학습하여 f1 score를 높이는데 성공하였음
- 위 2번 사항에 대한 해결책
- 2만5천개에서 5만개까지 데이터를 증강시켜 학습하여 f1 score를 높였음
- 또한 시간상으로 진행하지 못했지만, 데이터를 10만개 이상으로 증강시켰다면 ‘efficientnet_b4' 모델로도 충분히 더 좋은 성적을 냈을 것으로 예상
- 위 3번 사항에 대한 해결책
- 데이터 증강을 다른 팀처럼 10만개 이상으로 했다면 ViT 모델이 충분히 좋은 성적을 냈을 것이라 예상
- 시간 관계상 추가로 진행하지 못하고 마무리되었음
- 위 1번 사항에 대한 해결책
4. Role
- Describe your role with task in your team.
- 팀원들과 공통된 데이터셋을 이용하여 모델링 후 결과 공유
- 개인 결과 기록
- 기록한 내용
- 더보기
Baseline code를 기반으로 수정
[Try 1]
model_name = 'resnet50’, early stopping, 이미지 크기 조정, 360도 무작위 회전,
좌우반전, 밝기/대비 조정, 블러, 채도, 선명도 적용
로컬 점수는 좋은데 반면 리더보드에서의 성적은 좋지 않았음
(local) train f1 score : 0.9363
(local)valid f1 score : 0.9289
제출 leaderboard f1 score : 0.358
[Try 2]
model_name = 'densenet201', early stopping, 이미지 크기 조정, 360도 무작위 회전,
좌우반전, 밝기/대비 조정, 블러, 채도, 선명도 적용
로컬 점수 낮은 반면 리더보드에서의 성적은 괜찮음
(local) train f1 score : 0.7984
(local)valid f1 score : 0.8166
제출 leaderboard f1 score : 0.6105
[Try 3]
Try 2와 동일한 환경에서 학습모델을 resnet34, Epoch 99에서 early stopping으로 멈춤
(local) train score
loss: 1.1923
acc: 0.5983
f1: 0.5723
(local)valid score
loss: 1.0821
acc: 0.6405
f1: 0.6189
제출 leaderboard f1 score : 0.4897
이후의 시도들은 제출 횟수 제한때문에 local에서만 test 후 제출하지 않음
팀원들의 local score 보다 현저히 떨어지는 결과가 나왔기 때문
- 제출 하지 못한 시도들
- 최종 데이터 셋을 기반으로 ViT_base_patch16_224 모델을 사용
- 하이퍼파라미터 최적화를 시도하였으나 local F1 score가 0.8을 조금 넘기는 기록
- 그리고 시간이 너무 오래 소요되었음
- 하이퍼파라미터 최적화를 제외하고 학습하였음
- local 기준 score : Train Loss: 0.5632, Train Acc: 0.8051, Train F1: 0.8031
- 팀원들이 다른 모델로 학습한 결과는 로컬에서의 F1 Score가 0.9 이상, LB Score 0.9 이상으로 성적을 보이는 상황이였으므로, 제출로 이어지지 못함
- 하이퍼파라미터 최적화를 시도하였으나 local F1 score가 0.8을 조금 넘기는 기록
- 학습하여도 정답률이 낮은 class 3, 4, 7에 대해 따로 학습하여 다른 모델로 학습한 csv 결과에 대체하려 시도
- 학습까지는 성공했지만, 파일을 저장하는 부분에서 문제를 해결하지 못해 적용하지 못함
- 최종 데이터 셋을 기반으로 ViT_base_patch16_224 모델을 사용
- Describe papers or book chapeters you found relevant to the problem, references to see.
- Intriguing Properties of Vision Transformers
- Mixed-Precision Training of Deep Neural Networks
- Intriguing Properties of Vision Transformers
- Explain which are relevant for your Project.
-
- Vision Transformers와 Mixed을 사용함에 있어서 정보를 얻었음
-
5. Results
- Write the main result of Competition
- 팀의 대회 주요 결과는 5만개라는 적은 데이터로도 F1 Score 0.94를 받을 수 있을 정도의 code를 작성한 것
- 더 많은 데이터와 GPU 자원이 있었더라면 그 이상의 점수를 받을 수 있을 것으로 예상
- 팀의 대회 주요 결과는 5만개라는 적은 데이터로도 F1 Score 0.94를 받을 수 있을 정도의 code를 작성한 것
- Final standings of the Leaderboard
- 최종 리더보드 순위 5위
6. Conclusion
- Describe your running code with its own advantages and disadvantages, in relation to other groups in the course.
- 데이터 증강을 하는데 있어서 테스트 데이터셋에 적용된 이미지 변형을 모두 파악하지 못한 상태로 데이터 증강
- 자주 나온 빈도 수 만큼 계산하여 데이터 증강을 했어야했는데 대회 중반부터 인지하였음
- GPU 자원의 한계로 학습하는데 시간이 오래 걸려 실험 결과를 기록하는데 시간이 부족하였음
- 사실 code를 작성하는 부분은 어려운 것이 아닌데, 데이터가 5만개 정도 되는 시점부터 어떤 모델이 성능이 좋게 나오는지, 어떤 테크닉을 사용하면 결과가 어떻게 나오는지 기록하기에는 시간이 크게 소요되었음
- 데이터 증강을 하는데 있어서 테스트 데이터셋에 적용된 이미지 변형을 모두 파악하지 못한 상태로 데이터 증강
- Sum up your project and suggest future extensions and improvements.
- GPU자원은 모두가 사실상 동일한 조건에서 대회를 진행하였으므로 크게 아쉬움은 없음
- 다만 데이터 증강에 대해서 더 적극적으로 나서서 큰 규모의 이미지 데이터로 학습을 진행했으면 좋았을 것 같음
- CV 대회나 학습은 학습모델선정, GPU자원, 시간 삼위일체가 맞아야 좋은 결과가 나오는 것 같음
- 앞으로 유사한 대회나 프로젝트를 진행한다면 어떻게해야 좋은 결과가 나올지 다른팀들의 인사이트를 보고 배웠음