Last active
July 24, 2017 12:04
-
-
Save dnkirill/82822c7c816f0c859b244bcbe12217a4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
def flips_rotations_augmentation(X, y): | |
"""A pipeline for applying augmentation functions listed in `augmentation_table` | |
to a numpy array with images X. | |
""" | |
# Initializing empty arrays to accumulate intermediate results of augmentation | |
X_out, y_out = np.empty([0] + list(X.shape[1:]), dtype=np.float32), np.empty([0]) | |
# Cycling through all label classes and applying all available transformations | |
for in_label in augmentation_table.index.values: | |
available_augmentations = dict(augmentation_table.ix[in_label].dropna(axis=0)) | |
images = X[y==in_label] | |
# Augment images and their labels | |
for kind, out_label in available_augmentations.items(): | |
X_out = np.vstack([X_out, apply_augmentation(images, how=kind)]) | |
y_out = np.hstack([y_out, [out_label] * len(images)]) | |
# And stack with initial dataset | |
X_out = np.vstack([X_out, X]) | |
y_out = np.hstack([y_out, y]) | |
# Random rotation is explicitly included in this function's body | |
X_out_rotated = rotate_up_to_20_deg(X) | |
y_out_rotated = deepcopy(y) | |
X_out = np.vstack([X_out, X_out_rotated]) | |
y_out = np.hstack([y_out, y_out_rotated]) | |
return X_out, y_out |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment