Kerasで学習したモデルをWebAPIとして提供する


機械学習で学習済みモデルの予測結果をどうやって返すべきか勉強したので、WebAPIとして提供する場合のコードのメモする。 リポジトリこちら

READMEに拙い英語でリポジトリの内容について書いた。

個人的な学びポイントは、

  • load.pyinit 関数でリロードした学習済みモデルを返している部分
  • 画像データの受け取り方

の2つである。

まず、学習済みモデルを返している部分についてだが、 tensorflow の場合、 Saver などを使い、 graph に学習済みモデルを読み込む必要があるが、 Keras の場合は学習済みのモデルをリロードし、 predict 関数を使って推論が行える。

そして、もう一つの画像データの受け取り方について。 今回、画像を DataUrl という形式に変換して渡している。 これを利用することで、 API 側では画像を base64 の文字列として受け取ることができ、 画像として復元し、推論可能なデータサイズにリサイズすることで予測を行っている。

Flask を利用すれば非常に簡単に推論結果を返すことができるので、 モデルを作成して推論結果を検証するためのインターフェイスとしては効率の良い方法の一つではないかと思う。