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
ディスカッション
コメント一覧
まだ、コメントがありません