Image Augmentation in Python - Part 2

In [2]:
# How to do random shifts in image features using Python 
def Snippet_357(): 

    print()
    print(format('How to do random shifts in image features using Python ','*^82'))
    
    import time
    start_time = time.time()
    from keras.datasets import mnist
    from keras.preprocessing.image import ImageDataGenerator    
    import matplotlib.pyplot as plt
    
    # load data
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    
    # reshape to be [samples][width][height][channels]
    X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
    X_test  = X_test.reshape(X_test.shape[0],28, 28, 1)
    
    # convert from int to float
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    
    # define data preparation
    datagen = ImageDataGenerator(width_shift_range=0.2, height_shift_range=0.2)
    
    # fit parameters from data
    datagen.fit(X_train)
    
    # configure batch size and retrieve one batch of images
    for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9):
        # create a grid of 3x3 images
        for i in range(0, 9):
            plt.subplot(330 + 1 + i)
            plt.imshow(X_batch[i].reshape(28, 28), cmap=plt.get_cmap('gray'))
        # show the plot
        plt.show()
        break

    print()
    print("Execution Time %s seconds: " % (time.time() - start_time))    
Snippet_357()
*************How to do random shifts in image features using Python **************
Execution Time 1.4710719585418701 seconds: 
In [3]:
# How to do random flips in image features using Python 
def Snippet_358(): 

    print()
    print(format('How to do random flips in image features using Python ','*^82'))
    
    import time
    start_time = time.time()
    
    from keras.datasets import mnist
    from keras.preprocessing.image import ImageDataGenerator    
    import matplotlib.pyplot as plt
    
    # load data
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    
    # reshape to be [samples][width][height][channels]
    X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
    X_test  = X_test.reshape(X_test.shape[0],28, 28, 1)
    
    # convert from int to float
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    
    # define data preparation
    datagen = ImageDataGenerator(horizontal_flip=True, vertical_flip=True)
    
    # fit parameters from data
    datagen.fit(X_train)
    
    # configure batch size and retrieve one batch of images
    for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9):
        # create a grid of 3x3 images
        for i in range(0, 9):
            plt.subplot(330 + 1 + i)
            plt.imshow(X_batch[i].reshape(28, 28), cmap=plt.get_cmap('gray'))
        # show the plot
        plt.show()
        break
    
    print()
    print("Execution Time %s seconds: " % (time.time() - start_time))    
Snippet_358()
**************How to do random flips in image features using Python **************
Execution Time 1.2684507369995117 seconds: 
In [4]:
# How to do augmentation in image features using Python 
def Snippet_359(): 
    
    print()
    print(format('How to do augmentation in image features using Python ','*^82'))
    
    import time
    start_time = time.time()
    
    from keras.datasets import mnist
    from keras.preprocessing.image import ImageDataGenerator    
    import matplotlib.pyplot as plt
    
    # load data
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    
    # reshape to be [samples][width][height][channels]
    X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
    X_test  = X_test.reshape(X_test.shape[0],28, 28, 1)
    
    # convert from int to float
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    
    # define data preparation 
    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
            )
    
    # fit parameters from data
    datagen.fit(X_train)
    
    # configure batch size and retrieve one batch of images
    for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9):
        # create a grid of 3x3 images
        for i in range(0, 9):
            plt.subplot(331 + i)
            plt.imshow(X_batch[i].reshape(28, 28), cmap=plt.get_cmap('gray'))
        # show the plot
        plt.show()
        break
    print()
    print("Execution Time %s seconds: " % (time.time() - start_time))    
Snippet_359()
**************How to do augmentation in image features using Python **************
Execution Time 1.300225019454956 seconds: