その2でNode-RedとLobeの連携ができました。
次はLobeからエクスポートしたTensorFlowモデルをPythonでREST API化してみます。と言っても、こちらの「flask-server」を使いますので、そんなに難しくはありません。
Pythonは私が良く使うWinPythonを使います。本記事は2021/10/2のものです。バージョンなどは少し古くなっているかもしれません。
Pythonの仮想環境の構築
flask-serverの説明にあるように、まず仮想環境を構築します。
WinPythonはポータブルなPythonです。展開すればインストール作業無しにすぐに使えます。私は現在バージョン3.9を標準に使っていますが、flask-serverは3.6か3.7を推奨しています。こんな時にもすぐに対応できます。環境変数の変更などは必要ですが。。。
今回は、こちらの軽量版のWinpython64-3.7.7.1dot.exe
を使いました。
展開して、所望のフォルダに変更してください。私はC:¥WinPython37
としました。
環境変数のPATHをチェックして、すでにあるPythonのパスをC:\WinPython37\python-3.7.7.amd64
に変更してください。あとC:\WinPython37\scripts
を追加してください。
@echo off
call "%~dp0env_for_icons.bat"
rem backward compatibility for python command-line users
"%WINPYDIR%\Scripts\pip.exe" %*
上のDOSのコマンドをpip.bat
として、C:\WinPython37\scripts
にコピーしてください。BATファイルはこちらに置いておきます。よろしければ右クリックでダウンロードしてお使いください。
こちらの「flask-server」から、zipをダウンロードしてください。
展開して適当なフォルダ名にしてください。エクスプローラでフォルダを開き、右クリックして[アドレスの編集]を押し、cmd
と入力し実行してください。
以下を実行します。
python -m venv .venv
続けて以下も実行します。
python -m pip install --upgrade pip && pip install -r requirements.txt
後は、以下を実行すれば良いのですが、その前にLobeでモデルをエクスポートします。
python app.py
Lobeからモデルのエクスポート
Lobeを起動し、所望のプロジェクトを開き、[Use]を押します。
さらに、[Export] -> [TensorFlow]
適当なフォルダを選択します。出来上がったフォルダの中身だけ、flask-server-main
フォルダのmodel
フォルダにコピーしてください。
Flaskサーバーの起動とNode-REDからの利用
flask-server-main
フォルダを作業フォルダにして以下を実行してください。
python app.py
使い方はLobeをAPI化した時と同じ使い方です。ただし、URLがhttp://127.0.0.1:5000/predict
となります。
Node-REDの「http request」ノードのURLを上記に書き換えてください。同じように動作します。
app.py
の以下を編集すると、外部からアクセスすることも可能です。
app.run(host='127.0.0.1', port=5000, debug=True)
↓
app.run(host='0.0.0.0', port=5000)