1. はじめに
作成するアプリの概要
この Codelab では、TensorFlow Lite For Microcontrollers を使用して Arduino Nano 33 BLE でディープ ラーニング モデルを実行する方法を学びます。マイクロコントローラーがデジタルの「魔法の杖」に変わっている手を振ったり、さまざまな魔法を唱えたりできます。ユーザーが魔法の杖を動かすと、この複雑で多次元のセンサーデータは人間には理解できません。モデルへの入力として渡されます。このモデルは単純な分類を出力し、複数の動きのいずれかが発生した場合に警告を発します。
マイクロコントローラでの ML
ML を使用してインテリジェントなツールを作成し、ユーザーのGoogle アシスタントのように、生活がもっと便利になります。しかし多くの場合、このようなエクスペリエンスには大量のコンピューティングやリソースが必要であり、これには強力なクラウド サーバーやデスクトップが含まれます。しかし、マイクロコントローラなどの小型で低電力のハードウェアでも ML 推論を実行できるようになりました。
マイクロコントローラは非常に一般的で、安価で、エネルギーをほとんど必要とせず、非常に信頼性があります。家電、自動車、おもちゃなど、あらゆる種類の家庭用デバイスの一部です。実際、マイクロコントローラ搭載デバイスは毎年約 300 億台製造されています。
ML を小さなマイクロコントローラに搭載することで、高価なハードウェアや信頼性の高いインターネット接続に頼ることなく、生活で使用する何十億台ものデバイスのインテリジェンスを向上させることができます。日常生活に適応できるスマート家電、問題と通常の動作の違いを認識するインテリジェントな産業センサー、子どもたちが楽しく楽しく学習できるよう支援する魔法のおもちゃなどを想像してみてください。
TensorFlow Lite For Microcontrollers(ソフトウェア)
TensorFlow は、モデルをトレーニングして実行するための Google のオープンソース ML フレームワークです。TensorFlow Lite はソフトウェア フレームワークであり、TensorFlow の最適化バージョンであり、スマートフォンなどの比較的性能の低い小型デバイスで TensorFlow モデルを実行することを想定しています。
TensorFlow Lite For Microcontrollers は、マイクロコントローラなどの小型で低電力のハードウェア上で TensorFlow モデルを実行することを目的とする、TensorFlow の最適化バージョンであるソフトウェア フレームワークです。バイナリサイズが小さく、オペレーティング システムのサポート、標準の C / C++ ライブラリ、動的メモリ割り当てを必要としないなど、これらの組み込み環境に必要な制約を遵守しています。
Arduino Nano 33 BLE(ハードウェア)
Arduino は、電子プロジェクトの構築に広く使用されているオープンソース プラットフォームです。次の要素で構成されます。
- この Codelab で使用する Arduino Nano 33 BLE などの物理的なプログラマブル回路基板(多くの場合はマイクロコントローラ)。
- Arduino IDE(統合開発環境)。コンピュータ コードを記述して物理ボードにアップロードするために使用されるソフトウェア。
Arduino Nano 33 BLE は、マイクロコントローラ ベースのプラットフォームです。1 つの回路基板上の小さなコンピュータです。プロセッサ、メモリ、I/O ハードウェアを搭載しており、他のデバイスとデジタル信号を送受信できます。コンピュータと異なり、マイクロコントローラは高性能ではなく、通常はオペレーティング システムを実行しません。搭載されているプロセッサは小さく、メモリは多くありません。また、記述したプログラムはハードウェア上で直接実行されます。できるだけシンプルに設計されているため、マイクロコントローラが使用するエネルギーはごくわずかです。
演習内容
- Arduino Nano 33 BLE マイクロコントローラをセットアップし、デジタルの「魔法の杖」にします。
- Arduino IDE をセットアップし、必要なライブラリをインストールします。
- プログラムをデバイスにデプロイする
- 魔法の杖を振ってさまざまな呪文を唱えることができます。予測も表示されます
必要なもの
- Linux、MacOS、Windows ノートパソコン
- Arduino Nano BLE Sense 33(ヘッダーなし)
- マイクロ USB ケーブル(USB-C ノートパソコンをお使いの場合は、USB-C - マイクロ USB ケーブル)
- (オプション)スティック、長さ約 30 cm
- (必要に応じて)粘着テープ
2. Arduino マイクロコントローラのセットアップ
Arduino を開く
カメラを箱から取り出し、発泡緩衝材から取り出します。導電性があるので、そうしないと問題を引き起こす可能性があります。
ノートパソコンに接続する
- マイクロ USB ケーブルをチップ内のソケットに差し込みます。
- ケーブルのもう一方の端をノートパソコンの USB ソケットに差し込みます。
- Arduino の左下の LED(下の画像の左上)が点灯している必要があります。
ワークフローをよく理解する
上の図に示すように、Arduino の TFLite インタープリタは定期的にモデルの推論を実行します。このモデルは、処理された加速度計データを入力として使用し、最も可能性が高い操作を提案する予測を出力します。さらに、必要な出力が出力され、右側の LED が点灯します。
3. Arduino IDE をセットアップする
1. Arduino IDE をダウンロードする
プログラムを Arduino マイクロコントローラにデプロイするために、Arduino IDE を使用します。
ダウンロードしたら、Arduino IDE のアイコンが のようなアプリをクリックして開き、Arduino IDE をインストールします。
この場合、最初のランディング ページは次のように開きます。
2. ボード マネージャーを設定する
- Arduino メニューから
Tools -> Board: "Arduino .." —> Boards Manager
を選択します。 "Arduino Nano 33 BLE"
を検索して、Arduino nRF528x Boards (Mbed OS)
をインストールします。これにより、Arduino Nano 33 BLE マイクロコントローラが Arduino IDE でサポートされるようになります。
- Arduino メニューから
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
を選択します。
- 最後に、選択したボードが「Arduino Nano 33 BLE」であることを確認します。をクリックします。
3. ポートを設定する
Arduino メニューから Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
を選択します。次のように表示されます。
4. ボードの接続を確認する
Arduino メニューから Tools -> Get Board Info
を選択します。次のように表示されます。
4. ライブラリをインストールする
1. TensorFlow Arduino ライブラリ
このライブラリには、TensorFlow Lite for Microcontroller のサンプルがすべて含まれています。サンプルには、この Codelab に必要な魔法の杖のソースコードが含まれています。
- Arduino メニューから
Sketch -> Include Library -> Add .ZIP Library...
を選択します。 - ダウンロードした TensorFlow Arduino ライブラリ
.zip
を追加します。
2. LSM9DS1 Arduino ライブラリ
このライブラリを使用すると、Arduino Nano 33 BLE Sense の LSM9DS1 IMU から加速度計、磁力計、ジャイロスコープの値を読み取ることができます。
- Arduino メニューから
Sketch -> Include -> Manage Libraries...
を選択します。 "Arduino_LSM9DS1"
を検索してインストールする。
5. サンプルを読み込んでビルドする
1. サンプルを読み込む
Arduino メニューから File -> Examples -> Arduino_TensorFlowLite -> magic_wand
を選択して、サンプルコードを読み込みます。
魔法の杖のソースコードが読み込まれます。
2. サンプルを構築する
スケッチ ウィンドウで Upload
ボタンをクリックします。
数分後、フラッシュが完了したことを示す赤色のテキストが表示されます。アップロード中は右側の LED が点滅し、最後に暗くなります。
6. デモ
魔法の杖では現在、次の 3 つのジェスチャーを検出できます:
- Wing: 左上から「W」の文字を慎重にトレースします。表示されます。
- リング: 立てて起動し、指揮棒を時計回りに 1 秒間動かします。
- 傾斜: 指揮棒を上にして、LED を手前に向けて持ちます。指揮棒を左に傾けて下に動かし、次に水平に右に 1 秒間動かします。
次の画像は、2 つの操作を示しています。まずスロープ、次にウィングです(デモの参考にしてください)。
デモを実行する手順は次のとおりです。
- USB が接続された状態で、Arduino メニューから
Tools -> Serial Monitor
を選択します。最初は何も出力されない空白の画面が開きます。
- Arduino マイクロコントローラを動かして上記の各形状を注意深くトレースし、シリアル モニターがジェスチャーを検出するかどうかを確認します。
- シリアル モニターの出力から、魔法の杖ですべての形状を検出したことがわかります。また、右側の LED が点灯します。
7. 次のステップ
お疲れさまでした。これで、「魔法の杖」を認識する最初のジェスチャーを作成できました。実際に試してみましょう。
TensorFlow Lite for Microcontrollers を使用した開発の簡単な紹介がお役に立てば幸いです。マイクロコントローラを使用したディープ ラーニングという考え方は新しく、刺激的なので、ぜひ試してみることをおすすめします。
リファレンス ドキュメント
- 独自のモデルをトレーニングし、基本的なプログラムを使用した経験を積んだところです。
- TensorFlow Lite for Microcontrollers について詳しくは、ウェブサイト、GitHub をご覧ください。
- 他の例を試し、サポートされている場合は Arduino で実行してみます。
- 別の Codelab「TensorFlow Lite と SparkFun Edge を使用したマイクロコントローラ上の AI」を試す
- O'Reilly の書籍 TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers をご覧ください。小さなデバイスでの ML を紹介し、いくつかの楽しいプロジェクトを紹介しています。この Codelab は、この書籍の第 11 章に基づいています。
ありがとうございました。では、楽しみながら構築してください。