はじめに
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では動作確認済み.
接続してRunするとこのように猫の画像を判別するResNetが動くはず.猫の画像は適当に入れ替えて試しても大丈夫.
ちなみに実家のまこちゃんは...
tiger catっぽい,やっぱりかわいい(親バカ).
おしまいに
とりあえず今回はResNetの猫モデルを動かしてみた.
次回は自由に猫を選べるようにしてもいいし,mnistとか他のモデルを動かしてみるのもよさそう.