Flask2020年10月8日Pytorch画像分類アプリのflaskプログラム部分を紐解きます。flaskは最近やっているから、大丈夫だね〜Pytorchの画像分類アプリをflaskで実装するチュートリアルをやっています。documentation前回はチュートリアルのPytorch部分を思い出しながら、読み解きました。今回は残りのflaskの部分について見ていきたいと思います。特別という訳ではないのですが、私は「/Python/Pytorch_flask」というフォルダを作成して管理しています。今回のアプリで採用されている方式は、flaskチュートリアルの最もシンプルなアプリの動作で紹介されている方法で、フォルダの構成としてはapp.pyで簡潔に記載する、というものでした。ミニマムな構成でflaskアプリを動作させる方法は、こちらでも記事にしておりますので、ご参照ください。flaskでWebアプリ、チュートリアルのクイックスタートをやっています。実際に動作させ始めて、楽しくなりそうだね。flaskの勉強2回目です。今回は、チュートリアルのク...Python仮想環境Pytorchのチュートリアルでは触れていないのですが、先ほどの階層図にも見られるように「venv」というフォルダが存在しています。これは、私が勝手にPython仮想環境を利用しているためです。仮想環境を利用することで、マシン全体のPython環境に影響を与えず、閉じた環境として構築できますので、venvによるPython仮想環境を採用しています。仮想環境とflaskについては、アプリを動作させる記事で手順を書いていますので、どうぞこ参考ください。Pytorchのチュートリアルにflaskと連携するものがありました。Pytorchのチュートリアルを久しぶりに散策していたら、flaskを利用してPytorc...flaskとPython仮想環境の構築についてはこちらの記事もご参考ください。パソコンを立ち上げて、flaskの開発を行う前に行う準備をまとめたページとなります。flaskの開発環境はインストールされていることが前提となっています。インストール等...Flaskを中心にプログラムを理解importなどは前回の記事で書いていますので、今回はflaskの要所となるプログラムを見ていくことにします。flaskに置いてWebアプリケーションのviewを定義するプログラムが「@app.route」というデコレータで定義されています。これによって特定のURLに対する挙動をプログラミングすることができます。クライアントがGETメソッドで「/」にアクセスした時の処理となります。attachment'})この時は、root関数が呼び出され、jsonifyによって、json形式の文字列「Try...」が返されることになります。/predictにRGBイメージをつけてアクセスしてくださいね、とアプリの使い方を教えてくれますね。このWebアプリの一番の要所としては、「/predict」にクライアントが画像ファイルをPOSTした時のプログラムです。次のように、predict関数が呼び出されるようになっています。#POSTメソッドの時だけ以下の処理を実行します。#リクエストコンテキストの特殊なproxyであるrequestから画像ファイルを取り出します。#画像ファイルがNone出ないことを判定します。#ニューラルネットワークに入力できる画像形式に変換します。#input_tensorとなった画像ファイルをニューラルネットモデルに入力して結果を得ます。#結果の数値をラベル一覧から該当するラベルを得ます。#json形式で画像の分類結果を返します。app.run()プログラム中のコメントとして処理の流れを書きました。画像ファイルは、POSTメソッドとして受け取り、flaskのリクエストコンテキストのrequestというproxyに入っています。これを取り出して、Pytorchプログラムのニューラルネットワークモデルへとデータを渡しています。flaskのリクエストコンテキストについてはこちらの記事もご参考ください。アプリケーションコンテキストの項目でだいぶコンテキストについてもわかってきました。コンテキストって、結局、グローバル風にアクセスできるデータをどうやって作るか...このようなモジュールを経由したデータの渡し方という点で、チュートリアルがとても参考になります。実際にプログラムのflask部分はあまり多くありませんでした・・・すみません。Flaskよかったらシェアしてね!URLをコピーしました!URLをコピーしました!パンダの中のパンダサウンドクリエータ、プログラマひたすら脳内の思考と雑念を記事にしている気が・・・ご容赦ください!音楽、プログラム、自分の作品となる何かが作れる日を目指して邁進中です。