基于CNN-GRU 和注意力机制的人体行为识别算法

作者: 周巧扣

基于CNN-GRU 和注意力机制的人体行为识别算法0

摘要:针对传感器体积小、计算能力有限以及收集数据通常表现为连续信号的特征,文章提出了一种基于CNN-GRUAttention的人体行为识别算法。该算法结合了卷积神经网络的空间特征提取能力和循环神经网络的时序特征提取能力,并采用结构相对简单的GRU,在解决时序数据长期依赖问题的同时减少了参数,从而降低了算法对硬件计算能力的依赖。此外,算法还引入了注意力机制模块,使其更加关注重要信息。在WISDM数据集上进行的对比实验表明,该算法在人体行为识别方面表现优异,准确率达到98.46%,并在精准率、召回率和F1-Score等性能指标上均取得了显著成果。

关键词:人体行为识别;CNN;GRU;注意力机制;传感器数据;深度学习

中图分类号:TP181 文献标识码:A

文章编号:1009-3044(2025)01-0041-04 开放科学(资源服务) 标识码(OSID) :

0 引言

人体行为识别(Human Activity Recognition, HAR) 是一种通过机器学习和模式识别技术来自动识别和分析人类行为的方法。其应用领域广泛,涵盖公共安全、智能手机与移动支付、交通管理、医疗健康等[1]。HAR 通过从人体相关数据中提取特征,将特征输入机器学习模型中进行分类,从而实现对人体行为的识别。

目前,人体行为识别的数据来源主要包括视频图像、传感器和Wi-Fi数据。与视频图像数据和Wi-Fi 数据相比,基于传感器数据的人体行为识别研究更受关注,因为它不易受环境因素的影响,且能够更好地保护个人隐私。近年来,国内外学者在基于传感器数据的人体行为识别领域取得了一系列成果,例如基于PCA和SVM-HMM的混合模型[2]、基于深度学习的多特征融合方法[3]、基于LSTM的多传感器数据融合方法[4]、基于CNN-LSTM的混合模型[5]等。

然而,现有研究方法仍面临一些挑战,例如提取特征尺度单一、深度学习模型计算复杂度较高、与传感器计算能力不匹配等。为了解决这些问题,本文提出了一种基于CNN-GRU和注意力机制的人体行为识别算法。该算法结合了CNN的空间特征提取能力、GRU的时序特征提取能力以及注意力机制关注重要信息的能力,能够更加高效、准确地识别复杂的人体行为。

1 关键技术

1.1 GRU

门控循环单元(Gated Recurrent Unit, GRU) 是循环神经网络的一种实现[6]。与LSTM类似,GRU也旨在解决传统循环神经网络中的梯度消失和梯度爆炸问题,从而使网络能够更好地处理长期依赖关系。在LSTM中包含三个控制门:输入门、遗忘门以及输出门,每个门都有独立的记忆单元,用于控制信息的流动。而在GRU中只包含2个门:更新门和重置门,使用更新门代替LSTM 中的输入门和遗忘门。因此,GRU结构更加简单、参数较少,训练速度较快,更加适合计算资源有限的场景。

GRU 的结构如图1 所示,其主要包括输入变量Xt、门控隐状态Ht、重置门Rt、更新门Zt、候选隐状态H͂t以激活函数和运算符。图1中σ 表示Sigmoid函数,⊕ 表示相加,⊗表示按元素乘积。

对于当前时间步t,重置门Rt 用于控制在加工输入信息时上一步隐状态所占的比例。当Rt 接近0时,新输入的信息Xt 占主导地位,表示当前的输入包含的信息与前面的信息关联性很小;当Rt 接近1时,新输入的信息和前面的长期信息具有较大的关联性。更新门Zt 决定了如何将前面信息与当前的信息进行结合,控制前面信息的保留程度。Zt 值为0表示完全忽略之前的信息,值为1表示完全保留之前的信息。重置门Rt和更新门Zt的计算公式如下所示:

Rt = σ(XtWxr + Ht - 1Whr + br ) (1)

Zt = σ(XtWxz + Ht - 1Whz + bz ) (2)

式中:Wxr,Wxz 分别为计算Rt 和Zt 时输入变量对应的权重参数,Whr,Whz 分别为计算Rt 和Zt 时隐藏单元对应的权重参数,br,bz 是偏置参数,使用Sigmoid函数将输入值转换到区间(0,1)。隐状态H͂t 的计算公式如下所示:

H͂t = tanh (XtWxh + (R ) t ⊗ Ht - 1 Whh + bh ) (3)

式中:Wxh,Whh 为权重参数,bh 为偏置项。使用tanh激活函数确保候选隐状态中的值保持在区间(-1,1)中。最后输出Ht的计算公式如下:

Ht = Zt ⊗ Ht - 1 + (1 - Zt ) ⊗ H͂t (4)

当更新门Zt 接近1时,模型倾向于保留旧状态。此时来自本步输入Xt 的信息基本上被忽略,从而有效地跳过了依赖链条中的时间步t。相反,当Zt接近0时,新的隐状态Ht 将接近候选隐状态H͂t。GRU的这种结构可以很好地处理循环神经网络中的梯度消失问题,并更好地捕获时间步距离较长的序列的依赖关系。

1.2 注意力机制

注意力机制(Attention Mechanism) 是深度学习领域中的一个重要概念,最早应用于自然语言处理领域,用于改进序列到序列模型的性能。该机制允许模型在处理输入序列的不同部分时,能够更加关注重要部分,而不是平等对待所有输入元素。其核心计算公式如下所示:

式中:Q、K、V分别表示查询向量、键向量和值向量,由输入序列中的元素经过线性变换获得。如果没有给定键向量,则默认为键向量等于值向量。对于序列中的每个元素,计算查询向量与所有其他元素的键向量之间的相似度。根据相似度的结果,为每个元素分配一个权重,该权重通过 SoftMax 函数计算得到。对于序列中的每个元素,将其值向量与对应的权重相乘,然后将所有元素的加权求和结果进行拼接,得到最终的输出向量。注意力机制能够更加专注于关键信息,从而提升模型的精度和效率。

2 CNN-GRU-Attention 算法

算法中的神经网络模型主要包含1层输入层、2 层 1维卷积层、1层最大池化层、1层批量标准化层、2 层GRU层、1层Attention 层和1层全连接层。具体的结构以及各层输入输出数据的形状如图2所示。

算法的详细设计思路如下:

1) 将输入层的数据传给第 1 个 1 维卷积层,该层的卷积核大小设置为 5、卷积核数量设置为 64,用于提取数据中的空间特征,输出数据的形状为 (None,90, 64);

2) 将第 1 个卷积层的数据传给最大池化层,该层的池化窗口设置为 5、步长设置为 2,对数据进行降维,输出数据的形状为(None, 45, 64);

3) 将池化后的数据传给第2个1维卷积层,该层的卷积核数量设置为32,再次提取数据的空间特征,输出数据的形状为(None, 45, 32);

4) 将第2次卷积后的数据传给批量标准化层,其作用是提高模型的稳定性,同时减少过拟合的风险;

5) 将批量标准化层的数据传给第1个 GRU 层,该层的输出维度设置为16,用于提取数据的时序特征,输出数据的形状为(None, 45, 16),输出数据分别作为 Attention 层中的查询向量和值向量;

6) 将上层输出的查询向量和值向量输入 Atten⁃tion 层,提取数据中的重要信息;

7) 将 Attention 层的数据传给第 2 个 GRU 层,再次提取数据的时序特征;

8) 最后将数据传给全连接层,该层的激活函数为SoftMax,输出各种行为的概率。

3 实验及结果分析

3.1 数据集

实验中采用的是WISDM(Wireless Sensor DataMining) 数据集,该数据集由美国福特汉姆大学的无线传感器数据挖掘实验室创建,可通过该大学提供的URL 下载。数据集中总共包含 1 098 207 个样本,收集了36个用户的6种行为数据,包括:走路(Walking) 、慢跑(Jogging) 、上楼(Upstairs) 、下楼(Downstairs) 、坐(Sitting) 和站立(Standing) 。数据采样频率为 20Hz,传感器类型为加速度传感器,测试场景为智能手机放置在衣兜中,用户在完成各种行为时收集数据。

各类行为的比例分布为:Walking(38.6%) 、Jogging(31.2%) 、Upstairs(11.2%) 、Downstairs(9.1%) 、Sitting(5.5%) 、Standing(4.4%) 。每条数据样本包含以下字段:用户编号、行为动作、时间戳、x 轴加速度值、y 轴加速度值和 z 轴加速度值。

3.2 数据预处理

3.2.1 数据标准化

不同的特征通常具有不同的尺度,具有更大尺度的特征可能会主导模型的训练,导致模型对其他特征的敏感度降低。为了使模型能够更好地学习数据,通常需要对数据进行标准化。文中采用 Z-Score 标准化方法,其计算公式如下所示:

Z = (X - μ )/s (6)

式中:X 为输入样本,μ 为样本均值,s 为样本标准差。通过这个公式,可以将不同量级的数据转化为统一度量的Z-Score分值进行比较,提高数据的可比性。

3.2.2 数据分割

传感器数据是随时间不间断的连续信号,一段时间的数据序列代表一个行为动作。为了识别不同的行为,需要对连续的信号进行分割,通常采用固定长度的滑动窗口法进行分割。其原理为:设置一个固定长度的窗口,按窗口的长度提取不同时间段的时序数据,然后沿着时间轴滑动窗口,重复提取数据。连续两次提取数据的窗口的重叠部分与窗口长度的比率称为重叠率。实验中,滑动窗口的大小设置为 90,重叠率设置为 20%。经过分割处理后的数据形状为:(54 906, 90, 3) ,其中 54 906 表示数据样本数,90 表示固定窗口长度,3 表示加速度传感器的3个数值(x、y 和 z 轴加速度) 。

3.3 性能指标

实验中采用了评估分类算法时常用的性能指标:准确率、精准率、召回率以及 F1-Score。

准确率(Accuracy) 表示正确分类的样本数与总样本数的比例,其计算公式如下:

Accuracy = TP + TN/TP + TN + FP + FN (7)

式中:TP 为真正例:样本为正例被正确预测为正例;TN 为真反例:预测为负样本,真实也为负样本;FP为假正例:样本反例被错误预测为正例;FN 为假反例:样本正例被错误预测为反例。

精准率(Precision) 表示预测为正例的样本中真正例的比例,其计算公式如下:

Precision = TP/TP + FP (8)

召回率(Recall) 表示正确识别的正例占所有实际正例的比例,其计算公式如下:

Recall = TP/TP + FN (9)

F1-Score表示精准率和召回率的调和平均数,用于衡量模型的平衡性能,其计算公式如下:

F1 = 2 × Precision × Recall/Precision + Recall (10)

3.4 对比实验

将 CNN-GRU-Attention 算法与 CNN、GRU 以及CNN-GRU 进行对比实验。实验中,将总数据样本的20% 作为测试集,剩余部分作为训练集。学习率设置为 0.002 5,遍历次数(epoch) 设置为 10,批次大小(batch_size) 设置为 64。

上一篇 点击页面呼出菜单 下一篇