Tensorflow.jsで画像認識の定番、手書き数字認識(mnist)をやってみました。

作成したサービスをHerokuに公開しています。

注: モバイル対応ができませんでした。デスクトップからのアクセスをお願いします。

Demo

制作背景

今回のサービスは、次の記事のフォークとなります。

ただし、そのまま持ってきたわけではなくて、Reactに移植しました。ソースコードは次になります。

感想

Tensorflow.jsすごい!の一言です。

このサービス、どうやって動いているかを解説すると、まずPythonでmnistのデータを学習します。そして学習したモデルをJSで動くように変換します。推論は、JavaScriptでクライアントサイドのブラウザ上で実施するのです。モデル自体は、GitHubに置いてあります。ユーザーがブラウザで実行するために、モデルをダウンロードしてきて、手元で推論を実行するのです。

これは、機械学習プロジェクトの新たな形です。今までの認識では、学習モデルの作成も推論も、Pythonでやるのかなと思っていました。たとえば、Kerasで分析したモデルをDjangoサービスに組み込んで、サーバサイドで推論をするのかなと。

しかし、Tensorflow.jsをつかうことで、推論をサーバではなくてクライアント側で実行するという、別の手段ができたのです。(メリットデメリットについては、2018年Software Design 9月号が詳しい)一番の課題は、モデルサイズでしょうか?モバイルで推論をするためには、モデルが軽量でなければいけません。

とはいえ、JavaScriptをつかったクライアントサイド推論、ワクワクする技術ですね〜。もう少し遊んで、深めていきたいです。