主要内容

定点部署的人类活动识别Simulink模型金宝app

这个例子展示了如何准备一个Simulink®模型,该模型基于传感器信号对金宝app人类活动进行分类,用于代码生成和部署到低功耗硬件上。该示例提供了一个Simulink分类模型,可以金宝app部署到BBC微:位设备。首先,从Add-On Explorer下载并安装用于BB金宝appC micro:bit金宝app的Simulink Coder™支持包。然后训练分类模型,并将Simulink模型部署到目标设备。金宝app

负载样本数据集

加载humanactivity数据集。

负载humanactivity

humanactivity数据集包含24,075个对五种人类身体活动的观察:坐、站、走、跑和跳舞。每一个观测都有60个特征,这些特征是从智能手机加速度传感器测量的加速度数据中提取出来的。数据集包含以下变量:

  • actid-响应向量,包含整数形式的活动id: 1、2、3、4和5,分别代表坐、站、走、跑和跳舞

  • actnames—与整型活动id对应的活动名称

  • 的壮举-包含60个特征的24,075个观测值的特征矩阵

  • featlabels- 60个功能的标签

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

要减少定点部署的内存占用,请指定仅使用经过训练的分类器中的数据集的前15个特性。

feat = feat(:,1:15);feaitlabels = featlabels(1:15);

准备数据

本示例使用90%的观察结果来训练一个将五种人类活动分类的模型,并使用10%的观察结果来验证训练的模型。使用cvpartition为测试集指定10%的坚持值。

RNG('默认'再现性的百分比分区= cvpartition(actid,“坚持”,0.10);

提取训练和测试指标。

trainInds =培训(分区);testInds =测试(分区);

指定训练和测试数据集。

XTrain =壮举(trainInds:);YTrain = actid (trainInds);XTest =壮举(testInds:);欧美= actid (testInds);

在命令行训练决策树

用预测器训练一个拟合的二叉分类决策树XTrain和类标签ytrain..推荐的做法是指定类名。此外,为决策树指定最多20个分支节点。

classificationTree = fitctree (XTrain YTrain,...'Classnames',[1; 2; 3; 4; 5],...'maxnumsplits',20)
classificationTree = classificationTree ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 21668属性,方法

执行5倍交叉验证Classificationtree.并计算验证精度。

partitionedmodel = crossval(ClassificationTree,“KFold”5);ValidationAccuracy = 1-kfoldloss(PartitionedModel)
validationAccuracy = 0.9700

或者,你可以使用classification Learner应用程序训练和交叉验证相同的分类模型智能手机部署的人类活动识别Simulink模型金宝app

评估测试数据的性能

确定算法通过估计测试样本分类误差概括了概括。

testAccuracy =第一(classificationTree XTest、欧美)
testaccuracy = 0.9617.

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

注意,精确度值可能会根据您的操作系统略有不同。

在Simulink模型金宝app中进行预测

既然已经准备好了分类模型,就可以打开Simulink模型了。金宝app您可以导入包含决策树的训练过的分类对象Classificationtree.进入A.ClassificationTree预测块。您可以从Statistics和Machine Learning Toolbox™库中添加此块。有关如何创建包含ClassificationTree预测块,看使用ClassificationTree预测块预测类标签.在这种情况下,您将使用Simulink模型金宝appslexharfixedpointexample.随本例提供。

创建一组大的加速度计数据ts作为Simulink模型的输入。金宝app

inData =负载(“rawAccData”);xacc = indata.acc_data;t = 0:大小(XACC,1)-1;ts = timeeries(xacc,t,“InterpretSingleRowDataAs3D”,真正的);numSteps =元素个数(t) 1;

打开Simulin金宝appk模型slexharfixedpointexample.通过在命令行输入以下命令。注意,Simulink模型包金宝app括回调,它将预处理子系统的必要变量加载到基本工作空间中。

slexharfixedpointexample.

slexharfixedpointexample.模型包含以下块:

  • X块(输入端口)连接信号ts从工作区进入系统。

  • 缓冲和校准块包含三个缓冲块:X缓冲Y缓冲, 和z缓冲区.这些块中的每一个缓冲加速度计轴的32个样本,在缓冲帧之间具有12个重叠样本。收集20个样品后,每个样品缓冲块与前一帧的12个样本加入它们,并通过总共32个样本预处理块。每一个缓冲块每隔0.1秒接收输入样本,并输出每2秒的缓冲帧,包括32个样本。

  • 预处理块从32个加速度计样本的缓冲框中提取15个特征。该子系统块使用DSP系统工具箱™和信号处理工具箱™。

  • ClassificationTree预测块是统计和机器学习工具箱库的库块,用于使用提取的功能对人类活动进行分类。输出分别为1到5之间的整数,分别对应于坐姿,站立,行走,跑步和跳舞。

转换为定点

转换slexharfixedpointexample.模型到定点模型slexHARFixedPointConvertedExample.然后,部署slexHARFixedPointConvertedExample到BBC微:位板。目标设备没有浮点单元(FPU),定点计算比浮点计算效率更高。

在里面slexharfixedpointexample.模型中,右键单击标签港口和选择日志选择信号.然后,打开定点的工具应用程序通过选择它从应用程序库,可从应用程序选项卡。在定点工具,下面工作流,选择迭代定点转换

迭代定点转换标签,在信号公差节中,指定可接受的公差水平(原始值与新设计值之间的差值)标签信号。分类模型的推荐做法是指定0绝对公差。使用此设置,定点分类模型返回的标签必须与浮点模型返回的标签相同。(对于回归模型,可接受的公差可以是一个非零的用户指定的数字。)

然后,审查示例中的步骤将浮点模型转换为定点(定点设计师)要了解如何创建转换为固定点的Simulink模型。金宝app

打开固定点Simulink模型金宝appslexHARFixedPointConvertedExample通过在命令行输入以下命令。的子系统块包含了缓冲和校准预处理, 和ClassificationTree预测块,如前面所示slexharfixedpointexample.模型。

slexHARFixedPointConvertedExample

或者,您可以选择优化定点转换工作流的定点的工具App或在块对话框中手动定义数据类型。有关更多信息,请参见用定点输出配置块(定点设计师)

部署到硬件

通过在命令行输入以金宝app下命令,打开用于部署到BBC微:位设备的Simulink模型。的slexHARFixedPointDeployExample模型转换为定点,并具有用于目标设备上的加速度计和显示端口的I/O块。

slexHARFixedPointDeployExample

Simu金宝applink模型slexHARFixedPointDeployExample根据智能手机传感器测量的加速度数据对人类活动进行分类。模型包括以下模块:

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

  • 缓冲和校准预处理, 和ClassificationTree预测的块与前面显示的相同slexharfixedpointexample.模型。

  • 预测活动块在BBC Micro:Bit设备的5x5 LED矩阵上显示分类的人类活动值。字母“S”,“T”,“W”,“R”和“D”分别代表坐姿,站立,行走,跑步和跳舞。

要将Simulink模型部署金宝app到您的设备,请遵循下面的步骤入门的Simulink编码器支持包BBC微金宝app:位金宝app(金宝appSimulink C金宝appoder Support Package for BBC micro:bit).在您的设备上运行模型,将设备放置与前面描述的方式相同,以便收集培训数据,并尝试五项活动。该模型相应地显示分类活动。

为确保模型的准确性,必须以与收集培训数据的描述相同的方式将设备放在相同的方式。如果要将设备放在不同的位置或以不同的方向,请按照自己的方式收集数据并使用您的数据来培训分类模型。

模型的准确性可能与测试数据集的准确性不同(testAccuracy),视设备而定。为了提高模型的精度,可以考虑使用额外的传感器,比如陀螺仪。

参考

[1]埃尔希卢,阿明。传感器HAR识别应用程序。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app

[2]意法半导体,AN4508“低g三轴加速度计的参数和校准。2014。https://www.st.com/resource/en/application_note/dm00119044-parameters-and-calibration-of-a-lowg-3axis-accelerometer-stmicroelectronics.pdf

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

另请参阅

||

相关话题