前回「STの汎用マイコンでAIに挑戦!【前編】注目の組込みAI、メリットと実現までの開発ステップ」に続き、今回は体験レポートをお伝えします!
超小型IoT端末開発キットを使って組込みAIに挑戦!
STマイクロエレクトロニクス(ST)のIoT端末開発キット「SensorTile Kit」(センサタイル・キット)は、同社が無償で提供している組込みAI開発ツール「STM32Cube.AI」と組み合わせて利用すると、超小型のIoT端末にAI機能を入れられるということで、さっそく体験してみました。
体験レビューはロボットエバンジェリストの西田が担当します。
SensorTile Kit 構成内容
「SensorTile Kit」の構成内容は、マイコンと各種センサが搭載されたボード、充電式のバッテリ、それらを収容するプラスチック・ケース、さらにはネジ類が同梱されています。センサには加速度センサ、ジャイロ・センサ、地磁気センサ、大気圧センサ、温湿度センサ、MEMSマイクが載っています。また、AIを使った行動認識がすぐに体験できるように、AI学習済みのサンプルソフトウェアをダウンロード提供していますので、マイコンのプログラミングに詳しくない方でも組込みAIの仕組みと性能がすぐに実感いただけるものになっています。ぜひ使ってみてください。ロボスタ記事より引用
ということで、すごい小さいモジュールなのに、いろいろなセンサがついて、さらにAI機能まで使えるなんて楽しみです。早速やってみましょう!
「SensorTile Kit」公式ホームページ
まずは開封の儀
「SensorTile Kit」のパッケージはいわゆる商品棚に吊るせる仕様のプラスチックケースに入っています。オンラインショップだけでなく、一部の電気店でも取り扱いがあるようです。
「SensorTile Kit」の構成は、SensorTile本体基板、ラズパイなどに接続するためのクレイドル拡張ボード(大きい基板)、小型クレイドル基板に加えて、ウェアラブル端末の試作品を簡単に作成するためのケースやバッテリが含まれています。今回は、本体基板と小型のクレイドル基板、ケースなどを使ってウェアラブル端末の作成に挑戦します。
まずはマイコンのはんだ付けに挑戦
まずは、使用したいクレイドル基板にSensorTile本体基板を取り付けます。今回はウェアラブル用ということで小型のクレイドル基板を選びました。接続ははんだ付けで行います。
西田メモ
小型クレイドル基板で使用する場合、センサに振動を与えたり振り回したりするような使い方が想定されているため、SensorTile本体基板がはずれないように、しっかりとはんだ付けする仕様になっているとのことです。ちなみにクレイドル拡張ボード(大きい基板)に装着する際は、はんだ付けをしなくても取り付けができます。
バッテリの接続
次は、SensorTile本体基板をはんだ付けした小型クレイドル基板にバッテリを取り付けます。作業の前に、小型クレイドル基板のスイッチをOFFにしてから作業しましょう。
バッテリを接続したらスイッチをONにします。正常に接続できていればLEDがチカチカと点滅します。
「ST BLE Sensor」アプリを使おう
バッテリ接続が無事にOKだったので、基板とバッテリをケースに入れる前にテスト用のアプリと接続してみます。アプリはGoogle PlayストアやApp Storeから無料でダウンロードできます。今回はAndroid用のアプリをダウンロードしました。「ST BLE Sensor」で検索するとみつかります!
ダウンロードが完了したら、アプリとSensorTileをペアリングします。
「ST BLE Sensor」アプリはとても使いやすく、簡単に各種センサの動作確認ができました!
SensorTileをケースに収納
ウェアラブルで持ち歩きやすくするためにもSensorTileをキットに付属しているケースに入れます。
この状態で温度や湿度、気圧、傾きや振動などをアプリで確認するIoT端末として利用することができます。しかし、今回はさらに、端末でAIの知的な機能が使える「STM32Cube.AI」をマイコンにインストールします。
マッテオ先生に聞いてみよう!
ここから先は、ちょっと難しそうなので、先生をお呼びすることにしました!STのマッテオ先生です!
マッテオ先生(ST)
まずは、開発環境をインストールしましょう「STM32CubeIDE」です。SensorTileの中央にある汎用マイコン用の開発環境になります。ただ、SensroTile専用ということではなく汎用的な開発環境となっていて、STM32ファミリのマイコンに共通の開発環境として利用できます。「STM32CubeMX」もインストールしましょう。既存のプロジェクトを開く場合は不要ですが、新規にプロジェクトを作る場合には必要になると思います。
西田(ロボスタ)
これで、準備はOKですか?
マッテオ先生(ST)
開発環境のインストールはこれで終わりです。最後に、サンプル・プロジェクト(「FP-AI-SENSING1」)をダウンロードしておいてください。
今回紹介した開発環境は、すべて無料で利用することができます(メールアドレスの登録と認証は必要)。MacやWindows、Linuxなど、複数のOSに対応しているのも嬉しいですね!
西田メモ
今回は、マッテオ先生のパソコンにインストール済みの環境を使いました!日本語対応していますが、プロジェクト・ファイルの置き場所などに、日本語のフォルダ名が入ってるとうまく動作しないことがあるとのことなので注意しましょう!
プログラムをマイコンに組み込み
開発環境をパソコンにインストールしてプロジェクトファイルを開きます。まず、プログラムをマイコンに書き込みます。マイコンにプログラムを書き込むために専用の書込みボード「NUCLEO-L476RE」が必要です。
書込みボード、SensorTile、パソコンをそれぞれケーブルで接続します。まずは書込みボードとSensorTileをケーブル接続します。
STM32Cube.AIを試してみよう!
準備ができたので、実機でサンプルプロジェクトを実行してみましょう。まずはSensorTileが取得した情報を組込みAIが推論して「SensorTileを付けている人がどんな状況にあるのか」をスマホのアプリに送信、通知する機能を試してみます。
マッテオ先生(ST)
それでは、サンプル・プロジェクトを実行してみましょう。このプログラムには、センサの値を元に「人間が、どういう動作をしているか」を推論するAIモデルが実装されています。SensorTileを身に着けている人が、歩いている、走っている、止まっている、自転車に乗っている、などを表示することができます。
西田(ロボスタ)
センサをたくさん振りながら動いていたら、走っていることにするとか、そういった感じですか?
マッテオ先生(ST)
AIを使う前は、センサで取得した値が閾値を超えたか超えていないかだけで、止まる/歩く/走るなどを判断していました。今回は「STM32Cube.AI」を利用しているので、もっと複雑な判断ができます。事前に学習したモデルとセンサの値を使って、リアルタイムにかつ正確に状態を推測することができるんですよ。
西田(ロボスタ)
小さいのに、凄いですね!さっそく実験してみたいです!
「走っている」ことをSensorTileのAIがアプリに通知
今回のサンプル・プロジェクトは、Android用のアプリにそのまま対応しています。実際に、SensorTileを手に持ってぱっぺー☆あさひさんに歩いたり走ったりしてもらい、その情報がアプリに反映されるかどうかを実験してみます。
■SensorTileの実験へGO!
SensorTileを持って、ぱっぺー☆あさひさんが歩いたり走ったりといった動作をAIが検知して、アプリの画面に正しく反映されました。実験は成功!
■SensorTileを持って、歩いたり走ったり
西田(ロボスタ)
すごいですね! これ、加速度センサ以外でも、同様な識別ができるんですか?
マッテオ先生(ST)
可能ですよ。画像や音声などのデータにも対応できます。実際の例ですと、SensorTileのMEMSマイクが聴き取った周囲の環境音から、ユーザが今どこにいるか(屋外、屋内など)を推論するサンプルも開発され、公開されています。ただ、マイコンの性能やメモリの制限もあるので、画像など大きすぎるデータだと難しいケースもありますね。
SensorTileでAI機械学習用のデータを収集
西田(ロボスタ)
歩いたり走ったりすればするほどSensorTileは深層学習してどんどん判別の精度が上がっていくんですか?
マッテオ先生(ST)
SensorTileはAIの深層学習はできません。AIの開発には大きく分けて、データを収集する、深層学習する、機械学習したAIモデルを解析や判別(推論)に活用する、の3つのフェーズがあります。SensorTileの役割は、データを収集することと、組み込まれたモデルをもとに推論を行うことです。
西田(ロボスタ)
AIの深層学習はウェアラブル端末ではできないものなんですか?
マッテオ先生(ST)
AIの深層学習自体はクラウド・サーバやスーパー・コンピュータで行うくらい高度な処理能力が必要です。学習を終えて知的な解析や判断(推論)ができるようになったAIモデルは端末で動作させて活用します。しかし、マイコンは超小型で電力も最小限で動作しますから、従来はマイコンによるAIの推論は非常に困難でした。それを可能にしたのが「STM32Cube.AI」です。ニューラル・ネットワークのコードをPythonからマイコン用言語に変更したり、メモリ使用量を圧縮することにより、マイコン上でもAIの推論を実現可能にしたのです。
西田(ロボスタ)
なるほど!「STM32Cube.AI」とSensorTileの組み合わせで、マイコンでもAI処理が可能になった理由がわかってきました。
マッテオ先生(ST)
さらに、SensorTileを使えば、学習用のデータを自分で用意することができます。AI開発にとって、これも非常に便利なところです。センサの値を記録するだけでなく、学習用のラベルをつけて記録していくことも可能です。Androidアプリを使えば、簡単にSDカードにセンサの値を保存していくことができますよ。
西田(ロボスタ)
小さいのに、凄いですね!(2回目)SensorTileに搭載されているセンサの値を学習させれば、いろいろできるってことですね!早速、あさひさんに機械学習用のデータ収集をやってもらいます!
ぱっぺー☆あさひ(ロボスタ)
え!? もしかしてまた走るんですか?
マッテオ先生(ST)
機械学習用のデータを収集する場合、値を取る際に「ラベル付け」と呼ばれる作業が必要です。それもAndroidアプリを使えば簡単にできます。
センサの値をただ保存しただけでは「今どういう状態なのか」というのがわかりません。前もって手動で「走っている」「歩いている」などのラベルをつけて行動することで、センサの値をその状態として保存して、機械学習のときに紐付けることができ、学習用データを簡単に作成することができます。面白そうなので、早速体験してみました!
■「歩いている」「走っている」など状態を機械学習用データとして収集
せっかくの機会なので「歩いている」「走っている」だけじゃなくて、「階段をのぼる」も収集してみたくなりました。
■「階段をのぼる」状態を機械学習用データとして収集
今回はmicroSDカードに保存しましたが、設定を変えることで、クラウドに保存したりすることも可能とのこと。音声データをWAVファイルとして保存したりすることも可能だそうです。
収集したデータを見てみよう!
ここで、ロボスタに戻って、マッテオ先生と一緒に取得したデータを見てみることにしました。SensorTileのデータはどのように収集されているのでしょうか。
西田(ロボスタ)
すごいですね! CSV形式なのも便利そうです!
マッテオ先生(ST)
これだと分かりづらいので、グラフにしてみましょう。
西田(ロボスタ)
こうしてみると、各ラベルごとに特徴がありますね。
マッテオ先生(ST)
そうですね。なので、こういったデータを深層学習用のフレームワーク(Caffe, Keras, Lasagne, ConvNetJSなど)を使って学習し、AIモデルを作成すれば、オリジナルのアルゴリズムで推論できるようになります。
西田(ロボスタ)
それは楽しそうですね! ちなみに、どのくらいのデータがあれば学習できるものですか?
マッテオ先生(ST)
そうですね、だいたい1,000件くらいあれば学習できると思います。あとは、いろいろな人に使ってもらうなら、あさひさんだけでなく、いろいろな人の動きをデータとして加える必要がありますね。
西田(ロボスタ)
なるほど、一人から1,000件のデータをとった場合、その人にしか対応できないモデルになってしまう可能性もあるということですね。
マッテオ先生(ST)
そういうことですね。他にも例えば、少ないデータで学習させたい場合は、SensorTileの持ち方を一定にするなどの工夫も必要だと思います。
西田(ロボスタ)
たしかに!手に持つのとポケットに入れるのでは、グラフの値も違いそうですもんね。じゃあ、早速、今度はあさひさんにポケットに入れて階段を登ってもらうようにお願いします。
ぱっぺー☆あさひ(ロボスタ)
もう無理!
精度の高いAIモデルを作成するにはたくさんの学習データを用意することが必要です。自分だけが利用するAIモデルは、たくさんの人を対象としたAIモデルに比べれば、ずっと少ないデータ量でも高精度なモデルが作れるとのことでした。階段のデータがグチャグチャに見えるのは、階段を上る行為が一定ではない(踊り場やカーブで速度が落ちるなど)のが原因とのこと、とはいえこういったデータもたくさん集めることで特徴が見えてきて、モデルが作成できるとのことでした。
今回は紹介しきれませんでしたが、インストールした開発環境を使えば、作成したモデルのメモリ使用量を圧縮したり、圧縮前と圧縮後で推論の結果が違っていないかチェックする機能なども搭載されているとのこと。6月中旬には、日本語で記述された詳しいチュートリアル資料が近々公開される予定とのことなので、興味を持った方はぜひ挑戦してみてください!
こう思った
慣れていないはんだ付けには気を遣いましたが、それ以外は超簡単!いろいろなデータが取れるので、いろんなことに応用できそうです。深層学習の部分は専門知識がないと難しいかもしれませんが、オープンソースのいろいろなフレームワークに対応しているので、挑戦してみたいと思いました!
「ET & IoT Technology West 2019」で組込みAIのデモが体験できる
STは、組込みAIのデモや講演を、2019年6月13日(木)~14日(金)に大阪で開催される「ET & IoT Technology West 2019」(組込み総合技術展&IoT総合技術展関西)で実施する予定です。「組込みAI」に興味があれば、体験できるチャンスです。イベント情報は下記の公式ページで。
記事で紹介したAI × IoT端末開発キットを抽選で5名様にプレゼント
AIを活用したIoT端末の作成を体験できるIoT端末開発キット「SensorTile Kit」と、SensorTile Kitにソフトウェアを組み込む際に使用する「NUCLEO-L476RE」のセットを5名様にプレゼントします。応募は下記より。
> AI × IoT端末開発キット「SensorTile Kit」のセットを5名様に【ロボスタプレゼント】