Tensorflow.jsで画像認識の定番、手書き数字認識(mnist)をやってみました。
作成したサービスをHerokuに公開しています。
注: モバイル対応ができませんでした。デスクトップからのアクセスをお願いします。
Demo
制作背景
今回のサービスは、次の記事のフォークとなります。
ただし、そのまま持ってきたわけではなくて、Reactに移植しました。ソースコードは次になります。
感想
Tensorflow.jsすごい!の一言です。
このサービス、どうやって動いているかを解説すると、まずPythonでmnistのデータを学習します。そして学習したモデルをJSで動くように変換します。推論は、JavaScriptでクライアントサイドのブラウザ上で実施するのです。モデル自体は、GitHubに置いてあります。ユーザーがブラウザで実行するために、モデルをダウンロードしてきて、手元で推論を実行するのです。
これは、機械学習プロジェクトの新たな形です。今までの認識では、学習モデルの作成も推論も、Pythonでやるのかなと思っていました。たとえば、Kerasで分析したモデルをDjangoサービスに組み込んで、サーバサイドで推論をするのかなと。
しかし、Tensorflow.jsをつかうことで、推論をサーバではなくてクライアント側で実行するという、別の手段ができたのです。(メリットデメリットについては、2018年Software Design 9月号が詳しい)一番の課題は、モデルサイズでしょうか?モバイルで推論をするためには、モデルが軽量でなければいけません。
とはいえ、JavaScriptをつかったクライアントサイド推論、ワクワクする技術ですね〜。もう少し遊んで、深めていきたいです。