keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
zca_epsilon=1e-6,
rotation_range=0.,
width_shift_range=0.,
height_shift_range=0.,
shear_range=0.,
zoom_range=0.,
channel_shift_range=0.,
fill_mode='nearest',
cval=0.,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=K.image_data_format())
실시간 데이터 증가를 통해 텐서 이미지 데이터 batch를 발생시킵니다. 데이터는 (batch 내에서)무한히 순환됩니다.
인수
[lower, upper] = [1-zoom_range, 1+zoom_range]
.fill_mode = "constant"
일 때 경계 밖의 지점에 쓰이는 값입니다.channels_last
(기본값) 혹은 channels_first
중 택일합니다. 입력의 차원의 순서입니다. channels_last
는 입력 형태가 (sample, height, width, channels)
와 부합함을 뜻하고 channels_first
는 입력 형태가 (sample, channels, height, width)
와 부합함을 뜻합니다. ~/.keras/keras.json
의 Keras 구성 파일의 image_data_format
의 기본값입니다. 별도로 설정하지 않았다면, "channels_last" 입니다.메소드
featurewise_center
, featurewise_std_normalization
, zca_whitening
에만 필요합니다.
save_to_dir
이 설정된 경우에만 사용 가능합니다).save_to_dir
이 설정된 경우에만 사용 가능합니다).(x, y)
형의 튜플이며 x
는 이미지 데이터의 numpy 배열, y
는 상응하는 레이블의 numpy 배열입니다. 생성 루프는 무한하게 돌아갑니다.(height, width)
형태의 정수 튜플이며 기본값은 (256, 256)
입니다. 이미지가 찾은 모든 차원의 크기가 조정될 것입니다.['dogs', 'cats']
). 기본값은 None이며 이 경우, 클래스의 리스트는 directory
내의 서브디렉토리 이름 혹은 구조로부터 자동으로 추론되며 각 서브디렉토리는 다른 클래스로 취급됩니다(레이블 인덱스에 대응되는 클래스의 순서는 영문자-숫자 순을 따릅니다). 클래스 이름부터 클래스 인덱스에 이르기까지 대응되는 딕셔너리는 class_indices
속성으로부터 얻을 수 있습니다.model.predict_generator()
, model.evaluate_generator()
등을 사용하는 데에 유용한 이미지 데이터의 batch만 수확합니다). 이 경우에도 데이터가 directory
의 서브디렉토리 아래에 있어야 제대로 동작한다는 점에 주의하세요.save_to_dir
이 설정된 경우에만 사용 가능합니다).save_to_dir
이 설정된 경우에만 사용 가능합니다).예제:
(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)
# compute quantities required for featurewise normalization
# (std, mean, and principal components if ZCA whitening is applied)
datagen.fit(x_train)
# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),
steps_per_epoch=len(x_train) / 32, epochs=epochs)
# here's a more "manual" example
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(x, y)
를 사용하는 예제 입니다:
.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)
이미지와 마스크를 동시에 변형하는 예제입니다:
# we create two instances with the same arguments
data_gen_args = dict(featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=90.,
width_shift_range=0.1,
height_shift_range=0.1,
zoom_range=0.2)
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
# Provide the same seed and keyword arguments to the fit and flow methods
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)
image_generator = image_datagen.flow_from_directory(
'data/images',
class_mode=None,
seed=seed)
mask_generator = mask_datagen.flow_from_directory(
'data/masks',
class_mode=None,
seed=seed)
# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50)
이 문서는 Keras의 Image Preprocessing을 번역한 것입니다.