시간이 많이 흘러 CNN에 대해 배우는 중이다.

 

Training set과 Test set의 이미지를 Feature Scaling하거나 다른 변환이 필요할 때 사용한다.

 

데이터를 학습할 때, Class 별로 Balanced 하게 존재하는 경우가 흔치 않고,

Imbalance한 Data set을 학습시켜 모델을 만들경우 좋은 성능을 내기가 어렵다.

 

따라서 ImageDataGenerator 함수를 사용하여 여러 가지 방법으로 데이터를 변형하거나 만들어 낼 수 있다.

사용 전 from keras.preprocessing.image import ImageDataGenerator 로 임포트 해주어야 한다.

 

from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np

train_datagenerator = ImageDataGenerator(
        rescale=1./255,    
        shear_range=0.2,    
        zoom_range=0.2,     
        horizontal_flip=True)

우선은 필요한 것만 사용하였는데, ImageDataGenerator의 파라미터를 하나하나 살펴보면

  • rescale : 픽셀 하나 하나에 feature scaling을 적용하기 위해 사용. 신경망에서 feature scaling은 필수다
  • shear_range : 이미지 기울기
  • zoom_range : 이미지 일부 확대
  • horizontal_flip : 이미지 가로 뒤집기
  • vertical_flip : 이미지 세로 뒤집기
  • brightness_range : 이미지 밝기 값
  • rotation_range : 이미지 회전 값
  • width_shift_range : 좌우로 움직임
  • height_shift_range : 위 아래로 움직임

 

예시 결과 참고 : https://m.blog.naver.com/PostView.nhn?blogId=isu112600&logNo=221582003889&proxyReferer=https:%2F%2Fwww.google.com%2F