@ryoppippi

Zig の TensorFlow Lite ライブラリでMNISTした

18 Aug 2022 ・ 3 min read


MNIST x TFLite x Zig

はじめに

Zigで​機械​学習やりたいなと​考えていた​ところ、@mattn様が​また​面白い​ものを​作ってくださったので、​早速​遊んでみた。

https://zenn.dev/mattn/articles/af64c6a3eefad0

とりあえずMNIST

と​いうわけで​MNISTを​やってみる​ことにした。 レポジトリは​こちらに​ある。

https://github.com/ryoppippi/zig-tflite-mnist

READMEに​従って、​上の​レポジトリを​Cloneし、​TensorFlow Liteの​インストールを​済ませ、​kaggleからDatasetを​落と​してきたら​あとは​ビルドする​のみ!

一応​今回推論に​使用する​モデルも​Commitしてあるが、​自分で​学習する​ことも​もちろんできる。 学習に​用いた​Notebookは​こちら↓

画像の​読み込みに​ついて

mattn氏の​記事でも​触れられていた​通り、​Zigで​画像を​扱う​ための​ライブラリが​本当に​少ない。 使える​ものの​うち、​開発が​進んでいる​ものも​発展途上だったりする。

https://github.com/zigimg/zigimg

しかし、​C言語と​Zigの​相性が​抜群な​ことは​皆様ご存知だろう。 今回は​ヘッダーオンリーで​画像の​読み込みやリサイズが​出来て、​かつパブリックドメインで​使える​STBライブラリを​使用した。

https://github.com/nothings/stb

Zigから​本当に​簡単に​呼び出せたので、​Zig​使いで​画像の​扱いに​悩んでいる方は​是非とも​試してみて​ほしい。

https://github.com/ryoppippi/zig-tflite-mnist/blob/d13f62a3d807fdc44f2059d76174881edfb2f22a/src/c.zig

https://github.com/ryoppippi/zig-tflite-mnist/blob/d13f62a3d807fdc44f2059d76174881edfb2f22a/src/main.zig#L39-L53

終わりに

Zigから​Tensorflow Liteを​呼び出せる​ライブラリを​使って、​MNISTを​やってみた。 画像を​扱う​機械​学習も​ある​程度なら​Zigで​できる​ことが​わかった。 皆さんも​楽しんで​みてください。

comment on bluesky / twitter
CC BY-NC-SA 4.0 2022-PRESENT © ryoppippi