0
1

More than 1 year has passed since last update.

5つのステップで簡単にわかる! 機械学習コア内蔵センサでディシジョン・ツリーを実行

Last updated at Posted at 2022-01-14

継続的に成長し続けているAI市場では、さまざまなレベルのAIアプリケーションを簡単に開発できる幅広い製品やソリューションが提供されています。
この記事では、機械学習コア(MLC:Machine Learning Core)を内蔵したMEMSモーション・センサに注目し、超低消費電力のAIアプリケーションを「エッジ・ツー・エッジ」で開発する方法を紹介します。

本題に入る前に、「エッジAI」について簡単に説明します。従来のAIアプリケーションでは、多くの演算リソースが必要であったため、センサで収集されたデータを精確に分析するためにPCに転送し、そのあとで出力データをローカルのマイコンに送り返す必要がありました。また、このプロセスには多くの時間と電力を要するため、インターネットへの接続も必須でした。こうした課題をクリアするために生まれたのが「エッジAI」という技術です。「AI」のコアを遠隔のPCからローカルのマイコンに移すことで、遅延や消費電力の改善を実現します。また、マイコン上で高効率にAI機能を実現するために、エッジAIはさらなる性能向上に向けて発展を続けています。

Picture1.png

STが提供するMLC内蔵モーション・センサでは、ローカルのマイコンに演算負荷をかけずに、ディシジョン・ツリーをベースにしたセンサ・コアでAIアルゴリズムを実行することができます。そのため、さまざまなメリットを得られる「エッジ・ツー・エッジ」のAIアプリケーションを開発することができます。

ここで、加速度センサやジャイロ・センサから取得したデータをベースに、AIを活用して人間のさまざまな行動(歩く、走る、立ち止まるなど)を検出したり、ジェスチャを認識したりするアプリケーションを想定してみましょう。
クラウド・ベースのAIソリューションでは、センサで収集されたデータをクラウドに送信し、クラウド上で分析された出力データを取得することになります。そのため、データ転送に多くの消費電力が必要で(インターネットに接続しても最大50mA)、出力データの受け取りにもかなりの遅延が発生します。また、ローカルのマイコンを活用した「エッジAI」も革新的なソリューションである一方、センサ・データをマイコンに転送することは必要です。

これらに対し、MLC内蔵センサを使用すると、きわめて低消費電力のソリューションを実現することができます。センサからマイコンへのデータ転送が不要となり、消費電力が削減されるだけでなく、最適化されたASICを使用すればMLC自体の消費電力も10uA程度に抑えられ、遅延もきわめて小さなものとなります。

一例として挙げた人間の行動検出やジェスチャ認識アプリケーションも、MLC内蔵センサをプログラムするだけで、アプリケーションのマイコンからAIベースのシーン分類の結果がシンプルなレジスタ値として出力され、それを用いてアプリケーションの動作の変更や、低消費電力モードのオン / オフ切り替えといった決定を行うことができるため、センサ単体で実行することができます。

Picture2.png

前述のとおり、MLC内蔵センサのAIは、「ディシジョン・ツリー」という分類器をベースにしています。それぞれのデバイスに同様の機械学習コアを利用できるリソースが備えられ、いずれのセンサも最大8つの異なるディシジョン・ツリーを並列実行することができます。総ノード数は256または512です。

Picture3.png

ディシジョン・ツリーは、トレーニングされたAIモデル(教師あり分類)をベースとしており、AIモデルをトレーニングするためにはデータセットが必要です。データが利用可能になると、ディシジョン・ツリーが構築され、最終的にはセンサに内蔵されたMLCでプログラムされます。
MLC内蔵センサを用いたディシジョン・ツリー開発のヒントはこちらで紹介されています。

STは、MLC内蔵センサを活用したAIアプリケーション開発における5つの主要なステップに対して、「UNICO-GUI」というソフトウェア・ツールを提供しています。データ収集、コード生成、およびセンサへのアップロードまで、MLCの実装に向けた開発を一貫してサポートします。

ステップ1:データ取得

まずは、STが提供しているさまざまな開発ボードを使用して、データを取得してみましょう。取得したデータの一貫性とフォーマットを保証するため、「FP-SNS-DATALOG1」ファームウェアを使用してデータを取得することを推奨しています。データが処理できるようになったら、UNICO-GUIを起動します。

ステップ2:データのラベル付けと特徴量の設定

このステップでは、ステップ1で取得したすべてのデータセットに名前やラベルを割り当てます。ユーザのデータセットと選択に基づいて、いくつかのクラスを識別するようにAIモデルのトレーニングが進みます。

UNICO-GUIでは、さまざまなデータセットをインポートすることができます。また、ユーザはデータの取得段階でセンサの動作モードを定義します。ここで最も重要なのは、ディシジョン・ツリーがクラスの識別に使用する特徴量を選択することです。特徴量とは基本的に、ディシジョン・ツリーがクラスの選択で使用する、センサ・データの「分析」のようなものです。たとえば、XL信号に対して「標準偏差」や「ピーク・ツー・ピーク」の特徴量を使用すると、人が静止しているのか / 走っているのかといった判別を行うことができます。この他にも、さまざまな特徴量が用意されているため、組み合わせて使用することでアプリケーションに最適なディシジョン・ツリーを構築可能です。特徴量を選択するプロセスやディシジョン・ツリー構築の詳細については、こちらも併せて参照してみてください。

Picture4.png

ステップ3:ディシジョン・ツリーの構築

検出されるモーション・データの種類を認識するディシジョン・ツリーを構築するために、設定を生成し、トレーニング・データセットの境界条件を特定します。

Picture5.png

ステップ4:デバイスへの実装

ディシジョン・ツリーが構築されたら、その内容をセンサMLC用の言語に翻訳する必要があります。このようにして生成されたファイルには、MLC内蔵センサでアプリケーションが動作するために必要なあらゆるデータが含まれています。

Picture6.png

ステップ5:動作確認

最後のステップは動作確認です。デバイスへの実装が完了すると、機械学習コアの結果は、定義されトレーニングされたディシジョン・ツリーを使用して処理することができます。
MEMSセンサに搭載されるMLCの詳細については、以下のページを参照してください。
- MLC Webページ
- MLC GitHubページ

すぐに使えるアプリケーションや構成例が多数紹介されており、データ取得からMLCのリアルタイム機能チェックまで、段階的に理解することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1