2017-12-24 20 views
1

私は、ローカルまたはクラウドで訓練できる機械学習コードを書いています。私はkeras.preprocessingを使ってイメージをロードしています。フードの下にはPILが使われています。ローカルファイルは正常に動作しますが、「gs:// ...」などのGoogle Cloud Storageのパスは理解できません。keras.preprocessingを使用してGoogle Cloud Storageから画像を読み込む方法

from keras.preprocessing import image image.load_img("gs://myapp-some-bucket/123.png")

このエラーを与える:

.../lib/python2.7/site-packages/keras/preprocessing/image.py", line 320, in load_img img = pil_image.open(path) File .../lib/python2.7/site-packages/PIL/Image.py", line 2530, in open fp = builtins.open(filename, "rb") IOError: [Errno 2] No such file or directory: 'gs://myapp-some-bucket/123.png'

これを行うための正しい方法は何ですか?私は最終的に、画像のフォルダが単一のnumpy配列(画像はデコードされ、グレースケール)にする必要があります。

+0

私はKerasに慣れていません。直接GCSアクセスをサポートしていない可能性があります。データセットが大きい場合は、あらかじめインストールされているgsutil cliを使用して、データセットをVMにコピーすることができます。 Pythonでは、os.system( 'gsutil cp YOUR_GCS_FILE。')を呼び出すことができます。 –

答えて

0

GCSを理解しているkeras.preprocessing.image.load_imgに代わるものが見つかりました。私も...フォルダ全体を読んで、トレーニングのための単一のnumpyの配列にフォルダ内のすべての画像を回すために多くのコードが含まれて

import os import tensorflow as tf from tensorflow.python.platform import gfile filelist = gfile.ListDirectory("gs://myapp-some-bucket") sess = tf.Session() with sess.as_default(): x = np.array([np.array(tf.image.decode_png(tf.read_file(os.path.join(train_files_dir, filename))).eval()) for filename in filelist])

0

ロード画像:

image_path = 'gs://xxxxxxx.jpg' 
image = tf.read_file(image_path) 
image = tf.image.decode_jpeg(image) 
image_array = sess.run(image) 

保存画像:

job_dir = 'gs://xxxxxxxx' 
image = tf.image.encode_jpeg(image_array) 
file_name = 'xxx.jpg' 
write_op = tf.write_file(os.path.join(job_dir, file_name), image) 
sess.run(write_op) 
関連する問題