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

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

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

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

Google Cloud Storage

Google Cloud Storageは、グーグル社が提供しているクラウドベースのデベロッパー・企業向けストレージサービス。可用性に優れ、APIで操作可能なため、データのアーカイブ保存やアプリケーションのコンテンツ提供など様々な用途に活用できます。

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

330閲覧

【GAE】HDF5ファイル(深層学習のネットワークの定義ファイル)を用いて判別し、目当ての画像だけ別のバケットファイルに保存するプログラム 

legend_hero

総合スコア3

Google Cloud Platform

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

Google Cloud Storage

Google Cloud Storageは、グーグル社が提供しているクラウドベースのデベロッパー・企業向けストレージサービス。可用性に優れ、APIで操作可能なため、データのアーカイブ保存やアプリケーションのコンテンツ提供など様々な用途に活用できます。

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/20 07:06

編集2022/01/24 07:05

Python初学者です.
GAE(Google App Engine)上に,画像を受け取ると送られた画像をblob検出で一時保存するアプリを作りました.
blob検出した後の画像データはGCS(Google Cloud Storage)のバケットに保存しています.
(kerasのload_modelを使いモデルをロードして、predictで認識させています)

ここに、「HDF5ファイル(深層学習のネットワークの定義ファイル)を用いて判別し、目当ての画像だけGCSの別のバケットファイルに保存するプログラム」を追加したいのですが自分で調べて試しているのですがGCP、Pythonを学び始めのため勝手が分かっておらずどのようなコードでうまくいくのかわからず、意見や参考になるものなどをご教授いただきたいです.

main

1import os, sys 2from flask import Flask, flash, request, redirect, url_for, render_template, send_from_directory 3from werkzeug.utils import secure_filename 4import tensorflow as tf 5from keras.models import load_model 6import numpy as np 7from PIL import Image 8from PIL import ImageFile 9from google.cloud import storage 10import io 11import requests 12 13app = Flask(__name__) 14ImageFile.LOAD_TRUNCATED_IMAGES = True 15 16GCS_BUCKET = '777' 17GCS_BUCKETSUB = 'refile' 18MODEL_NAME = 'obama_smalling_201908.h5' 19 20MODEL_DOWNLOAD_FOLDER = '/tmp' 21UPLOAD_FOLDER = './uploads' 22ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif']) 23 24model_path = os.path.join(MODEL_DOWNLOAD_FOLDER, MODEL_NAME) 25storage_client = storage.Client() 26bucket = storage_client.get_bucket(GCS_BUCKET) 27blob = bucket.get_blob(MODEL_NAME) 28blob.download_to_filename(model_path) 29model = load_model(model_path) 30 31graph = tf.get_default_graph() 32 33app = Flask(__name__) 34app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 35 36def is_allowed_file(filename): 37 return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS 38 39@app.route('/') 40def index(): 41 return redirect(url_for('predict')) 42 43@app.route('/predict', methods=['GET', 'POST']) 44def predict(): 45 if request.method == 'POST': 46 if 'file' not in request.files: 47 flash('No file.') 48 return redirect(url_for('predict')) 49 file = request.files.get('file') 50 if file.filename == '': 51 flash('No file.') 52 return redirect(url_for('predict')) 53 if file and is_allowed_file(file.filename): 54 upload_files = request.files.getlist('file') 55 for file in upload_files: 56 gcs = storage.Client() # 57 bucket = gcs.get_bucket(GCS_BUCKET) 58 blob = bucket.blob(file.filename) 59 blob.upload_from_string( 60 file.read(), 61 content_type=file.content_type 62 ) 63 64 65 file_url = blob.public_url 66 67 img = Image.open(io.BytesIO(requests.get(file_url).content)).convert('RGB') 68 img = img.resize((150, 150)) 69 70 x = np.array(img, dtype=np.float32) 71 x = x / 255. 72 x = x.reshape((1,) + x.shape) 73 74 global graph 75 with graph.as_default(): 76 pred = model.predict(x, batch_size=1, verbose=0) 77 score = pred[0][0] 78 if(score >= 0.5): 79 person = 'Smalling' 80 gcs = storage.Client() 81 bucket = gcs.get_bucket(GCS_refile) 82 blob = bucket.blob(file.filename) 83 blob.upload_from_string( 84 file.read(), 85 content_type=file.content_type 86 ) 87 else: 88 person = 'Obama' 89 score = 1 - score 90 91 resultmsg = '[{}] {:.4%} Sure.'.format(person, score) 92 93 return render_template('result.html', resultmsg=resultmsg, filepath=file_url) 94 return render_template('predict.html') 95 96@app.route('/uploads/<filename>') 97def uploaded_file(filename): 98 return send_from_directory(app.config['UPLOAD_FOLDER'], filename) 99 100if __name__ == '__main__': 101 app.run()

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問