STの汎用マイコンでAIに挑戦!【後編】「SensorTile Kit」を使った推論実行とデータ収集 体験レポート

前回「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」のパッケージはいわゆる商品棚に吊るせる仕様のプラスチックケースに入っています。オンラインショップだけでなく、一部の電気店でも取り扱いがあるようです。


パッケージ写真。マイコンでのAI活用を体験しよう。

パッケージを開封して中の部品を全部出したところ。右の3つの基板は、上の小さい正方形のものがSensorTile本体基板、それをウェアラブルで使用するときなどに最適な小型クレイドル基板、ラズパイなどに接続するためのクレイドル拡張ボード(一番大きい基板)となっています。

「SensorTile Kit」の構成は、SensorTile本体基板、ラズパイなどに接続するためのクレイドル拡張ボード(大きい基板)、小型クレイドル基板に加えて、ウェアラブル端末の試作品を簡単に作成するためのケースやバッテリが含まれています。今回は、本体基板と小型のクレイドル基板、ケースなどを使ってウェアラブル端末の作成に挑戦します。



まずはマイコンのはんだ付けに挑戦

まずは、使用したいクレイドル基板にSensorTile本体基板を取り付けます。今回はウェアラブル用ということで小型のクレイドル基板を選びました。接続ははんだ付けで行います。


こんな感じで、ケースを台にして18箇所をはんだ付けしていきます。

まずは角をはんだ付けして固定、作業中に基板がずれないようにしてから作業を続けます。

上から下にはんだが流れるように「シュッ」っと付けるのがコツ。うまくできました。

西田メモ

小型クレイドル基板で使用する場合、センサに振動を与えたり振り回したりするような使い方が想定されているため、SensorTile本体基板がはずれないように、しっかりとはんだ付けする仕様になっているとのことです。ちなみにクレイドル拡張ボード(大きい基板)に装着する際は、はんだ付けをしなくても取り付けができます。




バッテリの接続

次は、SensorTile本体基板をはんだ付けした小型クレイドル基板にバッテリを取り付けます。作業の前に、小型クレイドル基板のスイッチをOFFにしてから作業しましょう。


バッテリを小型クレイドルに取り付け。スイッチOFFを忘れずに。

バッテリの接続完了。スイッチをONにするとLEDが点滅します。

バッテリを接続したらスイッチをONにします。正常に接続できていればLEDがチカチカと点滅します。


「ST BLE Sensor」アプリを使おう

バッテリ接続が無事にOKだったので、基板とバッテリをケースに入れる前にテスト用のアプリと接続してみます。アプリはGoogle PlayストアやApp Storeから無料でダウンロードできます。今回はAndroid用のアプリをダウンロードしました。「ST BLE Sensor」で検索するとみつかります!


1万ダウンロード以上で、★4.5の評価。安心してダウンロードできます。

ダウンロードが完了したら、アプリとSensorTileをペアリングします。

アプリがデバイスとしてSensorTileを認識したところ。

SensorTileのセンサが取得した温度などの情報がアプリに送信され、画面に表示されます。

SensorTileを傾けると、加速度センサとジャイロ・センサが反応してサイコロが動くデモもあります。各種センサ機能がすぐにスマホ画面で体感できて楽しい。


動かした様子を、動画にしてみました!
使いたいセンサを選んで、グラフを表示することもできました。

「ST BLE Sensor」アプリはとても使いやすく、簡単に各種センサの動作確認ができました!



SensorTileをケースに収納

ウェアラブルで持ち歩きやすくするためにもSensorTileをキットに付属しているケースに入れます。


バッテリのコードを挟まないようにケースに入れます。

ドライバーで付属のネジを締めて完成。

完成!簡単にできました。

この状態で温度や湿度、気圧、傾きや振動などをアプリで確認するIoT端末として利用することができます。しかし、今回はさらに、端末でAIの知的な機能が使える「STM32Cube.AI」をマイコンにインストールします。


マッテオ先生に聞いてみよう!

ここから先は、ちょっと難しそうなので、先生をお呼びすることにしました!STのマッテオ先生です!


STマイクロエレクトロニクス株式会社 システムソリューション技術部 部長 マッテオ マラヴィタ氏に聞きます。日本語ペラペラです!

マッテオ先生(ST)

まずは、開発環境をインストールしましょう「STM32CubeIDE」です。SensorTileの中央にある汎用マイコン用の開発環境になります。ただ、SensroTile専用ということではなく汎用的な開発環境となっていて、STM32ファミリのマイコンに共通の開発環境として利用できます。「STM32CubeMX」もインストールしましょう。既存のプロジェクトを開く場合は不要ですが、新規にプロジェクトを作る場合には必要になると思います。

西田(ロボスタ)

これで、準備はOKですか?

マッテオ先生(ST)

開発環境のインストールはこれで終わりです。最後に、サンプル・プロジェクト(「FP-AI-SENSING1」)をダウンロードしておいてください。



今回紹介した開発環境は、すべて無料で利用することができます(メールアドレスの登録と認証は必要)。MacやWindows、Linuxなど、複数のOSに対応しているのも嬉しいですね!

西田メモ

今回は、マッテオ先生のパソコンにインストール済みの環境を使いました!日本語対応していますが、プロジェクト・ファイルの置き場所などに、日本語のフォルダ名が入ってるとうまく動作しないことがあるとのことなので注意しましょう!



「STM32CubeIDE」と「STM32CubeMX」「FP-AI-SENSING1」をインストールします。細かいところまで詳しく解説してくれるマッテオ先生


プログラムをマイコンに組み込み

開発環境をパソコンにインストールしてプロジェクトファイルを開きます。まず、プログラムをマイコンに書き込みます。マイコンにプログラムを書き込むために専用の書込みボード「NUCLEO-L476RE」が必要です。


書き込みには、専用のボード(左側)を使います。

書込みボード、SensorTile、パソコンをそれぞれケーブルで接続します。まずは書込みボードとSensorTileをケーブル接続します。


付属のケーブルを書込みボードに取り付けます。よく見ると黒いところに△が書いてありますので確認しておきます。

小型クレイドル基板にケーブルを接続します。

はんだが四角についているところが書込みボードの△につながるようにします。

接続完了! 書込みボード(NUCLEO-L476RE)のジャンパーピンを2個をはずします

書込みボードをUSBケーブルでパソコンに接続します。

プログラムを書き込んで、完成!

最後に、microSDカードを挿入して準備完了


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アプリを使えば簡単にできます。



センサの値をただ保存しただけでは「今どういう状態なのか」というのがわかりません。前もって手動で「走っている」「歩いている」などのラベルをつけて行動することで、センサの値をその状態として保存して、機械学習のときに紐付けることができ、学習用データを簡単に作成することができます。面白そうなので、早速体験してみました!


■「歩いている」「走っている」など状態を機械学習用データとして収集

せっかくの機会なので「歩いている」「走っている」だけじゃなくて、「階段をのぼる」も収集してみたくなりました。

■「階段をのぼる」状態を機械学習用データとして収集

「ロボスタ(7階)まで階段でのぼってきて!」



今回はmicroSDカードに保存しましたが、設定を変えることで、クラウドに保存したりすることも可能とのこと。音声データをWAVファイルとして保存したりすることも可能だそうです。


収集したデータを見てみよう!

ここで、ロボスタに戻って、マッテオ先生と一緒に取得したデータを見てみることにしました。SensorTileのデータはどのように収集されているのでしょうか。


エクセルでグラフを作ってくれるマッテオ先生。

microSDカードの中身。CSVファイルが保存されています。

CSVファイルの中身はこんな感じ。

ラベル(タグ)を入れると、こんな感じで文字が入ります。

西田(ロボスタ)

すごいですね! 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名様に【ロボスタプレゼント】

ABOUT THE AUTHOR / 

ロボスタ編集部

ロボスタ編集部では、ロボット業界の最新ニュースや最新レポートなどをお届けします。是非ご注目ください。

PR

連載・コラム