Skip to content

Instantly share code, notes, and snippets.

@Marina-Miranovich
Created November 14, 2018 20:02
Show Gist options
  • Save Marina-Miranovich/5d3936edc6aa4e66539d63d742fa399f to your computer and use it in GitHub Desktop.
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
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