Master Real-Time Image Augmentation with Keras ImageDataGenerator
This guide explains how Keras ImageDataGenerator performs on‑the‑fly image augmentation—covering rotation, shifts, brightness, shear, zoom, channel shifts, flips, and fill‑mode options—with concise Python code examples and visual results to help prevent overfitting in deep‑learning models.
Data augmentation expands a dataset by applying transformations such as cropping, padding, and flipping, making models more robust to small variations and reducing overfitting. Storing all augmented images in memory is inefficient, which is why Keras’s ImageDataGenerator (available via tensorflow.keras) generates augmented batches in real time.
Quick Start
The generator creates batches of tensors with the same dimensions as the input images. The following helper script visualizes the effects of each augmentation parameter.
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from matplotlib.pyplot import imread, imshow, subplots, show
def plot(data_generator):
"""Plot 4 images generated by an ImageDataGenerator instance."""
data_generator.fit(images)
image_iterator = data_generator.flow(images)
fig, rows = subplots(nrows=1, ncols=4, figsize=(18,18))
for row in rows:
row.imshow(image_iterator.next()[0].astype('int'))
row.axis('off')
show()
image = imread("image.jpeg")
images = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
imshow(images[0])
show()1. Rotation
data_generator = ImageDataGenerator(rotation_range=90)
plot(data_generator)Images are randomly rotated within ±90 degrees.
2. Width Shifting
data_generator = ImageDataGenerator(width_shift_range=0.3)
plot(data_generator) width_shift_range(0.0–1.0) defines the maximum fraction of total width by which an image can shift left or right.
3. Height Shifting
data_generator = ImageDataGenerator(height_shift_range=0.3)
plot(data_generator)Similar to width shifting, but moves the image vertically.
4. Brightness
data_generator = ImageDataGenerator(brightness_range=(0.1, 0.9))
plot(data_generator) brightness_rangeselects a random brightness offset; 0.0 means no brightness, 1.0 the maximum.
5. Shear Intensity
data_generator = ImageDataGenerator(shear_range=45.0)
plot(data_generator) shear_range(in degrees) tilts the image shape, creating a stretching effect distinct from rotation.
6. Zoom
data_generator = ImageDataGenerator(zoom_range=[0.5, 1.5])
plot(data_generator)Values <1.0 zoom in, >1.0 zoom out, applying random scaling.
7. Channel Shift
data_generator = ImageDataGenerator(channel_shift_range=150.0)
plot(data_generator)Randomly adds a value (chosen from the specified range) to each channel.
8. Horizontal Flip
data_generator = ImageDataGenerator(horizontal_flip=True)
plot(data_generator)Generates horizontally mirrored images.
9. Vertical Flip
data_generator = ImageDataGenerator(vertical_flip=True)
plot(data_generator)Generates vertically mirrored images.
10. Fill Modes
When transformations create empty pixels, four fill strategies are available:
nearest : Replicates the nearest pixel value.
reflect : Mirrors the border pixels.
wrap : Wraps around the image edges.
constant : Fills with a constant value defined by cval.
# Example using constant fill mode
data_generator = ImageDataGenerator(width_shift_range=0.3, fill_mode='constant', cval=190)
plot(data_generator)Additional Options
Other useful parameters include featurewise/ samplewise centering and normalization ( featurewise_center, samplewise_center, featurewise_std_normalization, samplewise_std_normalization) and rescale to multiply all pixel values. A custom preprocessing_function can be supplied for user‑defined image processing.
These capabilities enable efficient, on‑the‑fly augmentation for training robust deep‑learning models.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
ITPUB
Official ITPUB account sharing technical insights, community news, and exciting events.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
