はじめに
1ヶ月程前に「Go による機械学習 推論フレームワークの最新動向 2019」という記事を書きました。onnx-go はバックエンドとして gorgonia を使う Pure Go なニューラルネットワークのライブラリなのですが、前回紹介させて頂いた時にはまだ mnist 程度の簡単なモデルしか動作しませんでした。
tiny_yolov2 が動いた
昨日マージされた変更により、tiny-yolov2 が動く様になりました。
examples/tiny_yolov2 ディレクトリに移動し go build
すると tiny_yolov2
が出来上がります。モデルファイルは以下からダウンロードして下さい。
$ ./tiny_yolov2 -img file.jpg -output output.jpg
この様に実行するとマーカーが描画された画像が出力されます。
リアルタイムに推論はまだ遅くて使えないと思いますが、アップロードされた画像から物体を検出して何か処理を行う程度には使える様になりました。
今後の onnx-go
これまで Go で学習済みモデルを使えるニューラルネットワークと言えば TensorFlow の Go binding、TensorFlow Lite の Go binding (go-tflite)、PFN 社の menoh を使うしかなく、またいずれも cgo の為、ビルドのハードルが高いのが問題でした。ですが、onnx-go が Pure Go で実現した事により go get
で機械学習ライブラリが手に入れられる様になりました。また Pure Go なのでクロスプラットフォームでビルドできる様になりました。とても良い話です。
とは言え、全てのオペレータが揃ったという事ではありません。まだ足りないオペレータもあります。皆さんからのコントリビュートをお待ちしています。
(僕も onnx-go の push 権限を頂いたので、もっとコントリビュートしようと思います。)