개인 Project 진행 상황

  • pretrained efficient net 도입
  • 학습 속도 지연 문제 해결
    • validation set이 따로 분리되지 않고, train set 전체 범위로 지정되어 있었음.
      • 내가 만든 데이터셋 클래스에 맞게, random.sample 함수만 사용해 사람별(7로 나눈 몫에 해당하는 랜덤 인덱스를 validation mask로 사용) split
    • Dataset 클래스의 getitem 함수를 수정
      • for 문으로 레이블 탐색 후 지정 $\rightarrow$ init 함수에서 매핑 딕셔너리 생성 후 getitem 시 조건에 해당하는 레이블 출력
  • transforms 다양화
    • resize(200, 200)
    • random rotation(30)
    • random resize crop(150)
    • random horizontal flip
    • normalize(resnet과 같은 값)
  • 텐서보드와 nvidia-smi를 이용해, 실시간으로 학습 상황(train loss, val loss, val acc 변화)과 GPU 가동률 확인

Peer session

  • 모델 세 개로 나눠서 각각 학습 한 분, 모델 하나에 헤드 세 개로 학습하신 분 만남
    • (보윤님) 마스크 클래스 모델, 성별 클래스 모델, 나이 regression 모델 세 개 나눠서 각각 학습 진행. 하지만 큰 성능 효과를 얻지는 못함.
    • (민용님) Faster-CNN 처럼, 특징 추출은 공통적으로 사용하고, 세 가지 헤드(head)를 나누어 다른 loss로 주며 학습.
  • normalize 값
    • (resnet) pretrained model이 학습될 때 사용했던 mean, std 값대로 보통 normalize 해줌
    • 링크
  • 일반화
    • 라벨 스무딩
    • 경계값에 있는 (50대) 데이터를 제외하고 학습? (imbalance 문제 해결 + 나이 클래스 특성 경계 확보)

강의

  • Model

    • Model: “informative representation of system”
    • nn.modules
      • init
      • forward: 모델이 호출되면 자동 실행됨
      • parameters: data, grad, required_grad 등
    • Pretrained model
      • CNN base 모델 구조
      • 내 data, model과 유사성
      • transfer learning
      • torchvision.models, TIM (git)
      • backbone
        • trainable: fine tuning
        • freeze: feature extraction