「TensorFlow.js」公開、Webブラウザ上で機械学習の開発、学習、実行が可能に。WebGL経由でGPUも活用

2018年4月2日


Webブラウザ上で機械学習のモデルの構築、学習、学習済みモデルの実行などが可能になるJavaScriptライブラリ「TensorFlow.js」がGoogleによって公開されました

TensorFlow.js

TensorFlow.jsの基となったオリジナルの「TensorFlow」は、Googleが開発しオープンソースとして公開されている機械学習ライブラリです。Windows、Mac、Linuxなどに対応し、Python、C++、Java、Goなどに対応したAPIを備えています。

今回発表されたTensorFlow.jsはそのJavaScript版で、Webブラウザ上で実行可能。TensforFlow.jsのAPIはオリジナルTensorFlowのPython APIのすべてをサポートしているわけではありませんが、似た設計となっており、機械学習のモデルの構築、学習、学習済みモデルの実行が可能なほか、学習済みモデルのインポートも可能。

WebGLを通じてGPUを利用した処理の高速化にも対応しています。FAQによると、オリジナル版TensorFlowとの速度差は次のように説明されています。

In our experience, for inference, TensorFlow.js with WebGL is 1.5-2x slower than TensorFlow Python with AVX. For training, we have seen small models train faster in the browser and large models train up to 10-15x slower in the browser, compared to TensorFlow Python with AVX.

私どもの経験から推測すると、TensorFlow.jsとWebGLの組み合わせは、TensorFlow PythonとAVX(訳注:AVXはXeonが備えるベクトル演算を高速処理する命令セット)よりも1.5倍から2倍程度遅い。学習においてTensorFlow PythonとAVXと比較すると、ブラウザ上では小さなモデルでは高速なこともあるが、大きなモデルでは最大10倍から15倍程度遅いようだ。

実際にiPad Pro(2016年版 9.7インチ)のSafariで実行したところ、カメラで撮影された映像をリアルタイムに認識する程度の処理速度はあるようです(後述のデモから)。

また、現時点ではTensorFlow.jsで学習させたモデルをエクスポートする機能は実装されていません。Node.jsにも対応しておらず、これらは今後の課題となっているとのこと。

Webアプリケーションにインテリジェンスをもたらす

TensorFlow.jsを用いることで、Webアプリケーションは単独で機械学習によるインテリジェンスを備えることができるようになります。

それを示すデモのひとつとして用意されているのが「Emoji Scavenger Hunt」です。

これは絵文字に対応した現実のモノを制限時間内に探して、スマートフォンやタブレットのカメラで撮影するというゲーム。カメラから入力される画像は機械学習によって認識され、絵文字に対応したものかどうかリアルタイムに判定される、というものです。

実際にiPad Proで試してみました。

「Emoji Scavenger Hunt」をWebブラウザから起動し、ゲームをスタートすると、ズボンやマウス、電球などの絵文字が表示されます。

プレイヤーは20秒以内にその絵文字が示すものをカメラで写さなければなりません。カメラからの映像はリアルタイムに認識されていくため、シャッターボタンなどを押すことなく、カメラの映像内に正解のものが映り込むと、自動的にファンファーレが鳴って正解したことを教えてくれます。

下記は絵文字で示された「電球」に対して、実際に自分の部屋の電球をカメラで写したところ。電球の一部が写っただけで一瞬にして認識されました。

TensorFlow.jsのデモ「Emoji Scavenger Hunt」プレイ画面

このようにリアルタイムに画像認識を行うインテリジェンスを備えたWebアプリケーションがTensorFlow.jsで実現されています。

そのほかTensorFlow.jsのWebサイトには、Webブラウザですぐ試せるデモが数多く用意されていて、すぐに機械学習機能を持つWebアプリケーションを試すことができます。ぜひ試してみてください。

余談ですが、Googleがエイプリルフール企画として公開した「Gboard 物理手書きバージョン」では、キーボードの上をなぞって押されたキーから文字を推測するのに機械学習が使われていると説明されています。もしやと思ってデモのソースコードを少し探ってみたところ、どうやらTensorFlow.jsが使われているようです。さすがGoogle、エイプリルフール企画にも気合いが入っていて仕事が速いですね。

Gboard 物理手書きバージョンにもTensorFlow.jsが使われているようだ

エッジデバイスもアプリケーションも機械学習により変わっていく

TensorFlow.jsはいきなり登場したのではなく、これまでdeeplearn.jsとして公開されていたJavaScriptライブラリの後継として登場したものです。

つまりWebブラウザ上での機械学習によるインテリジェンスを備えたアプリケーションはTensorFlow.jsの登場以前からある程度実現できていたと言えますが、それでも機械学習の分野でメジャーなTensorFlowの名前を付けたJavaScriptライブラリが登場したことは、Webアプリケーションと機械学習が結びつくうえで節目の出来事だと思います。

そしてWebブラウザで機械学習が動くということは、ネットワークのエッジに位置するさまざまなデバイスでオンデマンドに機械学習が動く、その可能性が開けたことを意味します。

エッジデバイスとしては、マイクロソフトも今月もしくは来月にも登場するWindows 10の次期大型アップデートで、Windows 10に機械学習の実行環境とAPIを備えた「Windows ML」を搭載するとしています

これによりWindowsアプリケーションにも機械学習によるインテリジェンスがもたらされていくことでしょう。

また、GoogleはAndroidやiOS用の「TensorFlow Lite」も昨年発表し、現在デベロッパープレビューの段階です。

これまで機械学習の実行環境は、強力な処理能力を備えたクラウドやサーバサイドが中心でした。それがWindowsやスマートフォンやそのほかさまざまなエッジデバイスへ広がっていくことで、エッジデバイスのハードウェアやアプリケーションの設計や運用などの幅広い領域で変化が起きていくのではないでしょうか。

このエントリーをはてなブックマークに追加
follow us in feedly

カテゴリ 機械学習 / AI / ビッグデータ
タグ  JavaScript , TensorFlow , 機械学習


次の記事
プログラミング言語ワースト10は?/Jenkins X発表/Java 10がリリース/Googleが「Dart 2」発表ほか、2018年3月の人気記事

前の記事
Kubernetes 1.10がリリース。コンテナストレージインターフェイスがβ版に、GPUなどをサポート可能にするデバイスプラグインも


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



新着記事 10本


PR - Books


fig

fig

fig