質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

2692閲覧

kerasでGoogle Cloud Storageにあるjpgファイルを扱いたい

heppokopg2013

総合スコア9

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2017/06/07 10:15

###前提・実現したいこと
Kerasをcloud ml上で動かそうと思っています。
学習データをGoogle cloud storage上にjpgの形で置いて、学習させたいのですが、
flow_from_directoryメソッドでは、うまく読み込めません。

flow_from_directoryで読み込むのはできないでしょうか?
もしくは、ImageDataGeneratorでうまく扱う方法が知りたいです。

###発生している問題・エラーメッセージ

for subdir in sorted(os.listdir(directory)):

もしくは

ERROR 2017-06-07 09:09:29 +0000 service OSError: [Errno 2] No such file or directory: 'gs://cloud-ml-model/data/data/train'

のようなエラーが出ます。
(フォルダは存在しています)

###該当のソースコード

test_datagen = ImageDataGenerator(rescale=1./255) file_stream = file_io.FileIO(data_dir + "/train", mode='r') train_generator = train_datagen.flow_from_directory(file_stream, target_size=(48, 48), batch_size=32, color_mode = 'rgb', class_mode='categorical')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

残念ながら、flow_from_directoryはローカルの画像しか指定できません
そのため、以下2パターンのどちらかを行う必要があります

  • i. ImageDataGenerator.flow_from_directoryで読めるようにGoogleCloudStorage上の画像をローカルにダウンロードする(参考

  • ii. ImageDataGenerator.flowで読めるように、GoogleCloudStorageの画像を以下のndarray形式に変換する

from PIL import Image from urllib.request import urlopen from io import BytesIO import numpy as np def to_matrix(image_url): data = urlopen(image_path).read() image = Image.open(BytesIO(data)) return np.asarray(image) to_matrix('https://storage.googleapis.com/$YOUR_BUCKET/xxx.jpg')

1はご察しの通り、ローカルを圧迫するのがデメリットですが、ダウンロードさえしてしまえばディレクトリを指定するだけなので2よりもお手軽に読み込めます
2はローカルにダウンロードしない分、メモリを圧迫するのと、Storageから読み込む際の通信エラーの処理を加味しなければいけないのと、numpyやpillow等の他ライブラリの知識が多少いるのがデメリットですが、質問のイメージに近い形で画像を読み込めます
おすすめは1です!

cloud mlでいろいろするのであればcloud datalabのsampleが参考になります
https://github.com/googledatalab/notebooks/tree/master/samples/ML%20Toolbox/Image%20Classification

また、cloud mlを使うのであれば、非常に相性がいいdatalabと合わせてチャレンジするのもいかがでしょうか
ローカルで使う分にはお金もかかりません
https://cloud.google.com/datalab/docs/quickstarts/quickstart-local

投稿2017/06/18 05:11

編集2017/06/18 05:14
chck

総合スコア184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

heppokopg2013

2017/06/22 15:24

ダウンロードするのが一番楽そうですね。 試してみようと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問