龙空技术网

基于matlab使用深度学习对超宽带脉冲雷达信号数据进行分类

珞瑜之家学习干货基地 177

前言:

当前我们对“matlab滑动条调节参数”都比较关心,咱们都需要学习一些“matlab滑动条调节参数”的相关知识。那么小编在网络上收集了一些对于“matlab滑动条调节参数””的相关内容,希望看官们能喜欢,你们一起来了解一下吧!

一、前言

此示例说明如何使用多输入、单输出卷积神经网络 (CNN) 对超宽带 (UWB) 脉冲雷达信号数据进行分类。

二、介绍

使用传感器(如UWB脉冲雷达)获取的基于运动的信号数据包含特定于不同手势的模式。将运动数据与运动相关联有利于多种工作途径。例如,手势识别对于非接触式人机交互非常重要。此示例旨在使用深度学习解决方案从手势数据集中的模式中自动提取特征,并为每个信号样本提供标签。

UWB 手势是一个公开可用的动态手势数据集 [1]。它包含从9600个不同的人类志愿者那里收集的8个样本。为了获得每个记录,检查人员在实验装置的左侧、顶部和右侧放置了一个单独的 UWB 脉冲雷达,从而产生了 3 个接收的雷达信号数据矩阵。志愿者从由12个动态手部动作组成的手势词汇表中执行手势:

左右滑动(L-R 滑动)左右滑动(R-L 滑动)上下滑动(U-D 滑动)向下滑动(D-U 滑动)对角-左-右-上-下滑动(对角-LR-UD 滑动)对角线-左-右-下-向上滑动(对角-LR-DU 滑动)对角-右-左-上-下滑动(对角-RL-UD 滑动)对角-右-左-下-向上滑动(对角-RL-DU 滑动)顺时针旋转

由于每个手势动作都由 3 个独立的 UWB 脉冲雷达捕获,我们将使用 CNN 架构,该架构接受 3 个信号作为单独的输入。CNN模型将从每个信号中提取特征信息,然后再将其组合以进行最终的手势标签预测。因此,多输入、单输出CNN将使用最少的预处理雷达信号数据矩阵来对不同的手势进行分类。

三、下载数据

每个雷达信号数据矩阵都被标记为生成它的手势。8名不同的人类志愿者执行了12个单独的手势,总共有96个试验存储在96个MAT文件中。每个MAT文件包含3个雷达数据矩阵,对应于实验设置中使用的3个雷达。这些文件位于以下位置:

将数据文件下载到 MATLAB 示例目录中,才可以运行程序。

四、探索数据

创建信号数据存储以访问文件中的数据。使用该参数指定要从每个文件中读取的信号变量名称。此示例假定数据集已存储在uwb-gestures文件夹下的 MATLAB 示例目录中。如果不是这种情况,请更改变量中数据的路径。数据存储返回一个三元素单元数组,其中包含左雷达、上雷达和右雷达的雷达信号矩阵(按该顺序)。

每个雷达信号矩阵中的行和列分别表示手势的持续时间(慢时间)和手到雷达的距离(快时间)。在数据采集过程中,检查员记录了一个受试者重复一个特定的手势450秒,相当于9000(慢时间)行。在 1 个慢帧中有 90 个完整的手势动作。因此,每个雷达信号矩阵包含100个完整的手势运动样本。每个UWB雷达的射程为1.2米,相当于189个快速时间箱。

若要可视化手势动作,请指定 UWB 雷达位置、手势和手势示例(介于 1 和 100 之间)。获取所选手势和雷达位置的雷达信号矩阵。用于将手势信号数据转换为介于 0 和 1 之间的范围,并用于可视化手势运动示例。

如您所见,很难辨别运动模式。

原始信号包含来自雷达范围内存在的身体部位或其他静态物体的环境反射。这些不需要的反射被称为“杂波”,可以使用执行指数移动平均线的脉冲消除器来消除

这样一个是一个值0≤a≤1控制平均量 [2]。与分别设置为 [1 -1] 和 [1 -0.9] 的分子系数和分母系数一起使用,以消除原始信号中的杂波。

可视化杂波消除的信号以查看差异。

请注意,运动模式现在更加明显。例如,如果选择从左侧雷达的角度可视化左右滑动,您将看到手与雷达的距离随着手势持续时间的增加而增加。

五、准备用于训练的数据

MAT文件名包含手势代码(G1,G2,...,G12),对应于每个雷达信号矩阵的标签。使用分类数组将这些代码转换为手势词汇表中的标签。

收集阵列数据存储中的标签。组合信号数据存储和阵列数据存储,以获得包含来自每个雷达的信号数据和分类标签的单个数据存储。随机排列生成的数据存储以随机化其存储 MAT 文件的顺序。转换函数允许在数据存储读取数据时将帮助程序函数应用于数据。执行上一节中描述的规范化和筛选,以标准化数据并消除混乱。此外,它还将雷达信号矩阵划分为单独的手势运动样本。

神经网络训练是迭代的。在每次迭代中,数据存储都会从文件中读取数据并在更新网络系数之前转换数据。由于数据是从单个样本中读取的,因此需要将数据读入内存,然后重新洗牌并插入到另一个数据存储中进行训练。

由于整个训练数据集适合内存,因此如果并行计算工具箱可用,则可以并行转换数据,然后将其收集到工作区中。在标志设置为 true 的情况下使用,以利用并行池将所有信号数据和标签读取到工作区中。如果数据适合计算机的内存,将数据导入工作区可以加快训练速度,因为数据仅读取和转换一次。请注意,如果数据不适合内存,则必须将数据存储传递到训练函数中,并且在每个训练时期执行转换。

标签作为 中的最后一列返回。用于获取数据集中标签值的比例。请注意,手势在整个数据集中是平衡的,并且得到了很好的表示。

将数据随机划分为训练集和验证集,同时确保将测试数据留待以后使用。在此示例中,训练、验证和测试拆分分别为 70%、15% 和 15%。用于将数据拆分为与原始数据集保持相同标签比例的训练集、验证集和测试集。指定在三个集合中随机排列数据的选项。

避免通过再次随机化指数来选择来自同一试验的样本。将内存中的训练和验证数据存储在阵列数据存储中,以便可用于训练多输入网络。

六、准备培训网络

在训练前定义网络架构。由于每个手势动作都由 3 个独立的 UWB 脉冲雷达捕获,因此我们将使用 CNN 架构,该架构接受 3 个信号作为单独的输入。训练这种多输入、单输出CNN后获得的结果比使用输入为90 x 189 x 3雷达数据矩阵堆栈的替代单输入单输出CNN获得的结果要好得多。

repeatBranch包含将对三个雷达数据信号矩阵分别执行的操作。CNN模型需要结合从每个信号中提取的特征信息,做出最终的手势标签预测。包含将连接 3 个输出和估计标签的操作。指定大小为 90 x 189 以接受手势动作示例。指定 a 的输入数设置为 3,以收集 3 个分支的输出并将其传递到模型的分类部分。指定输出大小为 12 的 a,每个手势一个。添加 a 和 a 以输出估计的标签。

定义 a 添加 3 次,添加一次。将每个决赛的输出连接到 的输入。可视化多输入、单输出 CNN。

选择训练过程的选项,以确保良好的网络性能。请确保指定为 ,以便在训练期间将其用于验证。

七、训练网络

使用该命令训练 CNN。

八、对测试数据进行分类

使用经过训练的 CNN 和命令对测试数据进行分类。

使用混淆矩阵可视化分类性能。

最大的混淆是逆时针和顺时针运动与向内推动的运动。

九、探索网络预测

您可以从每个输入分支中的最终最大池化层获取分数,以更好地了解来自每个雷达的数据如何对最终网络置信度做出贡献。帮助程序函数 返回 softmax 规范化分数(类成员资格的概率)和对应于 3 个最高分数的索引。

使用辅助函数可视化每个雷达的数据,并在每个输入分支中的操作完成后叠加对应于 3 个最高分数的标签。

十、结论Matlab和Simulink仿真程序汇总(2023年1月汇总)

在此示例中,您学习了如何使用多输入 CNN 从 3 个独立的雷达数据矩阵中提取信息并对手势动作进行分类。多输入架构使我们能够利用记录同一事件的多个传感器生成的数据。

十一、参考文献

[1] Ahmed, S., Wang, D., Park, J. et al. UWB-gestures, a public dataset of dynamic hand gestures acquired using impulse radar sensors. Sci Data 8, 102 (2021). .

[2] Lazaro A, Girbau D, Villarino R. Techniques for clutter suppression in the presence of body movements during the detection of respiratory activity through UWB radars. Sensors (Basel, Switzerland). 2014 Feb;14(2):2595-2618. DOI: 10.3390/s140202595.

十二、程序

程序获取:【程序】基于matlab使用深度学习对超宽带脉冲雷达信号数据进行分类

程序大全:Matlab和Simulink仿真程序汇总(2023年1月汇总)

标签: #matlab滑动条调节参数