プロジェクトの説明

次の 3 つのクラスを区別する機械学習モデルを構築したいと考えています。

– 「エックス」
– 「オー」
– ジェスチャーなし

このブログでは、Arduino Nano 33 BLE Sense を使用して Air Gesture を構築する方法について説明します。Qeexo AutoML で利用可能なボードのいずれかを使用して同じものを構築することもできます。

センサー構成

あらゆるセンサー構成において、次の 3 つの要素を考慮する必要があります。

  • この試験は type データはクラス間の違いを捉える
  • この試験は 信号の長さ クラス間の違いを捉える
  • この試験は 範囲 センサー値の範囲は入力範囲を完全に捉えます

これらの要素に基づいて、私たちは 加速度計 の三脚と ジャイロスコープ センサー 476 Hz エアジェスチャー問題では、 +/- 8g の三脚と +/- 500 dps センサー FSR 用。

これら2つのセンサーは、 type これらはモーション センサーであり、私たちの問題はデバイスの動きの違いを扱うため、データの処理は適切ではありません。

ハードウェアメモリの制約により、Arduino Nano 1024 BLE Senseではチャネルごとに33サンプルしか使用できないため、ODRが476Hzであれば、 信号の長さ 各分類を行うのに数秒かかります。

最後に、デバイスが動くという事実に基づいて、大きな 範囲 可能なセンサー値。FSR の値が大きくなると、デバイスの位置と速度が急速に変化するシナリオでも、センサーが飽和するのを防ぎます。

データ収集

これら 3 つのクラスでは、両方のタイプの AutoML データ収集を使用する必要があります。 イベント の三脚と 連続的な各クラスにどのタイプのデータ収集を使用するかを決定するには、次の点を考慮する必要があります。 平均滞在時間 特定のクラスでこの時間が10秒以下の場合は、通常 イベント データ収集。それ以外の場合は、 連続的な データ収集。

継続的なデータの収集

のために "ジェスチャーなし” の場合、 連続的な データ収集は、最終的なML分類器が「ジェスチャーなし」を長時間、時には数分、時には数時間にわたって出力することが予想されるためです。分類器は、デバイスが静止している限り「ジェスチャーなし」を出力する必要があります。 連続的な データを選択し、 継続的、 適切なクラス ラベルを入力し、初期データ収集の時間を入力します。ここでは、初期モデルを構築するために 30 秒間収集します。パフォーマンスが期待どおりでない場合は、後でいつでもさらに収集できます。

そこから「記録」を押して「ジェスチャーなし データ。

イベントデータの収集

「X」と「O」の文字のジェスチャーは個別のイベントであり、通常は1〜2秒以内にクラスに入ったり出たりするので、 イベント データ収集。

集める イベント データを選択し、 イベント、 適切なクラスラベルを入力し、さらに2つの値を入力します。 イベントあたりの長さ、と インスタンス数とりあえず、初期モデルを構築するために10個のインスタンスを収集します。 イベントあたりの長さでは、特定のクラスの完全な例を完了するのに十分な時間となる秒数を選択します。たとえば、「X」クラスは通常 1 ~ 2 秒かかるため、ジェスチャを時間内に完了できるように 3 秒または 4 秒の値を使用します。

そこから、「記録」を押して、「X」と「O」の文字ジェスチャ データを収集していきます。

注: 各「イベント」の開始時と終了時には、デバイスは静止状態である必要があります。これにより、AutoMLは セグメント 入力信号を分析し、実際のイベントデータが収集ウィンドウ内のどこで発生したかを判断します。これが、 イベントあたりの長さ これにより、 start の三脚と stop 割り当てられた時間内に指定されたイベントを完了します。

ここでは、 良い イベントインスタンス:

実際のイベントがコレクションウィンドウ内に完全に配置されていること、そしてAutoMLが start の三脚と stop イベント信号を強調表示します。

ここでは、 悪い イベントインスタンス:

前の画像と比較すると、AutoML がイベントの全範囲を正常に見つけることができていないことがわかります。

モデルトレーニング

センサーを設定し、データを収集したら、初期モデルを構築する準備が整います。トレーニング ページからデータを選択し、「新しいトレーニングを開始」を押します。

注: 最初に表示されるウィンドウ (ステップ 1/4) はオプションの「グループラベル」ページです。 スキップ 今のところはこのページで説明を終えます。収集したデータは 3 つのクラスだけなので、3 つのクラスすべてを区別できるモデルを構築したいのです。

センサーと機能の選択

ここで、センサーと機能の選択オプションが表示されます (手順 2/4)。このセクションでは、記録されたセンサーと機能のサブセットを選択して、各センサーに対して自動または手動で計算できます。自動モードでは、センサーと機能グループの選択が完全に自動で実行されます。手動センサー選択は、自動機能選択または手動機能選択と組み合わせることができます。現時点では、これは初期モデルであるため、記録されたセンサー (加速度計とジャイロスコープ) の両方を手動で選択し、両方のセンサーで使用できるすべての機能グループを手動で選択します。

推論設定の構成

初期モデルを構築する次のステップは、推論設定を構成することです (ステップ 3/4)。AutoML にこれらの選択を行わせるオプションがあります。 そのオプションを使用する場合は、次のセクションに進んでください。

推論設定を手動で構成するには、次の 2 つの点を考慮する必要があります。

  • 認定条件 長い モデルが情報に基づいた決定を下すためには、信号が必要ですか?
  • 認定条件 頻繁に 私の問題によってクラスは変わりますか?

私たちの場合、イベント信号は約1〜2秒間続きます。この時間枠は、ジェスチャーと「ジェスチャーなし」クラスを区別するのに十分な長さでなければなりません。この理由に基づいて、 2000 ms 私たちのように インスタンスの長さ.

現在のジェスチャークラスはユーザーが制御し、クラス間を素早く移動できるため、 分類間隔。 の値 500ミリ秒 状態間の変化を捉えられるよう、頻繁に分類を行う必要があります。

モデル設定の構成

初期モデルを構築する最後のステップは、モデル設定を構成することです。このページにはさまざまなオプションがあり、それらはすべてモデル構築プロセスのさまざまな側面を制御します。さまざまなモデルから選択したり、ハイパーパラメータの最適化を選択したり、学習曲線を生成するかどうかを決定したりできます。

今のところ、ページ上部にあるオプションの最適化をすべて選択解除し、単純な ロジスティック回帰 モデル。

簡単なトレーニング ロジスティック回帰 モデル。このモデルは、十分なデータがない可能性のあるディープラーニング モデルとは対照的に、小さなデータセットを適切に処理でき、これら 3 つのクラスを区別できる単純なパターンが見つかることが期待されます。

次に、機械学習モデルのトレーニングと結果生成のさまざまなステップのリアルタイムのトレーニング進行状況が表示されます。トレーニング結果をクリックすると、モデルのクロス検証パフォーマンス、ライブラリ サイズ、およびレイテンシが表示されます。詳細には、混同行列、ROC 曲線、MCC 行列など、他の多くの結果が表示されます。ライブ テストを使用してライブラリをフラッシュできます。フラッシュが成功すると、Arduino Nano 33 BLE Sense は、これらの XNUMX つのジェスチャのいずれかを検出できるようになります。