固定小数点展開用の行動認識S金宝appimulinkモデル
この例では,センサー信号に基づいて人間の行動を分類する仿金宝app真软件®モデルをコード生成および低電力ハードウェアへの展開用に準備する方法を示します。この例では,BBC微:デバイスへの展開に対応している仿真软件の分類モデル金宝appを提供します。まず,BBC微:用の仿真软件编码器™サポ金宝appートパッケージをアドオンエクスプローラーからダウンロードしてインストールします。その後,分類モデルに学習させ,金宝appSimulinkモデルをタ,ゲットデバ。
標本デ,タセットの読み込み
humanactivity
デ,タセットを読み込みます。
负载humanactivity
humanactivity
データセットには,人間の次の5種類の身体動作についての24075個の観測値が含まれています。座る,立,歩く,走る,踊るです。各観測値には、スマートフォンの加速度センサーによって測定された加速度データから抽出した 60 個の特徴量が含まれています。このデータセットには、以下の変数が含まれています。
actid
-整数による行動idが格納されている応答ベクトル。1 ~ 5个はそれぞれ、座る、立、歩く、走る、踊る、を表します。actnames
-整数の行動idに対応する行動名。的壮举
- 24075個の観測値に対する60個の特徴量が格納されている特徴量行列。featlabels
- 60個の特徴量のラベル。
humanactivity
デ,タセットの作成には,センサ,har(行動認識)アプリ[1]が使用されました。このアプリで生の加速度データを測定するときに,人間はスマートフォンを上下逆さまにして画面が人間側を向く状態でポケットに入れていました。ソフトウェアでは,測定した生データをこれに従って較正し,較正したデータから60個の特徴量を抽出しました。較正と特徴抽出の詳細にいては,[2]と[3]をそれぞれ参照してください。後で説明する仿金宝app真软件モデルでは生の加速度データも使用しており,較正および特徴抽出用のブロックが含まれています。
固定小数点展開用にメモリフットプリントを減らすために,学習させた分類器でデータセットの最初の15個の特徴量のみを使用するように指定します。
Feat = Feat (:,1:15);Featlabels = Featlabels (1:15);
デ,タの準備
この例では5種類の行動を分類するモデルに学習をさせるために観測値をの90%,学習済みモデルの検証に観測値の10%を使用します。cvpartition
を使用して,検定セット用に10%のホ,ルドアウトを指定します。
rng (“默认”)%用于再现性分区= cvpartition(actid,“坚持”, 0.10);
学習▪▪ンデックスと検定▪▪ンデックスを抽出します。
trainInds =训练(分区);testInds = test(分区);
学習デ,タセットと検定デ,タセットを指定します。
XTrain = feat(trainInds,:);YTrain = actid(trainInds);XTest = feat(testInds,:);YTest = actid(testInds);
コマンドラ@ @ンにおける決定木の学習
予測子XTrain
とクラスラベルYTrain
を使用して,当てはめたバ。クラス名を指定することが推奨されます。また,決定木用に最大20の枝ノ,ドを指定します。
classificationTree = fitctree(XTrain,YTrain,...“类名”, (1, 2, 3, 4, 5],...“MaxNumSplits”, 20)
classificationTree = classificationTree ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 21668 Properties, Methods
classificationTree
に5分割の交差検証を実行し,検証精度を計算します。
partitionedModel = crossval(分类树,“KFold”5);validationAccuracy = 1-kfoldLoss(partitionedModel)
validationAccuracy = 0.9700
代わりに,分類学習器アプリを使用して同じ分類モデルの学習と交差検証を行うこともできます。同様の例にいては,スマ,トフォン展開用の行動認識S金宝appimulinkモデルを参照してください。
検定デ,タに対するパフォ,マンスの評価
検定標本分類誤差を推定して,アルゴリズムの一般化の精度を特定します。
testAccuracy = 1-loss(classificationTree,XTest,YTest)
testAccuracy = 0.9617
学習済みモデルは,検定デタセットにいて行動の96.17%を正しく分類します。この結果は,学習済みモデルが学習デ,タセットに対して過適合にはなっていないことを示します。
正確な値はオペレ,ティングシステムによってわずかに変化する可能性があることに注意してください。
金宝appSimulinkモデルにおける予測
分類モデルを準備したので,金宝appSimulinkモデルを開くことができます。決定木classificationTree
を含む学習済みの分類オブジェクトをClassificationTree预测ブロックに▪▪ンポ▪▪トできます。このブロックは统计和机器学习工具箱™ライブラリから追加できます。ClassificationTree预测ブロックを含むモデルを作成する方法の詳細にいては,ClassificationTree预测ブロックの使用によるクラスラベルの予測を参照してください。ここでは,この例で用意されているS金宝appimulinkモデルslexHARFixedPointExample
を使用します。
金宝appSimulinkモデルへの入力として使用する加速度計の大規模なデ,タセットts
を作成します。
inData = load(“rawAccData”);Xacc = inData.acc_data;t = 0:size(Xacc,1)-1;ts =时间序列(Xacc,t,“InterpretSingleRowDataAs3D”,真正的);numSteps = numel(t)-1;
コマンドラaapl . exeンで次の金宝appように入力して,SimulinkモデルslexHARFixedPointExample
を開きます。この仿金宝app真软件モデルには,前処理サブシステム用の必要な変数をベースワークスペースに読み込むコールバックが含まれることに注意してください。
slexHARFixedPointExample
モデルslexHARFixedPointExample
には次のブロックが含まれています。
Xブロック(入力端子)は,信号
ts
をワ,クスペ,スからシステムにリンクします。缓冲和校准ブロックには,3の缓冲ブロックが含まれています。X缓冲、Y缓冲,およびZ缓冲です。これらの各ブロックは,バッファリングしたフレーム間のオーバーラップが12サンプル分含まれている,32個の加速度計軸のサンプルをバッファリングします。20個のサンプルを収集した後で,各缓冲ブロックはそれらを前のフレ,ムの12サンプルと結合し,合計で32個のサンプルを预处理ブロックに渡します。各缓冲ブロックは,入力サンプルを0.1秒ごとに受け取り,32個のサンプルが含まれているバッファリングしたフレームを2秒ごとに出力します。
预处理ブロックは,バッファリングされた32個の加速度計サンプルのフレームから15個の特徴量を抽出します。このサブシステムブロックではDSP系统工具箱™と信号处理工具箱™を使用します。
ClassificationTree预测ブロックは、统计和机器学习工具箱ライブラリのライブラリブロックで,抽出された特徴量を使用して人間の行動を分類します。出力は,座る,立,歩く,走る,踊る,にそれぞれ対応する1 ~ 5个の整数です。
固定小数点への変換
モデルslexHARFixedPointExample
を固定小数点モデルslexHARFixedPointConvertedExample
に変換します。その後,slexHARFixedPointConvertedExample
をBBC micro:bitボ,ドに展開します。ターゲットデバイスには浮動小数点演算装置(FPU)がなく,固定小数点の計算の方が浮動小数点の計算よりも効率的に実行されます。
モデルslexHARFixedPointExample
の标签端子を右クリックし,[選択した信号のログ]を選択します。その後,[アプリ]タブにあるアプリギャラリ,から[固定小数点ル]アプリを選択して開きます。固定小数点ルの[新規]ワ,クフロ,で,迭代定点转换
を選択します。
[固定小数点の反復的変換]タブの[信号許容誤差]セクションで,标签
信号の許容される誤差(元の値と新しい設計の値の差)のレベルを指定します。分類モデルにいては,絶対許容誤差0を指定することが推奨されます。この設定の場合,固定小数点の分類モデルで返されるラベルは,浮動小数点モデルで返されるラベルと同じでなければなりません(回帰モデルの場合は許容誤差をユーザー指定の非ゼロの値にすることができます)。
次に,浮動小数点モデルから固定小数点モデルへの変換(定点设计师)の例の手順を参照して,固定小数点に変換されるS金宝appimulinkモデルの作成方法を確認します。
コマンドラaapl . exeンで次のように入力して金宝app,固定小数点のSimulinkモデルslexHARFixedPointConvertedExample
を開きます。子系统ブロックに,前に示したモデルslexHARFixedPointExample
の缓冲和校准、预处理,およびClassificationTree预测の各ブロックが含まれています。
slexHARFixedPointConvertedExample
別の方法として,固定小数点ルアプリで优化定点转换
ワクフロを選択したり,ブロックのダアログボックスで手動でデタ型を定義することもできます。詳細にいては,固定小数点出力を使用したブロックの設定(定点设计师)を参照してください。
ハ,ドウェアへの展開
コマンドラインで次のように入力して,BBC微:一些デバイスへの展開用の仿真软件モデルを開金宝appきます。モデルslexHARFixedPointDeployExample
は固定小数点に変換されており,ターゲットデバイスの加速度計とディスプレイの端子に対応するI / Oブロックがあります。
slexHARFixedPointDeployExample
金宝appSimulinkモデルslexHARFixedPointDeployExample
は,スマ,トフォンのセンサ,で測定した加速度デ,タに基づいて人間の行動を分類します。このモデルには次のブロックが含まれています。
加速度计ブロックは、生の加速度デ、タをデバ、スの加速度センサ、から受け取ります。
缓冲和校准、预处理,およびClassificationTree预测の各ブロックは,前に示したモデル
slexHARFixedPointExample
と同じです。预测活动ブロックは,分類された人間の行動の値をBBC微:一些デバイスの5 x5の领导マトリックスに表示します。各文字はそれぞれ,“S”は座る,“T”は立つ,“W”は歩く,“R”は走る,“D”は踊るを表します。
金宝appSimulinkモデルをデバ电子邮箱スに展開するには,开始使用BBC micro:bit的Sim金宝appulink编码器支持包金宝app(金宝appSimulink C金宝appoder支持包BBC micro:bit)の手順に従います。デバイスでモデルを実行し,前に説明したものと同じ方法でデバイスを配置して学習データを収集し,5つの行動を試します。それに従って,分類された行動がモデルに表示されます。
モデルの精度を確保するには,前に説明したものと同じ方法でデバイスを配置して学習データを収集しなければなりません。別の場所や異なる方向でデバイスを配置する場合は,各自の方法でデータを収集し,そのデータを使用して分類モデルに学習させます。
デバ▪▪スによって,モデルの精度が検定デ▪▪タセット(testAccuracy
)の精度と異なる可能性があります。モデルの精度を改善するには、ジャイロスコープなどの追加センサーの使用を検討してください。
参考文献
[1] El Helou, Amine。传感器HAR识别应用程序。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app
[2] STMicroelectronics, AN4508使用说明。低重力三轴加速度计的参数和校准。2014。https://www.st.com/resource/en/application_note/dm00119044-parameters-and-calibration-of-a-lowg-3axis-accelerometer-stmicroelectronics.pdf
[3] El Helou, Amine。传感器数据分析。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54139-sensor-data-analytics-french-webinar-code
参考
fitctree
|crossval
|ClassificationTree预测