こんにちは!!ようこそ、当ブログgcbgardenへ。管理人のsakurabaaa(@sakurabaaa_g)です。
最近はやりの人工知能で大事なことは大量のデータを持っていることなんですね。
例えば画像のデータがたくさんほしいときは、一枚の画像データに対して小細工を施して、データの水増しを行います。
TensorFlowといった小細工を自動で施してくれるツールで遊んでいたら面白い結果が得られたので紹介します!
もくじ [かくす]
TensorFlowとは
TensorFlow(テンサーフロー、テンソルフロー呼び名は??)を知らない方のために簡単に説明。
人工知能を実現してくれるツールです。
詳しくは以下のリンクをみるとわかると思います。
公式ページへAn open-source machine learning framework for everyone
TensorFlowを使った画像の水増し
TensorFlowが提供する画像加工のための関数はどんだけあるんや!!
と思うほどありました。すべての関数を実装するのに数時間かかりましたよ。
ここでは一部のTensorFlowを使った画像水増し(Data Augmentation)手法を紹介しようと思います。
公式ドキュメントModule: tf.image
今回使用した画像
りんご。
img.shape = (313, 500, 3)
この画像を使ってデータの水増し・拡張をおこないました。
ランダムクロップ(random_crop)
ランダムクロップは指定した範囲で画像をクリップ(切り出し)してくれます。
tf.random_crop(value,size,seed=None,name=None)
下のコードはそのまま利用できます。
123456789101112131415def random_crop(image, size):images = tf.random_crop(image, size)with tf.Session() as sess:for i in range(15):img = sess.run(images)plt.subplot(5,5,i+1)plt.axis(‘off’)plt.imshow(img)plt.show()plt.figure(figsize=(12,8))crop_height = 150crop_width = 150size = [crop_height, crop_width, 3]random_crop(img, size)
回転(rot90)
画像を回転させることも!!
90度しかないみたいです。
rot90( image, k=1, name=None )
12345678910111213def rot90( image, k ):with tf.Session() as sess:for i in range(5):img = sess.run(tf.image.rot90(image, k[i]))plt.subplot(1,5,i+1)plt.title(‘kの値:{}’.format(k[i]))plt.axis(‘off’)plt.imshow(img)plt.show()plt.figure(figsize=(12,8))k = [0,1,2,3,4]rot90(img, k)
明るさ調整(adjust_brightness)
明るさを調整!!
adjust_brightness( image, delta )
12345678910111213def adjust_brightness(image, delta):with tf.Session() as sess:for i in range(9):img = sess.run(tf.image.adjust_brightness( image, delta[i] ))plt.subplot(3,3,i+1)plt.title(‘deltaの値:{}’.format(delta[i]))plt.axis(‘off’)plt.imshow(img)plt.show()plt.figure(figsize=(12,8))delta = np.linspace(0,1,9) #deltaの範囲[0,1]adjust_brightness(img, delta)

りんごがいなくなっちゃったよ〜〜
衝撃的なりんご画像が!!
白雪姫にでてくる毒リンゴがでてきてたまげてしまいました。
ヒュー調整(adjust_hue)
ヒュー調整という変換をしたときです。
adjust_hue( image, delta, name=None )
12345678910111213def adjust_hue(image, delta):with tf.Session() as sess:for i in range(25):img = sess.run(tf.image.adjust_hue(image, delta[i]))plt.subplot(5,5,i+1)plt.title(‘deltaの値:{:.2}’.format(delta[i]))plt.axis(‘off’)plt.imshow(img)plt.show()plt.figure(figsize=(12,8))delta = np.linspace(-1,1,25)adjust_hue(img,delta)
deltaの値をランダムに生成し画像出力してみたら、まあ素敵なカラフルなりんごが出力されました。
海外に売ってそうなガムの色みたいですね。
ちなみに元のりんごの画像はこちら。
おわりに
TensorFlowは人工知能向けのツールですが、使い方次第では画像加工ツールにも変身します。
生成した画像は保存することもできるので、毒りんごが欲しい方がいたらお申し付けください。笑
環境があればだれでも挑戦することができます。以下の記事で環境構築方法を紹介しています。
TensorFlow画像の水増し
人工知能は以下の記事にもまとめています。
この記事を書いた人。
20代。とあるネットベンチャーでがんばる働き屋さん、ブロガー。
書きたいことを気ままに書いてます!
Python、プログラミング、米株、カメラ、野球観戦がすき。趣味は新宿散策。