スマートセンサに内蔵される機械学習コアを使用して「常時オン」モーショントラッキングを最適化
DigiKeyの北米担当編集者の提供
2019-06-11
フィットネストラッカーやその他のパーソナルモバイル機器で、モーショントラッキング機能を「常時オン」にして使いたいという需要が高まると、以前であれば、製品の設計者は機能を優先するか電池寿命を優先するかの二者択一を迫られていました。消費電力を節約しようとすると、どうしてもトラッキング機能や分解能が犠牲になり、ユーザーにとっては享受できる機能が限られることにもなります。
しかし、モーション検知機能を内蔵した低電力センサの登場により、開発者はそのような制約を気にせず設計できるようになりました。
この記事では、高性能のモーション処理機能を統合したSTMicroelectronicsのスマートモーションセンサを使用して、低電力、常時オンのモーショントラッキングを可能にする、より効果的なソリューションについて説明します。
従来の電力管理方法
一般的な低電力モバイルシステムの設計では、ホストマイクロコントローラの通常動作モードでの消費電力が、システム全体の消費電力の大部分を占めています。このため開発者は、マイクロコントローラを低電力のスリープモードに維持し、センサのデータ処理や通信などのタスク処理に足りる時間分だけプロセッサをウェイクさせるように、あらゆる可能性を探ります。
これまで長年にわたり、開発者は、ホストプロセッサに頼らずにデータ収集可能なセンサを使用することで、この目標を達成してきました。センサの出力データレートの要件がそれほど厳しくないアプリケーションでは、センサは割り込みを発行してプロセッサをウェイクし、プロセッサがタスク処理を完了する前に、DMA(ダイレクトメモリアクセス)トランザクションを実行してデータをシステムメモリに転送しても、オンチップバッファを一連の測定値で埋めることができました。センサが備える統合された信号チェーンによって信号調整、変換、フィルタリングが実行可能だったので、プロセッサは前処理済みデータの処理をすぐに開始し、アプリケーションにとって重要なイベントに目配りできました。
これらのセンサに閾値検出機能を統合することで、開発者はプロセッサが低電力モードに留まる時間をさらに延長できました。重要なイベントの識別をプロセッサに要求するのではなく、センサは開発者がプログラムした閾値を超えるイベントを測定したときにのみ、ウェイクアップ信号を発行できました。たとえば、設計者はこのタイプの高度な温度センサをプログラムして、測定した温度が指定の最大閾値を超えたとき、または指定の最小閾値に満たないときにのみ、ウェイクアップ信号を発行できます。
このような消費電力低減のアプローチは、より単純な条件には効果的であっても、残念ながらより複雑なイベントの検出には効果的ではありません。常時オンの状態でモーションを検知する要件が加わると、複雑なイベントの検出によってプロセッサのアクティブデューティサイクルが高くなり、個人用ウェアラブルデバイスに通常使われる容量の小さい充電池はすぐに消耗してしまいます。このため、常時オンでのモーション検出と電池寿命延長の両立が求められる状況では、検出を実行するホストマイクロコントローラを従来のように使用し続けることができなくなります。
もしセンサがより複雑な検出アルゴリズムを実行できれば、低電力動作モードとプロセッサのスリープ状態によって、開発者はシステムの消費電力を節約する現時点でのベストプラクティスを継続して利用できます。同時に、このようなインテリジェント機能が強化されたセンサでは、開発者に高度な柔軟性が必要になります。単に特定のアルゴリズムをいくつかセンサに組み込むだけでは、新製品の高い機能性に応えるには不十分です。STMicroelectronicsのLSM6DSOX iNEMO(LSM6DSOXTR)慣性センサは、信号処理機能と柔軟な計算機能をデバイスに組み込むことで、このような柔軟性を実現しています。
センサアーキテクチャ
LSM6DSOX iNEMOはシステムインパッケージ(SiP)で、MEMS(マイクロエレクトロメカニカルシステム)センサ、専用の信号チェーン、フィルタ、専用の計算エンジンを、わずか2.5 x 3.0 x 0.83mmサイズのランドグリッドアレイ(LGA)パッケージに組み込んでいます。内蔵の3軸加速度計センサと3軸デジタルジャイロスコープMEMSセンサとともに、このデバイスは、専用のハブレジスタを使用して最大4つの外付けセンサの動作を個別に調整する機能を備えたセンサハブとして構成できます。
STMicroelectronicsのSM6DSOXは、前モデルのLSM6DSOと同じアーキテクチャを基にしており、前モデルのすべての機能を備えています(「IMU:オンボードの機械学習によりホストのスリープ状態を維持可能」を参照)。ただし、LSM6DSOXでは、前モデルが備えていた有限ステートマシン(FSM)が機械学習(ML)コアによって補完されており、最大8つの決定木によるデータセットの分類に対応します。FSMとMLコア機能を組み合わせない場合であっても、MEMSセンサからのデータを前処理するための高度な信号チェーンのおかげで、先進的なモーション検出機能を実装できます。
多くの高度なセンサと同様に、LSM6DSOXアーキテクチャはマルチステージ信号チェーンを備えており、A/Dコンバータ(ADC)と複数のフィルタ段を組み合わせています。ジャイロスコープの信号チェーンでは、ADC段をハイパスフィルタ(HPF)、ローパスフィルタ(LPF1)、2次ローパスフィルタ(LPF2)などの選択可能な一連のデジタルフィルタで補完しています。これらのフィルタはLSM6DSOXのハイパフォーマンスモードで動作しますが、ノーマルモードまたは低電力モードでは迂回されます(図1)。
図1:STMicroelectronicsのLSM6DSOXは、前モデルのLSM6DSOと同様にセンサごとに複数フィルタ段による専用の信号チェーンで対応し、ここではジャイロスコープセンサが示されています。(画像提供:STMicroelectronics)
統合されている多くの機能には加速度計が必要なので、このアーキテクチャでは加速度計の信号チェーンが大幅に強化されています。信号チェーンの初段にある基本的な信号調整機能と変換機能は、多くの最先端センサにも見られる機能です。たとえば、アナログのアンチエイリアスローパスフィルタには基本的な信号調整機能があり、16ビットADCが調整された信号をデジタル化し、デジタル化の結果がデジタルローパスフィルタを通ります。このデバイスで特徴的なのは、この最初の変換段に続く高度な複合フィルタブロックです(図2)。
図2:前モデルのSTMicroelectronics LSM6DSOと現在のLSM6DSOXモーションセンサの両方で使用されている広範な加速度計信号チェーンは、各種の複雑な動き(自由落下、多次元方向、シングル/ダブル(S/D)タップなど)をホストに依存せず検出する機能をサポートします。(画像提供:STMicroelectronics)
処理ブロックとフィルタの組み合わせを使用することで、加速度計の複合フィルタセクションは多種多様で複雑なイベントを自律的に検出できます。これまでそういったイベントの検出には、プロセッサがウェイクアップして専用のイベント検出コードを実行する必要がありました。今では、フィルタパラメータをプログラムして幅広い複雑なモーションイベント(シングルタップやダブルタップ、自由落下、アクティブ/非アクティブ、自由度6(6D)の方向、または機器の動きの検出に通常使われる4D方向など)を自動で検出し、それらの割り込みを発行できるようになりました。たとえば、ポートレートモードからランドスケープモードなどです。
複合フィルタの高度な検出器は、処理ブロックとフィルタによる結果を組み合わせて検出を実行します。たとえば、シングルタップの検出では内蔵のスロープフィルタを使用します。このフィルタは、次のように現時点の加速度計サンプルacc(tn)でスロープを連続して生成します。
slope(tn) = [ acc(tn) - acc(tn-1) ]/2(式1)
シングルタップイベントでは、スロープは閾値を超えて上昇し、幅広いショックイベントよりも急速に下降します(図3)。開発者が設定したタップ閾値とショック期間の値を使用して、デバイスはシングルタップイベントを自動的に検出し、ホストマイクロコントローラに割り込みを発行できます。
ダブルタップ検出はこのアプローチを重ねたもので、2つのシングルタップイベントの間に必要な待機時間を指定する新たなパラメータを追加します。
図3:LSM6DSOとLSM6DSOXモーションセンサが備える、ホストに依存せずシングルタップイベントを検出する機能では、内蔵のスロープ機能を使用します。より幅広いショックイベント(b)のシグネチャに比べて、シングルタップのベースラインレベルへの急速な戻り(a)が示されます。(画像提供:STMicroelectronics)
このデバイスの派生データ(スロープなど)を生成する機能は、デバイスに統合されたFSMや機械学習(ML)コアによって利用可能な、より高度な機能で中心的な役割を担います。FSM機能については以前の記事で説明したので、この記事の以降の説明ではLSM6DSOXのMLコアと、一連のシーケンスや特定のエクササイズ(運動)などの込み入った動作に見られる非常に複雑なモーションイベントの検出にMLコアを使用する方法を中心に取り上げます。
決定木
LSM6DSOXのMLコアではセンサベースの処理が可能であり、そのレベルは多くの高機能スマートセンサによく見られるパラメータ化された閾値設定をはるかに超えています。MLコアを使うことで、開発者はデバイスに複雑な検出アルゴリズムを実装し、マイクロコントローラをウェイクアップさせることなく、複雑なモーションイベントを常時オンの状態で検出できるようになります。この場合、MLコアは決定木を使用し、入力データのパターンに基づいてイベントを識別します。
意思決定支援システムで以前から使用されている決定木は、入力データ(または属性)を事前に定義済みの条件に対してテストすることで、複雑な意思決定を一連の選択に分解します。ルート(root)に相当する最初のノードから始めて、属性の値をテストし、その結果によって特定の子ノードに進むかどうかが決まります(図4)。
図4:決定木は一連のノードを使用して、ノードごとに所定の属性の入力値をある条件(所定の閾値レベルなど)に対してテストしながら、結果を生成します。テストの結果に応じて別の子ノードに進むかが決まります。(画像提供:STMicroelectronics)
たとえば、各更新サイクルでは、決定木を呼び出して各ノードで処理を実施し、(その更新で)利用可能なデータが、動きなし、前進の動き、または他の何らかの動きを表しているかを以下のように決定します。
- 加速度計の測定値の大きさをテストする
- 1.1値が事前に決めた値(条件)を下回っていれば、終了します。
- 1.2下回っていなければ、子ノードに分岐して、同じ時間枠で行われたジャイロスコープ測定の値をテストします。
- 1.2.1ジャイロスコープの測定値が事前に決めた値に満たない場合は、終了します。または
- 1.2.2より深い子ノードに進み、同じ時間枠内で測定された他の属性をテストするか、または別の条件に対して同じ属性をテストします。
このプロセスは、テストが終わりのノードに達するまで繰り返します。この文脈では、終わりのノードは特定の複雑なモーションイベント、またはクラスに相当します。このシンプルな例では、
- 終わりのノード1.1は、データまたは特徴セットが「動きなし」として分類されることを示します。
- 終わりのノード1.2.1は、特徴セットが「前進の動き」として分類されることを示します。
- ノード1.2.2より先の終わりのノードは、方向転換の動きまたはより複雑な方向の変化を示します。
当然ながら、決定木を使用する必要がある現実の問題セットははるかに複雑で、多くのさまざまな属性や条件を含む大規模な特徴セットが関係します。実際にLSM6DSOXは、加速度計やジャイロスコープからのセンサデータ、さらにセンサハブ接続モードで装着された外付けセンサからのデータを始めとする、考えられる特徴の豊富なセットを開発者にもたらします(図5)。
図5:STMicroelectronicsのLSM6DSOX独自の内蔵MLコアは、1次センサデータ、フィルタリングされたデータ、および平均やばらつきなどの派生パラメータを、デバイスがサポートする8つの決定木のいずれかへの入力として使用します。(画像提供:STMicroelectronics)
この1次センサデータから、デバイスはスライディングタイムウィンドウ内で1次データから計算された次のような多くの特徴を生成します。
- norm V = Ö( x2 + y2 + z2)およびV2
- 平均
- ばらつき
- エネルギー
- ピーク-ピーク
- ゼロクロス
- 正のゼロクロス
- 負のゼロクロス
- ピーク検出器
- 正のピーク検出器
- 負のピーク検出器
- 最小値
- 最大値
ゼロクロス検出器やピーク検出器などの一部の特徴については、開発者はそれぞれゼロクロス軸またはピーク閾値をシフトする閾値も指定します。
教師あり学習ワークフロー
これらの特徴を使用してLSM6DSOXのMLコアで決定木を実装する方法は、多くの機械学習モデル開発の作業で一般的な教師あり学習ワークフローに従うものです。一般にこのワークフローは、関心対象の動作を識別しそれらの動作に関連するデータサンプルを収集することから始まります。
この場合、開発者は、完成したアプリケーションが検出すべき所定の動作セットを実行しながら、LSM6DSOXを使用して単にデータを収集します。開発のこの段階では、開発者はSTMicroelectronicsの基板とソフトウェアを使用してデータ収集プラットフォームを作成できます。ハードウェアプラットフォームについては、LSM6DSOX用のSTEVAL-MKI197V1アダプタボードをSTEVAL-MKI109V3評価マザーボードに差し込むだけです。ソフトウェアについては、STMicroelectronicsが無料で提供するソフトウェアツール、Unico(Windows、Mac OSX、Linuxの各バージョン)を使用できます。
UnicoはSTEVAL-MKI109V3マザーボードと連携するように設計されており、LSM6DSOXで生成されたデータを簡単に収集できます。データを収集するには、マザーボードとUnicoを併用します。このとき、開発者またはアシスタントがマザーボードを保持して、検出対象のいずれかの動作を繰り返し実行し、Unicoを使用してLSM6DSOXのモーションデータを収集します。
1つの動作を何度か繰り返す間にLSM6DSOXから収集されたデータが、該当するクラス(上記例の「前進の動き」など)のトレーニングセットになります。この動作の間に収集されたデータはすべて同じクラスに該当するので、このようなアクティブな方法によるデータ収集では別途行うデータラベリングの段階を省くことができ、データラベリングにともなう教師あり学習ワークフローの遅れを解消できます。
検出対象の動作イベントクラスごとにモーションデータを収集したら、開発者はUnicoを使用してデータとクラスのラベルを検証します。データ検証以外にも、Unicoを使用することで、目的の決定木を多面的に構成し、フィルタを定義し、時間枠の期間を設定し、決定木の構築に使用する特定の特徴を選択できます。
実際には、開発者は特定の動作セットの検出に使用する特徴の数を、経験と実験から可能な限り絞り込むのが一般的です。最少数の特徴セットであっても、決定木を効率的に実装する作業は、それらの特徴(または属性)のどれを決定木の各ノードでテストするかによって大きく左右されます。各ノードでテストする「最善の」属性を選択することが、決定木のサイズを最小限にするために重要になり、リソースに制約があるセンサなどのデバイスでは特に重要です。
読者の皆さんへ:これまでの説明で「特徴(feature)」と「属性(attribute)」の表記に戸惑われたかもしれません。分かりにくいのは、MLモデルで言う「特徴」が決定木では「属性」と呼ばれていることです。項ごとにいずれかの表記のみを使うように心がけましたが、これ以降の決定木の説明では「特徴」ではなく「属性」と表記することにします。他の個所でこの2つの表記が交互に使われることにお気付きと思いますが、これ以降の「arff」の項では「属性」を使用します。
概念は単純ですが、多くの属性を持ち各属性が幅広いデータ値で表される決定木の場合、決定ノードごとに使用する最適な属性の選択は直感で決まるわけではありません。各ノードでテストする最善の属性を見つけるために望ましい方法では、そのノードで各属性のシャノンエントロピーを計算する必要があり、下記の式2を使用します。
entropy(p1,p2,...,pn) = - p1log2(p1) - p2log2(p2)...- pnlog2(pn)(式2)
確率pnは、その属性に関連付けられた可能なクラスn個のそれぞれを表します。
その結果は情報の内容(information content)であり、0から1の値の範囲のビットで表され、見慣れたビットの定義である0か1かではありません。
さらに各属性の情報「利得」(information gain)は、この情報の値とベースライン情報の値との差になり、決定ノードを使用せずに正しい決定が生じる確率に基づき属性に対して計算されます。その計算を詳しく説明するとこの記事の主旨から逸脱してしまいますが、感覚的な解釈としては、その属性(「ベースライン」)の値を基にしたデータセット全体を総当たり式にボトムアップでスライスした結果、またはその属性の特定の値範囲を基にしたトップダウン選択に基づく結果の、どちらのアプローチが目的とする結果を効率的に得られそうかの比較になります。トップダウンの選択では「分割統治」の手法を使用しますが、通常この手法はボトムアップの手法よりも考えられる結果の数をすばやく減らすことができます。
迅速な展開
幸いにも、開発者は情報利得(information gain)や属性選択の最適化について細かく配慮する必要はほとんどありません。無料で利用できるサードパーティの機械学習ツール、たとえばWekaなどを活用して、最適な決定木の生成に必要な計算を自動で処理できるからです。
実際に、UnicoとWekaを緊密に連携させることで、決定木をすばやく実装するためのワークフローが得られます。一般的に、特定の決定木の開発ワークフローで重要な手順は前述のデータ収集ステップにあります。具体的にはLSM6DSOXを使用して検出対象の各動作クラスを表すデータセットを収集すること、そしてUnicoを使用してそれらのデータセットを絞り込み決定木の構成を定義することです。この手順を完了したら、これら2つのツールの組み合わせによってプロセスの最終段階がスピードアップします。
Unicoでデータを絞り込み決定木を構成したら、同ツールを使用して、選択した特徴セットをarff(attribute-relation file format)ファイル形式と呼ばれる標準形式に変換します。arffファイルには、選択された属性(特徴)と可能なクラスをリストするヘッダセクション、そして収集されたデータおよび関連するクラスの各セットをリストするデータセクションがあります(リスト1)。この例では、ごく少数の特徴のみが使用されており、データインスタンスの小さなセットのみを使用して、二頭筋カール、ラテラルレイズ、スクワットなどの限定的なクラスのセットを識別します。
リスト1:標準のarff(attribute-relation file format)ファイルには、属性とクラスを定義するヘッダセクションと、各属性および関連クラスのデータインスタンスを含むデータセクションがあります。(データ提供:STMicroelectronics)
Wekaを使用すると、arffファイルを[Preprocess]ウィンドウに読み込み、特徴セット全体のグラフィカルな概要を表示できます(図6)。
図6:STMicroelectronicsのUnicoツールを使用してデータセット用のarffファイルを生成したあと、サードパーティ機械学習ツールのWekaを使用してデータセット全体(ここではリスト1のarffデータ)を表示できます。(画像提供:DigiKey)
決定木を構築するには、Wekaの[Classify]ウィンドウに切り替え、Weka J48分類器(Wekaの決定木分類器)を選択して[Start]をクリックします。分類器によって入力データの概要が出力ウィンドウにリストされ、決定木がグラフィカル(図7)な形式とテキスト(図8)形式の両方で示されます。
図7:決定木を作成するには、arffファイルを読み込み、Weka J48決定木分類器を選択して最終的な決定木を生成するだけです。Wekaの内蔵視覚化ツールを使用して、結果を各ノードでリストされる属性と条件とともに表示します。ここでは、リスト1のarffデータを使用します。(画像提供:DigiKey)
図8:Wekaでは、決定木の視覚的表示とともに、実際のJ48決定木の仕様を生成します。ここでは、リスト1のarffデータを使用してリスト2のJ48仕様を生成します。(画像提供:DigiKey)
この例では、生成されたJ48決定木の仕様に必要な行は数行のみです(リスト2)。
リスト2:Wekaは、リスト1のarffデータに対してJ48決定木の仕様をこのように生成します。開発者はこの仕様をSTMicroelectronicsのUnicoツールにロードし、構成ファイルを生成し、それをSTMicroelectronicsのLSM6DSOXセンサにロードします。(データ提供:STMicroelectronics)
J48決定木のテキストをコピーしてファイルに保存した後、そのテキストファイルをUnicoにロードしてレジスタ設定ファイルを生成します。最後に、Unicoの[Load/Save]タブを使用しその構成ファイルをLSM6DSOXにロードすることでワークフローを完了します。この時点で、開発者は前述のようにSTEVAL-MKI109V3マザーボードを保持しながらサポート動作を実行でき、Unicoを使用して構成済み決定木のLSM6DSOX出力レジスタから決定木の分類結果を読み取ることができます。
カスタムの設計では、開発者は決定木出力レジスタの変更を利用して、マイクロコントローラに信号を送りウェイクアップさせユーザーに信号を送るようにコードを実行させ、エクササイズカウンタをインクリメントするか、またはアプリケーションに必要なその他の最適なハイレベルの処理を実行できます。
この例は極端にシンプルですが、LSM6DSOX MLコアでは、前述のさまざまな特徴を多用してはるかに複雑なモーションイベントの分類をサポートできます。たとえば、STMicroelectronicsはここで取り上げたシンプルなアプリケーションのさらに高度なバージョンを紹介しており、より多くの特徴を利用することでジムでの活動を二頭筋カール、挙手跳躍運動、ラテラルレイズ、腕立て伏せ、スクワットなどの幅広いエクササイズに分類しています。
シンプルな例で使用される平均およびピーク-ピークの特徴の他に、この複雑な例では分散、最小、最大、ゼロクロスなどの特徴が加わり2秒の時間枠で計算されます。LSM6DSOXのMLコアで実行するこの高度なアプリケーションは、消費電流が約569μA(1.8V時)で、そのうちわずか13μAほどがMLコア自体の消費電流によるものです。このレベルの消費電力であれば、開発者は自信を持って常時オンの動作検出を実装できる上に、電池の充電状態にもわずかな影響しかありません。
機械学習の注意事項
現実の機械学習の応用は教師あり学習のワークフローに依存しますが、最終的な機械学習モデルが非常に複雑な畳み込みニューラルネットワークであっても比較的シンプルな決定木であっても、何らかのバイアスがにそのモデルに含まれることは避けられません。特にモーションベースのデータは物理的な形態学や運動学に大きく依存するので、活動を行っている一個人から収集されるデータは他者のデータと著しく異なることが考えられます。
そのため、MLベースの動作検出を利用する開発者は、データの特殊性と一般性のバランスを求める問題に常に直面します。通常は、特殊性が際立ちすぎると一般性が制限され、一般性が際立ちすぎると同じ動きでも個々人によって生じる違いを正確に検出するのが難しくなります。これらの問題は特にこの実装に限られたものではありません。そのため、パーソナライズされたモーション検出デバイスでこのバランスを見つけるには、ユーザー固有のデータにより更新可能な決定木が必要になるとも言えます。一方で、このような幅広い機械学習データの科学的な要件に細心の注意を払いながら、LSM6DSOXと既存のワークフローを活用して、高度な常時オンのモーション検出機能を省力型の設計に組み入れることもすでに可能になっています。
結論
常時オンのモーショントラッキングと電池寿命延長の両立は、フィットネス機器などの小型ウェアラブルデバイスの開発者に突き付けられた二律背反の解決困難な命題にも見えます。高度なセンサの多くはプロセッサに依存せずにある程度のモーション検出に対応しますが、常時オンの状態で複雑なモーション検出をサポートするという新しいアプリケーションの要求に応えるにはそのアプローチでは通用しません。
しかし、STMicroelectronicsのLSM6DSOXモーションセンサが備える機械学習機能を活用することにより、開発者は常時オンでのモーショントラッキングと電池寿命の延長を両立させ、より高度な行動認識機能を備えたフィットネスバンドなどのウェアラブルデバイスの開発が可能となります。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


