頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


TensorFlowで画像の水増し時のパラーメタの検討方法

TensorFlowで学習時に画像を水増しする、というおなじみの手法。

画像の水増し方法をTensorFlowのコードから学ぶ - Qiita
TensorFlowを使った画像の水増しレシピまとめ
↑このあたりを見るとどのパラメータをいじるとどういう風に画像が変わるか、というのがざっとわかる。

自分がデータセットに使おうとするpng画像があるとして、それを水増し用処理した画像を表示するコードを紹介。
import tensorflow as tf
import numpy as np
from PIL import Image


def img_show(img) :
pil_img = Image.fromarray(np.uint8(img))
pil_img.show()


srcImg = Image.open(“lena.png")
img_show(srcImg)

if srcImg.mode == 'RGBA' :
# srcが4chの場合3chにする — (1)
rgbImg = Image.new('RGB', srcImg.size, (255, 255, 255))
rgbImg.paste(srcImg, mask=srcImg.split()[3])

elif srcImg.mode == 'RGB' :
rgbImg = srcImg

npArray = np.asarray(rgbImg)/255.0


with tf.Session() as sess :

tfImage = tf.convert_to_tensor(npArray, np.float32)


# いろいろな水増し処理
#tfImage = tf.image.adjust_brightness(tfImage, 0.4)
#tfImage = tf.image.adjust_contrast(tfImage, 1.4)
tfImage = tf.image.adjust_hue(tfImage, 0.25)
#tfImage = tf.image.adjust_saturation(tfImage, 2.0)


newNpArray = 255.0*tfImage.eval()
newNpArray = np.clip(newNpArray, 0, 255.0)
img_show(newNpArray)



(1)読み込んだ画像がアルファチャンネルを持っている場合に3chになるような処理をしている。というのもTensorFlowの水増し処理は3chでないとダメなのがあるため。

画像出力結果

↑実行すると別ウインドウで画像が表示される。


おまけ
保存して確認する場合は↓こんな感じで。
	saveImg = Image.fromarray(np.uint8(newNpArray))
saveImg.save(filePath)




TensorFlow 1.7.0-rc1
Python 3.5.2
macOS 10.14.6
スポンサーサイト




  TopPage  grayscaleのMTLTextureをCoreML/Visionの予測に渡す >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1320-c02f93b6




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.