본문 바로가기
Python Library/Keras

[Keras] ImageDataGenerator

by goatlab 2022. 8. 20.
728x90
반응형
SMALL

ImageDataGenerator

 

tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=False,
    samplewise_center=False,
    featurewise_std_normalization=False,
    samplewise_std_normalization=False,
    zca_whitening=False,
    zca_epsilon=1e-06,
    rotation_range=0,
    width_shift_range=0.0,
    height_shift_range=0.0,
    brightness_range=None,
    shear_range=0.0,
    zoom_range=0.0,
    channel_shift_range=0.0,
    fill_mode='nearest',
    cval=0.0,
    horizontal_flip=False,
    vertical_flip=False,
    rescale=None,
    preprocessing_function=None,
    data_format=None,
    validation_split=0.0,
    interpolation_order=1,
    dtype=None
)
horizontal_flip 무작위로 입력을 수평으로 뒤집는다.
vertical_flip 무작위로 입력을 수직으로 뒤집는다.
rescale 스케일링 팩터, 기본값은 없음이다. None 또는 0이면 크기 조정이 적용되지 않고, 그렇지 않으면 데이터에 제공된 값을 곱한다 (다른 모든 변환을 적용한 후).
preprocessing_function 각 입력에 적용될 기능이다. 이 기능은 이미지 크기가 조정되고 확대된 후에 실행된다. 함수는 하나의 인수, 즉 하나의 이미지 (랭크 3의 Numpy 텐서)를 취해야 하며 동일한 모양의 Numpy 텐서를 출력해야 한다.
data_format 기본적으로 Keras 구성 파일의 이미지 데이터 형식 ("channels_first" 또는 "channels_last"). "channels_last" 모드는 이미지가 모양을 가져야 함을 의미하고 "channels_first" 모드는 이미지가 모양을 가져야 함을 의미한다. 설정하지 않으면 "channels_last"가 된다.
validation_split 검증을 위해 예약된 이미지의 비율 (엄밀히 0과 1 사이)
dtype 생성된 배열에 사용할 형식

 

validation data 생성

 

train_datagen = ImageDataGenerator(rescale=1./255,
                                   rotation_range=20, width_shift_range=0.2,
                                   height_shift_range=0.2, horizontal_flip=True,
                                   validation_split=0.2)
                                   
val_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)

train_data = train_datagen.flow_from_directory(train_path,
                                               target_size=(224, 224), color_mode='rgb',
                                               batch_size=16, class_mode='categorical',
                                               subset = 'training')

val_data = val_datagen.flow_from_directory(train_path, target_size=(224, 224),
                                           color_mode='rgb', batch_size=16,
                                           class_mode='categorical',
                                           subset = 'validation')

 

flow(x, y)

 

(x_train, y_train), (x_test, y_test) = cifar10.load_data()
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)

datagen = ImageDataGenerator(
    featurewise_center=True,
    featurewise_std_normalization=True,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True)

# 특성별 정규화에 필요한 수치를 계산
# (영위상 성분분석 백색화를 적용하는 경우, 표준편차, 평균, 그리고 주성분이 이에 해당)
datagen.fit(x_train)

# 실시간 데이터 증강을 사용해 배치에 대해서 모델 학습:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),
                    steps_per_epoch=len(x_train) / 32, epochs=epochs)

# "수동"인 예시
for e in range(epochs):
    print('Epoch', e)
    batches = 0
    for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):
        model.fit(x_batch, y_batch)
        batches += 1
        if batches >= len(x_train) / 32:
            # we need to break the loop by hand because
            # the generator loops indefinitely
            break

 

flow_from_directory(directory)

 

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

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'data/train',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
        'data/validation',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)

 

https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator

 

tf.keras.preprocessing.image.ImageDataGenerator  |  TensorFlow v2.9.1

Generate batches of tensor image data with real-time data augmentation.

www.tensorflow.org

 

728x90
반응형
LIST