LoginSignup
1
2

More than 3 years have passed since last update.

第一回ONNX.jsの備忘録(ResNet)

Last updated at Posted at 2021-06-01

はじめに

ONNX.jsの練習用にいろいろやっていくための備忘録
今回はONNX.jsからResidual Network(ResNet)のモデルを動かして猫を判別する

ResNetって何だったっけ

昔勉強したことがあるきもするけど,案の定忘れてるのでおさらいから.
と言っても解説のリンクを貼っとくだけ.とてもわかりやすい記事がたくさんある.
ResNet なんて全く理解していないだけの人生だった
ResNet始祖論文

要は入力をショートカットして,すっ飛ばした入力と出力の誤差を求めていく.
ResNet登場以前は「NNは層が深ければ深いほど精度も高くなってくでしょ」といわれていたが,実際は違う.
モデル劣化と勾配消失が起きるので,精度は頭打ちどころか悪くなっていくこともある.そこでResNetが大活躍してくれるわけである.イメージとしては項等変換をモデル側で用意する,「テイラー展開の右辺第一項のみを与えるから後は推測してね」という感じだ.詳しくはリンク先を参照.

今回の目的

ONNX.jsを使用して,上述のResNetの有名な猫判別モデルを動かす.
まずはとにかく公式のデモを動かすところからスタート.

ONNXとは

ONNXとONNX.jsの詳しい説明はリンク先で(丸投げ).
ちなみにONNXはオニキスと読むらしい.
ONNXの概要
ONNX.jsを使ってWebブラウザでディープラーニング
onnxjsを使ってブラウザで機械学習モデルを実行する
onnx.jsのデモンストレーションを動かしてみた

色々と下準備

公式のデモサンプルをDLしてくる.gitでクローンでも丸ごとzipで落としてもおk.
次にImagenetの訓練済みモデルをDLしてくる.
DLしたモデルは○○.onnxという見慣れない拡張子のファイル(今回のはresnet50_8.onnx),こいつを先ほどDLしたフォルダのresnet50(onnxjs-master/examples/browser/resnet50/)の中に移動する.

とりあえずこれで準備は完了.

実際にうごかす

先ほどのResNetのONNX.jsを動かすために,まずはローカルサーバを立ち上げる.
onnxjs-master/examples/browserをカレントディレクトリにして以下を実行.

python -m http.server

サーバが正常に動作していることを確認したら,適当なブラウザでローカルホスト(http://localhost:8000/resnet50/)にアクセス.ちなみに私の環境ではfirefoxとchromeでは動作確認済み.

スクリーンショット 2021-06-01 16.19.44.png

接続してRunするとこのように猫の画像を判別するResNetが動くはず.猫の画像は適当に入れ替えて試しても大丈夫.
ちなみに実家のまこちゃんは...

cat_test2.png
スクリーンショット 2021-06-01 16.34.49.png

tiger catっぽい,やっぱりかわいい(親バカ).

おしまいに

とりあえず今回はResNetの猫モデルを動かしてみた.
次回は自由に猫を選べるようにしてもいいし,mnistとか他のモデルを動かしてみるのもよさそう.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2