onnx.jsのデモンストレーションを動かしてみた

ブラウザでディープラーニングのモデルを動かすonnx.jsのデモを動かしてみました。

目次

  1. onnx.jsとは
  2. デモを動かしてみる

onnx.jsとは

ONNXというのは、ディープラーニングの学習済みのモデルをフレームワーク間で交換するためのフォーマットです。Chainerで学習したモデルをWindows MLで使うというようなことに使います。

このONNXのモデルをJavaScriptで使うというのが、onnx.jsです。

マイクロソフトがJavaScriptのライブラリをオープンソースで公開する時代なんですね。

デモを動かしてみる

いくつかサンプルが公開されているのですが、Resnet50を試してみます。

試した環境は、Windows10、Python 3.7、FireFox、Core i5-8250uです。Pythonはローカルのウェブサーバーに使っただけですので、ローカルでウェブサーバーが立てられれば何でも良いです。

サンプルファイルはCDNに置いてあるonnx.jsのライブラリを参照するので、ネットワークにつながっている必要があります。

まずサンプルをダウンロードします。 GitHubのonnx.jsのレポジトリ からgitでクローンするか、zipファイルとしてダウンロードします。

onnxjs-master/examples/browser/resnet50 というフォルダにサンプルファイルがあります。

次に、Resnet50でImagenetの 訓練済みのモデル をダウンロードします。ダウンロードしたonnxファイルは、 onnxjs-master/examples/browser/resnet50 のフォルダに保存します。

次に、ローカルのウェブサーバーを起動します。onnxjs-master/examples/browser をカレントディレクトリにして下記を実行します。

> python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

そしてブラウザで http://localhost:8000/resnet50/ にアクセスすると猫が表示されます。

この猫が猫かどうかを学習済みモデルで判定します。

猫の写真の下に「Run」というボタンがありますが、これをクリックすると、ちょっと考えてから猫の種類の判定結果が表示されます。

実行結果

このサンプルはWebGL用になっているようなので、動かなかったらindex.jsの3行目にあるwebglの文字をcpuに変えてみてください。私の環境ではどちらでも動きました。

広告

機械学習カテゴリの投稿