概要
作ったFlaskアプリケーションの概要は以下の通りです。とても簡単な処理です。
1. 画像をアップロード
2. 画像がオバマなのかスモーリングなのか判定
3. 判定した結果を返す
動作する環境
Pythonは、3.7.2を使いました。そのほかに使ったパッケージとバージョンは以下の通りです。精査していないので、必要十分ではないと思います。
実装手順
今回のアプリケーションを作ってみたときの過程を振り返りたいと思います。
予測モデルの構築
オバマとスモーリングが似ていると話題だったことがあり、機械学習で判別するモデルを、Kerasで作ったことがありました。経緯や実装したコードは、以下を参照ください。
今回は、そのときに構築したCNNの学習済みモデルを保存し、利用します。拡張子は、.h5
です
主な処理の実装
メインの処理は、以下のpredict.py
に記載しています。
CNNの学習済みモデルは、predict.py
と同じディレクトリに保存しておき、読み込みます。
1 2 |
model = load_model('obama_smalling_201908.h5') |
読み込んだ学習済みモデルを活用して、アップロードされた画像がオバマなのかスモーリングなのか判定します。
もっとスマートな方法もありそうですが、今回は以下のようにしました。
1 2 3 4 5 6 7 8 |
pred = model.predict(x, batch_size=1, verbose=0) score = pred[0][0] if(score >= 0.5): person = 'Smalling' else: person = 'Obama' score = 1 - score |
画面表示
デザインにこだわりはないので、簡単なHTMLとCSSで実装しています。Bootstrap
などでもう少しオシャレにしたいですが、一旦保留します。
Flaskなので、Jinja2の形式も使いました。例えば、以下のような感じです。
- これが、base.html
- これが、predict.html
実装結果
環境変数のFLASK_APP
にpredict.py
のパスを指定して、flask run
コマンドを打てば、localhost上でアプリケーションが起動します。
実際の動作はこんな感じです。しょぼいですが、一応できました。
お盆休みなのでflaskで遊んでる pic.twitter.com/eVHuBMx8ZZ
— nishipy (@iamnishipy) August 14, 2019
参考にしたサイト
以下の情報を参考にしながら、製作しました。そもそもこのようなアプリケーションを作ろうと思ったのは、upuraさんのブログを拝見したからです。
コード自体は、Flaskチュートリアルがとても参考になりました。今回実装したコードの大半が、Flaskチュートリアルから引用しています。
私の場合は予測モデルをすでに構築済みでしたが、未構築の場合はUdemyの講座もおすすめです。
- upuraさんのブログ
- Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやった
Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやった - u++の備忘録Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやりました。タイトル通り、PythonのTensorFlowで作成した機械学習モデルをDjangoを用いてWebアプリ化する講座です。全3.5時間を一晩で流し見しながら追体験しましたが、個人的に求めていた内容...(続く) - Djangoで「名古屋/東京」の画像分類アプリを作った
Djangoで「名古屋/東京」の画像分類アプリを作った - u++の備忘録Djangoで簡単な画像分類アプリを作ってみた。Flickrから「名古屋」「東京」で画像を400枚ずつ収集して、KerasのVGG16使って分類器を学習。推論したい画像を渡して、結果を表示するところまで。分類器が適当でAUCが.65くらいなのはご愛嬌。 pic.twitter.com/E4EHlliTYh— u++ (...(続く)
- Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやった
- Flask公式ドキュメント
- ブログアプリケーションを作るチュートリアル
Welcome to Flask — Flask Documentation (1.1.x) - ファイルアップロードの実装例
https://flask.palletsprojects.com/en/master/patterns/fileuploads/
- ブログアプリケーションを作るチュートリアル
- Udemy講座
- TensorFlow・Python・Flaskで作る機械学習アプリケーション開発入門
【画像判定AIアプリ開発・パート1】TensorFlow・Python・Flaskで作る画像判定AIアプリ開発入門Python 3 でクローリングして画像データを収集、加工し、画像分類器を作ってみよう。ディープラーニングによるモデル作成、改善を自分の集めたデータで実践します。Flaskでウェブアプリ化, XcodeでiOSアプリ化にも挑戦します。 - 登録は、こちら。
- TensorFlow・Python・Flaskで作る機械学習アプリケーション開発入門
さいごに
今回は普段手を出さないレイヤーの勉強がてら、Flaskアプリケーションを作ってみました。
今回実装したコードは、GitHubにあげました。
GCPの無料枠が余っているので、後編ではこのアプリケーションをにホストしてみる予定です。
以上.
コメント