ChainerとFlaskで作る機械学習デモアプリ 後編 Webアプリの構築

シェアする

Chainerで作った機械学習モデルを使ってWebアプリで判定させるデモを作る記事、後編はWebアプリを作ります。

前回記事:ChainerとFlaskで作る機械学習デモアプリ 前編 モデルの作成と保存

Webアプリの構成

ChainerのトレーニングのためのスクリプトをPythonで書いているので、WebアプリもPythonで構築してみます。
コーディングは最小限にして作りたいのでPythonのWebフレームワークであるFlaskを使います。

Welcome | Flask (A Python Microframework)
PythonのWebフレームワークはDjangoなども有名ですが、Flaskはシンプルさと軽量がウリです。今回はお手軽に作りたいのでFlaskを選びました。
Webアプリは画像ファイル(png)をアップロードすると、サーバ側でChainerのモデルを読み込んで、何の文字かを判定、その結果をWeb上に表示するようにします。

Flask環境の構築

以下の記事を参考にFlask環境を構築します。
https://qiita.com/qoAop/items/96a586337fa9f8983e48

アプリの構築

ディレクトリ、ファイル構成は以下のようになります。

predict.pyの内容です。

index.htmlの内容です。

アプリの起動と動作確認

スクリプトを作成、配置したらWebサーバを起動させます。

サーバにアクセス(今回は5000番ポートで起動しています)するとトップ画面が表示されます。

試しに手書き文字をアップしてみます。ファイルは28×28ピクセルのPNG画像のみ対応しています。

アップロードすると判定結果が返ってきます。ちゃんと正解しています。

まとめ

機械学習関連の案件ではまず事前の検証を行うことが多いです。
検証レベルだとLinuxのCUI上とかで作ることが多いですが、デモしたりする際にはWebアプリ化するなどしてGUIにした方が分かりやすく、CUIに慣れない人でも触ることができ、より理解度が深まることが期待できます。

今回はWebフレームワークFlaskを使うことでアップロードからWeb上での判定表示までを簡単に構築できることがお分かりいただけたかと思います。PoCやデモ等でFlaskをぜひ使ってみてください!