본문 바로가기

& 프로그래밍/& 머신러닝

ImageDataGenerator [이미지 전처리]

ImageDataGenerator란,

모델안에 이미지를 학습시킬 때, 그 학습량이 적을 경우 가지고 있는 학습데이터를 조금씩 변형시켜서

학습데이터를 늘려가는 방식이다

쉽게말해 '이미지 증강(증식)'이라고 생각하면 되겠다

 

예를들어 아래와 같은 강아지 사진이 있다

이미지 출처: 픽사베이

머신러닝 학습을 위해선 학습량에 따라 예측값이 달라지는데 위 사진 한장만 달랑 가지고 있으면

컴퓨터가 학습할 데이터가 턱없이 부족하지 않은가

 

이렇게 부족한 데이터 학습을 컴퓨터가 스스로 변형시켜서 학습량을 늘려가도록 해주는 것이다

이미지 출처: 픽사베이

위처럼 기존에 가지고 있던 사진을 반전시키거나, 크롭, 회전 등 다양하게 변형시켜 학습데이터를 스스로 만들어내도록

코드를 입력해주는 것이다

 

from tensorflow.keras.preprocessing.image import ImageDataGenerator

TRAINING_DIR = '/tmp.cats-v-dogs/training'
train_datagen = ImageDataGenerator(
    rescale = 1/255.0,  # 값을 0과 1사이로 변환
    rotation_range = 40, # 회전반경을 40도 이내로 설정
    width_shift_range = 0.2, # 너비반경 20%
    height_shift_range = 0.2, # 높이반경 20%
    shear_range = 0.2, # 층 밀림 강도 20%
    zoom_range = 0.2, # 확대 범위 20%
    hotizontal_flip = True, # 수평반전
    vertical_flip = True, # 수직반전
    fill_mode ='nearest'
)

 

각 파라미터별 설명은 주석으로 처리해놓았다

이밖에도 다양한 파라미터가 존재하지만, 그건 하단에 삽입한 링크를 참고하셔라

https://keras.io/api/preprocessing/image/

 

Keras documentation: Image data preprocessing

Image data preprocessing image_dataset_from_directory function tf.keras.preprocessing.image_dataset_from_directory( directory, labels="inferred", label_mode="int", class_names=None, color_mode="rgb", batch_size=32, image_size=(256, 256), shuffle=True, seed

keras.io