3ステップで仮想センサーを作る

測定ファイルから実用可能なモデルまでは3ステップです。チャネルの指定、トレーニング、エクスポート。3つはすべて同じアプリケーション内、お客様自身の計算機上で完結します。Python環境は不要で、測定データが社内ネットワークから出ることもありません。

測定ファイル CSV · MDF/MF4 · CAN 01 チャネル指定 02 学習・比較 03 エクスポート C · C++ · Python · MATLAB
3ステップの概要です。以下の各節でそれぞれを詳しく説明します。

ステップ1:測定データの読み込みとチャネルの指定

記録ファイル(CSV、MAT、MDF/MF4、TXT)を開くか、CANまたはCAN FDのトレース(.ascまたは.blf)を信号データベース(.dbc)でデコードしてインポートします。開いた時点ですべてのチャネルが共通の時間軸に整列されるため、異なるレートで記録された信号も最初のストリップから正しく対応します。

続いて、モデルの入力とするチャネルと、再現させる信号を指定します。トレーニングデータは1つのファイルに収まっている必要はありません。現在のファイルに加えて、複数のファイルやフォルダ全体を選択できます。同じ物理信号がファイルごとに別の名前で記録されている場合は、対応表でファイルごとに正しいチャネルを一度割り当てます(保存したCSVファイルとして再利用可能)。

トレーニングデータソースのオプション(このファイル/ファイルを選択/フォルダを選択)を表示する仮想センサー作成ダイアログ

ステップ2:トレーニングと比較

選択できるのはランダムフォレスト、XGBoost、ニューラルネットワークです。すべての課題に最適な系列は存在しないため、事前の絞り込みは必要ありません。モデルコンペティションが同じ入力・出力チャネルに対して複数の候補を同時にトレーニングし、ランキングに並べて提示します。

この種の代替モデルの精度はハイパーパラメータ、つまりトレーニング前に決めるパラメータに依存します。ランダムフォレストであれば木の本数、最大深さ、最小葉サイズ、ニューラルネットワークであれば層数、層あたりのニューロン数、学習率です。これらのハイパーパラメータの決定は、Data Sensorsではベイズ最適化、Random Search、Grid Search、代理モデル戦略のいずれかで自動的に行われます。

評価はホールドアウトした検証用データ、つまり当該モデルのトレーニングに使われていないデータで行われます。ランキングには検証RMSEとR²が並べて表示され、トレーニング時間と適合診断も示されます。データセットが十分に大きい場合は、トレーニングにもモデル選択にも使わない独立したテスト用データも別に確保されます。

検証RMSEとR²でXGBoostとRandom Forestのエントリをランク付けするモデルコンペティションのランキング

ステップ3:独立したコードとしてエクスポート

選択したモデルはC、C++、Python、MATLABへ直接エクスポートできます。Cは純粋なMCUビルド向け、C++はクラスベースのインタフェース向け、Pythonは解析スクリプトやサービス向け、MATLABはSimulinkブロックでの利用向けです。生成されるコードは予測関数の独立した実装であり、Data Sensorsへの依存も、リンクすべきランタイムライブラリもありません。

エクスポートはフル精度またはint8量子化を選択でき、ダイアログは両方についてサイズと精度の見積もりを事前に表示します。フラッシュ容量と精度の判断は保存前に済みます。エクスポートできるのはランキングの各エントリで、1位のものだけではありません。精度がやや低いモデルのほうが、ターゲットハードウェア上で高速に動作したり、利用可能なメモリに収まりやすいことがあります。

エクスポート形式としてC++が選択された仮想センサーエクスポートダイアログ

必要なもの

後の入力チャネルと目標量の両方が記録されている測定データです。目標量はトレーニングの基準となるため、物理センサーで測定する必要があります。必要なデータ量は対象の関係によって変わり、足りていたかどうかはホールドアウトしたデータでの評価が示します。それ以外の前提条件はありません。Pythonのインストールも、アカウントも、インターネット接続も不要です。