本文整理汇总了Python中keras.preprocessing.image.ImageDataGenerator.flow_from_directory方法的典型用法代码示例。如果您正苦于以下问题:Python ImageDataGenerator.flow_from_directory方法的具体用法?Python ImageDataGenerator.flow_from_directory怎么用?Python ImageDataGenerator.flow_from_directory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类keras.preprocessing.image.ImageDataGenerator
的用法示例。
在下文中一共展示了ImageDataGenerator.flow_from_directory方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_generators
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def get_generators():
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
horizontal_flip=True,
rotation_range=10.,
width_shift_range=0.2,
height_shift_range=0.2)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
os.path.join('data', 'train'),
target_size=(299, 299),
batch_size=32,
classes=data.classes,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
os.path.join('data', 'test'),
target_size=(299, 299),
batch_size=32,
classes=data.classes,
class_mode='categorical')
return train_generator, validation_generator
示例2: load_data_generator
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def load_data_generator(train_folderpath, mask_folderpath, img_size = (768, 768), mask_size=(768,768), batch_size=32):
"""
Returns a data generator with masks and training data specified by the directory paths given.
"""
data_gen_args = dict(
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True,
rotation_range=10,
zoom_range=0.2,
fill_mode="constant",
cval=0
)
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
seed = 42
image_generator = image_datagen.flow_from_directory(train_folderpath, class_mode=None,
target_size = img_size, seed=seed, color_mode = 'rgb', batch_size=batch_size)
mask_generator = mask_datagen.flow_from_directory(mask_folderpath, class_mode=None,
target_size = mask_size,seed=seed, color_mode='grayscale', batch_size=batch_size)
return zip(image_generator, mask_generator)
示例3: save_bottlebeck_features
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def save_bottlebeck_features():
datagen = ImageDataGenerator(rescale=1. / 255)
# build the VGG16 network
model = applications.VGG16(include_top=False, weights='imagenet')
generator = datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode=None,
shuffle=False)
bottleneck_features_train = model.predict_generator(
generator, nb_train_samples // batch_size)
np.save(open('bottleneck_features_train.npy', 'wb'),
bottleneck_features_train)
generator = datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode=None,
shuffle=False)
bottleneck_features_validation = model.predict_generator(
generator, nb_validation_samples // batch_size)
np.save(open('bottleneck_features_validation.npy', 'wb'),
bottleneck_features_validation)
示例4: _get_data_generators
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def _get_data_generators(img_width, img_height, labels):
train_datagen = ImageDataGenerator(
fill_mode="nearest",
horizontal_flip=True,
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
batch_size=32,
classes=labels,
target_size=(img_width, img_height),
class_mode="categorical")
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
batch_size=32,
classes=labels,
target_size=(img_width, img_height),
class_mode="categorical")
return train_generator, validation_generator
示例5: CNN
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def CNN(trainDir, validationDir, classNum):
model = Sequential()
model.add(Convolution2D(4, 3, 3, input_shape=(img_width, img_height, 1)))
model.add(Activation('relu'))
model.add(Convolution2D(4, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# layer
model.add(Convolution2D(8, 3, 3))
model.add(Activation('relu'))
model.add(Convolution2D(8, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# model.add(Convolution2D(16, 3, 3))
# model.add(Activation('relu'))
# model.add(MaxPooling2D(pool_size=(2, 2)))
# layer
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
# model.add(Dropout(0.5))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dropout(0.6))
model.add(Dense(classNum))
model.add(Activation('softmax'))
# test
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# this is the augmentation configuration we will use for training
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zca_whitening=True,
zoom_range=0.2,
horizontal_flip=False)
# this is the augmentation configuration we will use for testing:
# only rescaling
test_datagen = ImageDataGenerator(rescale=1./255, zca_whitening=True)
train_generator = train_datagen.flow_from_directory(
trainDir,
target_size=(img_width, img_height),
batch_size=32,
color_mode='grayscale',
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
validationDir,
target_size=(img_width, img_height),
batch_size=32,
color_mode='grayscale',
class_mode='categorical')
model.fit_generator(
train_generator,
samples_per_epoch=nb_train_samples,
nb_epoch=nb_epoch,
validation_data=validation_generator,
nb_val_samples=nb_validation_samples)
return model
示例6: train_model
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def train_model(self):
sgd=SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
self.model.compile(loss='categorical_crossentropy',
optimizer=sgd,
#optimizer='rmsprop',
metrics=['accuracy'])
#自动扩充训练样本
train_datagen = ImageDataGenerator(
rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip=True)
#归一化验证集
val_datagen = ImageDataGenerator(
rescale = 1./255)
eval_datagen = ImageDataGenerator(
rescale = 1./255)
#以文件分类名划分label
train_generator = train_datagen.flow_from_directory(
root_path+'/train',
target_size=(img_size,img_size),
color_mode='grayscale',
batch_size=batch_siz,
class_mode='categorical')
val_generator = val_datagen.flow_from_directory(
root_path+'/val',
target_size=(img_size,img_size),
color_mode='grayscale',
batch_size=batch_siz,
class_mode='categorical')
eval_generator = eval_datagen.flow_from_directory(
root_path+'/test',
target_size=(img_size,img_size),
color_mode='grayscale',
batch_size=batch_siz,
class_mode='categorical')
early_stopping = EarlyStopping(monitor='loss',patience=3)
history_fit=self.model.fit_generator(
train_generator,
steps_per_epoch=800/(batch_siz/32),#28709
nb_epoch=nb_epoch,
validation_data=val_generator,
validation_steps=2000,
#callbacks=[early_stopping]
)
# history_eval=self.model.evaluate_generator(
# eval_generator,
# steps=2000)
history_predict=self.model.predict_generator(
eval_generator,
steps=2000)
with open(root_path+'/model_fit_log','w') as f:
f.write(str(history_fit.history))
with open(root_path+'/model_predict_log','w') as f:
f.write(str(history_predict))
# print("%s: %.2f%%" % (self.model.metrics_names[1], history_eval[1] * 100))
print('model trained')
示例7: train
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def train():
"""Use fine-tuning to train a network on a new dataset"""
train_count = get_file_count(FLAGS.train_dir)
class_count = len(glob.glob(FLAGS.train_dir + "/*"))
val_count = get_file_count(FLAGS.val_dir)
epochs = int(FLAGS.epochs)
batch_size = int(FLAGS.batch_size)
target_size = (int(FLAGS.resolution), int(FLAGS.resolution))
train_datagen = ImageDataGenerator(
preprocessing_function=preprocess_input,
rotation_range=30,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
)
test_datagen = ImageDataGenerator(
preprocessing_function=preprocess_input,
rotation_range=30,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
)
train_generator = train_datagen.flow_from_directory(
FLAGS.train_dir,
target_size=target_size,
batch_size=batch_size
)
validation_generator = test_datagen.flow_from_directory(
FLAGS.val_dir,
target_size=target_size,
batch_size=batch_size
)
model = create_model(class_count)
model = freeze_layers(model)
early_stopping = EarlyStopping(monitor='val_loss', patience=2)
model.fit_generator(
train_generator,
steps_per_epoch=train_count/batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=val_count/batch_size,
class_weight='auto',
callbacks=[early_stopping]
)
model.save(FLAGS.output_model_file)
示例8: data_generator
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def data_generator(target_size):
train_datagen = ImageDataGenerator(rescale=1./255,
rotation_range=30,
zoom_range=0.2,
horizontal_flip=True)
valid_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(train_path, target_size=target_size,
batch_size=batch_size, class_mode='binary')
valid_generator = valid_datagen.flow_from_directory(valid_path, target_size=target_size,
batch_size=batch_size, class_mode='binary')
return train_generator, valid_generator
示例9: extract_features
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def extract_features(base_model, target_size, preprocess):
datagen = ImageDataGenerator(preprocessing_function=preprocess)
train_generator = datagen.flow_from_directory(train_path, target_size=target_size,
batch_size=batch_size, class_mode='binary', shuffle=False)
valid_generator = datagen.flow_from_directory(valid_path, target_size=target_size,
batch_size=batch_size, class_mode='binary', shuffle=False)
train_features = base_model.predict_generator(train_generator, train_generator.samples // batch_size, verbose=1)
valid_features = base_model.predict_generator(valid_generator, valid_generator.samples // batch_size, verbose=1)
features_name = '{0}_features.npz'.format(base_model.name)
np.savez(features_name,train=train_features, train_label=train_generator.classes,
valid=valid_features, valid_label=valid_generator.classes)
return features_name
示例10: base_model_finetuning
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def base_model_finetuning():
base_model = InceptionV3(weights='imagenet', include_top=False)
# add a global spatial average pooling layer
x = base_model.output
x = GlobalAveragePooling2D()(x)
# let's add a fully-connected layer
x = Dense(1024, activation='relu')(x)
predictions = Dense(8, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
"""f = open('structure.json', 'w')
f.write(model.to_json())
f.close()"""
# Freeze inception layers
for layer in base_model.layers:
layer.trainable = False
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
datagen = ImageDataGenerator(
rotation_range=30,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.2,
rescale=1. / 255,
zoom_range=(0.8, 1.1),
horizontal_flip=True,
vertical_flip=True,
fill_mode='nearest'
)
datagen2 = ImageDataGenerator(
rescale=1. / 255
)
gen1 = datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=16)
gen2 = datagen2.flow_from_directory(validation_data_dir, target_size=(img_width, img_height),
batch_size=batch_size)
snapshot_ens=SnapshotCallbackBuilder(nb_epochs=20,nb_snapshots=5)
model.fit_generator(gen1,
steps_per_epoch=nb_train_samples // 16,
epochs=20,
validation_data=gen2,
validation_steps=nb_validation_samples // 16,
callbacks=snapshot_ens.get_callbacks(model_prefix='inception_ens')
)
示例11: prepare_generators
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def prepare_generators(self):
training_data_generator = ImageDataGenerator(preprocessing_function=preprocess_input)
validation_data_generator = ImageDataGenerator(preprocessing_function=preprocess_input)
self.training_generator = training_data_generator.flow_from_directory(
"datasets/current/training",
target_size=(self.input_shape[0], self.input_shape[1]),
batch_size=32
)
self.validation_generator = validation_data_generator.flow_from_directory(
"datasets/current/validation",
target_size=(self.input_shape[0], self.input_shape[1]),
batch_size=32
)
示例12: predict_labels
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def predict_labels(model):
"""writes test image labels and predictions to csv"""
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
test_data_dir,
target_size=(img_height, img_width),
batch_size=32,
shuffle=False,
class_mode=None)
base_path = "../data/test/test/"
with open("prediction.csv", "w") as f:
p_writer = csv.writer(f, delimiter=',', lineterminator='\n')
for _, _, imgs in os.walk(base_path):
for im in imgs:
pic_id = im.split(".")[0]
img = load_img(base_path + im)
img = imresize(img, size=(img_height, img_width))
test_x = img_to_array(img).reshape(3, img_height, img_width)
test_x = test_x.reshape((1,) + test_x.shape)
test_generator = test_datagen.flow(test_x,
batch_size=1,
shuffle=False)
prediction = model.predict_generator(test_generator, 1)[0][0]
p_writer.writerow([pic_id, prediction])
示例13: autoGenerator
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def autoGenerator():
image_loader = ImageDataGenerator(rescale=1./255.)
loader = image_loader.flow_from_directory("/data/tiles/", color_mode='rgb',batch_size=batch_size, target_size=(256,256), class_mode='binary')
for batch in loader:
if np.isnan(batch[0]).any():
print 'problem with batch'
yield (batch[0],np.copy(batch[0]))
示例14: prepare_data
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def prepare_data(self):
train_data_dir = dir_path + "/card_training"
validation_data_dir = dir_path + "/card_testing"
test_data_dir = validation_data_dir
img_height = 50
img_width = 15
batch_size = 52
train_datagen = ImageDataGenerator(
rescale=0.02,
shear_range=0.01,
zoom_range=0.02,
horizontal_flip=False)
validation_datagen = ImageDataGenerator(
rescale=0.01,
shear_range=0.05,
zoom_range=0.05,
horizontal_flip=False)
test_datagen = ImageDataGenerator(
rescale=0.02)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
color_mode='rgb')
validation_generator = validation_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
color_mode='rgb')
test_generator = test_datagen.flow_from_directory(
test_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
color_mode='rgb')
return train_generator, validation_generator, test_generator
示例15: getDataGenerator
# 需要导入模块: from keras.preprocessing.image import ImageDataGenerator [as 别名]
# 或者: from keras.preprocessing.image.ImageDataGenerator import flow_from_directory [as 别名]
def getDataGenerator(dir, img_width, img_height, batch_size):
datagen = ImageDataGenerator(rescale=1./255)
generator = datagen.flow_from_directory(
dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
return generator