主要内容

用于智能手机部署的人类活动识别Simulink模型金宝app

本示例展示了如何准备一个Simulink®模型,该模型基于智能手机传感器金宝app信号对人类活动进行分类,用于代码生成和智能手机部署。该示例提供了两个可以部署到Android™设备和i金宝appOS设备的Simulink模型。在为目标设备安装所需的支持包后,训练分类模型并将Simulin金宝appk模型部署到该设备。金宝app

负载样本数据集

加载humanactivity数据集。

加载humanactivity

humanactivity数据集包含24,075个不同的5种不同的物理人类活动:坐着,站立,走路,跑步和跳舞。每次观察都有60个功能,从智能手机加速度计传感器测量的加速度数据中提取。数据集包含以下变量:

  • actid- 响应矢量包含整数中的活动ID:1,2,3,4和5分别表示坐姿,站立,行走,跑步和跳舞

  • actnames- 与整数活动ID对应的活动名称

  • feat- 60个特征矩阵,24075次观察

  • featlabels.—60个特性的标签

传感器HAR(人类活动识别)应用程序[1]是用来创建humanactivity数据集。当用这款应用程序测量原始加速度数据时,一个人把智能手机放在口袋里,让智能手机上下颠倒,屏幕朝向自己。然后软件对测量的原始数据进行相应的校准,并从校准数据中提取出60个特征。有关校准和特征提取的详细信息请参见[2][3], 分别。稍后描述金宝app的Simulink模型还使用原始加速度数据,并包括用于校准和特征提取的块。

准备数据

此示例使用90%的观察结果来训练一个对五种人类活动进行分类的模型,并使用10%的观察结果来验证训练后的模型。使用CVPartition.为测试集指定10%的滞留量。

rng (“默认”%的再现性分区= cvpartition (actid,“坚持”, 0.10);trainingInds =培训(分区);培训集的%指数XTrain = Feat(TrainingInds,:);ytrain = actid(traininginds);testinds =测试(分区);%测试集的索引xtest = feat(testinds,:);ytest = actid(testinds);

转换特征矩阵XTrain和响应矢量YTrain进入桌子以加载分类学习者应用程序中的培训数据。

tTrain = array2table([XTrain YTrain]);

为表的每列指定变量名称。

tTrain.Properties.VariableNames = [featlabels '“活动”];

使用分类学习者应用程序的训练增强树集成

通过使用分类学习者应用程序培训分类模型。要打开分类学习者应用程序,请输入ClassificationSlearner.在命令行。或者,单击应用程序选项卡,并单击右侧的箭头应用程序区开放画廊。然后,在机器学习和深度学习, 点击分类学习者

分类学习者选项卡,文件部分中,点击新会话并选择从工作空间

在New Session from Workspace对话框中,单击箭头数据集变量,然后选择表TTrain.Classification Learner从表中检测预测词和反应。

默认选项是5倍交叉验证,防止过拟合。点击开始会议.分类学习者加载数据集并绘制前两个特征的散点图。

分类学习者选项卡右侧的箭头模型类型区开放画廊。然后,在集成分类器, 点击提高了树

当前模型摘要窗格显示增强树集合模型的默认设置。

分类学习者选项卡,训练部分中,点击火车.当培训结束后,楷模窗格显示5倍,交叉验证的分类准确性。

分类学习者选项卡,出口部分中,点击出口模式,然后选择出口紧凑型号.点击好吧在对话框中。结构trainedModel出现在MATLAB®工作区。场分类素..trainedModel包含紧凑模型。从结构中提取训练好的模型。

classificationEnsemble = trainedModel.ClassificationEnsemble;

在命令行中训练增强树集合

或者,您可以在命令行中训练相同的分类模型。

template = templatetree(“MaxNumSplits”, 20岁,“复制”,真正的);classificationEnsemble = fitcensemble (XTrain YTrain,...“方法”“AdaBoostM2”...“NumLearningCycles”30岁的...“学习者”,模板,...“LearnRate”, 0.1,...“类名”,[1;2;3;4;5];

执行5倍交叉验证classificationEnsemble并计算验证准确性。

partitionedModel = crossval (classificationEnsemble,“KFold”5);validationAccuracy = 1-kfoldLoss (partitionedModel)
validationAccuracy = 0.9833

根据测试数据评估性能

评估测试数据集的性能。

testAccuracy =第一(classificationEnsemble XTest、欧美)
testAccuracy = 0.9759

训练后的模型正确分类了测试数据集上97.59%的人类活动。这一结果证实了训练模型与训练数据集没有过拟合。

请注意,准确度值可能会略有不同,具体取决于您的操作系统。

保存训练模型

用于代码生成,包括分类模型对象,使用Savelarnerforcoder.loadLearnerForCoder

通过使用保存训练的模型Savelarnerforcoder.

saveLearnerForCoder (classificationEnsemble'ensembermodel.mat');

功能块预测在Simuli金宝appnk模型中通过使用加载训练好的模型loadLearnerForCoder并利用训练后的模型对新数据进行分类。

将Simuli金宝appnk模型部署到设备上

现在您已经准备好了一个分类模型,您可以根据您拥有的智能手机的类型打开Simulink模型,并将模型部署到您的设备上。金宝app注意,Simulink模型需金宝app要EnsembleModel.mat文件和校准矩阵文件slexHARAndroidCalibrationMatrix.matslexHARiOSCalibrationMatrix.mat.如果单击此页面的右上角的按钮并在MATLAB中打开此示例,则MATLAB将打开包含这些校准矩阵文件的示例文件夹。

类型Slexharandroidexample.打开用于Android部金宝app署的Simulink模型。

类型slexHARiOSExample打开用于iOS部署的Si金宝appmulink模型。该机型可在Mac OS平台下打开。

两种Simuli金宝appnk模型基于智能手机传感器测量的加速度数据对人类活动进行分类。模型包括以下模块:

  • 加速度计Block从设备上的加速度计传感器接收原始加速度数据。

  • 校准块是一个MATLAB函数块,校准原始加速度数据。此块使用校准矩阵slexHARAndroidCalibrationMatrix.mat文件或slexHARiOSCalibrationMatrix.mat文件。如果单击此页面右上角的按钮并在MATLAB中打开此示例,则MATLAB将打开包含这些文件的示例文件夹。

  • 显示模块Acc XAcc Y,Acc Z连接到校准块和显示设备上每个轴的校准数据点。

  • 每一个缓冲块,X缓冲y缓冲,Z缓冲,缓冲帧的加速度计轴的32个样本,缓冲帧之间的12个样本重叠。收集20个样品后,每个样品缓冲块加入20个样本,其中来自前一帧的12个样本,并将总共32个样本传递给提取物质块。每个缓冲Block每0.1秒接收一个输入样本,每2秒输出一个包含32个样本的缓冲帧。

  • 提取物质block是一个MATLAB函数块,从32个加速度计样本的缓冲帧中提取60个特征。此功能块使用DSP系统工具箱™和信号处理工具箱™。

  • 预测块是一个MATLAB函数块,从EnsembleModel.mat文件的使用loadLearnerForCoder并利用提取的特征对用户活动进行分类。输出为1到5之间的整数,分别对应sit、Standing、Walking、Running和Dancing。

  • 预测活动块显示设备上的分类用户活动值。

  • 视频输出子系统使用多端口开关块来选择要在设备上显示的相应用户活动图像数据。的转换为RGB.块将选定的图像分解为单独的RGB向量,并将图像传递给活动展示块。

要将Simulink模型部署金宝app到设备上,请按照下面的步骤操作在Android设备上运行模型(金宝appAndr金宝appoid设备的Simulink支持包)在苹果iOS设备上运行模型(金宝app适用于苹金宝app果iOS设备的Simulink支持包).在您的设备上运行模型,按照前面描述的收集训练数据的相同方式放置设备,并尝试这五个活动。模型相应地显示分类的活动。

为了确保模型的准确性,您需要按照收集训练数据时描述的方法放置设备。如果您想将设备放置在不同的位置或方向,那么就以自己的方式收集数据,并使用数据来训练分类模型。

模型的准确性可能不同于测试数据集的准确性(testaccuracy),取决于设备。要改进模型,可以考虑使用额外的传感器并更新校准矩阵。此外,您可以使用Audio Toolbox™添加另一个输出块,用于对输出子系统的音频反馈。使用WithsEpak™写入块从您的设备发布分类活动和加速数据到内容互联网。有关详细信息,请参阅https://thingspeak.com/。

参考文献

传感器HAR识别App. MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54138- sensor-har-recognition-app.

[2] STMicroelectronics,AN4508应用笔记。“低G 3轴加速度计的参数和校准。”2014年。

[3] El Helou,A.传感器数据分析。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54139-sensor-data-analytics--french-webinar-code-

另请参阅

|||

相关的话题