[AI Competition Tutorial] Data Generation

임수정·2022년 2월 22일

AI Competition

목록 보기
3/10

Data Generation

Overview

  • 데이터셋을 잘 구성했다고 해도, 잘 출력해야만 실속이 있다.
  • 데이터를 잘 만들어준다는 것..?? => Data Feeding!

Data feeding

  • 데이터를 잘 만들어서 모델에 주는 것이기 때문에 Data Feeding이라는 표현이 의미적으로 맞는 것 같다.
  • 먹이를 주다(feed) = 대상의 상태를 고려해서 적정한 양을 준다
  • 어떤 제품을 만드는 공장이 있다고 생각해보자
    • 설계, 제작, 포장
    • 생산량을 늘리려면..?
      => 제작만 늘어나면 되나?
      => no, 한 단계만 늘린다고해서 전체 생산량이 늘지는 않는다
  • 혹시, 모델 학습을 할 때 비슷한 오류를 범하고 있지는 않을까?
  • 아래와 같은 경우, Data Generator나 Model 부분을 조절하지 않으면 최대 효율을 내기 힘들다.
  • 하지만 Model의 효율을 높이려면 결국 GPU를 바꿔야 하므로 쉽지 않다.
  • 따라서 모델의 처리량 만큼 Data Generating을 할 수 있는지가 가장 중요한 관건이다.
  • 모델학습을 진행할 때, 데이터를 만들어내는 generator의 성능이 얼마정도 되고, bench marking했을 때 얼마정도 나오는지 확인하자.

torch.utils.data

Dataset

  • Vanilla Data를 Dataset으로 변환하는 기능

  • Dataset 구조

  • 복습 : Python Class

    • __init__, __getitem__, __len__사용

DataLoader

  • 만든 Dataset을 효율적으로 사용할 수 있도록 추가된 기능
  • PyTorch DataLoader는 기능이 엄청 많다
    • shuffle, collate_fn, sampler 등등..

  • 간단한 실험: num_workers

Dataset과 DataLoader는 분리되는 것이 좋다.

  • Dataset과 DataLoader는 엄연히 하는 일이 다르다.
  • Dataset : Vanilla 데이터를 원하는 형탵로 출력해주는 클래스
  • DataLoader : Dataset을 더 효율적으로 사용하기 위함
  • 두 개를 분리해두면 DataLoader는 한 개만 만들고 재사용이 가능해짐

Special Mission

  • 주어진 바닐라 데이터를 가지고 이미지와 해당하는 클래스 Label (18개의 클래스 중 하나)을 생성할 수 있는 Pytorch Dataset Class를 직접 생성해보기
  • torchvision에 내장된 여러 Augmentation 함수와 albumentation 라이브러리의 여러 transform 기법을 적용해보기, 적용해 본 뒤에 실제로 어떻게 변환되어 나오는지 확인하기. (아마 plot형태로 그려서 확인해야 할 것)
    • 그리고 이러한 Transforms를 추가한 Dataset이 과연 어느 정도의 성능을 가지는지 체크하기.
      혹여 너무 무거운 프로세스라면 생각보다 느리게 동작하겠죠?

Further Reading

profile
유쾌하게, 열정적으로, 진심을 다해

0개의 댓글