dukim's blog

[WK04] P-Stage level 1 - 이미지 분류 1주차 본문

Boostcamp AI Tech 2th

[WK04] P-Stage level 1 - 이미지 분류 1주차

eliza.dukim 2021. 8. 28. 13:44

Intro

  • 이번 주는 전반적으로 시간 관리와 컨디션 관리에 실패
  • 한 가지 일을 하면서 다른 일을 할 것을 걱정하느라 집중을 못 함
  • 학습 정리 양식을 간소화하여 정리. 과정 자료는 정리해 업로드 예정

1. 이번 주 나의 학습 목표는 무엇이었는가?

  • ML workflow를 하나씩 차근 차근히 학습하면서 팀원들과 함께 성장하기
  • 향후 두고 두고 써먹을 코드 템플릿을 만드는 것
  • 모델 튜닝에 대한 경험적 지식 쌓는 것

2. 날짜별 회고록

Day015: 21.08.23.Mon.

학습 목표를 위해 한 일

  • 김태진님 강의를 수강하고, 대회 개요를 찬찬히 살펴봄.
  • EDA를 수행하며 데이터 불균형 문제를 발견하고, 레이블링이 까다로운 형태임을 확인함
  • 지난 주차에 소개된 Pytorch 코드 템플릿을 베이스로 하여 대회 데이터셋에 맞게끔 데이터셋 및 로더를 수정하고 torchvision의 Pretrained model을 불러와 사용할 수 있도록 작성하는 작업 수행함.
  • 팀원들과 P-stage 계획을 수립하고, 첫 주 동안은 각 pretrained 모델의 대략적인 성능 파악을 하면서 각자 EDA, Data Augmentation 등을 수행해보기로함.

달성한 결과 & 깨달은 점

  • EDA에서 문제의 개요를 대충 읽고 넘어갔는데, 이것이 나중에 문제해결의 중요한 키가 될 수 있다는 것을 깨닫게됨. 해당 문제를 풀기 위한 적절한 feature의 설계나 데이터의 처리를 고민하게 되므로 이 과정은 중요함
  • 코드를 빠르게 핵심만 파악하고 필요한 부분만 먼저 구현하게 됨. 제출 횟수를 최대한 많이 확보하고자 속도를 내게 되었고, 시간에 쫓겨 작성하다보니 당장 돌아가는 핵심 코드를 빠르게 완성할 수 있었음

Day016: 21.08.24.Tue.

학습 목표를 위해 한 일

  • 템플릿 코드 1차 완성
  • 일부 pretrained model에 대한 성능 확인
  • 다른 팀원들에게도 코드를 설명하고 제출하도록 하여 각각의 결과를 깃헙 이슈에 공유
  • 요한님께서 timm 라이브러리를 추가해 더 많은 모델을 시험해 볼 수 있게됨
  • 한진님은 여러 모델을 함께 사용하는 방법을 시도하며, 이에 적합한 Augmentation 방법을 고민
  • 다른 사람과 깃과 깃헙을 통해 협업하면서 조작법이 점점 익숙해짐
  • 팀원들과 함께 피어세션을 진행하면서 내게 부족했던 깃과 깃헙 사용법을 익힐 수 있었고,
    코드 이해가 어려운 팀원들에게 도움을 줄 수 있었음.

달성한 결과 & 깨달은 점

  • 첫 제출
  • 팀원들과 템플릿 코드를 공유하고 협업을 통해 발전시키는 경험을 하면서 깃과 깃헙에 익숙해짐
  • 서로 질문하고 답변하면서 빠르게 성장한다는 것을 체감함

Day017: 21.08.25.Wed.

학습 목표를 위해 한 일

  • 다양한 Augmentation을 테스트하기 쉽도록 템플릿 코드 수정
  • class weight를 이용한 데이터셋 불균형 문제를 해결하는 코드 작성, 깃헙에 공유

달성한 결과 & 깨달은 점

  • class weight를 이용했을 때 이전보다 성능이 향상됨
  • 내가 공유한 코드가 다른 사람이 새로운 실험을 시작할 때 도움이 되었다는 것에 공유 문화의 중요성을 체감함
  • 애초에 차근 차근하는 것이 목표였으나 어느새 성능에 집착하고 있는 나 자신과 팀원을 발견함. 진행 속도나 절차, 역할 분담에 대한 고민을 하게됨
  • 팀원 각자의 자율에 맡기고 이것저것 시도해보도록 하였고 또 성과가 나오고 있으나, 이러한 방식이 맞을지에 대해 의문이 듬

Day018: 21.08.26.Thu.

학습 목표를 위해 한 일

  • 공개된 코드로 EDA를 시도하다 labeling이 잘못된 데이터가 있음을 발견하고, 해당 문제를 고친 코드를 작성해 공유함
  • 다른 팀원들도 각자 돌린 모델 또는 시도해보는 Augmentation에서 결과 공유
  • 브랜치를 병합하다가 coflict 메시지가 뜨지 않고 바로 삭제되는 경우 발견, git diff를 사용하여 변경사항을 비교하여 수정한 뒤에 merge하려 하였으나 계속 문제가 발생함. -> 멘토님께 질문 -> 처음 보는 문제여서 주변 동료에게 확인 후 답변 받기로함

달성한 결과 & 깨달은 점

  • 각자 실험한 결과가 공유되고 있긴 하지만 조직적이고 체계적으로 움직이고 있지는 않다. 각자의 태스크에 대한 사후 확인 같은 것이 필요한지 고민

Day019: 21.08.27.Fri.

학습 목표를 위해 한 일

  • 템플릿 코드에 실험 관리를 위한 Weights & Biases 코드를 추가
  • 피어세션에서 개별 멘토링 시에 나누었던 질문 답변을 공유, 유용한 Augmentation tip 공유

달성한 결과 & 깨달은 점

  • 오늘 오피스아워를 보면서 굳이 코드를 어렵게 짜지 않고 빠르게 짤 수 있는 좋은 예시를 봄. 현재 템플릿 코드와 비교해 보면서 장점 수용하기
  • 개발환경을 잘 세팅하는 것 만으로도 생산성이 향상된다(remote interpreter, 반복되는 코드들 저장 등)
  • LGTM(Looks Good To Me)을 버려야 한다. 박상현 캠퍼님의 게시글을 보고 직접 실험해보고 더 나은 방법을 찾아가는 모습에 자극 받음. 나한테, 우리 팀한테 적용해볼 만한 것이 있을까?

3. 한 주 회고

  • 대충 이미 아는 내용이라서, 시간이 없어서, 하기 귀찮아서 하던 대로 계속하게 된다. 내가 선택하는 방법들이나, 방향들이 맞는지에 대해 고민하고, 검증하는 과정이 필요하다.
  • 다음 주에는 매일 기록을 남기면서 Wrap-up 리포트 소스를 미리미리 마련하려 한다.
  • 리스트업 해 둔 방법들을 모두 시도해 볼 것
Comments