本記事は、eIQ Time Series Studio v1.0.4を起動させた際に表示される"Documentation"メニューに記載されている資料を翻訳したものです。英語版の資料を補足するものであり、あくまで正式な資料は英語版です。 記載内容等に関しまして、英語版と日本語版で齟齬等あった場合、英語版が優先されます。 また英語版資料のバージョンアップに対応していない場合がありますので、必ず最新の英語版をご確認いただき、本記事はあくまでも補足的な内容としてご利用ください。
*長いコンテンツとなっておりますので、章ジャンプするリンクをご活用ください。
*eIQ Time Series Studioの簡略版の記事はこちら
*eIQ Toolkit (eIQ Time Series Studioを含む)のダウンロードはこちら
Time Series Studioは、使いやすい統合開発環境 (IDE) です。このIDEは、NXPのSoC製品で実行できる組み込みプロジェクトに時系列ベースの人工知能 (AI) 機能を追加するためのツールです。
このユーザーガイドは現在のリリースバージョンVer.1.0.4に合わせて作成されており、将来のバージョンに合わせて更新される予定です。
Time Series Studio IDEは、エンジニアが初期評価から最終生産まで、時系列ベースの機械学習ソリューションを開発できるようにするエンドツーエンドのソリューションを提供します。時系列データのロギング、データの視覚化、データの分析、自動機械学習による最適化、モデルエミュレーション、およびデプロイ用のライブラリ生成を提供します。
次の図は、全体のワークフローを示しています。
次の図は、システムアーキテクチャを示しています。
Time Series Studioは、GUIベースのフロントエンド、シェルコマンドベースのバックエンドサーバー、ソースコード生成用のクラウドサーバーで構成されています。さまざまなIDEのコンパイラ、エミュレータ、ライブラリのデプロイをサポートしています。Time Series Studioは、柔軟なデプロイと迅速な開発をサポートするスケーラブルなアーキテクチャを備えています。機能説明を含む主要なブロックを以下に示します。
顧客データセット
お客様は、トレーニングとテストに適合するように収集、ウォッシング、フォーマットするためのデータセットを所有しています。Time Series Data のセクションでは、さまざまなタスクに必要なデータセットの形式について説明します。通常、データセットはトレーニング部分とテスト部分に分割されます。トレーニングデータセットの場合、自動機械学習プロセス中にトレーニングと検証の比率を指定する必要があります。デフォルトでは、比率は8:2に設定されています。ただし、トレーニングを開始する前に別の比率に変更できます。
次の図は、データセットの分割について示しています。
トレーニングデータセット
モデルのトレーニングに使用されます。training/validationの適切なサイズと比率により、精度とエミュレーション結果が向上します。
テストデータセット
エミュレーションでの実際のテストに使用されます。個別のテストデータセットは、モデルが過剰適合し、一般化が適切であるかどうかを検証します。
注意: データセットは、お客様が所有する重要な資産です。IDEを使用すると、データセットはローカルマシン上で安全に保管されます。NXPがお客様のデータセットを使用したり要求したりすることはありません。
フロントエンド
フロントエンドは、クロスOS (Windows/Linux) をサポートし、バックエンド・エンジン・サーバーと通信するための使いやすいGUIデザインになっています。フロントエンドの主な機能は次のとおりです。
タスクの選択
アルゴリズムのタスクを選択できます。「異常検出 (Anomaly Detection)」、「分類 (Classification)」、および「回帰 (Regression)」から選択できます。
プロジェクトの設定
CPUタイプ、フラッシュとRAMサイズの制限などのハードウェアリソースを構成します。また、データセットの定義も指定できます。
データセットの入力
データファイルの読み込み、エラーチェック、更にさまざまなドメインとオペレーションのデータの視覚化をサポートします。
モデルのトレーニング
トレーニングの構成と自動機械学習をサポートし、精度の高いモデルのリストを取得します。更にトレーニングの進行状況を表示します。
モデルのベンチマーク
精度、フラッシュとRAMのサイズ、混同行列 (confusion matrix)、その他のメトリックスなど、すべてのベンチマークの詳細を表示します。
モデルのエミュレーション
エミュレーション機能をサポートし、パソコン上で実行される最終的なCコードライブラリを生成します。これにより、アルゴリズムに精度のギャップがあるかどうかを確認できます。
モデルのデプロイメント
MCUXpresso、Keil、IAR、またはCodeWarrior IDE向けのライブラリを生成し、さまざまなCPUコアをサポートします。更に複数のコンパイラオプションをサポートします。
バックエンドサーバー
バックエンドサーバーは、トレーニング、クラウドサーバー通信、データベース管理などのコマンドエンジンとして、フロントエンドからのリクエストを受け入れます。すべてのトレーニングはバックエンドサーバーで行われるため、データセットはローカルマシン上で保護されたままになります。バックエンドサーバーの主な機能は次のとおりです。
データ機能
フロントエンドから要求されたさまざまな機能を生成するために、生データを時間ドメイン、統計ドメイン、スペクトルドメインに変換することをサポートします。
データインテリジェンス
最適なサンプルレート、最適なウィンドウサイズを取得し、データ品質を測定するなど、スマート分析のための生データ入力をサポートします。
自動機械学習
さまざまな機械学習モデルとテクノロジーを組み合わせて、最適なアルゴリズムパラメータの検索スペースを自動的に最小化します。
データベースの管理
すべての操作状態を保存し、完了したジョブと未完了のジョブをすべてローカルのデータベースに保存することにより、結果の管理と検索を可能にします。
エミュレーション
クラウドサーバーとの通信をサポートして、テストジョブの要求と実行を行い、エミュレーションのレポートを管理します。
デプロイメント
クラウドサーバーとの通信をサポートして、アルゴリズムライブラリまたはMCUXpresso IDE用のプロジェクトを要求します。
クラウドサーバー
NXPは、新機能、新しいサンプルアプリケーション、バグ修正、新バージョンへのアップグレードなどをサポートするクラウドサーバーを所有しています。また、クラウドサーバーは、アルゴリズムライブラリの生成と実行可能なバイナリの生成も担当します。
インタープリタ
トレーニングされたすべてのアルゴリズムの記述を、エッジデバイスに最適化されたC/C++ソースコードに変換します。
クロスコンパイラ
コンパイル環境をセットアップし、特定のライブラリをコンパイルするためのさまざまなIDEをサポートします。
X86、Arm、またはDSC用のライブラリをコンパイル可能で、さまざまなCPUをサポートします。
ライブラリとエミュレータのジェネレータ
実行可能ファイルまたはライブラリを生成するためのエミュレーションまたはデバイスのデプロイメントをサポートします。
エッジデバイス
エッジデバイスは、プロジェクトに統合するのに役立つスタンドアロンのアルゴリズムライブラリとAPIヘッダーファイルを生成し、ゼロコーディングでコンパイルするためのMCUXpresso IDEのプロジェクトパッケージの生成もサポートします。すべてのサンプルコードを含むデプロイメントには、次のものが含まれます:
アプリケーションレイヤー
さまざまなアプリケーションのサンプル・ソース・コード。
時系列フレームワーク
ハードウェアに依存せず、複数のセンサーのサポートと複数のモデルがパイプライン化された時系列フレームワークのオープンソースコード。
HAL (ハードウェア抽象化レイヤー)
フレームワークで定義されている仮想デバイスを実装するためのHALレイヤーのオープンソースコード。多数のサンプルコードが利用可能です。
BSPドライバー
OS/ドライバーのソースコードは、NXPのSDKパッケージから生成されます。ソースコードはクリーンな状態に保たれ、変更されていないためメンテナンスが容易です。
センサー/MCUボード
プロジェクト設定のドロップダウンリストにリストされている NXPの標準開発ボードのみをサポートします。
Time Series Studioを使用する前に、開発ホストが次の要件を満たしていることを確認してください。
最低16GBのRAM、8GBの使用可能なディスク容量、および1080p解像度のディスプレイを備えたx64 パソコン。
エミュレーションとアルゴリズムライブラリの生成、およびIDEのアップグレードにはインターネット接続が必要です。
サポートされているOS:
Microsoft Windows 10 と Windows 11。
Ubuntu 20.04 LTS と 22.04 LTS。
注意: 可能であれば、高性能なパソコンまたはワークステーションを使用してTime Series Studioを実行し、トレーニングのパフォーマンスを高速化してください。異なるOSバージョンを試すこともできますが、NXPでは検証しておらず、正常に動作することを保証できません。
Time Series Studioは、AI/MLの専門知識がなくてもプロトタイプをすばやく構築できるユーザーフレンドリーなIDEです。
NXPのSoCをベースとした時系列機械学習ソリューションの顧客。
時系列機械学習ソリューションの研究と評価を行う学生と研究者。
以下は、Time Series Studioアプリケーションの主な機能です。
外部エッジデバイスはCOMポートを介してデータログを記録し、時系列データを保存します。
生(Raw)フォーマット、時間ドメイン、統計ドメイン、スペクトルドメインの時系列データの視覚化。
生データの分析と変換に役立つデータインテリジェンス機能を備えた時系列データ。
ユーザーデータとフラッシュ/RAMの制限要件に基づいて検索する異常検出 (Anomaly detection) アルゴリズム。
ユーザーデータとフラッシュ/RAMの制限要件に基づいて検索する分類 (Classification) アルゴリズム。
ユーザーデータとフラッシュ/RAMの制限要件に基づいて検索する回帰 (Regression) アルゴリズム。
デプロイメントのギャップを見つけるためのエミュレーションテストのアルゴリズム候補リスト。
ハードウェアキット (評価ボード) にデプロイするために生成されたアルゴリズムライブラリとMCUXpresso IDE用のプロジェクト。
自動車、産業、民生品向けに、画像や音声データに基づいたAI/MLアルゴリズムを搭載したビジョンおよび音声アプリケーションが多数あります。これらのデータ以外にも、エッジデバイスで実行されているセンサーエンドポイントも多数あり、さまざまな時系列データを生成できます。
以下は、3軸 (x、y、z) 加速度センサーによって生成された時系列データの一例です。時系列データは、メモリ内で次のレイアウトになります。
通常、信号処理は時系列データに対して行われ、最初に特徴が抽出されます。次に、AI/MLモデルと組み合わせて、アルゴリズムパイプライン全体が構築されます。自動機械学習テクノロジを使用して、検索スペースを最適化し、最適なモデルリストを見つけます。時系列AI/MLテクノロジは、自動車、産業、民生品、ヘルスケア、農業などのさまざまなユースケースを可能にします。
通常、時系列データに適用されるアルゴリズムには 3 つの種類があります:
異常検出 (Anomaly detection)
分類 (Classification)
回帰 (Regression)
機械学習全体におけるこれらのアルゴリズムのカテゴリの図は次のとおりです:
分類アルゴリズムと回帰アルゴリズムはどちらも教師あり学習です。時系列データは、トレーニングのために、分類の場合は定義済みクラス、回帰の場合は真(Truth)のターゲット値でラベル付けする必要があります。1つのサンプルに対するアルゴリズムの予測は、分類の場合は各クラスの確率、回帰の場合は連続値です。
異常検出は半教師あり学習です。時系列データは、トレーニング前に正常または異常としてラベル付けされる必要があります。また、正常データのみがモデルのトレーニングに使用されます。異常データは検証に使用されます。アルゴリズムの予測は、1つのサンプルの正常の確率です。
異常検出は、増分学習 (Incremental learning) をサポートするかどうかも設定できます。したがって、トレーニングで増分学習が有効になっている場合は、デプロイメント時にオンデバイス学習 (on-device learning) をサポートできます。オンデバイス学習により、エッジデバイスにデプロイメントするときにフラッシュとRAMの要件が増える可能性があります。
異常検出 (Anomaly Detection)
異常検出の図解
異常データは正常データのポイントとは一線を画します。異常検出アルゴリズムを構築するには、正常データと異常データのセットを事前に準備する必要があります。異常検出は、教師あり学習に基づく2つの分類クラスとは異なります。
異常検出はどのような時に使用すればよいですか?
正常なサンプルは明確に識別して収集できますが、異常なサンプルは限られたケースでのみ識別して収集できます。異常検出の使用例をいくつか示します:
モーターの健全性または不健全性 (さまざまなケース) を予測するスマート・モーター・ヘルス。
アーク故障を予測するアーク故障の検出。
洗濯機の負荷のアンバランスを予測する洗濯機負荷アンバランスの検出。
分類 (Classification)
分類の図解
分類は、サンプルをさまざまなカテゴリに分類するタスクであり、最小カテゴリは2つです。分類アルゴリズムを構築するには、定義済みのカテゴリを含むラベル付きデータセットを事前に準備する必要があります。
分類はどのような時に使用すればよいですか?
車両タイプの分類、動物の分類などの問題では、ラベルは個別であり、互いに独立しています。
各カテゴリのデータサンプルは明確に識別および収集でき、各カテゴリのデータセット数はバランスが取れている必要があります。分類の使用例をいくつか示します:
加速度計とジャイロスコープのセンシングデータを使用して、歩行、階段の下り、階段の上りなどのさまざまな人間の活動を予測する人間の活動 (Human activity) 分類。
加速度センサーによる感知データを使用して、オン、オフ、詰まり、摩擦などのさまざまなファンの動作状態を予測するファン状態 (Fan state) 分類。
回帰 (Regression)
回帰の図解
回帰は、1つ以上の独立変数 (予測子:Predictor) と従属変数 (ターゲット) の関係をモデル化します。このモデルは、予測、関係の理解、データに基づく意思決定に使用できます。
回帰分析はどのような時に使用すればよいですか?
連続出力 (Continuous Output)
住宅価格、株価、気温、距離の予測など、分類では対処できない問題。
精度 (Precision)
範囲内で連続的な出力を提供し、分類と比較してよりきめ細かい結果を提供します。
解釈可能性 (Interpretability)
回帰は、独立変数と従属変数の関係を説明するのに役立ち、意思決定のための洞察を提供します。
回帰の使用例をいくつか示します:
PMSM (永久磁石同期モーター) からの複数のセンシングデータを使用して永久磁石の温度とモーターのトルクを予測する電気モーターの温度予測。
モーターのトルクデータを使用して、0%から100%までの詰まり率を予測するエアブロワー詰まり率予測。
洗濯機の負荷予測。洗濯機の負荷を0gから500gまで50g間隔で予測します。
時系列データは、さまざまなセンサー用に存在します。このデータは、AI/MLテクノロジーを使用して付加価値機能を構築する機会を提供し、実際の問題を解決できます。従来のアルゴリズムでは、信頼性の高い満足のいくソリューションを提供するのは難しい場合があります。AI/MLアルゴリズムを使用することは、信頼性を高める良い方法です。以下の図は、さまざまなセンサーデータから多くの興味深いアプリケーションまでのアルゴリズム構築フローの全体像を示しています。
この図には、アプリケーションの定義とシステム設計に応じて、加速度計、ジャイロスコープ、圧力、温度、近接、電流、電圧などの一般的なセンサーがいくつかリストされています。異常検出、分類、回帰など、最適なアルゴリズムタイプを選択できます。場合によっては、複数のセンサー入力と複数のアルゴリズムを使用して、具体的なアプリケーションを実装できます。
この図は、いくつかの既知のセンサーとアプリケーションを示しています。製品設計で機能を自由に定義できます。Time Series Studi IDEは、検証と評価のためのアルゴリズムとデモの構築に役立ちます。時系列AI/MLに関する詳細な知識や複雑なコーディング作業は必要ありません。
時系列データセットは、視覚や音声とは異なります。視覚データは、フレームとして幅と高さが固定された3つまたは1つのチャネルで提供されます。音声データは、マイクの波形入力で常に1つのチャネルを保持します。
時系列データは通常、1つまたは複数のセンサーから取得されるため、チャネル数はさまざまであり、アルゴリズムの設計はビジョンおよび音声AI/MLアプリケーションとは異なります。例:
生のセンサーデータのサンプルレートは異なる場合がありますが、最適なサンプルレートを選択するにはどうすればよいでしょうか?
生のセンサーデータ出力は時間順に連続しています。連続データをフレーム化されたデータに最も適切にセグメント化するにはどうすればよいでしょうか?
複数のセンサーは異種のデータセットを生成しますが、これは機械学習アルゴリズムの想定外です。
視覚データと音声データは人間が認識できますが、時系列データは浮動小数点形式なので読み取れません。
時系列データを説明するために、3軸加速度計からのデータサンプルから始めます:
このチャートからいくつかの基本的な概念が得られます:
同じセンサーの各チャネルは同じサンプルレートで実行されるため、すべてのチャネルのデータスケールは同じになります。
センサーにはC1、C2、C3軸という名前の3つのチャネルがありますが、ほとんどのセンサーには1つのチャネルしかありません。
1つのサンプルポイントには、C1、C2、C3で構成される各チャネルの1つのデータポイントが含まれます。
1つのサンプル時間ウィンドウには、C1 C2 C3 C1 C2 C3…C1 C2 C3という時間順の複数のサンプルポイントが含まれます。
データセット全体は、ランダムな順序の複数のサンプルで構成されています。
時系列機械学習アルゴリズムの場合、入力データは毎回固定された時間ウィンドウフレームに基づいている必要があります。出力は、異常予測、分類されたカテゴリ、および回帰としての連続値になります。
ハードウェアセンサーは、常に時系列で連続形式で生データを出力します。以下の表を参照してください:
NXPでは、お客様が連続した生データを上記の形式で保存し、各行がチャネル(1)、チャネル(2)、チャネル(3)、…、チャネル(n)の時間増分を表すようにすることを推奨しています。区切り文字としてスペースを使用することをお勧めします。最初の列は仮想で、タイムスタンプT(n)を表します。データを行ごとにロードするときに、タイムスタンプに基づいて順番に使用されます。実際のタイム・スタンプ・レコードとして別の列を含めないでください。Data Intelligence ツールは、スマート分析のために連続データファイル形式を処理し、さらにトレーニングするためにセグメント化されたデータとして保存できます。
セグメント化されたデータはトレーニング用とテスト用にインポートでき、ユーザーは自分でデータを収集することも、Time Series Studioを通じて自動的にセグメント化を行うこともできます。セグメント化されたデータの形式を説明する図を以下に示します。
セグメント化されたデータの場合:
各行は、チャネルごとに順序付けられた時系列データを含む1つのサンプルとして、トレーニングおよびエミュレーションに使用できます。
行ごとに並べられた複数のサンプルは、アルゴリズム研究用のトレーニングデータセットを構成します。
行ごとに分割されたデータサンプルはランダム性を維持できますが、内部の各サンプルは時間順に維持される必要があります。
複数のデータファイルを1つのタイプとして選択してトレーニング用およびテスト用にインポートすることができ、データローダーによって自動的にマージされます。
Time Series Studioは、トレーニング用とテスト用にセグメント化されたデータを直接インポートすることのみをサポートしています。さまざまなトレーニングタスクについては、以下のガイドラインに従って適切なサンプル形式のファイルをインポートしてください。
異常検出 (Anomaly Detection)
異常検出には、正常と異常の両方のサンプル・データ・ファイルをインポートする必要があります。正常と異常の両方の種類のデータをバランスよく保つ必要はありません。正常と異常の両方に複数の種類をインポートできます。ただし、データセットの一貫性を保ち、アルゴリズムが確実な結果で検索できるようにすることをお勧めします。
正常のデータ形式
異常データ形式
異常検出データセットでは、以下を指定する必要があります。
チャンネル数。
正常データのサンプル。複数のタイプと複数のファイルになる場合があります。
異常データのサンプル。複数のタイプと複数のファイルになる場合があります。
注意: 実際のアプリケーションに基づいて、トレーニング用の正常サンプルまたは異常サンプルとしてデータセットの複数のクラスを選択できます。さまざまなカテゴリを変更して試し、最高の精度と適切なアルゴリズムを見つけてください。
分類 (Classification)
分類には、異なるラベルの付いたクラスのサンプル・データ・ファイルをインポートする必要があります。信頼できるトレーニング結果を得るには、各クラスのサンプル数を全体的にバランスよく保つことをお勧めします。
クラス1データ形式
クラス2データ形式
分類データセットでは以下を指定する必要があります。
チャンネル数。
クラスの数。
各クラスのデータサンプル。各クラスは1つのタイプのデータサンプルのみをインポートする必要がありますが、同じクラスタイプのファイルが複数存在する場合があります。
回帰 (Regression)
回帰には、ラベル付けされたターゲット・サンプル・データ・ファイルをインポートする必要があります。トレーニング用にロードされたバランスの取れたラベル付けされたサンプルをできるだけ多く保持することをお勧めします。
回帰データ形式
回帰データセットでは以下を指定する必要があります。
チャンネル数。
ターゲットの数。
データサンプルは複数のファイルにすることができ、各行には「ターゲット + チャネル順序の連続データ (targets + channel order sequential data)」が含まれます。
データ形式の変換
異常検出、分類、回帰のデータサンプル形式については、上記の説明に基づきます。さまざまなタスクの変更に合わせて、データサンプル形式を手動で変更できます。以下は、分類から回帰へのデータ形式の変換例です:
主な手順
異なるクラスをターゲットラベルとして配置します。
最初の列をターゲットとして追加し、同じ行に特定のクラスの時系列データを追加します。
回帰データサンプルをランダムに順序付けし、回帰トレーニングタスク用に保存します。
注意: 現在、単一クラス分類のみがサポートされています。分類から回帰データ形式への変換は比較的簡単です。また、単一ターゲット回帰データサンプルから分類への変換も可能です。ただし、変換されたラベル付き分類ファイルがデータサンプルに関してバランスが取れていることを確認する必要があります。
IDEを使ってすぐにAIアプリケーションの開発のプロセスを体験できるように、さまざまなアルゴリズムのカテゴリ向けのサンプルアプリケーションが用意されています。たとえば、異常検出、分類、回帰などです。IDEが起動すると、ホームページに次の画面が表示されます。
サンプルアプリケーションを試す手順:
上部タブのアルゴリズムカテゴリから異常検出 (Anomaly Detection)、分類 (Classification)、または回帰 (Regression)を選択します。
サンプルカードからアプリケーションを選択します。
Datasetをクリックして、サンプルデータのセットをダウンロードし、パソコンに保存します。
データセットの圧縮ファイルをパソコン上に解凍します。
Moreをクリックしてオンラインのクイック・スタート・ガイドを開き、指示に従ってプロセスを完了します。
注意:サンプルアプリケーションは、機能を追加したり問題を修正したりするために、クラウド側から継続的に更新されます。
問題がなければ、以下のようなサンプルページが表示されます。Time Series Studioを使用するには、サンプルページを下にスクロールして、指示に従ってください。
このセクションでは、データ入力からアルゴリズム生成までの手順を示します。IDEのホームページからサンプルアプリケーションをデモンストレーションするには、次の手順を実行します。いくつかのサンプルアプリケーションが含まれており、新しいサンプルが利用可能になると更新されます。
ワークフロー図 (Workflow Diagram):
ワークフロー図に基づいた手順を示します。
1) タスクの選択 (Tasks)
実際の使用ケースに基づいて、異常検出 (Anomaly Detection)、分類 (Classification)、回帰 (Regression) から適切なタスクを選択します。
2) プロジェクトの作成 (Projects)
プロジェクトの名前と説明を入力します。
ターゲットボードを選択します。尚、ボードが存在しない場合は同じCPUのボードを選択します。
RAMとフラッシュのサイズ制限を指定します。制限を設けない場合はすべてを「0」のままにします。
タスクの選択に応じて、チャネル番号、クラス番号、ターゲットに適切な値を入力します。
3) データセットの読み込み (Dataset)
トレーニングの前にデータセットを準備する必要があります。デモンストレーションでは、独自のデータを収集することも、公開されているデータセットを使用することもできます。
生(Raw)フォーマット、時間ドメイン、統計ドメイン、スペクトルドメインからデータセットを視覚化できます。
4) モデルのトレーニング (Training)
モデルトレーニングは自動機械学習を実行するためのコアテクノロジーでありハイパーパラメータの自動検索と最適化のために行います。
ランキングスコアの重みとして精度、フラッシュ、RAM サイズに基づいて最適なモデルリストを自動的に取得します。
各候補モデルの精度、フラッシュ、RAM、メトリックの詳細のトレーニングの進行状況を表示します。
5) モデルのエミュレーション (Emulation)
各トレーニングのすべての候補モデルを一覧表示し、エミュレーションするモデルを選択できます。
エミュレーションは、実際のテストによってトレーニングされたモデルが過剰適合しているか、または一般化が適切であるかを確認するのに役立ちます。
モデルの詳細を含むエミュレーションレポートを管理できます。
6) モデルのデプロイメント (Deployment)
指定したCPUコアとIDEのコードまたはライブラリを自動的に生成します。
コアアルゴリズムのライブラリとAPIヘッダーファイルを生成します。ボードがサポートリストに含まれている場合は、MCUXpresso用のサンプルプロジェクトを生成できます。
参照用としてサンプル・アプリケーション・コードを提供します。
Time Series Studioアプリケーションが起動すると、次に示す起動画面が表示されます。パソコンの構成やネットワークの状態によっては、起動時間が長くなる場合があります。
起動中に、クラウド側でTime Series Studioのバージョンがチェックされます。IDEのバージョンが古い場合は、ダイアログボックスが表示され、アップグレードを推奨します。(以下は表示例です)
2つのオプションがあります:
古いバージョンをご利用の場合、オフライン機能しか使用できないためエミュレーション機能やデプロイメント機能が動作しない恐れがあります。
IDEを最新バージョンにアップグレードして、制限を回避することをお薦めします。
主な機能について簡単に説明します。
ホーム (Home)
サンプルデータセットのサンプルアプリケーションと、異常検出、分類、回帰タスクのクイックガイドが含まれています。
タスク (Tasks)
異常検出 (Anomaly Detection):
プロジェクトの作成からアルゴリズムライブラリの生成までを行う異常検出のサンプルアプリケーション。
分類 (Classification):
プロジェクトの作成からアルゴリズムライブラリの生成までを行う分類のサンプルアプリケーション。
回帰 (Regression):
プロジェクトの作成からアルゴリズムライブラリの生成までを行う回帰のサンプルアプリケーション。
ユーティリティ (Utilities)
設定 (Settings):
ライセンスキーの生成を行います。現在はNXPの従業員のみ対象です。
データロギング (Data Logging):
外部のボードを使用して、COMポートを介してセンサからのデータセットをキャプチャしてトレーニング用に保存します。
データインテリジェンス (Data Intelligence):
データセットの品質を分析します。
連続データセットを分析し、最適なサンプルレートとウィンドウサイズを見つけます。
連続データをセグメント化されたデータに変換し、トレーニング用に自動的に保存します。
サポート (Support)
ドキュメント (Documentation)
クラウドサーバーで更新される技術的な詳細を含むオンラインのユーザーガイド。
ツールについて (About)
IDEのバージョンを提供します。
ヒント:表示スペースを改善するには、以下に強調表示されているボタンをクリックすると、機能パネルを非表示/表示にできます。
タスクの選択はアルゴリズムを選択するための最初のステップです。異常検出、分類、または回帰を選択できます。タスクを選択したらウィザードに従って、Projects、Dataset、Training、Emulation、および Deployment の手順を完了させます。
Projects タブをクリックし、Create New Project ボタンをクリックして、タスクのプロジェクトを設定します。タスクによって入力項目が異なります。詳細については、CREATE PROJECT セクションを参照してください。
Dataset タブをクリックし、タスクのトレーニング・データ・ファイルを読み込みます。タスクごとに入力項目が異なります。データの視覚化では、生(Raw)フォーマット、時間ドメイン、統計ドメイン、スペクトルドメインをサポートしています。詳細については、INPUT DATA セクションを参照してください。
データセットが読み込まれたら、Training タブをクリックします。トレーニング機能はアルゴリズムのハイパーパラメータの検索、ベンチマーク、および制限されたフラッシュとRAMのサイズに最適な精度を実現するための最適化を行うコアテクノロジーです。詳細については、START TRAINING セクションを参照してください。
トレーニングが完了した後、またはトレーニング結果の一部がすでに取得された後に、Emulation タブをクリックします。エミュレーション機能は、次のことに役立つ重要な革新的な機能です。
実際のデータを検証/テストし、アルゴリズムが過剰適合しているか、精度が期待どおりかどうかを確認します。
リストされているすべてのモデルを選択して、すべてのメトリックをベンチマークします。
デプロイメントライブラリのバグを見つけます。
エミュレーションが実行可能なイメージはクラウドサーバーから動的に生成されるため、エミュレーションにはパブリックネットワークのサポートが必要です。詳細については、EMULATION & BENCHMARK セクションを参照してください。
エミュレーションが完了したら、Deployment タブをクリックし、そこで最適なモデルを選択します。デプロイメント機能は、最適化されたアルゴリズムライブラリを取得し、実際のハードウェアにオフロードします。デプロイメントには、特定のCPUおよびターゲットモデルのターゲットライブラリを生成するためにパブリックネットワークのサポートが必要です。ターゲットIDEの要件は、クラウドサーバーから動的に生成されます。詳細については、DEPLOYMENT セクションを参照してください。
Projects のページでは、プロジェクト固有の設定を行います。設定はタスクごとに若干異なります。次のセクションでは、異常検出、分類、回帰の設定を構成する手順について説明します。
異常検出のプロジェクトページには、構成する設定が6つあります。これらの設定には、Project Name、Your Target、Number of Channels、Library Max RAM、Library Max Flash、Description が含まれます。
Project Name では、ユーザーはプロジェクトの一意の名前を割り当てる必要があります。同じ名前のプロジェクトを作成することはできません。
Your Target では、検索したモデルをデプロイするボードを選択します。サポートされているボードはすべて、上図のドロップダウンリストに含まれています。また、CPUのコア周波数など選択したボードのリソース情報を表示することもできます。
ターゲットボードを選択すると、Library Max RAM と Library Max Flash が選択したボードのデフォルト値に自動的に設定されます。たとえば、ターゲットボードが MCX-N9XX-EVK の場合、Library Max RAM と Library Max Flash は512KBと2048KBに設定されます。さらに、Library Max RAM と Library Max Flash の値をカスタマイズすることもできます。値が大きいほど、トレーニング段階での検索範囲が広くなり、ターゲットタスクでより高い精度を達成できます。値が小さいほど、RAM/フラッシュのサイズが小さい、リソースに優しいモデルが生成されます。また、メモリサイズの制限をしない場合は Library Max RAM と Library Max Flash を0に設定します。
Number of Channels で、入力信号のチャネル数を設定します。設定を保存した後は、このパラメータを変更することはできません。たとえば、異常検出のサンプルアプリ Arc Detection では、入力信号は一つの電流信号のチャネルで構成されます。したがって、Number of Channels の値は1に設定されています。
Description では、プロジェクトの説明を入力するか、空白のままにしておくこともできます。
すべての設定を完了したら、Save & Next ボタンをクリックして、次の手順に進みます。
分類のプロジェクトページでは、構成する設定が7つあります。7つの設定のうち6つは、異常検出の設定に似ていますが、分類のプロジェクトでは Number of Classes を設定する必要があります。たとえば、分類のサンプルアプリ Human Activity Recognition では、モデルを検索して6つの活動を区別します。活動とは、階段を下る、階段を上がる、歩行、ジョギング、座る、および立つです。したがって、このプロジェクトでは、Number of Classes の値は6に設定されています。設定を保存した後は、このパラメータを変更することはできません。
回帰のプロジェクトページには、構成する設定が7つあります。7つの設定のうち6つは、異常検出または分類の設定に似ていますが、回帰のプロジェクトでは Input/Output Targets を設定する必要があります。Input/Output Targets は、回帰モデルのターゲットの数を示します。たとえば、回帰のサンプルアプリ Electric Motor Temperature では、プロジェクトはモーターの温度とトルクを予測します。したがって、Input/Output Targets は2に設定されています。設定を保存した後は、このパラメータを変更することはできません。
データセットは、データの有効性のチェックやデータの視覚化など、時系列プロジェクトのユーザー信号データをインポートするために使用します。
ユーザーのトレーニングデータをプロジェクトにインポートします。
どのタイプのプロジェクトでも、Load Files ボタンをクリックして、データファイルを読み込みます (異常検出プロジェクトでは、Load Anomaly Data と Load Normal Data)。
ファイルローダーは複数のファイルの選択が可能です。
データプレビュー (Data Preview)
データファイルを選択すると、プレビュー画面が表示されます。左側に区切り文字選択パネル (Delimiter)、右側にデータ表示パネルが表示されます
デフォルトの区切り文字はスペースです。他の区切り文字を使用する場合は、区切り文字選択パネルで変更します。
複数のファイルを同時に読み込む場合は、ファイルのリストからプレビューするファイルを選択する必要があります。
プレビューパネルで行を削除する必要がある場合は、削除する行を選択し、Delete ボタンをクリックします。
プレビューパネルでデータファイルを読み込むには、Load ボタンをクリックします。読み込まれたデータファイルは、インポートされたファイルのリストに表示されます。
異常検出 (Anomaly Detection)
異常検出プロジェクトでは、インポートする必要があるデータファイルのクラスが2つあります (正常と異常)。各クラスは、少なくとも1つのデータファイルを読み込む必要があります。
データファイル形式: 行ごとに1つのサンプルがあり、すべてのチャネルが含まれます。サンプルは区切り文字 (スペース、カンマ、タブ、セミコロン) で区切られます。次のデータファイルの例には、n 個の値を持つ m 個のサンプルに3つのチャネル (x、y、z) が含まれています。
分類 (Classification)
分類プロジェクトでは、n (n>=2) 個のクラス・データ・ファイルをインポートする必要があります。各クラスは、少なくとも1つのデータファイルをロードする必要があります。
データファイル形式: 行ごとに1つのサンプルがあり、すべてのチャネルが含まれます。サンプルは区切り文字 (スペース、カンマ、タブ、セミコロン) で区切られます。次のデータファイルの例には、n 個の値を持つ m 個のサンプル x3 個のチャネル (x、y、z) が含まれています。フォーマットは異常検出と同じです。
ステップ 1: Class リストボックスをクリックすると、カテゴリインデックスのドロップダウンリストが表示されます。
ステップ 2: クラスインデックスのドロップダウンリストからクラスインデックスを選択します。図ではClass 1が選択されています。
ステップ 3:Load Files ボタンをクリックしてデータファイルをロードします。クラスごとに複数のデータファイルを一度にロードできます。
2つのデータファイルがClass 1にロードされました。
デフォルトでは、クラスのラベルはクラスの番号です。クラスのエイリアスを編集して、新しいラベルにすることができます (オプション)。
エイリアスを編集するには、編集アイコン (鉛筆記号) をクリックします。
次に、エイリアスとなる文字を入力します。編集を確定するには、チェックアイコンをクリックします。
すべてのクラスのデータファイルをロードするには、ステップ1から3を繰り返します。
回帰 (Regression)
回帰プロジェクトの予測対象は連続値なので、異なるデータを1つのファイルに入れることができます (カテゴリなしで複数のファイルに分割することもできます)。
データファイル形式: 行ごとに1つのサンプルがあり、すべてのチャネルが含まれます。サンプルは区切り文字 (スペース、カンマ、タブ、セミコロン) で区切られます。最初の k (k はターゲット番号で、回帰プロジェクトの作成時に設定されます。k >= 1) 列は、予測するターゲット値です。以下は、n 値 x3 チャネル (X、Y、Z)、および k ターゲットを持つ m 個のサンプルを含むデータファイルの例です。
データファイルが設定され、読み込まれると、データプレビュー画面が表示されます。データファイルのグラフが右側のパネルに表示されます。
データ視覚化ツールを使用して、生データ、時間ドメイン、統計ドメイン、スペクトルドメインでデータの分布を表示できます。
表示するファイルをファイルリストから選択します:
ドメインを選択してください:
注意:データ視覚化ツールでは、データに複数のチャネルがある場合、各チャネルのグラフは個別にプロットされます。
生データ (Raw Data)
以下は、1つのチャネルの電流データのみを入力してモータの健全性の生データを入力する例です。
以下の情報が含まれています:
x 軸はサンプル数を意味します。各データウィンドウには2,000個のデータポイントが含まれていることがわかります。
Y 軸は各データポイントの値を意味します。複数のチャネルは、データ範囲に合わせて再スケールされます。
チャートには1つのチャネルのみが含まれます。複数のチャネルがロードされている場合、各チャネルに異なる色が表示されます。
右上隅には、データをすばやく移動して確認するためのデータ前進/後退ボタンがあります。
時間ドメイン (Temporal Domain)
これは、x 軸、y 軸、z 軸の3つのチャネルデータを備えた加速度計の例です。以下は、時間ドメインの概要です。
以下の情報が含まれています:
X、Y、Z 軸の3つのチャネルは、Channel-1、Channel-2、Channel-3 として表示されます。
最大で100個のサンプル・データ・ウィンドウが表示されます。各ポイントは、時間ドメインから抽出された特徴を表します。
時間ドメインでは、参照用に ACF (Autocorrelation Function:自己相関関数) 機能のみが表示されますが、将来的にはさらに多くの機能をサポートする予定です。
統計ドメイン (Statistical Domain)
これは3つのチャネルを持つ加速度計の例です。データのウィンドウサイズは 128x3=384、サンプル周波数は10kHzです。データのウィンドウは100個あります。以下は統計ドメインの概要です。
統計演算子 (Operator) は5つあります。グラフをプロットするには、リストからいずれか1つを選択します。
最小値 (Min)
最大値 (Max)
平均値 (Mean)
平均値プラス標準偏差 (Mean Plus STD)
平均値マイナス標準偏差 (Mean Minus STD)
以下の情報が含まれています:
加速度計の3つのチャネルは、Channel-1、Channel-2、Channel-3 として表示されます。
各チャネルには128個の機能セットが表示されます。各機能セットには、最小値、最大値、平均値、平均値プラス標準偏差、平均値マイナス標準偏差の値が含まれます。
統計ドメインでは、参照用に最小値、平均値、最大値のみが表示されます。今後のリリースでは、さらにサポートされる予定です。
スペクトルドメイン (Spectral Domain)
これは3つのチャネルを持つ加速度計の例です。データのウィンドウサイズは 128x3=384、サンプル周波数は10kHzです。100個のデータウィンドウがあり、各スペクトルドメインの概要を示します。
スペクトル演算子 (Operator) は2つあります。グラフをプロットするには、リストからいずれか1つを選択します。
高速フーリエ変換 (FFT)
ケプストラム (Cepstrum)
以下の情報が含まれています:
加速度計の3つのチャネルは、Channel-1、Channel-2、Channel-3 として表示されます。
各チャネルでは、周波数が 0~0.5 の x 軸に、振幅が y 軸に表示されます。
スペクトル領域では、参考のために FFT (高速フーリエ変換) と Cepstrum (ケプストラム) が表示されます。将来的にはさらに多くのサポートが提供される予定です。
マルチクラスコンペア (Multiclass Compare)
1つのビューで複数のデータファイルを選択して、データファイルの違いを比較できます。異なるファイルのグラフは、異なる色で同じグラフにプロットされます。
データセットを読み込んだ後、Training タブに切り替えます。トレーニング機能は、データの前処理、アルゴリズムのハイパーパラメータ検索の自動化、ベンチマークテスト、限られたフラッシュとRAMサイズに対する最適精度フィッティングの最適化など、コアテクノロジーです。モデルのパフォーマンスは、さまざまなベンチマークインジケーターを通じて評価することもできます。
次の図は、3つのセクションに分かれた Training タブのレイアウトを示しています。
左のフレームには、トレーニングのすべての記録が表示されます。
中央のフレームには、指定されたトレーニングの構成情報と最適化プロセスが表示されます。
右のフレームには、指定されたモデルのベンチマーク結果が表示されます。
左のフレームは、2つの部分で構成されています: Training Records と Models です。Training Records 部分には、ユーザーが作成したすべてのトレーニングタスクが記録され、Models 部分には、特定のトレーニングタスクから生成されたすべてのモデルが記録されます。デフォルトでは、モデルはスコアの降順で並べ替えられます。スコアは、RAM/フラッシュの使用量のサイズと、ベンチマークの一般的な評価メトリックによって異なります。
中央のフレームは、Training Info と Training の2つの部分で構成されています。Training Info には、日付、最大RAM、最大フラッシュ、クイック検索、デバイス上での学習 (異常検出用)、トレーニング/検証比率、トレーニングに使用されたデータ、トレーニング時間、進行状況、構成情報が記録されます。Training には、自動機械学習で使用されるバランスのとれた精度とフラッシュおよびRAMの使用量の変化曲線が記録されます。横軸は、モデルを表します。
一般的に、時系列ベースのデータセットアプリケーションをサポートするタスクには、異常検出、分類、回帰の3種類があります。右のフレームの情報は、タスクの種類によって異なります。タスクの種類については、後続のコンテンツで詳しく説明します。
異常検出 (Anomaly Detection)
アルゴリズムベンチマーク (Algorithm Benchmark):
バランスのとれた精度 (BALANCED ACCURACY): 少数クラスと多数クラスの両方から平均精度を得ます。
F1: F1 スコアは分類器 (Classifier) の全体的なパフォーマンスを反映するメトリックであり、値の範囲は 0 ~ 1 です。
再現率 (RECALL): 再現率は、分類器がすべての陽性サンプルを見つける能力を直感的に表したもので、値の範囲は 0 ~ 1 です。
FLASH: 選択したアルゴリズムに必要な最小フラッシュサイズ。
RAM: 選択したアルゴリズムに必要な最小 RAM サイズ。
実行時間 (Execution Time): LPC55S36プラットフォーム (Cortex-M33、150MHz、ハード浮動小数点が有効) を使用した、アルゴリズムライブラリでの1回の推論にかかる推定時間。
ここで、clock ボタンをクリックすると実行時間を取得できます。
アルゴリズム検証結果 (Algorithm Validation Results):
トレーニング中、データの一部は随時検証に使用されます。トレーニング曲線は、結果の精度の指標としてそれらの結果を反映します。
x 軸は検証サンプルのインデックスを意味します。
y 軸は0から1に正規化された確率を意味します。
緑の点は正解、赤の点は不正解です。
混同マトリックス (Confusion Matrix):
異常検出の場合、混同マトリックス テーブルには正常な結果と異常な結果が含まれます。下の表を参照してください。
分類 (Classification)
アルゴリズムのベンチマークと検証結果では、異常検出と分類には一貫性があります。
混同マトリックス (Confusion Matrix):
分類の場合、混同行列テーブルはすべてのクラスに適合するように再スケールされます。下の表を参照してください。
回帰 (Regression)
アルゴリズムベンチマーク (Algorithm Benchmark):
R2: 決定係数 (The coefficient of determination)。式は Evaluation Matrix: セクションを参照してください。
FLASH: 選択したアルゴリズムに必要な最小フラッシュサイズ。
RAM: 選択したアルゴリズムに必要な最小 RAM サイズ。
実行時間 (Execution Time): LPC55S36プラットフォーム (Cortex-M33、150MHz、ハード浮動小数点が有効) を使用した、アルゴリズムライブラリでの1回の推論にかかる推定時間。
アルゴリズム検証結果 (Algorithm Validation Results):
すべての検証セットの各回帰ターゲットの予測値が、各回帰ごとにプロットされます。
x軸は検証サンプルのインデックスを意味します。
y軸は予測値を意味します。
点線は真(True)の値を表します。
評価マトリックス (Evaluation Matrix):
回帰の場合、すべての回帰ターゲットの MSE、RMSE、MAE、R2、および SMAPE の値が、これらの値の平均を含めて示されます。
MSE: 平均二乗誤差。 <! $$ MSE = frac {1}{text m} sum_{i=1}^{text m} (X_i - Y_i)^2 $$ >
RMSE: 二乗平均平方根誤差。
MAE: 平均絶対誤差。
R2: 決定係数 (The coefficient of determination)。
SMAPE: 対称平均絶対パーセント誤差。
注意: 式では、Xi は予測された i 番目の値です。Yi 要素は実際の i 番目の値です。回帰法は、グラウンド・トゥルース・データセット (真の正解) の対応する Yi 要素の Xi 要素を予測します。参照元は、[the coefficient of determination R-squared is more informative than SMAPE, MAE, MAPE, MSE, and RMSE in regression analysis evaluation] です。
このセクションでは、トレーニングを開始、一時停止、停止、管理する方法について説明します。
新しいトレーニングを開始する
Start New Training ボタンをクリックすると、設定するためのポップアップボックスが表示されます。Start ボタンをクリックする前に、さまざまなアルゴリズムタスクに対して設定できるオプションを確認してください。通常は、設定を変更せずにトレーニングを実行して、最良の結果を得ることができます。
以下は、異常検出の設定オプションです。
異常検出アルゴリズムは、デバイス上でのトレーニング (On Device Train) をサポートする半教師あり機械学習に基づいています。
アルゴリズムが予測のみを目的としている場合は、On Device Train を有効にしないでください。有効にすると、RAM/フラッシュサイズが大きくなります。
使用中のデータセットに変動がある場合は、On Device Train を有効にしてデバイス上でのトレーニングを許可できます。
トレーニング結果を素早く取得したい場合は、Quick Search を有効にします。このモードの検索範囲は、デフォルトモードほど広くはありません。
分類と回帰の設定オプションは次のとおりです:
一般的なオプション:
Train/Val Ratioを設定します。train/emulation の精度が一致しないか範囲外の場合は、異なる比率に変更します。
トレーニングの設定が完了したら、Start ボタンをクリックします。トレーニングが完了するまで待ちます。トレーニングの完了にかかる時間は、次の要素によって異なります:
データセットの大きさ
選択したアルゴリズムタスク
トレーニングの構成が異なると、処理時間も異なります
すべてが完了し、良い結果が得られた場合は、結果を読み進めてみましょう。
トレーニングが開始されると、トレーニングの進行状況バーが継続的に更新され、すべてのコンテンツが 100% 完了するまでタイマーがカウントし続けます。
トレーニングを一時停止/停止する
トレーニングプロセス中に、Stop ボタンをクリックしてトレーニングを停止、Pause ボタンをクリックしてトレーニングを一時停止させることができます。
一時停止後、左側のモデルリストで任意のモデルのトレーニング結果を表示できます。または、Resume ボタンをクリックしてトレーニングを続行することもできます。
トレーニング記録の管理
下の図に示すように、タスクが完了すると、すべてのトレーニングレコードが表示されます。候補アルゴリズムのリストが表示され、パフォーマンス順に並べ替えられます。
リストからいずれかのアルゴリズム結果をクリックして選択すると、以下のようにベンチマークの詳細が表示されます。Training 図では、自動機械学習トレーニング曲線、およびすべてのモデルに対応するバランスのとれた精度、フラッシュ、RAM を表示できます。
また、Delete ボタンをクリックすると、対応するトレーニングレコードを削除することもできます。削除すると、トレーニングレコードの下にあるすべてのモデル情報が同時に削除されます。
エミュレーションは、次のことに役立つ重要な機能です:
エミュレーションでは同じC/C++モデルコードが使用されるため、デプロイ時にC/C++モデルコードの正確性と使いやすさを検証します。
実際のデータを検証およびテストし、アルゴリズムが過剰適合していないか、または精度が期待どおりに機能するかどうかを確認します。
各アルゴリズムモデルをベンチマークして、最適なモデルをランク付けします。
さらなる最適化のために、すべてのクラスにわたる特定のモデルの精度統計をベンチマークします。
トレーニングからライブラリの生成までのプロセスで発生する可能性のあるデプロイメントライブラリのバグを簡単に見つけることができます。
エミュレーションでは主に以下の機能がサポートされています。
実際のテスト精度を備えた、正常データセットと異常データセットの異常検出アルゴリズム。
実際のテスト精度を備えた、さまざまなクラスのデータセットの分類アルゴリズム。
実際のテスト結果を備えた、指定されたターゲットデータセットの回帰アルゴリズム。
ユーザーの選択により、トレーニング済みのすべてのモデルをテストします。
複数のモデルを同時に自動テストします。
オフライン・データセット・ファイルのインポート。
すべてのテストデータのテスト結果を視覚化します。
各テストファイルのテスト結果、各タグ/ターゲットのテスト結果、および全体のテスト結果を表示します。
エミュレーションのコマンドライン実行と、決定値、ラベル、ベンチマークの詳細を出力。
さらに、エミュレーションのコマンドライン実行では、シリアルポート入力データや異常検出タスクにおけるオンデバイス学習機能をサポートできます。
トレーニングが完了し、トレーニングモデルが出力されたら、Emulation タブに切り替えます。
機能レイアウト
以下は、Emulation タブのレイアウトです。実行手順が強調表示されています。
以下は、エミュレーションレポートのレイアウトです。主要なセクションが強調表示されています。
エミュレーションプロセス
エミュレーションが実行可能なイメージはクラウドサーバーから動的に生成されるため、エミュレーションにはパブリックネットワークのサポートが必要です。次のアクションを実行します。
ステップ 1: トレーニングセッションによって多数のモデルを生成したトレーニングレコードを選択します。
ステップ 2: テストする1つ以上のモデルのチェックボックスを選択します。
ステップ 3: New Emulation をクリックして、テスト・データ・ファイルの選択画面に入ります。
ステップ 4: Select をクリックして、適切なテスト・データ・ファイルまたはテストラベルに一致するファイルを選択します。間違えないように注意してください。
ステップ 5: Start をクリックすると、バックエンドサーバーがテスト・データ・ファイルをチェックし、エミュレーション実行可能イメージをダウンロードしてエミュレーションを実行し、テスト結果を取得します。ネットワークとモデルの複雑さによっては、待機時間が発生する場合があります。このプロセス中はいつでもキャンセルできます。
ステップ 6: エミュレーションが完了すると、テストレポートが表示されます。テストレポートには、各モデルの合計精度、混同行列、および各ファイルのテスト精度が含まれます。
ステップ 7: 表示するモデルを選択します。異常検出、分類、回帰で異なります。
エミュレーションレポートの管理
各エミュレーション実行では、ID付きのレポートが生成され保存されるので、いつでも表示できます。
エミュレーションレポートを選択する方法は? - ドロップダウンリストからエミュレーションIDを選択します。
エミュレーションレポートを削除する方法は? - Delete This Report ボタンをクリックします。
エミュレーションのコマンドライン実行
Time series studioのエミュレーションは、コマンドライン実行もサポートしています。IDEを使用せずにモデルを直接テストしたい場合は、これを使用できます。
エミュレーションを開始すると、選択した各モデルのエミュレーション実行可能イメージのzipアーカイブが「workspace/{project_name}/emulators/」ディレクトリにダウンロードされます。エミュレーション実行可能イメージのzipアーカイブの名前は「{project_name}{training_id}{model_id}」で、次の3つのファイルが含まれます:
algorithm.dat - モデルのバイナリファイル。
metadata.json - モデル情報、ベンチマーク結果、その他の詳細を含むモデルメタデータ。
TSS_Emulator - モデルのエミュレーション実行可能イメージ。
エミュレーションを開始するには、ターミナルで TSS_Emulator を実行します。モデルが初期化されたら、テスト・データ・ファイル情報といくつかのモデルパラメータを入力します。最後に、テストファイルの結果が出力として表示されます。詳細は次の図に示されています:
トレーニングとエミュレーションのベンチマーク結果を比較して、次のことを行う必要があるかどうかを決定します:
データの再収集とデータのクレンジング?
ターゲットアプリケーションに適したアルゴリズムタスクを再定義するか?
トレーニング構成を再調整し、精度を高めるために再トレーニングするか?
デプロイのための適切なエミュレーションレポートは、次の要件を満たす必要があります。
トレーニングの精度は全体的にエミュレーションの精度と一致する。
精度の結果はアプリケーションの期待を満たす。
混同行列の誤差分布は、各クラスのエミュレーション精度と一致する。
すべてのクラスで明らかな不均衡な精度がない。
エミュレーションが完了した後、Deployment タブに切り替えると、最適なモデルを確認することができます。デプロイメントは、最適化されたアルゴリズムライブラリとサンプルプロジェクト を生成し、エッジデバイスにオフロードすることを目的としています。
デプロイメントセクションは、一連の操作の最終ステップです。このセクションでは、ターゲットデバイス上でプロジェクト用のライブラリを生成してデプロイする手順について説明します。
注意: 特定のCPU、ターゲットモデル、ターゲットIDEのライブラリはクラウドサーバーから動的に生成されるため、デプロイメントにはパブリックネットワークのサポートが必要です。
現在、Time Series Studioでサポートされている主な機能は5つあります:
複数のコンパイラ (IDE) をサポート。
Arm Cortex Mのコンパイルフラグをサポート。
独自のライブラリを生成するためのステップ・バイ・ステップの手順。
クラウドベースのアルゴリズムライブラリの統合。
クイックスタート・サンプル・プロジェクト (MCUXpresso)。
Time Series Studioは、広く使用されているMCUXpresso、Keil、IAR、CodeWarrior IDEをサポートし、Arm Cortex MシリーズコアとNXPのDSCコアをサポートしています。
MCUXpresso (GCC)
Keil MDK
IAR (IAR Embedded Workbench for Arm)
CodeWarrior (DSCコアのみ)
サポートしているコンパイルフラグは次のとおりです:
float-abi: 使用する浮動小数点ABIを指定します。(ハード/ソフト) デフォルトはハードです。
fshort-wchar: wchar_tのサイズを設定します。デフォルトは -fno-short-wchar です。
fshort-enums: コンパイラが列挙型 (Enumeration type) のサイズを、すべての列挙値を保持できる最小のデータ型に設定するのに役立ちます。デフォルトは -fno-short-enums です。
注意: 参照元は Arm Compiler Reference Guide です。
次の手順に従って独自の時系列ライブラリを生成し、デバイスにデプロイします:
ステップ 1. エミュレーションプロセスで最高の品質で検証されたターゲット model を選択します。
ステップ 2. プロジェクト設定で選択した、ターゲット ボードにデプロイする CPU core を選択します。
ステップ 3. ライブラリまたはプロジェクトの生成を選択するには、スイッチャーをクリックして切り替えます。MCUXpresso用のプロジェクトのみをサポートしています。
ステップ 4. IDEを選択します。DSCコアは CodeWarrior を使用します。
ステップ 5. 説明文を確認してから、IDEでデプロイメントに最適な Compilation Flags を選択してください。
ステップ 6. クラウドにターゲット・アルゴリズム・ライブラリまたはプロジェクト全体の生成を要求するには、GENERATE ボタンをクリックします。
ステップ 7. 生成プロセスが完了すると、ポップアップ・ダイアログ・ボックスにダウンロードzipファイルが表示され、圧縮されたライブラリを解凍してターゲットファイルを取得できます。
ステップ 8. ライブラリを独自のプロジェクトにリンクするか、生成されたプロジェクトをMCUXpresso IDEに直接インポートします。プロジェクトをビルドし、ターゲットに書き込みますします。
Time Series Studioライブラリ (libtss) は、エッジデバイス用のアルゴリズムライブラリです。Time Seriesのクラウドサーバーは、特定のハードウェアとコンパイラの情報に従って、組込みCコードを動的に生成し、クロスコンパイルします。
生成されたアルゴリズムライブラリ のファイルツリーを以下に示します。
algorithm.dat: アルゴリズムの詳細を含む暗号化されたファイル。NXPのクラウドサーバーはソースコードを解析して生成します。
TimeSeries.h: libtss.aのAPIヘッダーファイル。開発者はこれをアルゴリズムの統合に使用します。
libtss.a: コア・アルゴリズム・ライブラリ。開発者はこれをアルゴリズムの統合に使用します。(選択したIDEがKeil MDKまたはCodeWarriorの場合、生成されるライブラリは tss.lib です)
metadata.json: 生成されたアルゴリズムのメタ記述ファイル。コンパイラータイプ、タスクタイプ、入力データセット、プラットフォーム情報などの重要な情報が含まれています。ファイルには、参照として最小メモリ サイズも含まれています。
Sample code: main.c。生成されたライブラリ (ユーザーが完成させたもの) を使用して、サンプルコードをプロジェクトに統合し、QuickStartを実行します。
・ サンプルコード (異常検知)
/*
* Copyright 2024 NXP
* NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used
* strictly in accordance with the applicable license terms. By expressly accepting such terms or by
* downloading, installing, activating and/or otherwise using the software, you are agreeing that you
* have read, and that you agree to comply with and are bound by, such license terms. If you do not
* agree to be bound by the applicable license terms, then you may not retain, install, activate or
* otherwise use the software.
*/
#include "TimeSeries.h"
float data_input[TSS_INPUT_DATA_LEN * TSS_INPUT_DATA_DIM];
void sample_data(float data_buffer[])
{
/* Collect data and put them into the buffer */
}
int main(void)
{
tss_status status;
float probability;
#ifdef SUPPORT_ODL
status = tss_ad_init(NULL);
if (status != TSS_SUCCESS)
{
/* Handle the initialization failure cases */
}
/*The learning number is customizable, but we recommend the number greater than TSS_RECOMMEND_LEARNING_SAMPLE_NUM to get better results.*/
int learning_num = TSS_RECOMMEND_LEARNING_SAMPLE_NUM;
for (int i = 0; i < learning_num; i++)
{
sample_data(data_input);
status = tss_ad_learn(data_input);
if (status != TSS_SUCCESS && status != TSS_LEARNING_NOT_ENOUGH)
{
/* Handle the learning failure cases */
}
}
#else
status = tss_ad_init();
if (status != TSS_SUCCESS)
{
/* Handle the initialization failure cases */
}
#endif
while (1)
{
sample_data(data_input);
status = tss_ad_predict(data_input, &probability);
if (status != TSS_SUCCESS)
{
/* Handle the prediction failure cases */
}
/* Handle the prediction result */
}
return 0;
}
・ サンプルコード (分類)
/*
* Copyright 2024 NXP
* NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used
* strictly in accordance with the applicable license terms. By expressly accepting such terms or by
* downloading, installing, activating and/or otherwise using the software, you are agreeing that you
* have read, and that you agree to comply with and are bound by, such license terms. If you do not
* agree to be bound by the applicable license terms, then you may not retain, install, activate or
* otherwise use the software.
*/
#include "TimeSeries.h"
float data_input[TSS_INPUT_DATA_LEN * TSS_INPUT_DATA_DIM];
void sample_data(float data_buffer[])
{
/* Collect data and put them into the buffer */
}
int main(void)
{
tss_status status;
float probabilities[TSS_CLASS_NUMBER];
int class_index;
status = tss_cls_init();
if (status != TSS_SUCCESS)
{
/* Handle the initialization failure cases */
}
while (1)
{
sample_data(data_input);
status = tss_cls_predict(data_input, probabilities, &class_index);
if (status != TSS_SUCCESS)
{
/* Handle the prediction failure cases */
}
/* Handle the prediction result */
}
return 0;
}
・ サンプルコード (回帰)
/*
* Copyright 2024 NXP
* NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used
* strictly in accordance with the applicable license terms. By expressly accepting such terms or by
* downloading, installing, activating and/or otherwise using the software, you are agreeing that you
* have read, and that you agree to comply with and are bound by, such license terms. If you do not
* agree to be bound by the applicable license terms, then you may not retain, install, activate or
* otherwise use the software.
*/
#include "TimeSeries.h"
float data_input[TSS_INPUT_DATA_LEN * TSS_INPUT_DATA_DIM];
void sample_data(float data_buffer[])
{
/* Collect data and put them into the buffer */
}
int main(void)
{
tss_status status;
float targets[TSS_TARGET_NUMBER];
status = tss_reg_init();
if (status != TSS_SUCCESS)
{
/* Handle the initialization failure cases */
}
while (1)
{
sample_data(data_input);
status = tss_reg_predict(data_input, targets);
if (status != TSS_SUCCESS)
{
/* Handle the prediction failure cases */
}
/* Handle the prediction result */
}
return 0;
}
注意: これは、さまざまなタスクでアルゴリズムライブラリを使用する方法を示す「Hello World」レベルのコードです。
Time Series Studioは、MCUXpressoIDEに直接インポートできるサンプルプロジェクトを生成することができます。サンプルプロジェクトには、生成されたアルゴリズムライブラリ、時系列フレームワーク、ターゲット・プロジェクト・ドライバー、設定、およびコンポーネントが含まれています。サンプルプロジェクトを独自のライブラリの QuickStart として使用できます。
サンプルプロジェクトの主な機能:
ターゲット・エッジ・デバイス上のライブラリを使用して QuickStart を実行します。
シリアルターミナルのユーザーフレンドリーな SHELL で、コマンドを使用して学習/予測プロセスを開始します。
ターゲットにセンサー (加速度計) が組み込まれている場合にデータを ログ に記録するオプションを提供します。
データ入力として物理センサーを使用せずにライブラリをテストするには、Time Seriesフレームワークで ダミーセンサーHAL を使用します。
MCX-N9XX-EVKをベースに生成されたサンプルプロジェクトのファイルツリーを以下に示します。
SHELLインターフェイス
プロジェクトオプションで GENERATE をクリックし、ビルド-フラッシュの手順を完了すると、時系列サンプルプロジェクトがデバイスに直接書き込まれます。シリアルターミナルを開いて実行を開始します:
コマンドラインインターフェイス は、helpの出力に反映されているように簡単です:
ボタンインターフェイス
シェル命令の start pre、start learn、stop を実行するために、サンプルプロジェクトはボード上のシンプルなボタンインターフェイスをサポートしています。
ボード上に2つのボタンがサポートされている場合、それらを切り替えると、開始の事前/停止 (start pre/stop) と 開始の学習/停止 (start learn/stop) が切り替わります。
1つのボタンのみがサポートされている場合、切り替えは 開始の事前/停止 (start pre/stop) を意味します。
予測、学習、またはデータ ログの実行中は、サポートされているいずれかのボタンを押すと実行が停止します。
おめでとうございます!
データのインポートから最終的なアルゴリズム ライブラリの生成までの全プロセスが完了しました。これで、実際のデバイスへの時系列 AI/ML アルゴリズムのデプロイに進むことができます。
このページは、 Time Series Studio を構成するためのユーティリティです。現時点では、NXPの従業員の電子メールによるユーザー登録のみがサポートしています。
サインアップ
ライセンスキーをお持ちでない場合は、Don’t have an account? Sign up をクリックします。
有効なメールアドレスを入力してください。
Sign Up ボタンをクリックします。
ライセンスキーが受信トレイに送信されます。
サインイン
ライセンスキーをすでにお持ちの場合は、Already have a license key? Sign in をクリックしてください。
メールで受信したライセンスキーを入力します。
Sign In ボタンをクリックします。
アカウントが有効になります。
アカウントからログアウトする場合は、Log Out をクリックします。
データロギングは、COMポート経由でセンサーデータの出力をサポートする特定のセンサーボードを使用してセンサーデータセットをキャプチャできるユーティリティです。このセクションでは、独自のプロジェクト用にセンサーデータセットを設定してキャプチャし、トレーニングに使用する方法について説明します。
Data Logging ユーティリティページに移動し、以下の手順に従ってボードとパソコン間の接続を構築します。ターゲットボードからデータセットを構成してキャプチャします。
ボードを接続する
Refresh ボタンをクリックします。
ターゲットボードのCOMポートを選択します。たとえば、COM14です。
リストでサポートされているボーレートを選択します。
Connect ボタンをクリックしてボードの接続を完了します。
データセットの設定
データセットのクラス数とチャネル数を指定します。EditIcon アイコン をクリックして設定を確認します。もう一度 EditIcon アイコンをクリックすると、データセット設定が編集可能になります。
データセットのキャプチャ
対象とするクラスを選択します。
保存するファイル名を指定しますします。
Max number of lines のチェックボックスを使用してサンプル数を設定します。または、デフォルトの100行を使用します。
START ボタンをクリックすると、実際のストリーム データが表示され、最大行数で自動的に保存されます。
上記の4つの手順を繰り返して、すべてのデータセットクラスをキャプチャします。
各csvファイルには1つのクラスデータセットのみが含まれます。データセットフォルダーを開くには、Open Saved Dataset ボタンをクリックします。
COMポートによる送信データセットフォーマットの仕様:
すべての文字は ASCII でエンコードされます。
データサンプルは、スペース、カンマ、タブ、セミコロンのいずれかの区切り文字で区切られます。
データセットの各行は「rn」で終わり、N(N>=1) x チャネル のサンプルが含まれます。
必要に応じて、データセットは Deta Intelligence ユーティリティを使用してスマート分析とデータクリーンアップを実行できます。
データインテリジェンスは、さまざまなタスクにわたるデータセットの自動的かつインテリジェントな分析を可能にする、ユーザーにとって貴重なツールとして機能します。このセクションでは、データセット分析のプロセスについて説明します。また、パフォーマンスを向上させ、分析結果から洞察を引き出すためにデータを精製および再収集する手順も示します。
データインテリジェンスの重要性
通常ユーザーは、自分の知識に基づいて時系列データセットをインポートします。ただし、いくつかの制限により、データの包括的な分析では不十分なデータが得られます。たとえば、サンプル頻度が対応するアプリケーションのニーズよりも高くなる場合があります。または、各クラスのトレーニングデータの数が分類タスクに対して不均衡になる場合があります。これらの課題に対処するために、データ・インテリジェンス・ツールは、データセットのバランスを評価し、各データ チャネル/軸の重要性を識別するのに役立ちます。ツールは、不均衡なデータセットにフラグを立てるだけでなく、省略する冗長チャネルも提案します。さらに、このツールは最適なサンプリング頻度とウィンドウサイズを決定するのに役立ち、データセットを改良して品質と分析結果を向上させることができます。
データセット設定のデフォルトページは次のとおりです:
最初のステップは、必須パラメータのインポートされたデータを設定することです。
次の項目を入力してください:
タスクタイプ (Task Type)
異常検出または分類が、将来のバージョンで計画されています。
データセットの種類 (Dataset Type)
セグメント化または連続データセット。現時点で異常検出はセグメント化されたデータセットのみがサポートされています。
チャネル数 (Number of Channels)
各データ ポイントのチャネル数。
クラス数 (Number of Classes)
異常検出には、正常カテゴリと異常カテゴリがあります。ただし、分類の場合は 2 つ以上になる場合があります。セグメント化されたデータの場合、各クラスは複数のファイルをインポートできます。ただし、連続データの場合は、クラスごとに 1 つのファイルのみがインポートされます。
チャンネルエイリアス (Channel Alias)
レポートに表示されるときに読みやすくするためのエイリアス名。
クラスエイリアス (Class Alias)
レポートに表示されるときに読みやすくするためのエイリアス名。
次に、confirm ボタンをクリックしてデータセット構成を保存し、Load Files をクリックして各クラスのデータファイルを読み込みます。また、対応するファイルを読み込むための区切り文字を指定することもできます。
分析を開始してしばらくすると、結果が表示されます。参考までに、以下の例を参照してください。
出力項目は次のとおりです:
データバランス (Data Balance)
5つの星で評価された結果が最適なシナリオと見なされ、分類タスクに対して完全にバランスが取れていることを意味します。
異常検出の場合、正常データと異常データが必ずしもバランスが取れている必要はないため、データバランス評価の概念は適用されません。
チャネル相関 (Channel Correlation)
チャネル >= 2 にのみ適用されます。
異なるチャネル間の相関値を示す混同行列表を表示します。
相関値が高いほどチャネル間の関係が強いことを示し、相関値が低いほど独立性が高いことを示します。この情報を使用して、冗長なチャネルを識別し、必要に応じて削除することができます。これにより、次のトレーニング ステップに向けてデータセットを最適化できます。
チャネルの重要性 (Channel Importance)
セグメント化されたデータセットにのみ適用されます。
チャネル >= 2 にのみ適用されます。
各チャネルの重要度スコアを表示します。スコアが高いほど良いことを示します。
このサンプルでは、チャネル X が他のチャネルよりも重要であることがわかります。
最適なサンプリングパラメータ (Best Sampling Params)
サンプリング周波数 (Sampling Frequency): オリジナルのサンプリング周波数の推奨分周周波数を出力します。この推奨事項は、データから潜在的な高周波ノイズ成分を除去するために設計されています。このように周波数を下げることで、ユーザーは重要な情報を維持しながらリソースと電力を節約できます。
ウィンドウサイズ (Window Size): 推奨ウィンドウサイズを出力します。セグメント化されたデータの場合は変更されず、連続データに対してのみ有効です。
ここでは、連続データセットの例を示します。このデータセットは、ファンのさまざまな風速での3軸加速度測定を表しています:
データセットは3つのチャネル (3つの加速度軸) で構成されています。
各データファイルは風速を表します。
サンプリング周波数は400Hzです。各データファイルには38,400行が含まれます。各行には3つのチャネルがあります。
上記のデータ設定の手順に従ってデータを読み込み、スマート分析を行うと、結果は次のようになります:
分析出力から次の情報が得られます:
5つ星でバランスの取れたデータ。
チャネル間の相関は低く、冗長なチャネルが存在しないことを示しています。
サンプリング周波数を1/4分割周波数に調整することをお勧めします。
ウィンドウサイズとして512を使用することをお勧めします。
最後に、最適なサンプリングパラメータに従って連続データをセグメント化されたデータに変換し、最適化されたデータセットをローカルファイルに保存します。その後、このIDE内で次のトレーニングプロセスにデータを使用できます。
推奨されるサンプリング周波数が1/1でない場合、データは分割周波数と推奨されるウィンドウサイズに従ってダウンサンプリングされます。たとえば、スマート分析後に1/2の分割周波数を取得した場合、データセットは以下のようにダウンサンプリングされて保存されます。
データ・インテリジェンス・ツールは、データセットの品質に関するレポートを自動的に生成し、NXPからの直接的なエンジニアリングサポートなしでユーザーにフィードバックを提供します。分析される機能には、データバランス、チャネル相関、チャネル重要度、および最適なサンプリングパラメータが含まれます。これらの機能により、ユーザーはデータの再収集または再フォーマットに関して情報に基づいた決定を下すことができ、データセットが後続の処理に最適な状態になることを確実にします。
このセクションでは、ライセンス契約とライブラリ保護のプロセスについて紹介します。
オーバーオール・ライセンス・クレーム (Overall license claims):
NXP Time Series Studioによって生成されたアルゴリズムライブラリは無料ですが、NXPのSoC製品のみ対象です。
Time Series Studioは、デフォルトで推論回数が制限されたエンジニアリングライブラリを生成します。
エンジニアリングライブラリは、評価と検証のためにすべてのSoC製品で自由に使用できます。
公式ライブラリは、無制限バージョンを取得するために契約を完了するためのプロセスに従う必要があります。
ヘッダーファイル内のライセンスクレーム
Copyright 2024 NXP NXP 機密情報および所有権 (Copyright 2024 NXP NXP Confidential and Proprietary.)。このソフトウェアはNXPが所有または管理しており、適用されるライセンス条件に厳密に従ってのみ使用できます。かかる条件に同意するか、ソフトウェアをダウンロード、インストール、アクティブ化、および/またはその他の方法で使用することにより、お客様はかかるライセンス条件を読み、それに従い、それに拘束されることに同意したものとみなされます。適用されるライセンス条件に拘束されることに同意しない場合は、ソフトウェアを保持、インストール、アクティブ化、または使用してはなりません。
実行回数は1,000回に制限されます。
注意: このバージョンは、推論回数が1,000回に制限されたエンジニアリングビルドです。プロダクションビルドでは、この制限は解除されます。
IP 保護のプロセス全体を明確にする図を以下に示します。
お客様はデータセットをインポートして自動機械学習を完了し、エミュレーションによってターゲットモデルを取得します。
ターゲット・モデル・パッケージを生成します。これには、アルゴリズムライブラリ、ヘッダー、algorithm.datファイルが含まれます。
お客様は、推論回数を1,000回に制限したエンジニアリングライブラリを使用して技術検証を完了します。
すべてのメトリックが期待どおりであることの検証が完了した後に、お客様は公式ライブラリをリクエストできます。
リクエストをNXPのマーケティングチームまたは営業チームに送信し、合意により承認を得た後、algorithm.datファイルを提供します。
NXPのエンジニアリングチームは、algorithm.datファイルに基づいて公式アルゴリズムライブラリを生成します。
NXPは、エンドカスタマーにライセンス契約付きの公式ライブラリをリリースします。
お客様が公式ライブラリのソースコードを必要とする場合、顧客はNXPと交渉して特別な承認を得る必要があります。
最終的に生成されたアルゴリズムライブラリの唯一の所有者はNXPですが、NXPのSoC製品に限り無料です。
========================
本投稿の「Comment」欄にコメントをいただいても,現在返信に対応しておりません.お手数をおかけしますが,お問い合わせの際には,NXP代理店,もしくはNXPまでお問い合わせください.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.