1. 금일 목표
- 1회 이상 제출
- 이미지와 해당하는 클래스 Label (18개의 클래스 중 하나)을 생성할 수 있는 Pytorch Dataset Class를 직접 생성
- albumentation 라이브러리의 여러 transform 기법을 적용
2. 진행사항
1) 1회 이상 제출
처참하다... 보완해야 할 부분이 많다.
2) 이미지와 해당하는 클래스 Label (18개의 클래스 중 하나)을 생성할 수 있는 Pytorch Dataset Class를 직접 생성
class TrainDataset(Dataset):
def __init__(self, img_paths, transform):
self.df = pd.read_csv(os.path.join(img_paths, 'train.csv'))
self.img_paths = self.find_path(self.df, os.path.join(img_paths, 'images'))
self.transform = transform
def find_path(self, df,image_dir): # 폴더 내에 있는 파일의 경로를 모두 불러옴
file_path = []
for img_path in df.path:
for img in os.listdir(os.path.join(image_dir, img_path)):
# 'ipynb_checkpoints'파일과 숨김파일 제외하고 불러오기
if (img.split('.')[0] != '') and (img.split('.')[-1] != 'ipynb_checkpoints'):
file_path.append(os.path.join(image_dir, img_path, img))
return file_path
def make_label(self,img_paths):
gender = img_paths.split('/')[-2].split('_')[1]
age = int(img_paths.split('/')[-2].split('_')[-1])
if img_paths.split('/')[-1].split('.')[0] not in ['incorrect_mask','normal']:
wear = 'mask'
else:
wear = img_paths.split('/')[-1].split('.')[0]
# gender, age, wear 각각 class를 만들기위해 숫자로 변환
gender_class = 0 if gender=='male' else 1
age_class = int(age/30)
if wear=='mask':
wear_class = 0
elif wear=='incorrect_mask':
wear_class = 1
else:
wear_class = 2
return 6*wear_class + 3*gender_class + age_class # class 반환
def __getitem__(self, index):
image = Image.open(self.img_paths[index])
label = self.make_label(self.img_paths[index])
if self.transform:
# 이미지 변환
image = self.transform(image=np.array(image))
return image, label
def __len__(self):
return len(self.img_paths)
3) albumentation 라이브러리의 여러 transform 기법을 적용
HorizontalFlip, VerticalFlip, Resize, RandomCrop, Rotation 등 다양한 기법을 적용해 보았습니다.
transform = albumentations.Compose([
albumentations.Resize(224, 224),
# albumentations.RandomCrop(224, 224),
albumentations.HorizontalFlip(),
albumentations.pytorch.transforms.ToTensorV2()
])
3. 피어세션 정리
https://hackmd.io/LdnsTb1aSCumiB2pyPb1iw?view
4. 학습 회고
나름의 데이터셋을 생성하는데 성공했습니다. albumentation 패키지를 사용하여 더 다양한 augmentation 기법을 사용해볼 예정입니다. 스코어는 모델을 잘못 사용한 것인지 너무 나오지 않아 pretrained weight를 가져와 학습시켜볼 예정입니다!
'네이버 부스트캠프 > LEVEL-1' 카테고리의 다른 글
[부스트캠프][P-stage][WK04 / Day4] Image Classification 4 (0) | 2021.08.27 |
---|---|
[부스트캠프][P-stage][WK04 / Day3] Image Classification 3 (0) | 2021.08.27 |
[부스트캠프][P-stage][WK04 / Day1] Image Classification 1 (0) | 2021.08.27 |
[부스트캠프][WK03 / Day14] PyTorch 활용하기 (0) | 2021.08.20 |
[부스트캠프][WK03 / Day13] PyTorch 구조 학습하기 2 (0) | 2021.08.20 |