강의확인
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을 사용할때 사용
- 많은 기능이 있다 찾아보도록
- 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할때 잘못분류할 수 있을거같고
- 그렇다고 라벨이 이상한것을 학습하기에는 좋다고도 못볼거같다.