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

継続的に成長し続けているAI市場では、さまざまなレベルのAIアプリケーションを簡単に開発できる幅広い製品やソリューションが提供されています。
この記事では、機械学習コア（MLC：Machine Learning Core）を内蔵したMEMSモーション･センサに注目し、超低消費電力のAIアプリケーションを「エッジ･ツー･エッジ」で開発する方法を紹介します。
  
  
本題に入る前に、「エッジAI」について簡単に説明します。従来のAIアプリケーションでは、多くの演算リソースが必要であったため、センサで収集されたデータを精確に分析するためにPCに転送し、そのあとで出力データをローカルのマイコンに送り返す必要がありました。また、このプロセスには多くの時間と電力を要するため、インターネットへの接続も必須でした。こうした課題をクリアするために生まれたのが「エッジAI」という技術です。「AI」のコアを遠隔のPCからローカルのマイコンに移すことで、遅延や消費電力の改善を実現します。また、マイコン上で高効率にAI機能を実現するために、エッジAIはさらなる性能向上に向けて発展を続けています。 

![Picture1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/a4ae6b25-f564-b623-e0fd-269398a9b6c9.png)


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

ここで、加速度センサやジャイロ･センサから取得したデータをベースに、AIを活用して人間のさまざまな行動（歩く、走る、立ち止まるなど）を検出したり、ジェスチャを認識したりするアプリケーションを想定してみましょう。
クラウド･ベースのAIソリューションでは、センサで収集されたデータをクラウドに送信し、クラウド上で分析された出力データを取得することになります。そのため、データ転送に多くの消費電力が必要で（インターネットに接続しても最大50mA）、出力データの受け取りにもかなりの遅延が発生します。また、ローカルのマイコンを活用した「エッジAI」も革新的なソリューションである一方、センサ･データをマイコンに転送することは必要です。
  
これらに対し、MLC内蔵センサを使用すると、きわめて低消費電力のソリューションを実現することができます。センサからマイコンへのデータ転送が不要となり、消費電力が削減されるだけでなく、最適化されたASICを使用すればMLC自体の消費電力も10uA程度に抑えられ、遅延もきわめて小さなものとなります。
  
一例として挙げた人間の行動検出やジェスチャ認識アプリケーションも、MLC内蔵センサをプログラムするだけで、アプリケーションのマイコンからAIベースのシーン分類の結果がシンプルなレジスタ値として出力され、それを用いてアプリケーションの動作の変更や、低消費電力モードのオン / オフ切り替えといった決定を行うことができるため、センサ単体で実行することができます。

![Picture2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/ba5d3213-e48d-4f54-9a46-66d74ad8a9cb.png)

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

![Picture3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/e13d1d07-67ea-a85e-dc00-664f64b86a46.png)

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

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

## ステップ1:データ取得

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


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

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

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

![Picture4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/7b795b54-62fc-dcfc-b411-3de4d88ef272.png)


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

![Picture5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/c55a482d-421f-5881-3934-188f16f3796b.png)


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

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

![Picture6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2124278/3311745f-a6fd-552a-001f-59efb7388a3d.png)


## ステップ5:動作確認

最後のステップは動作確認です。デバイスへの実装が完了すると、機械学習コアの結果は、定義されトレーニングされたディシジョン･ツリーを使用して処理することができます。
MEMSセンサに搭載されるMLCの詳細については、以下のページを参照してください。
 - [MLC Webページ](https://www.st.com/content/st_com/ja/ecosystems/MEMS-Sensors-Ecosystem-for-Machine-Learning.html)
 - [MLC GitHubページ](https://github.com/STMicroelectronics/STMems_Machine_Learning_Core)

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