In [1]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib.gridspec as gridspec

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import os
import glob
import shutil

import tempfile


Using TensorFlow backend.

In [14]:
img = load_img("data/train/cat/cat.2.jpg")
x = img_to_array(img)

plt.imshow(img, aspect='auto')
print(x.shape)
x = np.expand_dims(x, axis=0)
print(x.shape)


(396, 312, 3)
(1, 396, 312, 3)

In [27]:
# http://aidiary.hatenablog.com/entry/20161212/1481549365
def draw_images(datagen, x, result_images):
    # 出力先ディレクトリを作成
    temp_dir = tempfile.mkdtemp()

    # generatorから9個の画像を生成
    # xは1サンプルのみなのでbatch_sizeは1で固定
    g = datagen.flow(x, batch_size=1, save_to_dir=temp_dir, save_prefix='img', save_format='jpg')
    for i in range(9):
        batch = g.next()

    # 生成した画像を3x3で描画
    images = glob.glob(os.path.join(temp_dir, "*.jpg"))
    fig = plt.figure()
    gs = gridspec.GridSpec(3, 3)
    gs.update(wspace=0.1, hspace=0.1)
    for i in range(9):
        img = load_img(images[i])
        plt.subplot(gs[i])
        plt.imshow(img, aspect='auto')
        plt.axis("off")
    plt.savefig(result_images)

    # 出力先ディレクトリを削除
    shutil.rmtree(temp_dir)

In [31]:
datagen = ImageDataGenerator(rotation_range=90)
draw_images(datagen, x, "result_rotation.jpg")



In [45]:
temp_dir = tempfile.mkdtemp()

gen = ImageDataGenerator(rotation_range=90)
batches = gen.flow_from_directory('data/sample2/', target_size=(224,224), 
            class_mode='categorical', shuffle=True, batch_size=1,
             save_to_dir=temp_dir, save_prefix='img', save_format='jpg')

for i in range(9):
    batch = batches.next()

# 生成した画像を3x3で描画
images = glob.glob(os.path.join(temp_dir, "*.jpg"))
print(images)
fig = plt.figure()
gs = gridspec.GridSpec(3, 3)
gs.update(wspace=0.1, hspace=0.1)
for i in range(9):
    img = load_img(images[i])
    plt.subplot(gs[i])
    plt.imshow(img, aspect='auto')
    plt.axis("off")
plt.savefig("result_rotation.jpg")

    
shutil.rmtree(temp_dir)


Found 4 images belonging to 2 classes.
['/tmp/tmpwvis118p/img_2_3841.jpg', '/tmp/tmpwvis118p/img_3_3936.jpg', '/tmp/tmpwvis118p/img_3_3429.jpg', '/tmp/tmpwvis118p/img_2_1725.jpg', '/tmp/tmpwvis118p/img_1_4278.jpg', '/tmp/tmpwvis118p/img_1_3292.jpg', '/tmp/tmpwvis118p/img_0_9243.jpg', '/tmp/tmpwvis118p/img_0_4125.jpg', '/tmp/tmpwvis118p/img_0_4487.jpg']

In [5]:
temp_dir = tempfile.mkdtemp()

gen = ImageDataGenerator(featurewise_std_normalization=True, horizontal_flip=True, channel_shift_range=100, zoom_range=0.5)

batches = gen.flow_from_directory('data/sample/', target_size=(224,224), 
            class_mode='categorical', shuffle=True, batch_size=1,
             save_to_dir=temp_dir, save_prefix='img', save_format='jpg')

for i in range(25):
    batch = batches.next()

# 生成した画像を3x3で描画
images = glob.glob(os.path.join(temp_dir, "*.jpg"))
print(images)
fig = plt.figure()
gs = gridspec.GridSpec(5, 5)
gs.update(wspace=0.1, hspace=0.1)
for i in range(25):
    img = load_img(images[i])
    plt.subplot(gs[i])
    plt.imshow(img, aspect='auto')
    plt.axis("off")
plt.savefig("result_rotation.jpg")

    
shutil.rmtree(temp_dir)


Found 400 images belonging to 2 classes.
/home/ikeyasu/anaconda3/lib/python3.5/site-packages/keras/preprocessing/image.py:513: UserWarning: This ImageDataGenerator specifies `featurewise_std_normalization`, but it hasn'tbeen fit on any training data. Fit it first by calling `.fit(numpy_data)`.
  warnings.warn('This ImageDataGenerator specifies '
['/tmp/tmpf1uu6t2z/img_0_4872.jpg', '/tmp/tmpf1uu6t2z/img_2_3877.jpg', '/tmp/tmpf1uu6t2z/img_18_3583.jpg', '/tmp/tmpf1uu6t2z/img_20_6634.jpg', '/tmp/tmpf1uu6t2z/img_17_6032.jpg', '/tmp/tmpf1uu6t2z/img_14_2656.jpg', '/tmp/tmpf1uu6t2z/img_21_67.jpg', '/tmp/tmpf1uu6t2z/img_19_1087.jpg', '/tmp/tmpf1uu6t2z/img_8_8233.jpg', '/tmp/tmpf1uu6t2z/img_4_4026.jpg', '/tmp/tmpf1uu6t2z/img_6_8865.jpg', '/tmp/tmpf1uu6t2z/img_15_4312.jpg', '/tmp/tmpf1uu6t2z/img_23_7743.jpg', '/tmp/tmpf1uu6t2z/img_5_6213.jpg', '/tmp/tmpf1uu6t2z/img_22_9036.jpg', '/tmp/tmpf1uu6t2z/img_1_410.jpg', '/tmp/tmpf1uu6t2z/img_11_9424.jpg', '/tmp/tmpf1uu6t2z/img_3_6207.jpg', '/tmp/tmpf1uu6t2z/img_12_4384.jpg', '/tmp/tmpf1uu6t2z/img_13_5164.jpg', '/tmp/tmpf1uu6t2z/img_9_2545.jpg', '/tmp/tmpf1uu6t2z/img_16_3669.jpg', '/tmp/tmpf1uu6t2z/img_24_5428.jpg', '/tmp/tmpf1uu6t2z/img_7_3535.jpg', '/tmp/tmpf1uu6t2z/img_10_5218.jpg']

In [ ]: