TensorFlowではMNISTやCIFAR-10のデータセットを用いて簡単に学習をすることができます。
しかしそれだけではただ学習しただけになり、意味があまりありません。
そこでTensorFlowに画像を取り込む方法を調べました。
画像の読込
jpeg画像の読み込みは tf.image.decode_jpeg() で行います。下記に方法を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#モデル作成 ... #プレイスホルダー x = tf.placeholder(tf.float32,[None,input_size],name="input_data") #画像読込 jpg = tf.read_file("dir/file_name.jpg") image = tf.image.decode_jpeg(jpg, channels=1) with tf.Session() as sess: ... input_image = sess.run(image) sess.run(train_grad, feed_dict={x:input_image}) ... |
tf.read_file() は指定したファイルをTensorFlowで読み込める形式で取り込みます。
tf.image.decode_jpeg() は tf.read_file()で取り込んだデータと画像のチャンネル数を指定する必要があります。
tf.image.decode_jpeg() で取り込んだ画像は sess.run を通した後にプレイスホルダーに渡すことができます。
画像の変形
画像のリサイズは tf.image.resize_images() で行います。下記に方法を示します。
1 2 3 4 5 |
jpg = tf.read_file("dir/file_name.jpg") image = tf.image.decode_jpeg(jpg, channels=1) #画像のリサイズ tf.image.resize_images(image, [28, 28]) |
tf.image.resize_images() は第一引数にサイズを変更したい画像を、第二引数に変更したいサイズを指定して実行します。
まとめ
- tf.read_file() で読み込みたいファイルをTensorFlowに読み込む
- tf.image.decode_jpeg() に読み込んだファイルデータと画像のチャンネルを指定し、画像として読み込む
- tf.image.resize_images() で読み込んだ画像をニューラルネットワークで利用できるサイズに変換する。
関連記事