Python keras.preprocessing.image 模块,ImageDataGenerator() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用keras.preprocessing.image.ImageDataGenerator()

项目:Digit-Classifier    作者:ardamavi    | 项目源码 | 文件源码
def train_model(model, X, X_test, Y, Y_test):

    batch_size = 100
    epochs = 2

    checkpoints = []
    if not os.path.exists('Data/Checkpoints/'):
        os.makedirs('Data/Checkpoints/')
    checkpoints.append(ModelCheckpoint('Data/Checkpoints/best_weights.h5', monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=True, mode='auto', period=1))
    checkpoints.append(TensorBoard(log_dir='Data/Checkpoints/./logs', histogram_freq=0, write_graph=True, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None))

    # Creates live data:
    # For better yield. The duration of the training is extended.

    # If you don't want, use this:
    # model.fit(X, Y, batch_size=batch_size, epochs=epochs, validation_data=(X_test, Y_test), shuffle=True, callbacks=checkpoints)

    generated_data = ImageDataGenerator(featurewise_center=False, samplewise_center=False, featurewise_std_normalization=False, samplewise_std_normalization=False, zca_whitening=False, rotation_range=0,  width_shift_range=0.1, height_shift_range=0.1, horizontal_flip = True, vertical_flip = False)
    generated_data.fit(X)

    model.fit_generator(generated_data.flow(X, Y, batch_size=batch_size), steps_per_epoch=X.shape[0]/6, epochs=epochs, validation_data=(X_test, Y_test), callbacks=checkpoints)

    return model
项目:geom_rcnn    作者:asbroad    | 项目源码 | 文件源码
def data_augmentation(self):
        if self.verbose:
            print 'enhancing training set with data augmentation... '
            start_time = time.time()

        self.datagen = ImageDataGenerator(
            rotation_range=20,
            width_shift_range=0.3,
            height_shift_range=0.3,
            shear_range=0.2,
            fill_mode='nearest',
            horizontal_flip=True,
            vertical_flip=True
            )
        self.datagen.fit(self.xs_train)

        if self.verbose:
            end_time = time.time()
            self.print_time(start_time,end_time,'data augmentation')
项目:geom_rcnn    作者:asbroad    | 项目源码 | 文件源码
def data_augmentation(self):
        if self.verbose:
            print 'enhancing training set with data augmentation... '
            start_time = time.time()

        self.datagen = ImageDataGenerator(
            rotation_range=30,
            width_shift_range=0.2,
            height_shift_range=0.2,
            shear_range=0.2,
            fill_mode='nearest',
            horizontal_flip=True,
            vertical_flip=True
            )
        self.datagen.fit(self.xs_train)

        if self.verbose:
            end_time = time.time()
            self.print_time(start_time,end_time,'data augmentation')
项目:dogsVScats    作者:prajwalkr    | 项目源码 | 文件源码
def ms_valgen():
    validation_datagen = ImageDataGenerator().flow_from_directory(
        VAL_DIR,
        target_size=(max([w1,w2,w3]), max([h1,h2,h3])),
        batch_size=mini_batch_sz,
        class_mode='binary'
        )
    meanstdev = [pickle.load(open('meanSTDDEV320')), pickle.load(open('meanSTDDEV240')),
            pickle.load(open('meanSTDDEV400'))]

    while 1:
        X,y = validation_datagen.next()
        quad1, quad2 = sample(np.random.permutation(4),2)
        x1, y1 = getXY(quad1, w1)
        x2, y2 = getXY(quad2, w2, imsize=w1)
        X1 = submean(cropX(X, x=x1, y=y1, size=w1), meanstdev[0])
        X2 = submean(cropX(resizeX(X, w1), x=x2, y=y2, size=w2), meanstdev[1])
        X3 = submean(X, meanstdev[2])

        yield ([X1, X2, X3], y)
项目:dogsVScats    作者:prajwalkr    | 项目源码 | 文件源码
def DataGen():
    train_datagen = ImageDataGenerator(zoom_range=0.25, rotation_range=15.,
         channel_shift_range=25., width_shift_range=0.02, height_shift_range=0.02, 
         horizontal_flip=True, fill_mode='constant')

    validation_datagen = ImageDataGenerator(horizontal_flip=True)

    train_generator = train_datagen.flow_from_directory(
        TRAIN_DIR,
        target_size=(img_width, img_width),
        batch_size=mini_batch_sz,
        class_mode='binary')

    validation_generator = validation_datagen.flow_from_directory(
        VAL_DIR,target_size=(img_width, img_height),
        batch_size=mini_batch_sz,
        class_mode='binary', shuffle=False)

    return (standardized(train_generator, training=True, inception=False), 
        standardized(validation_generator, inception=False))
项目:Kaggle-Sea-Lions-Solution    作者:mrgloom    | 项目源码 | 文件源码
def train():
    model= get_model()

    x_train,y_train= load_data('kaggle_data/train_images_512x512')

    datagen = ImageDataGenerator(
        horizontal_flip=True,
        vertical_flip=True)

    model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size),
                steps_per_epoch=len(x_train) / batch_size, epochs=epochs)


    model.save(model_name+'_model.h5')
项目:aetros-cli    作者:aetros    | 项目源码 | 文件源码
def get_image_data_augmentor_from_dataset(dataset):
    from keras.preprocessing.image import ImageDataGenerator
    dataset_config = dataset['config']

    augShearRange = float(get_option(dataset_config, 'augShearRange', 0.1))
    augZoomRange = float(get_option(dataset_config, 'augZoomRange', 0.1))
    augHorizontalFlip = bool(get_option(dataset_config, 'augHorizontalFlip', False))
    augVerticalFlip = bool(get_option(dataset_config, 'augVerticalFlip', False))
    augRotationRange = float(get_option(dataset_config, 'augRotationRange', 0.2))

    return ImageDataGenerator(
        rotation_range=augRotationRange,
        shear_range=augShearRange,
        zoom_range=augZoomRange,
        horizontal_flip=augHorizontalFlip,
        vertical_flip=augVerticalFlip
    )
项目:ml-tools    作者:triagemd    | 项目源码 | 文件源码
def test_n_images_total(sample_dataset_dir):
    n_images_train = 18
    data_path = os.path.join(sample_dataset_dir, 'Training')

    # From Path
    n_total_images = cds.compute_n_images(data_path)
    assert n_images_train == n_total_images, 'N_images from data path fail'

    # From Generator
    train_datagen = image.ImageDataGenerator()

    generator = train_datagen.flow_from_directory(
        data_path,
        target_size=(10, 10),
        batch_size=10,
        shuffle=False,
        class_mode='sparse')
    n_total_images = cds.compute_n_images(data_path, generator)

    assert n_images_train == n_total_images, 'N_images from generator fail'


# Test to see if mean and std have 3 components (BGR) / They are np.float64 values
项目:cancer_nn    作者:tanmoyopenroot    | 项目源码 | 文件源码
def getDataGenObject(directory):

    datagen = ImageDataGenerator(
        rescale=1. / 255,
        # rotation_range = 40,
        # width_shift_range = 0.1,
        # height_shift_range = 0.1,
        # shear_range = 0.1,
        # zoom_range = 0.1,
        # horizontal_flip = True,
        # fill_mode = "nearest"
    )

    datagen_generator = datagen.flow_from_directory(
        directory,
        target_size=(img_height, img_width),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False
    )

    return datagen_generator
项目:cancer_nn    作者:tanmoyopenroot    | 项目源码 | 文件源码
def getDataGenObject(directory):

    datagen = ImageDataGenerator(
        rescale=1. / 255,
        # rotation_range = 40,
        # width_shift_range = 0.1,
        # height_shift_range = 0.1,
        # shear_range = 0.1,
        # zoom_range = 0.1,
        # horizontal_flip = True,
        # fill_mode = "nearest"
    )

    datagen_generator = datagen.flow_from_directory(
        directory,
        target_size=(img_height, img_width),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False
    )

    return datagen_generator
项目:cancer_nn    作者:tanmoyopenroot    | 项目源码 | 文件源码
def getDataGenObject ( directory, class_mode ):

    datagen = ImageDataGenerator(
        rescale = 1./255,
        # rotation_range = 40,
        # width_shift_range = 0.1,
        # height_shift_range = 0.1,
        # shear_range = 0.1,
        # zoom_range = 0.1,
        # horizontal_flip = True,
        # fill_mode = "nearest"
    )

    datagen_generator = datagen.flow_from_directory(
        directory,
        target_size = ( data["img_height"], data["img_width"] ),
        batch_size = data["batch_size"],
        class_mode = class_mode,
        shuffle = False
    )

    return datagen_generator
项目:cancer_nn    作者:tanmoyopenroot    | 项目源码 | 文件源码
def getDataGenObject(directory):

    datagen = ImageDataGenerator(
        rescale=1. / 255,
        # rotation_range = 40,
        # width_shift_range = 0.1,
        # height_shift_range = 0.1,
        # shear_range = 0.1,
        # zoom_range = 0.1,
        # horizontal_flip = True,
        # fill_mode = "nearest"
    )

    datagen_generator = datagen.flow_from_directory(
        directory,
        target_size=(img_height, img_width),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False
    )

    return datagen_generator
项目:bdcloud    作者:hanghang2333    | 项目源码 | 文件源码
def get_generator(featurewise_center=False, featurewise_std=False,
                  rotation=10, width_shift=0.05, height_shift=0.05,
                  zoom=[0.95, 1.05], horizontal=False, vertical=False):
    '''
    ???????????????????keras??
    '''
    datagen = ImageDataGenerator(
        featurewise_center=featurewise_center,
        featurewise_std_normalization=featurewise_std,
        rotation_range=rotation,
        width_shift_range=width_shift,
        height_shift_range=height_shift,
        zoom_range=zoom,
        horizontal_flip=horizontal,
        vertical_flip=vertical)
    return datagen
项目:bdcloud    作者:hanghang2333    | 项目源码 | 文件源码
def get_generator(featurewise_center=False, featurewise_std=False,
                  rotation=10, width_shift=0.05, height_shift=0.05,
                  zoom=[0.95, 1.05], horizontal=False, vertical=False):
    '''
    ???????????????????keras??
    '''
    datagen = ImageDataGenerator(
        featurewise_center=featurewise_center,
        featurewise_std_normalization=featurewise_std,
        rotation_range=rotation,
        width_shift_range=width_shift,
        height_shift_range=height_shift,
        zoom_range=zoom,
        horizontal_flip=horizontal,
        vertical_flip=vertical)
    return datagen
项目:dem    作者:hengyuan-hu    | 项目源码 | 文件源码
def train_with_data_augmentation(self, batch_size, num_epoch, lr_schedule):
        datagen = ImageDataGenerator(
            width_shift_range=0.125, # randomly shift images horizontally, fraction
            height_shift_range=0.125, # randomly shift images vertically, fraction
            horizontal_flip=True)

        opt = keras.optimizers.SGD(lr=lr_schedule(0), momentum=0.9, nesterov=True)
        callback_list = [LearningRateScheduler(lr_schedule)]
        self.ae.compile(optimizer=opt, loss='mse')
        assert False, 'seems that y is not augmented.'
        # history = self.ae.fit_generator(
        #     datagen.flow(
        #         self.dataset.train_xs,
        #         self.dataset.train_xs,
        #     nb_epoch=num_epoch,
        #     batch_size=batch_size,
        #     validation_data=(self.dataset.test_xs, self.dataset.test_xs),
        #     shuffle=True, callbacks=callback_list)
        self.history = history.history
项目:mnist-competition    作者:kkweon    | 项目源码 | 文件源码
def train_generator():
    """Train Generator for Keras

    Returns
    ----------
    train_gen : generator
        Yield augmented images

    val_gen : generator
        Yield non-augmented images
    """
    train_gen = ImageDataGenerator(
        rotation_range=30,
        shear_range=0.1,
        zoom_range=0.1,
        width_shift_range=0.2,
        height_shift_range=0.2,
    )

    val_gen = ImageDataGenerator()
    return train_gen, val_gen
项目:Sacred_Deep_Learning    作者:AAbercrombie0492    | 项目源码 | 文件源码
def test_images_generator(test_path):
    '''
    Creates a generator that pulls images from a test directory that contains
    shade vs sunny subdirectories.
    '''
    from keras.utils.np_utils import to_categorical
    from keras.preprocessing import image
    from keras.preprocessing.image import ImageDataGenerator
    from keras.applications.resnet50 import preprocess_input
    from sklearn.model_selection import train_test_split
    from image_utilities import load_images_from_directory, preprocess_input_resnet
    import numpy as np

    #load_images from from the train and val directories
    test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input_resnet)
    test_generator = test_datagen.flow_from_directory(directory=test_path,
                                                target_size=[224, 224],
                                                batch_size=26,
                                                class_mode='categorical')

    return test_datagen, test_generator
项目:five-video-classification-methods    作者:harvitronix    | 项目源码 | 文件源码
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
项目:dogsVScats    作者:prajwalkr    | 项目源码 | 文件源码
def ms_traingen():
    train_datagen = ImageDataGenerator(rotation_range=30.,
        horizontal_flip=True, fill_mode='reflect').flow_from_directory(
        TRAIN_DIR,
        target_size=(max([w1,w2,w3]), max([h1,h2,h3])),
        batch_size=mini_batch_sz,
        class_mode='binary'
        )
    meanstdev = [pickle.load(open('meanSTDDEV320')), pickle.load(open('meanSTDDEV240')),
            pickle.load(open('meanSTDDEV400'))]

    while 1:
        X,y = train_datagen.next()
        for i in xrange(len(X)):    
            if randint(0, 4)//4:
                X[i] = random_bright_shift(X[i])
            if randint(0, 4)//4:
                X[i] = random_contrast_shift(X[i])

        quad1, quad2 = sample(np.random.permutation(4),2)
        x1, y1 = getXY(quad1, w1)
        x2, y2 = getXY(quad2, w2, imsize=w1)
        X1 = submean(cropX(X, x=x1, y=y1, size=w1), meanstdev[0])
        X2 = submean(cropX(resizeX(X, w1), x=x2, y=y2, size=w2), meanstdev[1])
        X3 = submean(X, meanstdev[2])

        yield ([X1, X2, X3], y)
项目:Convolution-neural-networks-made-easy-with-keras    作者:mingruimingrui    | 项目源码 | 文件源码
def image_generator():
    return ImageDataGenerator(
        featurewise_center=False,  # set input mean to 0 over the dataset
        samplewise_center=False,  # set each sample mean to 0
        featurewise_std_normalization=False,  # divide inputs by std of the dataset
        samplewise_std_normalization=False,  # divide each input by its std
        zca_whitening=False,  # apply ZCA whitening
        rotation_range=0,  # randomly rotate images in the range (degrees, 0 to 180)
        zoom_range=0.1, # randomly zoom in on images by (percentage as fraction)
        width_shift_range=0.05,  # randomly shift images horizontally (fraction of total width)
        height_shift_range=0.05,  # randomly shift images vertically (fraction of total height)
        horizontal_flip=True,  # randomly flip images
        vertical_flip=False
    )
项目:keras-retinanet    作者:fizyr    | 项目源码 | 文件源码
def __init__(self, annotations_group, num_classes=0, image=None):
        self.annotations_group = annotations_group
        self.num_classes_      = num_classes
        self.image             = image
        super(SimpleGenerator, self).__init__(ImageDataGenerator(), group_method='none', shuffle_groups=False)
项目:painters    作者:inejc    | 项目源码 | 文件源码
def _train_generator():
    return ImageDataGenerator(
        featurewise_center=True,
        featurewise_std_normalization=True,
        rotation_range=180,
        zoom_range=0.2,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.3,
        horizontal_flip=True,
        vertical_flip=True,
        fill_mode='reflect')
项目:painters    作者:inejc    | 项目源码 | 文件源码
def _val_generator():
    return ImageDataGenerator(
        featurewise_center=True,
        featurewise_std_normalization=True)
项目:hyperas    作者:maxpumperla    | 项目源码 | 文件源码
def data():
    nb_classes = 10
    # the data, shuffled and split between train and test sets
    (X_train, y_train), (X_test, y_test) = cifar10.load_data()
    print('X_train shape:', X_train.shape)
    print(X_train.shape[0], 'train samples')
    print(X_test.shape[0], 'test samples')

    # convert class vectors to binary class matrices
    Y_train = np_utils.to_categorical(y_train, nb_classes)
    Y_test = np_utils.to_categorical(y_test, nb_classes)

    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    X_train /= 255
    X_test /= 255

    # this will do preprocessing and realtime data augmentation
    datagen = ImageDataGenerator(
        featurewise_center=False,  # set input mean to 0 over the dataset
        samplewise_center=False,  # set each sample mean to 0
        featurewise_std_normalization=False,  # divide inputs by std of the dataset
        samplewise_std_normalization=False,  # divide each input by its std
        zca_whitening=False,  # apply ZCA whitening
        rotation_range=0,  # randomly rotate images in the range (degrees, 0 to 180)
        width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)
        height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)
        horizontal_flip=True,  # randomly flip images
        vertical_flip=False)  # randomly flip images

    # compute quantities required for featurewise normalization
    # (std, mean, and principal components if ZCA whitening is applied)
    datagen.fit(X_train)

    return datagen, X_train, Y_train, X_test, Y_test
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None):
        # Initialize member variables
        self.dataset = dataset
        self.augmentation_params = augmentation_params
        self.N = len(self.dataset.train_data) * 10 if N is None else N
        assert len(self.dataset.shape) == 3

        # Allocate space for the augmented data
        self._x = np.memmap(
            TemporaryFile(),
            dtype=np.float32,
            shape=(self.N,) + self.dataset.shape
        )
        self._y = np.zeros((self.N, self.dataset.output_size))

        # Train a generator and generate all the data
        generator = ImageDataGenerator(**self.augmentation_params)
        x, y = self.dataset.train_data[:]
        generator.fit(x)
        start = 0
        for bx, by in generator.flow(x, y, batch_size=128):
            end = min(self.N, start+len(bx))
            self._x[start:end] = bx[:end-start]
            self._y[start:end] = by[:end-start]

            start = end
            if start >= self.N:
                break
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None, random_state=0,
                 cache_size=None):
        # Initialize some member variables
        self.dataset = dataset
        self.generator = ImageDataGenerator(**augmentation_params)
        self.N = N or (len(self.dataset.train_data) * 10)
        self.random_state = random_state
        assert len(self.dataset.shape) == 3

        # Figure out the base images for each of the augmented ones
        self.idxs = np.random.choice(
            len(self.dataset.train_data),
            self.N
        )

        # Fit the generator
        self.generator.fit(self.dataset.train_data[:][0])

        # Standardize the test data
        self._x_test = np.copy(self.dataset.test_data[:][0])
        self._x_test = self.generator.standardize(self._x_test)
        self._y_test = self.dataset.test_data[:][1]

        # Create an LRU cache to speed things up a bit for the transforms
        cache_size = cache_size or len(self.dataset.train_data)
        self.cache = OrderedDict([(-i,i) for i in range(cache_size)])
        self.cache_data = np.empty(
            shape=(cache_size,) + self.dataset.shape,
            dtype=np.float32
        )
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None):
        # Initialize member variables
        self.dataset = dataset
        self.augmentation_params = augmentation_params
        self.N = len(self.dataset.train_data) * 10 if N is None else N
        assert len(self.dataset.shape) == 3

        # Allocate space for the augmented data
        self._x = np.memmap(
            TemporaryFile(),
            dtype=np.float32,
            shape=(self.N,) + self.dataset.shape
        )
        self._y = np.zeros((self.N, self.dataset.output_size))

        # Train a generator and generate all the data
        generator = ImageDataGenerator(**self.augmentation_params)
        x, y = self.dataset.train_data[:]
        generator.fit(x)
        start = 0
        for bx, by in generator.flow(x, y, batch_size=128):
            end = min(self.N, start+len(bx))
            self._x[start:end] = bx[:end-start]
            self._y[start:end] = by[:end-start]

            start = end
            if start >= self.N:
                break
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None, random_state=0,
                 cache_size=None):
        # Initialize some member variables
        self.dataset = dataset
        self.generator = ImageDataGenerator(**augmentation_params)
        self.N = N or (len(self.dataset.train_data) * 10)
        self.random_state = random_state
        assert len(self.dataset.shape) == 3

        # Figure out the base images for each of the augmented ones
        self.idxs = np.random.choice(
            len(self.dataset.train_data),
            self.N
        )

        # Fit the generator
        self.generator.fit(self.dataset.train_data[:][0])

        # Standardize the test data
        self._x_test = np.copy(self.dataset.test_data[:][0])
        self._x_test = self.generator.standardize(self._x_test)
        self._y_test = self.dataset.test_data[:][1]

        # Create an LRU cache to speed things up a bit for the transforms
        cache_size = cache_size or len(self.dataset.train_data)
        self.cache = OrderedDict([(-i,i) for i in range(cache_size)])
        self.cache_data = np.empty(
            shape=(cache_size,) + self.dataset.shape,
            dtype=np.float32
        )
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None):
        # Initialize member variables
        self.dataset = dataset
        self.augmentation_params = augmentation_params
        self.N = len(self.dataset.train_data) * 10 if N is None else N
        assert len(self.dataset.shape) == 3

        # Allocate space for the augmented data
        self._x = np.memmap(
            TemporaryFile(),
            dtype=np.float32,
            shape=(self.N,) + self.dataset.shape
        )
        self._y = np.zeros((self.N, self.dataset.output_size))

        # Train a generator and generate all the data
        generator = ImageDataGenerator(**self.augmentation_params)
        x, y = self.dataset.train_data[:]
        generator.fit(x)
        start = 0
        for bx, by in generator.flow(x, y, batch_size=128):
            end = min(self.N, start+len(bx))
            self._x[start:end] = bx[:end-start]
            self._y[start:end] = by[:end-start]

            start = end
            if start >= self.N:
                break
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None):
        # Initialize member variables
        self.dataset = dataset
        self.augmentation_params = augmentation_params
        self.N = len(self.dataset.train_data) * 10 if N is None else N
        assert len(self.dataset.shape) == 3

        # Allocate space for the augmented data
        self._x = np.memmap(
            TemporaryFile(),
            dtype=np.float32,
            shape=(self.N,) + self.dataset.shape
        )
        self._y = np.zeros((self.N, self.dataset.output_size))

        # Train a generator and generate all the data
        generator = ImageDataGenerator(**self.augmentation_params)
        x, y = self.dataset.train_data[:]
        generator.fit(x)
        start = 0
        for bx, by in generator.flow(x, y, batch_size=128):
            end = min(self.N, start+len(bx))
            self._x[start:end] = bx[:end-start]
            self._y[start:end] = by[:end-start]

            start = end
            if start >= self.N:
                break
项目:importance-sampling    作者:idiap    | 项目源码 | 文件源码
def __init__(self, dataset, augmentation_params, N=None, random_state=0,
                 cache_size=None):
        # Initialize some member variables
        self.dataset = dataset
        self.generator = ImageDataGenerator(**augmentation_params)
        self.N = N or (len(self.dataset.train_data) * 10)
        self.random_state = random_state
        assert len(self.dataset.shape) == 3

        # Figure out the base images for each of the augmented ones
        self.idxs = np.random.choice(
            len(self.dataset.train_data),
            self.N
        )

        # Fit the generator
        self.generator.fit(self.dataset.train_data[:][0])

        # Standardize the test data
        self._x_test = np.copy(self.dataset.test_data[:][0])
        self._x_test = self.generator.standardize(self._x_test)
        self._y_test = self.dataset.test_data[:][1]

        # Create an LRU cache to speed things up a bit for the transforms
        cache_size = cache_size or len(self.dataset.train_data)
        self.cache = OrderedDict([(-i,i) for i in range(cache_size)])
        self.cache_data = np.empty(
            shape=(cache_size,) + self.dataset.shape,
            dtype=np.float32
        )
项目:pytorch-deform-conv    作者:oeway    | 项目源码 | 文件源码
def get_gen(set_name, batch_size, translate, scale,
            shuffle=True):
    if set_name == 'train':
        (X, Y), _ = get_mnist_dataset()
    elif set_name == 'test':
        _, (X, Y) = get_mnist_dataset()

    image_gen = ImageDataGenerator(
        zoom_range=scale,
        width_shift_range=translate,
        height_shift_range=translate
    )
    gen = image_gen.flow(X, Y, batch_size=batch_size, shuffle=shuffle)
    return gen
项目:tsnet    作者:coxlab    | 项目源码 | 文件源码
def augment(dataset='mnist'):

    if   dataset == 'mnist'  : return ImageDataGenerator(width_shift_range=0.1, height_shift_range=0.1)
    elif dataset == 'cifar10': return ImageDataGenerator(width_shift_range=0.1, height_shift_range=0.1, horizontal_flip=True)
    elif dataset == 'svhn2'  : return ImageDataGenerator(width_shift_range=0.1, height_shift_range=0.1)
    else: raise ValueError(dataset)
项目:Face_Recognition    作者:AkiraXD0712    | 项目源码 | 文件源码
def train(self, dataset, nb_epoch, batch_size, data_augmentation):
        # sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
        self.model.compile(loss='categorical_crossentropy',
                           optimizer='SGD',
                           metrics=['accuracy'])
        if not data_augmentation:
            print('<--------------------Not using data augmentation-------------------->')
            self.model.fit(dataset.x_train, dataset.y_train,
                           batch_size=batch_size,
                           epochs=nb_epoch,
                           validation_data=(dataset.x_valid, dataset.y_valid),
                           shuffle=True)
        else:
            print('<--------------------Using real-time data augmentation-------------------->')
            # do pre-processing and real-time data augmentation
            datagen = ImageDataGenerator(
                featurewise_center=False,             # set input mean to 0 over the dataset
                samplewise_center=False,              # set each sample mean to 0
                featurewise_std_normalization=False,  # divide inputs by std of the dataset
                samplewise_std_normalization=False,   # divide each input by its std
                zca_whitening=False,                  # apply ZCA whitening
                rotation_range=20,                     # randomly rotate images in the range (degrees, 0 to 180)
                width_shift_range=0.2,                # randomly shift images horizontally (fraction of total width)
                height_shift_range=0.2,               # randomly shift images vertically (fraction of total height)
                horizontal_flip=True,                 # randomly flip images
                vertical_flip=False)                  # randomly flip images

            # compute quantities required for feature wise normalization
            # (std, mean, and principal components if ZCA whitening is applied)
            datagen.fit(dataset.x_train)

            # fit the model on the batches generated by datagen.flow()
            self.model.fit_generator(datagen.flow(dataset.x_train, dataset.y_train, batch_size=batch_size),
                                     steps_per_epoch=dataset.x_train.shape[0],
                                     epochs=nb_epoch,
                                     validation_data=(dataset.x_valid, dataset.y_valid))
项目:keras-surgeon    作者:BenWhetton    | 项目源码 | 文件源码
def save_bottleneck_features():
    # build the Inception V3 network
    model = inception_v3.InceptionV3(include_top=False,
                                     weights='imagenet',
                                     input_tensor=None,
                                     input_shape=None,
                                     pooling='avg')

    # Save the bottleneck features for the training data set
    datagen = ImageDataGenerator(preprocessing_function=
                                 inception_v3.preprocess_input)
    generator = datagen.flow_from_directory(train_data_dir,
                                            target_size=(img_width, img_height),
                                            batch_size=batch_size,
                                            class_mode='sparse',
                                            shuffle=False)
    features = model.predict_generator(generator, nb_train_samples // batch_size)
    labels = np.eye(generator.num_class, dtype='uint8')[generator.classes]
    labels = labels[0:(nb_train_samples // batch_size) * batch_size]
    np.save(open(output_dir+'bottleneck_features_train.npy', 'wb'), features)
    np.save(open(output_dir+'bottleneck_labels_train.npy', 'wb'), labels)

    # Save the bottleneck features for the validation data set
    generator = datagen.flow_from_directory(validation_data_dir,
                                            target_size=(img_width, img_height),
                                            batch_size=batch_size,
                                            class_mode=None,
                                            shuffle=False)
    features = model.predict_generator(generator, nb_validation_samples // batch_size)
    labels = np.eye(generator.num_class, dtype='uint8')[generator.classes]
    labels = labels[0:(nb_validation_samples // batch_size) * batch_size]
    np.save(open(output_dir+'bottleneck_features_validation.npy', 'wb'), features)
    np.save(open(output_dir+'bottleneck_labels_validation.npy', 'wb'), labels)
项目:OCR-Handwritten-Text    作者:iitmcvg    | 项目源码 | 文件源码
def get_batches(path, gen=image.ImageDataGenerator(), shuffle=True, batch_size=8, class_mode='categorical'):
        return gen.flow_from_directory(path, target_size=(32,32),
                class_mode=class_mode, shuffle=shuffle, batch_size=batch_size)
项目:keras-customized    作者:ambrite    | 项目源码 | 文件源码
def test_image_data_generator(self):
        for test_images in self.all_test_images:
            img_list = []
            for im in test_images:
                img_list.append(image.img_to_array(im)[None, ...])

            images = np.vstack(img_list)
            generator = image.ImageDataGenerator(
                featurewise_center=True,
                samplewise_center=True,
                featurewise_std_normalization=True,
                samplewise_std_normalization=True,
                zca_whitening=True,
                rotation_range=90.,
                width_shift_range=0.1,
                height_shift_range=0.1,
                shear_range=0.5,
                zoom_range=0.2,
                channel_shift_range=0.,
                fill_mode='nearest',
                cval=0.5,
                horizontal_flip=True,
                vertical_flip=True)
            generator.fit(images, augment=True)

            tmp_folder = tempfile.mkdtemp(prefix='test_images')
            for x, y in generator.flow(images, np.arange(images.shape[0]),
                                       shuffle=True, save_to_dir=tmp_folder):
                assert x.shape[1:] == images.shape[1:]
                break
            shutil.rmtree(tmp_folder)
项目:keras-customized    作者:ambrite    | 项目源码 | 文件源码
def test_image_data_generator_invalid_data(self):
        generator = image.ImageDataGenerator(
            featurewise_center=True,
            samplewise_center=True,
            featurewise_std_normalization=True,
            samplewise_std_normalization=True,
            zca_whitening=True,
            dim_ordering='tf')
        # Test fit with invalid data
        with pytest.raises(ValueError):
            x = np.random.random((3, 10, 10))
            generator.fit(x)
        with pytest.raises(ValueError):
            x = np.random.random((32, 3, 10, 10))
            generator.fit(x)
        with pytest.raises(ValueError):
            x = np.random.random((32, 10, 10, 5))
            generator.fit(x)
        # Test flow with invalid data
        with pytest.raises(ValueError):
            x = np.random.random((32, 10, 10, 5))
            generator.flow(np.arange(x.shape[0]))
        with pytest.raises(ValueError):
            x = np.random.random((32, 10, 10))
            generator.flow(np.arange(x.shape[0]))
        with pytest.raises(ValueError):
            x = np.random.random((32, 3, 10, 10))
            generator.flow(np.arange(x.shape[0]))
项目:keras-customized    作者:ambrite    | 项目源码 | 文件源码
def test_image_data_generator_fit(self):
        generator = image.ImageDataGenerator(
            featurewise_center=True,
            samplewise_center=True,
            featurewise_std_normalization=True,
            samplewise_std_normalization=True,
            zca_whitening=True,
            dim_ordering='tf')
        # Test grayscale
        x = np.random.random((32, 10, 10, 1))
        generator.fit(x)
        # Test RBG
        x = np.random.random((32, 10, 10, 3))
        generator.fit(x)
        generator = image.ImageDataGenerator(
            featurewise_center=True,
            samplewise_center=True,
            featurewise_std_normalization=True,
            samplewise_std_normalization=True,
            zca_whitening=True,
            dim_ordering='th')
        # Test grayscale
        x = np.random.random((32, 1, 10, 10))
        generator.fit(x)
        # Test RBG
        x = np.random.random((32, 3, 10, 10))
        generator.fit(x)
项目:keras-customized    作者:ambrite    | 项目源码 | 文件源码
def test_directory_iterator(self):
        num_classes = 2
        tmp_folder = tempfile.mkdtemp(prefix='test_images')

        # create folders and subfolders
        paths = []
        for cl in range(num_classes):
            class_directory = 'class-{}'.format(cl)
            classpaths = [
                class_directory,
                os.path.join(class_directory, 'subfolder-1'),
                os.path.join(class_directory, 'subfolder-2'),
                os.path.join(class_directory, 'subfolder-1', 'sub-subfolder')
            ]
            for path in classpaths:
                os.mkdir(os.path.join(tmp_folder, path))
            paths.append(classpaths)

        # save the images in the paths
        count = 0
        filenames = []
        for test_images in self.all_test_images:
            for im in test_images:
                # rotate image class
                im_class = count % num_classes
                # rotate subfolders
                classpaths = paths[im_class]
                filename = os.path.join(classpaths[count % len(classpaths)], 'image-{}.jpg'.format(count))
                filenames.append(filename)
                im.save(os.path.join(tmp_folder, filename))
                count += 1

        # create iterator
        generator = image.ImageDataGenerator()
        dir_iterator = generator.flow_from_directory(tmp_folder)

        # check number of classes and images
        assert(len(dir_iterator.class_indices) == num_classes)
        assert(len(dir_iterator.classes) == count)
        assert(sorted(dir_iterator.filenames) == sorted(filenames))
        shutil.rmtree(tmp_folder)
项目:deform-conv    作者:felixlaumon    | 项目源码 | 文件源码
def get_gen(set_name, batch_size, translate, scale,
            shuffle=True):
    if set_name == 'train':
        (X, Y), _ = get_mnist_dataset()
    elif set_name == 'test':
        _, (X, Y) = get_mnist_dataset()

    image_gen = ImageDataGenerator(
        zoom_range=scale,
        width_shift_range=translate,
        height_shift_range=translate
    )
    gen = image_gen.flow(X, Y, batch_size=batch_size, shuffle=shuffle)
    return gen
项目:KGNet    作者:KevinGong2013    | 项目源码 | 文件源码
def trainnetwork():

    train_data_gen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.4,
        horizontal_flip=False)

    test_data_gen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.3,
        zoom_range=0.3,
        horizontal_flip=False)

    train_generator = train_data_gen.flow_from_directory(
                                                        'data/train',
                                                        # classes=hanzi,
                                                        target_size=(48, 48), 
                                                        color_mode='grayscale',
                                                        # save_to_dir='data/debug', 
                                                        save_format='png')

    test_generator = test_data_gen.flow_from_directory(
                                                    'data/test',
                                                    target_size=(48, 48),
                                                    # classes=hanzi,
                                                    color_mode='grayscale', 
                                                    save_format='png')

    model = genmodel()

    nb = len(hanzi)
    weight = ((nb - np.arange(nb)) / nb + 1.0)**3

    history = model.fit_generator(train_generator, samples_per_epoch = 40872*2, nb_epoch = 15, verbose=1)

    score = model.evaluate_generator(test_generator, val_samples=1703)
    print('Test score:', score[0])
    print('Test accuracy:', score[1])

    model.save_weights('weights.model')
项目:ml-tools    作者:triagemd    | 项目源码 | 文件源码
def create_keras_generator(data_path, batch_size=10, target_size=(10, 10)):
    # Keras image loaders
    train_datagen = image.ImageDataGenerator()

    generator = train_datagen.flow_from_directory(
        data_path,
        target_size=target_size,
        batch_size=batch_size,
        shuffle=False,
        class_mode='sparse')

    return generator
项目:ml-tools    作者:triagemd    | 项目源码 | 文件源码
def test_compute_mean(sample_dataset_dir):
    data_path = os.path.join(sample_dataset_dir, 'Training')
    n_components = 3

    mean, std = cds.compute_mean_std(data_path, target_size=(100, 100), batch_size=10)

    assert n_components == mean.shape[0], 'N_components mean from data path fail'
    assert n_components == std.shape[0], 'N_components std from data path fail'

    assert isinstance(mean[0], np.float64), "Wrong type!"

    # From Generator
    train_datagen = image.ImageDataGenerator()

    generator = train_datagen.flow_from_directory(
        data_path,
        target_size=(10, 10),
        batch_size=10,
        shuffle=False,
        class_mode='sparse')

    mean, std = cds.compute_mean_std(data_path, target_size=(100, 100), batch_size=10, generator=generator)

    assert n_components == mean.shape[0], 'N_components mean from generator fail'

    assert isinstance(mean[0], np.float64), "Wrong type!"


# Test to check if it is returning the correct number of classes and that the numbers are ints
项目:ml-tools    作者:triagemd    | 项目源码 | 文件源码
def test_compute_class_histogram(sample_dataset_dir):
    data_path = os.path.join(sample_dataset_dir, 'Training')
    n_classes = 2

    class_hist = cds.create_class_histogram(data_path)

    assert n_classes == class_hist.shape[0], 'N_classes from data path fail'

    assert isinstance(class_hist[0], np.int64), "Wrong type!, should be int"

    # From Generator
    train_datagen = image.ImageDataGenerator()

    generator = train_datagen.flow_from_directory(
        data_path,
        target_size=(10, 10),
        batch_size=10,
        shuffle=False,
        class_mode='sparse')

    class_hist = cds.create_class_histogram(data_path, generator)

    assert n_classes == class_hist.shape[0], 'N_classes from generator fail'

    assert isinstance(class_hist[0], np.int64), "Wrong type!, should be int"


# Test to see if mean and std have 3 components (BGR) / They are np.float64 values , class hist and n_total_img work
项目:ml-tools    作者:triagemd    | 项目源码 | 文件源码
def test_compute_stats(sample_dataset_dir):
    data_path = os.path.join(sample_dataset_dir, 'Training')
    n_components = 3
    n_classes = 2
    n_images_train = 18

    dict_stats = cds.compute_stats(data_path, target_size=(100, 100), batch_size=10)

    assert n_components == dict_stats['mean'].shape[0], 'N_components mean from data path fail'
    assert n_components == dict_stats['std'].shape[0], 'N_components std from data path fail'

    assert isinstance(dict_stats['mean'][0], np.float64), "Wrong type!"

    assert n_classes == dict_stats['class_histogram'].shape[0], 'N_classes from generator fail'

    assert isinstance(dict_stats['class_histogram'][0], np.int64), "Wrong type!, should be int"

    assert n_images_train == dict_stats['n_images'], 'N_images from data path fail'

    # From Generator
    train_datagen = image.ImageDataGenerator()

    generator = train_datagen.flow_from_directory(
        data_path,
        target_size=(10, 10),
        batch_size=10,
        shuffle=False,
        class_mode='sparse')

    dict_stats = cds.compute_stats(data_path, target_size=(100, 100), batch_size=10, generator=generator)

    assert n_components == dict_stats['mean'].shape[0], 'N_components mean from generator fail'
    assert n_components == dict_stats['std'].shape[0], 'N_components std from generator fail'

    assert isinstance(dict_stats['mean'][0], np.float64), "Wrong type!"

    assert n_classes == dict_stats['class_histogram'].shape[0], 'N_classes from generator fail'

    assert isinstance(dict_stats['class_histogram'][0], np.int64), "Wrong type!, should be int"

    assert n_images_train == dict_stats['n_images'], 'N_images from generator fail'
项目:keras-face-attribute-manipulation    作者:wkcw    | 项目源码 | 文件源码
def get_gen(class_dir, BATCH_SIZE):
    train_datagen = ImageDataGenerator(
        rescale=1. / 255,
        horizontal_flip=False)
    train_gen = train_datagen.flow_from_directory(
        "data/%s"%class_dir,
        target_size=(img_size, img_size),
        batch_size=BATCH_SIZE,
        class_mode="categorical")
    return train_gen
项目:Hand-Gesture-Recognizer    作者:yugrocks    | 项目源码 | 文件源码
def realtime():
    #initialize preview
    cv2.namedWindow("preview")
    vc = cv2.VideoCapture(0)

    if vc.isOpened(): #get the first frame
        rval, frame = vc.read()

    else:
        rval = False

    classes=["peace","punch","stop","thumbs_up"]

    while rval:
        frame=cv2.flip(frame,1)
        cv2.rectangle(frame,(300,200),(500,400),(0,255,0),1)
        cv2.putText(frame,"Place your hand in the green box.", (50,50), cv2.FONT_HERSHEY_PLAIN , 1, 255)
        cv2.putText(frame,"Press esc to exit.", (50,100), cv2.FONT_HERSHEY_PLAIN , 1, 255)

        cv2.imshow("preview", frame)
        frame=frame[200:400,300:500]
        #frame = cv2.resize(frame, (200,200))
        frame = cv2.cvtColor( frame, cv2.COLOR_RGB2GRAY)
        frame=frame.reshape((1,)+frame.shape)
        frame=frame.reshape(frame.shape+(1,))
        test_datagen = ImageDataGenerator(rescale=1./255)
        m=test_datagen.flow(frame,batch_size=1)
        y_pred=model.predict_generator(m,1)
        histarray2={'PEACE': y_pred[0][0], 'PUNCH': y_pred[0][1], 'STOP': y_pred[0][2], 'Thumbs Up': y_pred[0][3]}
        update(histarray2)
        print(classes[list(y_pred[0]).index(y_pred[0].max())])
        rval, frame = vc.read()
        key = cv2.waitKey(20)
        if key == 27: # exit on ESC
            break
    cv2.destroyWindow("preview")
    vc=None


#loading the model
项目:keras-mxnet-benchmarks    作者:sandeep-krishnamurthy    | 项目源码 | 文件源码
def train_func():
    if not data_augmentation:
        print('Not using data augmentation.')
        history = model.fit(X_train, Y_train,
                            batch_size=batch_size,
                            nb_epoch=nb_epoch,
                            validation_data=(X_test, Y_test),
                            shuffle=True)
    else:
        print('Using real-time data augmentation.')
        # This will do preprocessing and realtime data augmentation:
        datagen = ImageDataGenerator(
            featurewise_center=False,  # set input mean to 0 over the dataset
            samplewise_center=False,  # set each sample mean to 0
            featurewise_std_normalization=False,  # divide inputs by std of the dataset
            samplewise_std_normalization=False,  # divide each input by its std
            zca_whitening=False,  # apply ZCA whitening
            rotation_range=0,  # randomly rotate images in the range (degrees, 0 to 180)
            width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)
            height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)
            horizontal_flip=True,  # randomly flip images
            vertical_flip=False)  # randomly flip images

        # Compute quantities required for featurewise normalization
        # (std, mean, and principal components if ZCA whitening is applied).
        datagen.fit(X_train)

        # Fit the model on the batches generated by datagen.flow().
        history = model.fit_generator(datagen.flow(X_train, Y_train,
                                                   batch_size=batch_size),
                                      samples_per_epoch=X_train.shape[0],
                                      nb_epoch=nb_epoch,
                                      validation_data=(X_test, Y_test))
    ret_dict["training_accuracy"] = history.history['acc'][-1]
    ret_dict["test_accuracy"] = history.history['val_acc'][-1]
项目:keras-mxnet-benchmarks    作者:sandeep-krishnamurthy    | 项目源码 | 文件源码
def train_model():

    if not data_augmentation:
        print('Not using data augmentation.')
        history = model.fit(X_train, Y_train,
          batch_size=batch_size,
          nb_epoch=nb_epoch,
          validation_data=(X_test, Y_test),
          shuffle=True)
        profile_output['TRAIN_ACCURACY'] = history.history['acc'][-1]
    else:
        print('Using real-time data augmentation.')
        # This will do preprocessing and realtime data augmentation:
        datagen = ImageDataGenerator(
            featurewise_center=False,  # set input mean to 0 over the dataset
            samplewise_center=False,  # set each sample mean to 0
            featurewise_std_normalization=False,  # divide inputs by std of the dataset
            samplewise_std_normalization=False,  # divide each input by its std
            zca_whitening=False,  # apply ZCA whitening
            rotation_range=0,  # randomly rotate images in the range (degrees, 0 to 180)
            width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)
            height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)
            horizontal_flip=True,  # randomly flip images
            vertical_flip=False)  # randomly flip images

        # Compute quantities required for featurewise normalization
        # (std, mean, and principal components if ZCA whitening is applied).
        datagen.fit(X_train)

        # Fit the model on the batches generated by datagen.flow().
        history = model.fit_generator(datagen.flow(X_train, Y_train,
                                 batch_size=batch_size),
                    samples_per_epoch=X_train.shape[0],
                    nb_epoch=nb_epoch,
                    validation_data=(X_test, Y_test))
        profile_output['TRAIN_ACCURACY'] = history.history['acc'][-1]


# Calling training and profile memory usage