본문 바로가기

카테고리 없음

패스트캠퍼스 Upstage AI LAB 3기_CV 경진 대회(미니 프로젝트) 후기

 

프로젝트  개요

  • 개요 

문서 타입 이미지 분류 경진대회로서 실제 산업 현장에서 필요로 하는 총 17종의 문서 타입을 분류하는 프로젝트 

  • 환경 

4인 1팀, 인당 서버를 vscode와 ssh로 연결하여 사용.  RTX 3090 

 

프로젝트 팀 구성 및 역할 

전체 모델링, wrap-up report 작성 
민XX 팀장, 전체 코드 파이프라인, W&B
전XX denoising, Rotnet 실험 및 2차 분류기 
조XX Albumentations augmentation, 실험 기입, 모델링
이XX Augraphy augmentation, 모델링 

 

프로젝트 수행 절차 및 방법

 

[1주차] 95점 넘기기, 효율적인 프로세스 만들기

[2주차] 하이퍼 파라미터 튜닝, 앙상블 등

[3주차] 개인적인 실험 수행 

 

프로젝트 사전 기획

[1주차] 데이터 분석 및 EDA 

[2주차] 모델 선정 및 하이퍼 파라미터 튜닝 

[3주차] 앙상블 및 다양한 실험 

 

프로젝트 수행 결과

 

주요 수행표

Modeling Point
Process Point


Augmentation
Modeling
Hyper-parameter tuning
etc(그 외 기법)
Modularization(모듈화)
Automation[자동화]
Specialization[분업화]
Decentralization[자율화]
Role assignment 

augmentation은 조XX, 이XX이 주로 맡았고 이를 토대로 민XX, 전XX이 Hyper parameter tuning과 Ensemble 및  그 외 다양한 기법을  실험하였다.

Albumentations 및  Augraphy 라이브러리를 활용해 다양한 증강 기법을 사용해 약 10만장의 데이터를 확보하였다.

또한 offline augmentation / online augmentation을 둘 다 사용해 각각의 장점을 모두 수용하였다.  
해당 증강 데이터를 받아 민경도, 전승열은 다양한 Model selection과 Hyper parameter tuning을 실험하였다. 
우리 팀은 아래의  기준을 문제 정의로 삼고 진행하였다.  

  • 모호한 결정 경계(Decision Boundary)의 라벨링
  • 컴퓨팅 파워와 시간의 한계성


Modeling Point 

Augmentation, Modeling, Hyperparameter tuning, etc


- Offline augmentation
다양한 증강 이미지 생성,  훈련 시간 단축

- Online augmentation
배치마다 다양한 증강 이미지 생성, 유연한 증강 정책 

- w/GFLOPS 
점수가 높은 모델 중 가성비 모델선택(Vit_tiny_224_380)

- Mixed Precision
모델 훈련 시간 단축

- No Validation set 
데이터 학습 시간 단축 

- Ranger 
(Optimizer)
 빠른 수렴, 안정적인 훈련

- Cosine Annealing Warm Restarts (Scheduler]
Local Optima 탈출, 빠른 수렴, 일반화 성능 향상 


- Label Smoothing 
과적합 방지, 일반화 성능 향상, 모델 보정 

- Focal Loss (loss]
Class Imbalance 해소, 어려운 샘플 학습 강화

* Smooth Focal Loss [ Label Smoothing + Focal Loss ]
 class imbalance 해소,  과적합 방지 및 일반화 성능 향상, 모델 보정

- TTA [Test-TIme Augmentation]
결정경계가 모호한 라벨링 문제 해결


Process Point 

Modularization, Automation, Specialization, Decentralization

- Modularization
디버깅 용이,  작업물 공유 가능성  확대 

- Automation
시간 단축,  재활용성 확대

- Specialization
각자 흥미있는 주제를 통해 동기부여 유발

- Decentralization
자율적 실험 학습 및 진행으로  창의 성 촉진 

자체 평가 

  • 잘했던 점
    • augmentation을 처음 시도했으나 나름대로 만족한 결과물
    • EDA를 통해 얻은 정보를 시각화를 통하여 인사이트를 얻고 과제를 진행
    • 다양한 모델 실험을 기입하여 그들의 차이를 명확히 인지한 점 
  • 시도했으나 잘되지 않았던 점
    • Denoising을 통해 테스트 셋을 정상화하기
    • Overlay를 위해 Mask-RNN을 사용한  segmentation
    • Stratified Group Kfold 사용하기
  • 아쉬웠던 점(시도해보지 못한 점)
    • OCR을 통해 텍스트 데이터 추출하기
    • Grad CAM을 통해 모델 인지 영역 확인하기
    • Layout generation을 통해 문서 데이터 레이아웃 추출하기
    • W&B Sweep 사용해보기
    • AutoML  활용해보기
    • 명암을 통해 테스트 이미지 이진화하기 
    • 이미지를 GrayScale로 변환 후 sharpen, brightness 를 활용해 denoising 하기 
    • Patch 활용해 증강 해보기
  • 배운 점 또는 시사점
    • 기본기가 가장 중요하다( baseline code의 이해, 문제 정의, 가설 설정 등)
    • 점수를 떠나 다양한 실험을 통해 얻은 인사이트가 값진 보물이 된다.
    • 시작은 나무보다 숲부터!

회고록

 

 이미지 분류 task를 경험해봄으로써 기존에 가지고 있던 CV에 대한 환상이 모두 사라졌다. 제대로 말하자면 내가 기존에 알고 있던 CV와는 거리가 멀었기 때문에 마음 속에 뭔지 모를 아쉬움(?)이 남았다. 필자가 생각한 CV는 Generation 관련 task였지만 대회는 Classification task였고 같은 CV Domain이라도 어떤 task냐에 따라서 접근 방법부터 문제 정의, 모델 구축 및 성능 향상까지 임해야 하는 방법들이 매우 달랐다. 

 

 뭔지 모를 아쉬움을 뒤로 하고 '기본이 중요하다'는 마음가짐으로 대회에 임했고 여러 다사다난한 일들이 있었지만 (서버 터짐, 코드 이해 미숙, 팀원 간 마찰 등) 무사히 대회를 좋은 성적으로 잘 마무리했다. 

 

 해당 대회를 진행하면서 가장 크게 얻은 자산이 있다면 '모델 별로 실험하고 기록하는 것 '에 재미를 들였다는 것이다. 대회를 통해 파라미터를 수정해보고 WanDB로 결과를 분석하면서 '어떤 모델, 어떤 파라미터'를 조정했을 때 결과가 좋아졌는지에 대해 인사이트를 얻고 해당 인사이트를 나중에 개인 프로젝트나 팀 프로젝트 진행 시 사용 가능하도록 정리해놓는 것이 정말 중요하다는 것을 느꼈다.

WanDB를 통한 결과 분석

 

CNN, Transformer 기반 모델 세부 정리표

 

 또한 해당 대회를 진행하면서  'AI를 잘 활용하는 사람 '이 되자는 생각이 들었다. AI에 대한 이론이 아무리 빠삭한 사람이더라도 그 이론을 자신이 마주한 문제 해결에 활용하지 못한다면 그건 쓸모없는 지식과 같기 때문이다. 나와 같은 초심자들은 AI를 공부하면서 복잡한 수학적 이론들과 다양한 코드 오류들을 마주한다. 나 또한 해당 문제들로 스트레스를 많이 받지만 먼저 그것들을 모두 이해하려는 생각보다 이미 다양하게 pre-trained 되어 있는 모델들을 활용해보고 결과물을 내면서 인사이트를 가져가야 전자들을 이해할 수 있고 오랫동안 AI를 공부할 수 있을 것이다. 나와 같은 초심자에게 AI를 효율적으로 배울 수 있는 방법을 추천하자면  

 

Project-based Learning 이다.