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