해당 포스팅은 네이버 부스트캠프 P-stage를 위해 개인 학습 내용을 정리했습니다.
1. 목표
- transform 다양하게 적용해보기
- Inceptionv3 pre-trained 모델로 학습해보기
2. 진행 내용
1) transform 다양하게 적용해보기(Albumentations 라이브러리 활용도 가능)
- ColorJitter(brightness=[min, max], contrast=[min, max], saturation=[min, max], hue=[-hue, hue])
- 명도(brightness) : 이미지의 밝기
- 대비(contrast) : 상대적인 밝기, 이미지 명암
- 채도(Saturation) : 색상의 순색
- 색조(Hue) : 색상
- RandomHorizontalFlip(p=0.5)
- p확률로 좌우 반전(Vertical : 수직)
- Resize(size)
- 이미지 크기 조정
- CenterCrop(size)
- 중앙을 중심으로 사이즈 크기만큼 잘라내기
- transform은 train과 valid를 다르게 적용해줘야 합니다. 그렇기 때문에 아래처럼 변경했습니다.
# 기존의 코드
dataset = MaskDataset(train_root, input_size, transform)
train_dataset, val_dataset = train_test_split(dataset, test_size=0.2, shuffle=True)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
valid_loader = DataLoader(val_dataset, batch_size=64, shuffle=False)
# 변경 코드 (MaskDataset 내부에 set_transform 함수 추가했습니다)
dataset = MaskDataset(train_root, input_size)
n_val = int(len(dataset) * 0.2)
n_train = len(dataset) - n_val
train_dataset, val_dataset = random_split(dataset, [n_train, n_val])
train_dataset.dataset.set_transform(transform_train)
val_dataset.dataset.set_transform(transform_valid)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
valid_loader = DataLoader(val_dataset, batch_size=64, shuffle=False)
2) Inceptionv3 pre-trained 모델로 학습해보기
- image 크기 : 224에서 299로 변경
- forward 후 pred_logit을 그냥 사용하면 에러가 발생하기 때문에, pred_logit.logit.log_softmax(1) 넣어줘야 합니다.
- 어제 돌렸던 VGG11보다 높은 퍼블릭 점수가 나왔습니다.
3. 회고
부족한 클래스에 대한 upsampling을 해주는 것이 좋을 것 같다고 생각중입니다. 또한 CenterCrop은 생각보다 좋은 성능을 내주지는 못하는 것 같습니다.
EfficientNet을 한 번 적용해볼 예정입니다.