スポンサーリンク

【Python】tf.Kerasで画像を水増しする方法。(水平移動・回転など)

Keras
スポンサーリンク
スポンサーリンク

【Python】Pythonのtensorflow内蔵のKerasで画像を水増しする方法。(水平移動など)

Pythonのtensorflowで画像を水増しする方法をご紹介します。
opencvを用いての画像の水増し方法に関しても記載していますので気になる方は下記記事をご参照ください。

環境紹介

今回のtensorflowのVer等を記載しておきます。
Tensorflowは1系2系どちらでもOKでした。

TensorFlow:1.15 ,2.2
OS:Mac(docker上で環境を作っているのでOSはUbuntu)

では早速行っておきましょう。

コードは下記です。

from tensorflow.keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt

img = image.load_img('/aiueo/train/0.jpg')
img = np.array(img)

plt.imshow(img)
plt.show()

# 画像データ生成器を作成する。
# -20° ~ 20° の範囲でランダムに回転を行う。
#datagen = image.ImageDataGenerator(rotation_range=20)
#datagen = image.ImageDataGenerator(height_shift_range=0.3)
datagen = image.ImageDataGenerator(width_shift_range=0.3)
# ミニバッチを生成する Python ジェネレーターを作成する。
x = img[np.newaxis]  #  (Height, Width, Channels)  -> (1, Height, Width, Channels) 
gen = datagen.flow(x, batch_size=1)  # 1枚しかないので、ミニバッチ数は1

# Python ジェネレーターで9枚生成して、表示する。
plt.figure(figsize=(10, 8))
for i in range(9):
    batches = next(gen)  # (NumBatches, Height, Width, Channels) の4次元データを返す。
    # 画像として表示するため、3次元データにし、float から uint8 にキャストする。
    gen_img = batches[0].astype(np.uint8)

    plt.subplot(3, 3, i + 1)
    plt.imshow(gen_img)
    plt.axis('off')
plt.show()

解説としては上から順番にloadで画像を読み取っており、

datagenで下記それぞれのジェネレーターを作っております。
rotation_range:回転
height_shift_range:上下移動
width_shift_range:左右移動

変換したい画像が複数ある場合はBatchをふやす感じであとは画像サイズをfigsizeで指定してplotで標示させる流れです。

画像を保存する場合は下記でnumpy配列から変換する必要があります。

from PIL import Image

save_image = Image.fromarray("移動させた画像のnumpy配列")
save_image.save('保存したい指定のpath+画像の拡張子’)
#例) save_image.save('~/desktop/test01.jpg') など 

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Keras
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

  1. […] […]

  2. […] […]

  3. […] 【Python】tf.Kerasで画像を水増しする方法。(水平移動・回転など) 【Python】PythonのopenCVで画像の水増しを行う方法。 【Python】pythonのtensorflowで文字検知と文字認識②-1(輝度の調節/水平垂直移動による画像の水増し方法。) […]

タイトルとURLをコピーしました