-
-
Save Marina-Miranovich/5d3936edc6aa4e66539d63d742fa399f to your computer and use it in GitHub Desktop.
code_snippet_1 for "Playing Mortal Kombat with TensorFlow.js. Transfer learning and data augmentation" translation
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
np.random.seed(44) | |
ia.seed(44) | |
def main(): | |
for i in range(1, 191): | |
draw_single_sequential_images(str(i), "others", "others-aug") | |
for i in range(1, 191): | |
draw_single_sequential_images(str(i), "hits", "hits-aug") | |
for i in range(1, 191): | |
draw_single_sequential_images(str(i), "kicks", "kicks-aug") | |
def draw_single_sequential_images(filename, path, aug_path): | |
image = misc.imresize(ndimage.imread(path + "/" + filename + ".jpg"), (56, 100)) | |
sometimes = lambda aug: iaa.Sometimes(0.5, aug) | |
seq = iaa.Sequential( | |
[ | |
iaa.Fliplr(0.5), # все изображения повернуть на 50% по горизонтали | |
# обрезать от 5% до 10% от высоты/ширины всех изображений | |
sometimes(iaa.CropAndPad( | |
percent=(-0.05, 0.1), | |
pad_mode=ia.ALL, | |
pad_cval=(0, 255) | |
)), | |
sometimes(iaa.Affine( | |
scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, # маштабировать изображения на 80-120%, по каждой оси отдельно | |
translate_percent={"x": (-0.1, 0.1), "y": (-0.1, 0.1)}, # сдвинуть изображение на +/- 10% (по каждой оси) | |
rotate=(-5, 5), | |
shear=(-5, 5), # сдвиг на +/- 5 градусов | |
order=[0, 1], # использовать ближайшего соседа или билинейную интерполяцию (быструю) | |
cval=(0, 255), # если mode это постоянная, используем cval между 0 и 255 | |
mode=ia.ALL # ипользовать любой из режимов искривления для scikit-image ( второе изобрадение в верхнем ряду в примере) | |
)), | |
iaa.Grayscale(alpha=(0.0, 1.0)), | |
iaa.Invert(0.05, per_channel=False), # инвертировать цветовые каналы | |
# к изображению будут применяться от 0 до 5 следующих (не таких значимых) преобразований | |
# не применять все 5 преобразований за раз, так как часто искажения будут слишком сильные | |
iaa.SomeOf((0, 5), | |
[ | |
iaa.OneOf([ | |
iaa.GaussianBlur((0, 2.0)), # размытие изображений с сигмой от 0 до 2.0 | |
iaa.AverageBlur(k=(2, 5)), # размытие изображений с использованием локального среднего с размером ядра от 2 до 5 | |
iaa.MedianBlur(k=(3, 5)), # размытие изображения с использованием локальной медианы с размером ядра от 3 до 5 | |
]), | |
iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)), # повысить резкость изображения | |
iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)), # придать рельефность изображению | |
iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.01*255), per_channel=0.5), # добавить гауссовский шум к изображению | |
iaa.Add((-10, 10), per_channel=0.5), # изменить яркость изображение ( +/- 10 от изначального значения) | |
iaa.AddToHueAndSaturation((-20, 20)), # изменить оттенок и насыщенность | |
# либо изменить яркость всего изображения (иногда для каждого цветового | |
# канала отдельно) или изменить яркость только части изображения | |
iaa.OneOf([ | |
iaa.Multiply((0.9, 1.1), per_channel=0.5), | |
iaa.FrequencyNoiseAlpha( | |
exponent=(-2, 0), | |
first=iaa.Multiply((0.9, 1.1), per_channel=True), | |
second=iaa.ContrastNormalization((0.9, 1.1)) | |
) | |
]), | |
iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5), # улучшить или ухудшить контрастность | |
], | |
random_order=True | |
) | |
], | |
random_order=True | |
) | |
im = np.zeros((16, 56, 100, 3), dtype=np.uint8) | |
for c in range(0, 16): | |
im[c] = image | |
for im in range(len(grid)): | |
misc.imsave(aug_path + "/" + filename + "_" + str(im) + ".jpg", grid[im]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment