スポンサーリンク

Kerasで自前データで機械学習した成果をWEBで公開(Keras+Flask)(2)「FlaskアプリをHerokuで公開」

前回、Keras+Flaskで構築したアプリをローカルサーバで動かすところまではやった。

http://twosquirrel.mints.ne.jp/?p=20440

今回は、Herokuにデプロイしてみたい。なお、今回は、以下の、手書き数字MNISTの分類(グレースケール画像としてMLPモデルで学習、推測)についてのアプリをHerokuにデプロイしてみたい。

http://twosquirrel.mints.ne.jp/?p=20515

(環境)
Windows 8.1
Anaconda 4.4.0
Python 3.6.1
Tensorflow 1.2.1
Keras 2.0.6
Ruby 2.3.3
Rails 5.1
Git

(1)フォルダ構成

result
static
templates
フォルダを作成

(2)templates/ フォルダの中に、index.htmlを作成して、以下のサイトのindex.htmlのコードをコピペ。

https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/

(3)さらに、C:/py/keras/MNIST_MLP/ フォルダに、Flaskアプリの本体であるpredict.pyを作成して以下のコードをコピペ。

 

Anaconda Promtで、"python predict.py"と入力して、Flaskサーバを起動。

WEBブラウザで、http://localhost:5000 を開いて、ローカルで動くか試してみる

Anaconda Promtで、Ctrl + C を入力して、predict.py を止めておく。

(4)herokuの登録とHeroku CLIのインストール

以下のサイトの通りにやる。

herokuにFlaskアプリをデプロイする
msrks
2017年05月10日に更新
https://qiita.com/msrks/items/c57e0168fb89f160d488

herkouに登録後、以下のリンクからHeroku CLIをダウンロードしてインストール

https://devcenter.heroku.com/articles/heroku-cli#windows

Anaconda Promptで、"heroku login"を入力してログイン

heroku login
(EmailとPasswordを入力してログイン)

(5)pythonアプリをデプロイ

# ローカルレポジトリを作成
git init

# requirement.txt に依存ライブラリを記述

pip install gunicorn
pip freeze > requirements.txt

これだとAnaconaに入っているすべてのpipが記載されてしまうので、
tensorflow keras flask h5py gunicorn
その他必要そうなものを残して、あとは消す。

# runtime.txtに pythonのバージョンを指定
echo python-3.6.0 > runtime.txt

# Procfileに webアプリの起動方法を指定
echo web: gunicorn app:app –log-file=- > Procfile

# .gitignore ファイルの作製と編集
echo .python-version >> .gitignore

.gitignore ファイルを開いて、以下のように変更。少なくとも、data とtestSetは追加する。

.python-version

 

data

testSet
keras2_MNIST_MLP_taining.ipynb
.ipynb_checkpoints
.vscode


herokuにデプロイ

$ heroku create
$ heroku buildpacks:set heroku/python

$ git add -A
$ git commit -m "deploy heroku"
$ git push heroku master
$ heroku ps:scale web=1
$ heroku open

Procfileの書き換え

web: gunicorn predict:app --log-file -

変更の反映

git add -A
git commit -m "change Procfile"
git push heroku master

heroku open

自動的にWEBブラウザが立ち上がり、開く。

動作確認する。

自分で画像を作って試してみる。

大丈夫そう。予測は間違っているが、、、

これは正解している。

今回は、グレースケール画像に変換してMLP(Multiplelayer Perceptron)モデルで手書き数字文字認識を行うアプリを作成した(コピペした)。

次は、カラー画像でCNN(Convolutional Neural Network)で同じことをやってみたい。(ノートパソコンでは厳しいかもしれないが、、、)

<機械学習の本で一番お勧めの本>

<Kerasで一番お勧めの本>

(参考)

RailsInstaller
http://railsinstaller.org/en

2017-01-29
コマンドでHerokuを操作する Heroku CLI のインストール
http://blog.w-hippo.com/entry/2017/01/29/143550

ChainerとFlaskで作る機械学習デモアプリ 後編 Webアプリの構築
2017/10/6
https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/

herokuにFlaskアプリをデプロイする
msrks
2017年05月10日に更新
https://qiita.com/msrks/items/

Flask を触ってみる + Heroku で動かす
sqrtxx
2015年02月15日に更新
https://qiita.com/sqrtxx/items/2ae41d5685e07c16eda5