このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例では、スマートフォンのセンサー信号に基づいて人間の行動を分類する 万博1manbetxSimulink®モデルをコード生成およびスマートフォン展開用に準備する方法を示します。この例では、安卓™ デバイスおよび 网间网操作系统デバイスへの展開に対応している 2.つの 模拟モデルを提供します。ターゲット デバイスに必要なサポート パッケージをインストールした後で、分類モデルに学習をさせ、模拟モデルをデバイスに展開します。
人类活动
データセットを読み込みます。
负载人类活动
人类活动
データセットには、人間の次の 5.種類の身体動作についての 24,075 個の観測値が含まれています。座る、立つ、歩く、走る、踊るです。各観測値には、スマートフォンの加速度センサーによって測定された加速度データから抽出した 60個の特徴量が含まれています。このデータセットには、以下の変数が含まれています。
活动
— 整数による行動 身份证件が格納されている応答ベクトル。1 ~ 5 はそれぞれ、座る、立つ、歩く、走る、踊る、を表します。
演员名
— 整数の行動 身份证件に対応する行動名。
壮举
— 24,075 個の観測値に対する 60個の特徴量が格納されている特徴量行列。
羽毛标签
— 60 個の特徴量のラベル。
人类活动
データセットの作成には、センサー 哈尔(行動認識) アプリ[1]が使用されました。このアプリで生の加速度データを測定するときに、人間はスマートフォンを上下逆さまにして画面が人間側を向く状態でポケットに入れていました。ソフトウェアでは、測定した生データをこれに従って較正し、較正したデータから 60個の特徴量を抽出しました。較正と特徴抽出の詳細については、[2]と[3]をそれぞれ参照してください。後で説明する 万博1manbetx模拟モデルでは生の加速度データも使用しており、較正および特徴抽出用のブロックが含まれています。
この例では、5.種類の行動を分類するモデルに学習をさせるために観測値の 90% を、学習済みモデルの検証に観測値の 10% を使用します。CVD分区
を使用して、検定セット用に 10% のホールドアウトを指定します。
rng(“默认”)%为了再现性分区=cvpartition(活动,“坚持”,0.10);trainingInds=培训(分区);%训练集的索引XTrain=feat(trainingids,:);YTrain=actid(trainingids);testInds=test(Partition);%测试集的索引XTest=feat(testInds,:);YTest=actid(testInds);
分類学習器アプリで学習データセットを読み込むため、特徴量行列XTrain
と応答ベクトル钇
をテーブルに変換します。
tTrain=array2table([XTrain YTrain]);
テーブルの各列の変数名を指定します。
tTrain.Properties.VariableNames=[featlabels'“活动”];
分類学習器アプリを使用して分類モデルに学習をさせます。分類学習器アプリを開くため、コマンドラインで分类学习者
と入力します。または、[アプリ]タブをクリックし、[アプリ]セクションの右にある矢印をクリックして、ギャラリーを開きます。次に、[機械学習および深層学習]の[分類学習器]をクリックします。
[分類学習器]タブで、[ファイル]セクションの[新規セッション]をクリックし、[ワークスペースから]を選択します。
[ワークスペースからの新規セッション] ダイアログ ボックスで、[データセット変数]の矢印をクリックしてから 桌子t雨水
を選択します。分類学習器は予測子と応答をテーブルから識別します。
既定のオプションは、過適合を防ぐ 5.分割の交差検証です。[セッションの開始]をクリックします。分類学習器がデータセットを読み込み、はじめの 2.つの特徴量について散布図をプロットします。
[分類学習器]タブで[モデル タイプ]セクションの右にある矢印をクリックしてギャラリーを開きます。次に、[アンサンブル分類器]の[ブースティング木]をクリックします。
[現在のモデルの概要]ペインにブースティング木のアンサンブル モデルの既定設定が表示されます。
[分類学習器]タブの[学習]セクションで、[学習]をクリックします。学習が完了すると、5.分割で交差検証された分類精度が[モデル]ペインに表示されます。
[分類学習器]タブの[エクスポート]セクションで、[モデルのエクスポート]をクリックしてから[コンパクト モデルのエクスポート]を選択します。ダイアログ ボックスの[好的]をクリックします。構造体训练模型
が MATLAB®のワークスペースに現れます。训练模型
の分类符号
フィールドにコンパクト モデルが含まれています。学習済みのモデルを構造体から抽出します。
ClassificationnSemble=trainedModel.ClassificationnSemble;
もう一つの方法として、コマンドラインで同じ分類モデルに学習をさせることができます。
模板=模板树(“MaxNumSplits”,20,“可复制”,true);ClassificationnSemble=fitcensemble(XTrain,YTrain,...“方法”,“AdaBoostM2”,...“NumLearningCycles”,30,...“学习者”样板...“LearnRate”,0.1,...“类名”,[1; 2; 3; 4; 5]);
分类符号
について 5.分割の交差検証を実行し、検証精度を計算します。
partitionedModel=crossval(分类代码,“KFold”,5);validationAccuracy=1-kfoldLoss(partitionedModel)
验证准确性=0.9833
検定データセットに対するパフォーマンスを評価します。
测试精度=1-损失(分类插入、XTest、YTest)
测试精度=0.9759
学習済みモデルは、検定データセットについて行動の 97.59% を正しく分類します。この結果は、学習済みモデルが学習データセットに対して過適合にはなっていないことを示します。
正確な値はオペレーティング システムによってわずかに変化する可能性があることに注意してください。
分類モデル オブジェクトが含まれている場合のコード生成には、saveLearnerForCoder
とloadLearnerForCoder
を使用します。
saveLearnerForCoder
を使用して、学習済みモデルを保存します。
saveLearnerForCoder(分类代码,“EnsembleModel.mat”);
万博1manbetx模拟モデルの関数ブロック预测活动がloadLearnerForCoder
を使用して学習済みモデルを読み込み、学習済みモデルを使用して新しいデータを分類します。
分類モデルを準備したので、スマートフォンのタイプに応じて 万博1manbetx模拟モデルを開き、モデルをデバイスに展開できるようになりました。模拟モデルには集成模型
ファイルと較正行列ファイルslexHARAndroidCalibrationMatrix.mat
またはslexHARiOSCalibrationMatrix.mat
が必要であることに注意してください。このページの右上にあるボタンをクリックしてこの例を MATLABで開くと、これらの較正行列ファイルが含まれている例のフォルダーが開きます。
安卓に展開する 模拟モデルを万博1manbetx開くには、狼蛛纲
と入力します。
网间网操作系统に展開万博1manbetxする 模拟モデルを開くには、slexHARiOSExample
と入力します。苹果操作系统プラットフォームでモデルを開くことができます。
この 2.つの 万博1manbetx模拟モデルは、スマートフォンのセンサーで測定した加速度データに基づいて人間の行動を分類します。モデルには以下のブロックが含まれています。
加速计ブロックは、生の加速度データをデバイスの加速度センサーから受け取ります。
校准ブロックは、生の加速度データを較正する MATLAB函数ブロックです。このブロックではslexHARAndroidCalibrationMatrix.mat
ファイルまたはslexHARiOSCalibrationMatrix.mat
ファイルの較正行列を使用します。このページの右上にあるボタンをクリックしてこの例を MATLABで開くと、これらのファイルが含まれている例のフォルダーが開きます。
表示ブロックAcc X、Acc YおよびAcc Zは、校准ブロックに接続されており、デバイスの各軸について較正されたデータ点を表示します。
X缓冲区、Y缓冲区およびZ缓冲区の各缓冲器ブロックは、バッファリングしたフレーム間のオーバーラップが 12サンプル分含まれている、32個の加速度計軸のサンプルをバッファリングします。20個のサンプルを収集した後で、各缓冲器ブロックは 20個のサンプルを前のフレームの 12サンプルと結合し、合計で 32個のサンプルを提取特征ブロックに渡します。各缓冲器ブロックは、入力サンプルを 0.1秒ごとに受け取り、32個のサンプルが含まれているバッファリングしたフレームを 2.秒ごとに出力します。
提取特征ブロックは、バッファリングした 32個の加速度サンプルが含まれているフレームから 60個の特徴量を抽出する MATLAB函数ブロックです。この関数ブロックでは DSP系统工具箱™ と 讯号处理工具箱™ を使用します。
预测活动ブロックは、loadLearnerForCoder
を使用して学習済みモデルを集成模型
ファイルから読み込み、抽出された特徴量を使用して行動を分類する、MATLAB函数ブロックです。出力は、座る、立つ、歩く、走る、踊る、にそれぞれ対応する 1 ~ 5 の整数です。
预测活动ブロックは、分類した行動の値をデバイスに表示します。
视频输出サブシステムは、複数端子のスイッチ ブロックを使用して対応する行動のイメージ データを選択し、デバイスに表示します。转换为RGBブロックは、選択されたイメージを別々の RGBベクトルに分解し、このイメージを活动显示ブロックに渡します。
万博1manbetx模拟モデルをデバイスに展開するには、在Android设备上运行模型(万博1manbet万博1manbetxx针对Android设备的Simulink支持包)または在苹果iOS设备上运行模型(万博1manbet万博1manbetxx适用于Apple iOS设备的Simulink支持包)の手順に従います。デバイスでモデルを実行し、前に説明したものと同じ方法でデバイスを配置して学習データを収集し、5.つの行動を試します。それに従って、分類された行動がモデルに表示されます。
モデルの精度を確保するには、前に説明したものと同じ方法でデバイスを配置して学習データを収集する必要があります。異なる場所または方向でデバイスを配置する場合は、各自の方法でデータを収集し、そのデータを使用して分類モデルに学習をさせます。
デバイスによって、モデルの精度が検定データセット (测试准确性
) の精度と異なる可能性があります。追加センサーの使用と較正行列の更新によるモデルの改善を検討できます。また、音频工具箱™ を使用して、音声フィードバック用に別の出力ブロックを出力サブシステムに追加することもできます。分類された行動と加速度データをデバイスから "モノのインターネット" にパブリッシュするには、说话™ の書き込みブロックを使用します。詳細については、https://thingspeak.com/を参照してください。
[1] El Helou,A.传感器HAR识别应用程序.MathWorks文件交换//www.tianjin-qmedu.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app
[2] STMicroelectronics,AN4508应用说明。“低g三轴加速计的参数和校准”,2014年。
[3] 传感器数据分析。MathWorks文件交换//www.tianjin-qmedu.com/matlabcentral/fileexchange/54139-sensor-data-analytics--french-webinar-code-
loadLearnerForCoder
|saveLearnerForCoder
|菲特森布尔
|预测