imagedatagenerator 예제

ImageDataGenerator은 딥러닝 모델을 학습시킬 때 데이터 증강을 효과적으로 수행할 수 있는 유용한 도구입니다. 이를 사용하면 이미지 데이터를 변형하고 다양한 형태로 확대 또는 축소하여 데이터의 다양성을 늘릴 수 있습니다.

아래는 ImageDataGenerator를 사용하여 데이터를 증강하는 간단한 예제 코드입니다. 이 예제에서는 Keras를 사용하여 이미지 데이터를 로드하고, 데이터 증강을 위해 ImageDataGenerator를 설정하고, 생성된 데이터를 이용하여 모델을 학습시키는 과정을 보여줍니다.

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 데이터 경로 설정
train_data_dir = '/path/to/train/dataset'
validation_data_dir = '/path/to/validation/dataset'

# 데이터 증강을 위한 설정
datagen = ImageDataGenerator(
    rescale=1.0/255.0,  # 이미지 픽셀 값을 0-1 범위로 정규화
    rotation_range=20,  # 이미지를 무작위로 회전시킴 (0-180도)
    width_shift_range=0.2,  # 이미지를 수평으로 무작위로 이동시킴 (전체 넓이의 비율)
    height_shift_range=0.2,  # 이미지를 수직으로 무작위로 이동시킴 (전체 높이의 비율)
    shear_range=0.2,  # 이미지를 무작위로 전단 변형시킴
    zoom_range=0.2,  # 이미지를 무작위로 확대 또는 축소시킴
    horizontal_flip=True,  # 이미지를 무작위로 수평으로 뒤집음
    vertical_flip=True  # 이미지를 무작위로 수직으로 뒤집음
)

# 트레이닝 데이터 로딩 및 증강
train_generator = datagen.flow_from_directory(
    train_data_dir,
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)

# 검증 데이터 로딩 (증강 없이)
validation_generator = tf.keras.preprocessing.image_dataset_from_directory(
    validation_data_dir,
    image_size=(224, 224),
    batch_size=32,
    label_mode='categorical'
)

# 모델 생성 및 컴파일
model = tf.keras.applications.VGG16(
    include_top=False,
    weights='imagenet',
    input_shape=(224, 224, 3)
)

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 모델 학습
model.fit(
    train_generator,
    steps_per_epoch=len(train_generator),
    validation_data=validation_generator,
    validation_steps=len(validation_generator),
    epochs=10
)

위의 코드에서는 ImageDataGenerator의 다양한 옵션을 설정하여 데이터를 증강하고, VGG16 모델을 사용하여 이미지 분류를 수행합니다. 이 코드를 실행하면 모델은 훈련 데이터를 사용하여 학습을 수행하고, 검증 데이터를 사용하여 성능을 평가합니다.

ImageDataGenerator를 사용하면 일반적으로 데이터셋의 다양성을 증가시키고, 모델의 일반화 성능을 향상시킬 수 있습니다. 이를 통해 딥러닝 모델을 더욱 효과적으로 학습시킬 수 있습니다.

#datascience #deeplearning