부스트캠프 AI Tech 4기/Daily Tasks & Time Log

2022-11-01 (화) Daily Tasks & Time Log

Amor Fati by Nietzsche 2022. 11. 1. 09:21

Daily Tasks

  •  데일리스크럼 참여 (10:00 ~ 10:10)
  •  피어세션 참여 (16:00 ~ 17:00)
  • 오피스아워 참여 (17:00 ~ 18:00)
          최영선 조교  Image Classification using Azure Machine Learning - MLaaS(ML as a Service) 
  •  CV 기초대회
    • dataset.py 코드 분리
    • 팀원 VSCode 설정
    • GitHub repository 
      • .vscode
      • dataset.py 추가
    • 모델 성능 개선 시도
  •  수면 인공지능 경진대회 참가 신청서 작성
  •  <함께 자라기 (애자일로 가는 길)> 독서

 

Time Log

09:30 ~ 09:55 오늘 할 일 정리

10:00 ~ 10:25 데일리스크럼

10:25 ~ 12:00 팀원 VSCode 설정

12:00 ~ 13:00 점심식사

13:00 ~ 14:00 dataset.py 수정 및 공유, 모델 학습 및 평가 진행

16:00 ~ 16:50 피어세션 참여

18:00 ~ 18:30 저녁식사

18:30 ~ 19:40 모델 학습 및 평가 진행

20:00 ~ 20:50 필라테스

 

 

데일리스크럼

선규

  • 주영님 셋팅에서 모델만 변경해서 시도해봄. ResNext, EfficientNet F1-score는 EfficientNet이 더 좋게 나왔다. Resize를 256로 해봤는데 7번째 epoch에서 갑자기 뚝 떨어져서 128로 해보니 똑같이 7번째 떨어졌다가 다시 올라감. 뚝 떨어진 이유를 모르겠음. EfficientNet은 모델마다 권장되는 사이즈가 있다고 해서 그에 맞게 시도해볼 예정. EfficientNet B4 사용

주영

  • 얼굴 떼어내는 것 YOLOv7에서 실패한 이후, 미션에서 숨겨진 힌트가 있지 않을까 싶어서 다시 미션을 보니, 스케쥴러를 따로 안 넣었어서 Optimizer Scheduler를 넣어볼 수 있을 것 같고, 미션에는 DarkNet53이 주어져있길래 feature extract로써 많이 사용된다고 해서 ResNet18을 DarkNet53으로 변경해볼 예정. K-Fold cross validation할 때 loop를 K번 돌텐데, 그 결과로 나오는 K개의 모델에 대해 앙상블을 적용하는 out of fold 앙상블을 적용해보려고 함. 미션에서 사용한 Augmentation을 사용해봤는데 결과가 매우 안 좋았음. 테스트셋에는 Augmentation을 적용하지 않아서 그런 것일까. 테스트셋에도 Augmentation을 적용해서 돌린 결과를 업로드해볼 예정
  • 60세 이상은 엄청 적고, 30세 이하와 30~60세는 거의 비슷하니까 60세 이상과 60세 미만을 focal loss로 해보고, 60세 이상을 잘 맞추면 그 뒤에 60세 미만을 다시 30세 미만과 30~60으로 구분하는 방식으로 시도해볼 예정

 

장원

  • 어제 피어세션 이후로 모델 성능 개선에 대한 시도를 하진 않았다. 오늘 모델 성능 개선 위주로 진행할 예정.
  • 그 외에는 팀원들에게 dataset.py 사용법과 VSCode 셋팅을 도와줄 예정.

 

세준

  • epoch 8번째에서 뚝 떨어져서 그 전 모델을 넣어봐서 제출해봤더니 거의 꼴찌에 가까웠다.

 

태환

  • K-Fold 해본 결과, 학습이 잘 안 되는 모습을 보임. Age가 말도 안되게 안되고, Mask랑 Gender를 거의 다 맞추고, Age 때문에 최종 45% 정도 나왔음. Age에 대해 어떻게 올릴 수 있을지 고민중
  • 60세 이상에 대한 데이터가 거의 맞는게 없음. 30~60대도 30세 이하 또는 60세 이상으로 헷갈려하는 경우가 있음.

 

 

피어세션

장원

  • 주영님 코드에서 ConcatDataset을 돌려보니, DataLoader가 iterate될 때 batch가 받을 수 있는 데이터 타입이 정해져있었음. 일단은 BaseImageDataset의 __getitem__에서 이미지랑 최종라벨만 넘기도록 수정함.
    total_dataset = ConcatDataset([base_dataset, horizontal_flip_old_dataset, horizontal_flip_incorrect_mask_dataset])
    train_dataset, valid_dataset = split_dataset(total_dataset)
    TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <enum 'ImageClass'>
    TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <class 'dataloader.data.ImageItem'>

  • 위에서와 같이 기본 데이터셋에 2가지 데이터셋을 추가하였다.
      1. 60세 이상의 데이터가 30세 미만과 30세 이상 60세 미만에 비해 부족해서 60세 이상의 데이터셋을 추가
      2. 마스크 착용 상태에서 아예 마스크가 없는 normal보다 코 아래까지 살짝 내려서 착용하고 있는 incorrect를 맞추기 어렵다고 생각하여 incorrect 데이터셋을 추가
    Augmentation을 넣은 이유는 조금 더 다양한 이미지를 주어서 학습을 더 잘 시키고자. 그리고 HorizontalFlip을 선택한 이유는 기존 이미지들과 너무 크게 다르지 않는 한에서 Augmentation을 주고 싶어서이다.
  • dataset.py에 EvalImageDataset 추가 필요. 동일한 first, last augmentation을 주기 위해서.