TensorFlow.jsを使ってKerasで作成したモデルを利用してみる

GoogleAppsScript

みなさん、こんにちは。
シンノユウキ(@y_stadio)です。

機械学習にはPythonを使う必要がある,ということはよく言われているかと思います.しかし,Googleから公開されているTensorFlowのJavaScript版であるTensorFlow.jsを利用することで,ブラウザ上で手軽に機械学習を行うことができます.今回はその方法と簡単な例を紹介したいと思います.

ではいきましょう!

 

TensorFlow.jsとは?

はじめに,今回紹介するTensorFlow.jsを紹介したいと思います.

TensorFlow.jsのオリジナルであるTensorFlowというのは,Googleが公開している機械学習用のオープン・ソースのライブラリです.PythonやJavaなどから利用できるAPIを備えています.

TensorFlow.jsはそのJavaScript版です.ブラウザ上で機械学習モデルのトレーニングや,そのデプロイできるようになります.

またトレーニングだけでなく,既存の学習済みモデルを読み込んで利用したり,そのモデルを再学習することができるようになります.機械学習の成果をWeb上で利用するためには最適なツールと言えるでしょう.

公式ページは以下からご確認ください.

TensorFlow.js
A WebGL accelerated, browser based JavaScript library for training and deploying ML models

 

MNISTのPredictionをブラウザでやってみる

手始めに,Kerasで学習済みのモデルをTensorFlow.jsで読み込み,ブラウザ上でPredictionしてみましょう.

KerasでMNIST学習済みモデルを作成しよう!

まずは,Kerasでモデルを構築し,MNISTで学習させて,TensorFlow.jsに渡す学習済みモデルを作成しましょう.ここでは,Google Colabを用いて,こちらのコードを使用して学習させました.

keras-team/keras
Deep Learning for humans. Contribute to keras-team/keras development by creating an account on GitHub.

 

モデルをTensorFlow.jsで読める形に変換しよう!

作成したモデルは,そのままの形ではTensorFlow.jsに渡すことができません.TensorFlow.jsで利用できる形に変換してあげましょう.以下のコードのようにしてください.

まずモデルを保存し,tensorflowjsのconverterを使用してモデルを変換させます.

このモデルをダウンロードしておきましょう.

 

HTMLコードはこちら!

では実際のHTMLコードを示します.なお,こちらのコードは以下の記事を参考にしています.

https://qiita.com/yukagil/items/ca84c4bfcb47ac53af99

 

実際にHTMLを表示してみると,以下のようなページが表示されます.

なお,ローカル環境でこのHTMLを試すことができないという方は,以下の記事で紹介している「Web Server for Chrome」をご活用ください.

JavaScriptを試すなら「Web Server for Chrome」がオススメ
今回はJavaScriptを動かしてみる際に重宝する「Web Server for Chrome」というChromeアプリを紹介したいと思います.これを使うことでローカル環境でもお手軽にJavaScriptの動きを確認することができ...

また,ここで文字を書くために「Signature Pad」を使用しています.これについては以下の記事を参考にしてください.

HTML5でサインを書かせるなら「Signature Pad 」で決まり!
今回はHTML5のCanvasで文字を書けるようになるJavaScriptのプラグイン:「Signature Pad」を紹介します.外部のライブラリに依存しない,非常に使いやすいプラグインです. では行きましょう! 「Sig...

ここで紹介したコードでは,Canvasに書いた文字をPredictionするとその文字がどれに該当するのかを予測することができます.

 

まとめ

今回はKerasで学習したモデルをブラウザ上で利用するためのライブラリ:TensorFlow.jsを紹介しました.Python環境だけでなく,JavaScriptでも利用できるので機械学習を活用する場が広がりますね.参考になれば幸いです.