書籍『TinyML』 の要点メモ, その1
TinyML: Machine Learning With Tensorflow Lite on Arduino and Ultra-Low-Power Microcontrollers
- 作者:Warden, Pete,Situnayake, Daniel
- 発売日: 2019/12/31
- メディア: ペーパーバック
TensorFlow Lite for Microcontroller に関する本です。TensorFlow Liteはスマホなどを対象にしているのに対して、TensorFlow Lite for Microcontroller は、もっとリソース制約の厳しい組込みデバイスで、DeepLearningの推論を実行するフレームワークです。
筆者の方は、Googleで TensorFlow Lite や TensorFlow Lite for Microcontroller を開発してる方のようです。
まだ読んでいる途中ですが、この本で紹介されているサンプルは www.tensorflow.org にあるものと同じもののようです。 21章構成で、1~3章が導入、4~12章で4つのサンプルを説明、13~21章は個々の話題について記載されているようです。 自分で読んだ順に書いているので行ったり来たり、読まない部分があるかもしれません。
また以下のように略記します。 * 機械学習 = ML * Deep Learning = DL * TensorFlow Lite = TFL * TensorFlow Lite for Microcontroller = TFLM
1章: Introduction
2章: Getting Started
- 対象読者(コマンドラインとエディタが使える。ML/DL、組込み機器の知識は必須ではない)
- 必要なハードウェア(STM32FやArduinoで動くサンプルもあるけども) www.sparkfun.com
- 必要なソフトウェア。VSCodeとかTeraTermとか。
- この本は、勾配とか誤差逆伝搬とかの話にフォーカスするのではなく、スクラッチからモデルを作って、エラーに対処して、新しいデータセットに取り組むモデルをつくるプロセスを示す。
3章: Getting Up to Speed on Machine Learning
- 機械学習(ML)がなんなのか
- どういう問題を解けるのか
- Deep Learningのワークフロー
機械学習やDeep Learningの概要説明なので、上記をほかの書籍で理解している場合は読み飛ばして問題ないと思う(自分は読んでない)。
19章: Porting Models from TensorFlow to TensorFlow Lite
- TensorFlow Lite はTensorFlowのサブセットなので実装されていない演算もある。all_ops_resolver.ccをみて実装されている演算を確認しよう。 tensorflow/all_ops_resolver.cc at master · tensorflow/tensorflow · GitHub
- 一般的なDLモデルは、前処理(訓練、教師データの読み込みなど)、コアのニューラルネットワーク、後処理の3段階からなる。コアのニューラルネットワーク以外は無理にTFLで書かずに普通のコードで書くのが理にかなっている。
- TFLのグラフ構造をみるのにnetronは便利 github.com
- TFLに実装されていない演算を自分で実装する方法
- TFLチームの優先度は特定のユースケースから決めているので、あなたのケースが最適化されていない場合がある。これは15章で扱う。
- モデルを訓練する前にエクスポートしてTFLとの互換性をまず確認しよう
21章: Learning More
各種情報源。
- ホームページは www.tensorflow.org
- TensorFlow Lite以外のフレームワークとして、uTensor GitHub - uTensor/uTensor: TinyML AI inference library, MSのThe Embedded Learning Library - Embedded Learning Library (ELL) などがある
- 著者二人とこの本のtwitterアカウント Pete Warden (@petewarden) | Twitter, Daniel Situnayake (@dansitu) | Twitter tinymlbook (@tinymlbook) | Twitter