継続的に成長し続けているAI市場では、さまざまなレベルのAIアプリケーションを簡単に開発できる幅広い製品やソリューションが提供されています。
この記事では、機械学習コア(MLC:Machine Learning Core)を内蔵したMEMSモーション・センサに注目し、超低消費電力のAIアプリケーションを「エッジ・ツー・エッジ」で開発する方法を紹介します。
本題に入る前に、「エッジAI」について簡単に説明します。従来のAIアプリケーションでは、多くの演算リソースが必要であったため、センサで収集されたデータを精確に分析するためにPCに転送し、そのあとで出力データをローカルのマイコンに送り返す必要がありました。また、このプロセスには多くの時間と電力を要するため、インターネットへの接続も必須でした。こうした課題をクリアするために生まれたのが「エッジAI」という技術です。「AI」のコアを遠隔のPCからローカルのマイコンに移すことで、遅延や消費電力の改善を実現します。また、マイコン上で高効率にAI機能を実現するために、エッジAIはさらなる性能向上に向けて発展を続けています。
STが提供するMLC内蔵モーション・センサでは、ローカルのマイコンに演算負荷をかけずに、ディシジョン・ツリーをベースにしたセンサ・コアでAIアルゴリズムを実行することができます。そのため、さまざまなメリットを得られる「エッジ・ツー・エッジ」のAIアプリケーションを開発することができます。
ここで、加速度センサやジャイロ・センサから取得したデータをベースに、AIを活用して人間のさまざまな行動(歩く、走る、立ち止まるなど)を検出したり、ジェスチャを認識したりするアプリケーションを想定してみましょう。
クラウド・ベースのAIソリューションでは、センサで収集されたデータをクラウドに送信し、クラウド上で分析された出力データを取得することになります。そのため、データ転送に多くの消費電力が必要で(インターネットに接続しても最大50mA)、出力データの受け取りにもかなりの遅延が発生します。また、ローカルのマイコンを活用した「エッジAI」も革新的なソリューションである一方、センサ・データをマイコンに転送することは必要です。
これらに対し、MLC内蔵センサを使用すると、きわめて低消費電力のソリューションを実現することができます。センサからマイコンへのデータ転送が不要となり、消費電力が削減されるだけでなく、最適化されたASICを使用すればMLC自体の消費電力も10uA程度に抑えられ、遅延もきわめて小さなものとなります。
一例として挙げた人間の行動検出やジェスチャ認識アプリケーションも、MLC内蔵センサをプログラムするだけで、アプリケーションのマイコンからAIベースのシーン分類の結果がシンプルなレジスタ値として出力され、それを用いてアプリケーションの動作の変更や、低消費電力モードのオン / オフ切り替えといった決定を行うことができるため、センサ単体で実行することができます。
前述のとおり、MLC内蔵センサのAIは、「ディシジョン・ツリー」という分類器をベースにしています。それぞれのデバイスに同様の機械学習コアを利用できるリソースが備えられ、いずれのセンサも最大8つの異なるディシジョン・ツリーを並列実行することができます。総ノード数は256または512です。
ディシジョン・ツリーは、トレーニングされたAIモデル(教師あり分類)をベースとしており、AIモデルをトレーニングするためにはデータセットが必要です。データが利用可能になると、ディシジョン・ツリーが構築され、最終的にはセンサに内蔵されたMLCでプログラムされます。
MLC内蔵センサを用いたディシジョン・ツリー開発のヒントはこちらで紹介されています。
STは、MLC内蔵センサを活用したAIアプリケーション開発における5つの主要なステップに対して、「UNICO-GUI」というソフトウェア・ツールを提供しています。データ収集、コード生成、およびセンサへのアップロードまで、MLCの実装に向けた開発を一貫してサポートします。
ステップ1:データ取得
まずは、STが提供しているさまざまな開発ボードを使用して、データを取得してみましょう。取得したデータの一貫性とフォーマットを保証するため、「FP-SNS-DATALOG1」ファームウェアを使用してデータを取得することを推奨しています。データが処理できるようになったら、UNICO-GUIを起動します。
ステップ2:データのラベル付けと特徴量の設定
このステップでは、ステップ1で取得したすべてのデータセットに名前やラベルを割り当てます。ユーザのデータセットと選択に基づいて、いくつかのクラスを識別するようにAIモデルのトレーニングが進みます。
UNICO-GUIでは、さまざまなデータセットをインポートすることができます。また、ユーザはデータの取得段階でセンサの動作モードを定義します。ここで最も重要なのは、ディシジョン・ツリーがクラスの識別に使用する特徴量を選択することです。特徴量とは基本的に、ディシジョン・ツリーがクラスの選択で使用する、センサ・データの「分析」のようなものです。たとえば、XL信号に対して「標準偏差」や「ピーク・ツー・ピーク」の特徴量を使用すると、人が静止しているのか / 走っているのかといった判別を行うことができます。この他にも、さまざまな特徴量が用意されているため、組み合わせて使用することでアプリケーションに最適なディシジョン・ツリーを構築可能です。特徴量を選択するプロセスやディシジョン・ツリー構築の詳細については、こちらも併せて参照してみてください。
ステップ3:ディシジョン・ツリーの構築
検出されるモーション・データの種類を認識するディシジョン・ツリーを構築するために、設定を生成し、トレーニング・データセットの境界条件を特定します。
ステップ4:デバイスへの実装
ディシジョン・ツリーが構築されたら、その内容をセンサMLC用の言語に翻訳する必要があります。このようにして生成されたファイルには、MLC内蔵センサでアプリケーションが動作するために必要なあらゆるデータが含まれています。
ステップ5:動作確認
最後のステップは動作確認です。デバイスへの実装が完了すると、機械学習コアの結果は、定義されトレーニングされたディシジョン・ツリーを使用して処理することができます。
MEMSセンサに搭載されるMLCの詳細については、以下のページを参照してください。
すぐに使えるアプリケーションや構成例が多数紹介されており、データ取得からMLCのリアルタイム機能チェックまで、段階的に理解することができます。