【tf2】画像のデータオーギュメンテーションのメモ

毎回TensorFlow2でのデータオーギュメンテーションを
調べているので、メモしておきます。

環境

TensorFlowだけではなく、TensorFlowのaddon使うのでインストールしておきます。

pip install tensorflow_addons

ライブラリをimport します。

import tensorflow as tf
import PIL
import matplotlib.pyplot as plt
import tensorflow_addons as tfa

画像を読み込みます。私は家の猫の画像を使います。

img_raw = tf.io.read_file("cat.png")
img = tf.image.decode_image(img_raw)
plt.imshow(img)

cut_out

ランダムで画像の一部を切り抜く

new_img = tfa.image.random_cutout(tf.expand_dims(img,axis=0), (128,128), constant_values=255)
plt.imshow(tf.squeeze(new_img))

random_brightness

画像の明るさをランダムで変更する

new_img = tf.image.random_brightness(img, 0.9)
plt.imshow(new_img)

random_contrast

ランダムで画像のコントラストを変更する

new_img = tf.image.random_contrast(img, lower=0.5, upper=0.8)
plt.imshow(new_img)

random_saturation

ランダムで彩度を変更する

new_img = tf.image.random_saturation(img, lower=0.6, upper=0.8)
plt.imshow(new_img)

random_hue

ランダムで色相を変更する

new_img = tf.image.random_hue(img, max_delta=0.5)
plt.imshow(new_img)

rgb_to_grayscale

rgbの画像をグレースケールの画像に変更する

new_img = tf.image.rgb_to_grayscale(img)
plt.imshow(tf.squeeze(new_img), cmap="gray")

random_crop

画像の一部をランダムで切り取る

new_img = tf.image.random_crop(img,[224,224,3])
plt.imshow(new_img)

flip_left_right

画像の左右を反転する

new_img = tf.image.flip_left_right(img) 
plt.imshow(new_img)

flip_up_down

画像の上下を反転する

new_img = tf.image.flip_up_down(img) 
plt.imshow(new_img)

translate (tfa)

画像を移動する

new_img = tfa.image.translate(tf.expand_dims(img,axis=0), [50,50])
plt.imshow(tf.squeeze(new_img))

transform (tfa)

画像をゆがませる。ここは参考文献を参照してください。

theta = 0.4
trans = [1, tf.sin(theta), 0, 0, tf.cos(theta), 0, 0, 0]
new_img = tfa.image.transform(tf.expand_dims(img,axis=0), trans)
plt.imshow(tf.squeeze(new_img))

参考文献

https://androidkt.com/tensorflow-image-augmentation-using-tf-image/

コメント

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