강의확인

dataset

  • vanilla data를 원하는 형태의 dataset으로 변환
    • 압축형태, 폴더분류, 토크나이저 등

전처리

  • competition데이터는 어느정도 전처리가 되어있을 수 있음
  • 대부분 데이터는 전처리가 필요(텍스트데이터는 많이 노이즈가 있다고 한다.)
  • bounding box
    • 사진에서 원하는 목표의 물체를 표시
    • 이 정보를 통해 이미지를 자르는 과정을 사용할수 있다.
  • resize
    • 계산의 효율을 위해 적당한 크기의 사이즈로 변경
    • 너무큰 사진은 학습이나 처리가 오래걸린다.
  • 의료용 사진에서의 전처리
    • 의료용에서 자주 사용된다고 한다.
    • 약간 어둡게 찍힌 사진을 전처리를 통해 밝기를 조절하는 경우가 있다.
  • 전처리가 성능에 영향 100%는 아니다.
    • 어느정도 실험을 통해 증명과정을 가지면서 진행
    • 데이터형식에 따라 전처리의 종류가 존재

generalization

  • 일반화
  • bias, variance
    • 일반화의 중요성
    • high bias(underfitting)
    • high variance(overfitting)
  • train,validataion
    • 훈련셋의 일부를 validation(검증)set으로 사용하여 학습에 사용하지 않고 검증할때 사용한다.
  • data augmentation
    • 데이터가 가지는 경우,상태를 다양하게 만들어서 학습이 풍부하게 해준다.
    • 다양한 노이즈와 변수들을 학습에 사용
    • 자르기, 밝기조절, 돌리기 등
    • 도메인의 이해에 따라 augmentation방식을 선택(증명사진 거꾸로 같은거)
    • 라이브러리
      • torchvision.transforms
      • albumentations

data generation

  • 학습하고 잘 출력하도록 만들어주는 전처리과정
  • 또다른 전처리
  • 데이터를 만들는 속도도 중요

  • data feeding
    • 모델의 처리속도만큼 중요한게 모델에 데이터를 넘기는 속도도 중요하다.
    • 전처리하는 함수도 순서에 따라 처리속도가 달라진다.
      • 계산량이 변할수 있다.
  • 함수
    • torch.utils.data import Dataset
      • 위의 Dataset을 상속하여 자신만의 dataset 클래스를 선언
    • torch.utils.data.DataLoader()
  • dataset과 dataloader는 다르다.
    • dataset은 바닐라 데이터를 원하는 형태로 출력
    • dataloader는 dataset을 효율적으로 사용할때

피어세션

  • 데이터불균형?
    • 많은 데이터는 줄이는방법도 있다.

오늘 한일

  • 데일리1 미션 수행
    • dataclass작성
    • 번호를 입력하면 해당 번호의 이미지와 정답라벨이 출력

어떻게 했는지

  • dataclass를 어떻게 해야할지 막막했다.
    • 18개의 라벨을 작성하라고 하였지만 어떤식으로 출력을 해야할지를 알수 없었다.
    • 단순히 csv를 작성하면되는지?
    • 아니면 따로 해야하는 내가 이해못한게 있는지?
  • 피어세션에서 알려준 이전과제를 참고
    • 이전과제에서도 이런식으로 이미지를 가져오는 함수가 있다고 알려주었다.
    • dataclass를 이용해 index를 입력하면 해당 이미지를 불러오고, 같이 label도 출력하는것을 확인
  • dataclass 구성
    • 일단 데이터 구조가 이미지이름으로 폴더가 있고, 내부에 마스크착용5장,오착용1장,미착용1장 총 7장의 이미지를 가지고있다.
    • __getitem__를 통해 하나의 이미지와 라벨를 가져오도록 작성
      • get_label이라는 함수를 추가하여 18개의 클래스별로 라벨을 만들어 출력하도록설정
      • 각 폴더마다 7장의 이미지가 있다는것을 이용하여 7의 몫으로 폴더의 위치를, 7의 나머지로 폴더내 이미지의 위치를 확인

좋았던 점

  • dataclass라는것을 이해할 수 있었다.
  • 완벽한 형태는 아니지만 원한는형태로 만들 수 있었다.

아쉬운 점

  • EDA를통해 아무래도 잘못된 데이터나 그런부분을 어떻게 처리할지를 잘 모르겠다.
  • 단순히잘못됐다고 판단하기에는 test할때 잘못분류할 수 있을거같고
  • 그렇다고 라벨이 이상한것을 학습하기에는 좋다고도 못볼거같다.