랩업 레포트, 피어세션 발표
피어세션 정리
accumulation gradient
앙상블은 모델이 일정 점수 이상이어야 성능이 오름 grid suffle. 하나의 사진을 등분해서 섞어서 augmentation. 너무 쪼개면 잘 안나오지 않을까. ShfitScaleRotate (머리복사됨)
dencenet. 이미지 가로세로 비율 1:1로 안하고(400 x 200) 넣었던 특이한 경우라 이게 유일하게 잘나왔었다. 나중엔 결국 effieicntnet b_3 ns 사용. resize보다 쌩으로 380 x 380 center crop이 더 잘 나왔다. centercrop해야 정보가 안잘리는 듯. resize는 없던 정보를 늘리고.. 하는거니까. 각 모델마다 최적화된 사이즈가 있다. timm document보면 오른쪽에 나와있음. cutout. 어차피 사람 얼굴 가운데 있으니까 flip은 영향이 없다고 생각해서 안함 kfold 5등분. 그냥 cross entropy가 좋은듯. adamw가 잘나왔음. 앙상블. hard voting 운빨, label을 뭘로냈냐로만 하니까. soft voting으로 바꿈. 모델 다 저장해서 결과끼리 +, * 등을 통해 합쳐서 앙상블. Stratifiedkfold. k=5라면 매번 모델을 새로 만들고 지우고 만들고 지우고. dataset도 넣고 지우고 넣고 지우고로 반복하는거. 원래 이렇게 하는거다. 모델 불러올때 def 나가면 반환. 이걸 이용해서 하나의 .ipynb 혹은 .py의 파일에서 여러개의 모델 결과를 추출 가능.
앞에꺼 freeze 하며 fine tuing해도 어차피 학습데이터가 별로 없어서 효과가 없다. adamW가 adam보다 일반화 성능이 더 좋다고 함. cosine step? stepLR? gradient accumulate. 4step을 압축시켜서. soft voting이 더 좋은듯. 내가 했던건 hard voting이였구나. blur하면 주름살 사라져서 더 안될듯. 어떤 augmentation은 하면 성능이 더 나빠진다. 많아도 나빠진다. 앙상블을 soft voting만 하는게 아니라 평균을 내보던가.
마스터세션
1등비결, 마스터 의견
잘못된 label 수정. cutmix 왼쪽으로만, 오른쪽으로만, 가운대로 몰아서 사용해보고 좋은거 사용. loss. crossentropy랑 f1loss랑 합쳐서 사용. age criterion 30, 59. 위에 정리한걸 timm에서 여러 모델들로 학습해봄. 최종적으론 efficientnet b3, nfnet, vit를 각기 다른 weight로 해서 앙상블. 0.6, 0.3, 0.1 focal안좋은듯. psuedo label?
코드 보니 기본적으로 실험을 해볼줄 아는 사람인듯. 코드 봐라. 변인요인도 하나하나 보는게 도움되었던것 같다.
각각의 실험에 대한 description을 만들어 찾아갔을 것 같다. imbalance가 어떻고, 어떤걸 하니까 성능이 어느정도 올라갔고.. 실제 일하는데는 제안하는것도 중요함. 나도 notion 달력 형식으로 description 해보자.
남은기간동안 뭘 해야 하는지.. 데이터 전단계 를 하는게 AI엔지니어링. 이걸 많이 한다. spark등 회사에서 하기도 하고 싱글로 하는건 의미가 없고.. 신입이라면 모른다고 해서 굳이 안뽑는건 아니고. 결국에는 여기에서 나온 base code를 이해하는 과정. docker 환경에서 친숙한걸 보여준다면 좋지 않을까. 엔지니어로써 시작한다면 개발도 어느정도 (백엔드, 인프라 안에있는 AI). 이 pipeline을 먼저하고 하지 않을까. 경우에 따라선 API를 개발해야 하는 경우가 많음. 스타트업의 경우는 더더욱. pipeline도 각각의 구성요소에 대한 과정을 추상화를 잘 해야 된다. 어떤 데이터베이스는 정적으로 받을수도 있고 실시간으로 받을수도 있고. 다른사람이 하는것을 보고 경험을 쌓는게 좋지 않을까. 깔끔 코딩 방법? 코드는 재사용성 확장성. 처음부터 고려하는건 쉽지 않지만. baseline code에서 어떻게 나뉘어져 있어서 확장성이 좋았다 라는걸 잘 기억했다가 써먹자. 지금 이 코드를 보고 어떻것들에 편리함이 있었는지 명확하게 하기만 해도 충분할듯. 처음엔 왜 굳이 이렇게 짜는걸까 안보이지만 다른코드들도 같이 보면 보이고 좋은 baseline code를 만들어짐. 일단 좋은 baseline code를 보는게 중요함. 코드의 재사용성, 확장성. 문제 해결에 비전과 툴을 해결하는 방식을 말할 수 있는 방향으로 공부를 하는게 좋은 듯(당근나라 사기범을 어떻게 잡을거냐).
후기
다음 stage에서 NNI(Auto ML), wandb를 바로 쓸 수 있도록 연습해보자.
1등이 올린 코드도 보고 배우고, 했던 발상과 생각을 나도 적용해보자.
'과거의 것들 > AI Tech boostcamp' 카테고리의 다른 글
P-stage2 [Day1] (0) | 2021.11.29 |
---|---|
P-stage2대비 wandb (0) | 2021.11.28 |
AITech P-stage1 [Day 8] 앙상블 실패, f1loss로 학습해보는중 (0) | 2021.11.28 |
AITech P-stage1 [Day 7] 단일 모델 실험 끝, 앙상블 실험중.. (0) | 2021.11.28 |
AITech P-stage1 [Day 6] 데이터 시각화, 아직 python IDLE로 만드는 중.. (0) | 2021.11.28 |