金 博,王景林,刘泓铄,张建锋
(西北农林科技大学 信息工程学院,陕西 杨凌 712100)
目前人体行为识别根据获取数据的方式不同可以分为5种:基于视觉数据[1]的人体行为识别技术有着较高的识别准确率,但是对于数据集质量要求非常严格;基于无线网络数据[2]的人体行为识别是利用无线信号在传输过程中遇到人体的遮挡而产生的信号变化特征来识别各类行为,对设备要求较高,部署成本高昂;基于音频信号数据[3]的人体行为识别是对采集到的音频信号编解码处理来识别人体行为,然而采集到的数据存在大量环境噪声;基于环境传感器数据[4]的行为识别是根据各类行为所触发的传感器数据事件流来对行为进行识别,但设备需要的部署环境要求较高,应用场景局限大;基于可穿戴传感器数据[5]的人体行为识别通过利用人体所佩戴的加速度计、磁力计、陀螺仪等传感器进行数据采集,通过使用识别算法实现各类行为识别。
综合以上分析,本文提出一种基于可穿戴传感器数据和双注意力时间卷积网络的人体行为识别模型。该模型通过改进时间卷积网络[6](temporal convolutional network,TCN)来提升人体行为识别准确率。首先在TCN中引入双模块注意力以便更有效地提取时序传感器数据中的深层特征信息。其次使用三元组损失(triplet loss)函数来区分传感器数据相似的异类行为。最后,该模型在公共行为数据集PAMAP2上获得了较好的识别效果,优于其它行为识别模型。
在基于可穿戴传感器数据的人体行为识别工作中,常用的识别算法有机器学习算法和深度学习算法。这两者的主要区别在于深度学习算法可以主动从数据中获得高级的特征,而机器学习算法通过人工进行特征提取。在深度学习还未大规模应用时,主要使用的机器学习算法有支持向量机[7]、决策树[8]、朴素贝叶斯[9]、隐马尔科夫[10]和K近邻[11]等算法,但这些算法对缺失的数据比较敏感,不适用于特征数较多的样本,且对相似行为的识别效果较差,在识别准确率上还需要进一步的提高。
在深度学习算法中,常用于处理可穿戴传感器时序数据的网络有循环神经网络[12](recurrent neural network,RNN)、长短时记忆神经网络[13](long short-term network,LSTM)及其各类改进网络模型,但RNN无法捕捉时间序列的长期依赖性,LSTM无法并行处理,这些都影响了行为识别的准确率。如文献[14]提出了一种基于深度卷积的LSTM网络模型(DeepConvLSTM),通过卷积层对数据进行特征提取,之后利用LSTM层对提取的特征建立行为识别模型,但对于本文实验,该网络较为复杂,容易过拟合。文献[15]提出了基于残差网络的双向LSTM(Res-BiLSTM)网络模型,该网络使用双向LSTM保证输出不仅与当前时刻之前的序列数据有关,也与后续的序列数据有一定的结合,引入残差模块来解决网络模型复杂的问题,相较于本研究,该模型在人体行为识别上的准确率还有待提高。文献[6]首次提出时间卷积网络模型TCN,该模型相较于RNN和LSTM能够拥有更快的训练速度,更好地捕捉时序数据的依赖关系,通过使用因果卷积和膨胀卷积,可以利用灵活的感受野捕捉到更长的时间序列信息特征。文献[16]首次使用TCN模型进行人体行为识别,实验结果表明相较于其它网络模型,该模型具有接收可变长序列的能力,且时间复杂度低,运算速度比较快,可以更好地捕捉时序数据长期依赖关系,在人体行为识别研究中有较好的表现。但该模型在传感器数据高相似的异类行为中的识别准确率仍有待提高。
注意力机制是根据模仿人类大脑感知行为进行的一种仿生研究。当网络模型处理时序数据时会出现长距离的信息被弱化的情况,导致模型对特征提取不足。通过加入注意力机制之后,可以快速提取数据中的重要特征,为各类特征分配不同的权重,减少其对外部信息的依赖,因此在处理时序数据时,注意力机制可以发挥更好的性能[17]。故本文引入注意力机制,解决模型提取行为识别深层特征不足的问题。
三元组损失(triplet loss)函数是在人脸识别领域应用较为广泛的一种损失函数[18],其目的是做到非同类极相似图片样本的区分,但尚未应用于基于可穿戴传感器序列数据的人体行为识别。Triplet Loss函数的主要优势在于可以很好地进行高相似度样本区分,当两个输入相似时,Triplet Loss函数能够更好地对细节进行建模,相当于为模型加入了两个输入差异性的度量,学习到输入的更精确表示。故本文引入Triplet Loss函数作为模型的损失函数,解决模型在非同类极相似传感器数据的行为识别准确率不高的问题。
本文所提出的网络模型结构如图1所示。该网络结构主要由SMA(sensor-modality attention)模块、TCN(temporal convolutional networks)模块、LGA(local-global attention)模块、全连接层和softmax激活函数组成。
图1 本文所提模型结构
本文以公共行为数据集PAMAP2[19]的多传感器时序数据为研究对象,该数据由佩戴在脚踝、胸部和手腕3个身体部位的MPU-6050传感器获取。首先,SMA模块基于传感器数据与行为之间的关联性为不同部位的传感器分配注意力权重值;其次,TCN模块进一步提取传感器数据的深层时域特征;再次,LGA模块对不同时间节点的传感器特征信息进行加权计算,进而获得相应的注意力权重值;最后,全连接层和softmax激活函数对特征信息进行分类,从而实现人体各类行为识别。
在基于多传感数据的行为识别任务中,不同部位的传感器对不同行为的识别结果有着重要的影响,如跑步时,脚踝上的传感器对行为识别有更大的作用;在熨烫时,腕部的传感器数据对行为识别的影响更大。因此,本文利用SMA模块为采集于身体不同部位的传感器数据分配注意力分数值。
该模块首先将初始的传感器数据调整为Dinitial∈T×6N, 其中T=33表示为传感器时序数据的时间窗口大小,N=3为传感器的数目以及6表示加速度计的X、Y和Z轴和陀螺仪的X、Y和Z轴的数目之和,共计6轴。其次使用128个3×3大小的卷积核对输入数据进行二维卷积操作,该操作完成之后使用一维卷积核将特征信息调整为一维数据;再次使用式(1)计算不同传感器数据的权重值。在本研究中,根据不同身体部位传感器数据对行为分类的贡献程度,SMA模块为腕部、胸部和脚踝处的传感器数据自适应地分配注意力权重值,其输出的特征向量定义为S=[s1,s2,s3,…st]
(1)
TCN通过因果卷积、膨胀卷积和残差结构在保持梯度稳定传播的同时捕获最优的局部特征信息以及数据间的长期依赖性,其结构如图2所示。
图2 TCN结构模型
因果卷积只利用上一层t时刻以及t时刻之前的时序性历史信息作为当前层t时刻的特征表示,而时刻t之后的数据不影响当前时刻的特征提取;膨胀卷积通过增大膨胀因子使卷积核的感受野涵盖较大范围的特征信息。TCN模块的输入序列,经过TCN模块处理之后,输出到LGA模块。TCN的第i+1层的第n元素处膨胀卷积计算公式如下
(2)
式中:k为卷积核的尺寸,d表示为膨胀因子,其一般按指数变化 (d=O(2i) 其中i为层数)。当膨胀因子增大时,其输出数据的长度更长,从而保证数据的长时有效性。在本研究中,膨胀卷积可以嵌入较长时间范围的时序传感器数据,进而提升特征信息的可靠性。
卷积神经网络的稳定性随着时序数据的长度和网络的深度增加而衰减,TCN通过引入残差结构[20]来解决网络的梯度消失问题从而增强其稳定性。由于残差结构中的纵向归一化函数WN(weight normalization)受Batch-Size的影响较大而LN(layer normalization)横向归一化函数可以综合衡量每一层中所有维度的数据,计算该层的输入方差和平均输入值以及将每个维度的样本数据都归一化到相同的分布上,因此本研究对残差结构进行改进,使用LN替换原始的WN。
本研究使用TCN模块可以有效地捕捉到时间序列数据的长期依赖性,进而可以充分提取时间序列数据中的特征。与此同时,TCN具有良好的并行计算能力,有助于提升模型训练速度。
为了提升网络模型学习高维的深层特征的能力,进而提升模型的识别准确率,本研究在TCN模块的输出之后引入LGA模块。该模块由Local-Attention子模块和Global-Attention子模块组合而成。
Local-Attention子模块通过对比当前时刻的特征与序列中其余所有时刻的特征之间的相似性,进一步获得特征序列(一个时间窗口时序数据的特征)中每个时刻的相对注意力分数。如图3所示,该模块使用多头注意力机制来捕捉输入数据的深层信息,图中的FV表示TCN模块输出的特征向量。具体流程如下:
图3 注意力机制
首先,本文通过3个线性变换f(x)、g(x)和h(x)将特征向量转化为键值向量k、查询向量q和值向量v,之后利用式(3)计算时间窗口域的每个时刻下采集于不同传感器的数据的权重值
(3)
式中:n代表多头注意力机制的头数,在本次实验中被设置为4。t代表在时间窗口的某个时刻,t∈(1,2,…T)。 因此每个传感器数据在时间窗口上的权重值的计算方式如式(4)所示
(4)
其次,如式(5)所示,利用学习参数Wl将多头注意力的输出聚合并调整为单注意头的尺寸,从而得到时间窗口的注意力加权特征矩阵SLA
(5)
最后,Global-Attention子模块以SLA作为输入,如式(6)所示,利用学习参数Wg、bg和si进行变换后使用非线性激活函数tanh得到gi; 根据式(7)计算注意力权重值向量ai, 并传入式(8)中,其中gs表示为当前时刻与前后时刻的关联参数;利用式(8)获得各个时刻特征向量的加权平均值,随后将这些具有权重值的特征向量传入全连接层和softmax激活函数以获取各类行为的识别结果
gi=tanh(Wg·si+bg)
(6)
(7)
(8)
本文所研究的部分人体行为在传感器的数据表示上具有极高的相似度,以坐和站这两类动作为例,志愿者在静坐时,其上半身处于挺直状态,上半身姿态与站立时的姿态无明显差异,加速度仪和陀螺仪无法判断当前所处高度,因此这两类行为在数据特征表示上具有极高的相似性。然而,现有算法模型无法有效解决这一问题,从而行为识别的准确率还有进一步提高的空间。
Triplet Loss函数的优势在于能够很好地区分细节信息,当输入的两类数据具有较高的相似度时,Triplet Loss函数利用困难三元组(hard-batch)对相似的行为进行有效区分。因此,本文使用Triplet Loss函数对模型进行训练。与其它损失函数相比,该损失函数可以学习到更加丰富的特征。在训练过程中,根据模型训练的需要对Triplet Loss函数设置相关阈值,本次实验中将阈值设置为0.2,其公式为
(9)
在本研究中,以站和坐为例,Triplet Loss函数的示意图如图4所示,anchor样本和positive样本是不同志愿者的坐行为,negative样本是志愿者的站立行为。Triplet Loss函数将本研究中从行为数据中所提取的深层特征作为度量指标信息,缩小同类行为的高维空间距离及增大不同行为的高维空间距离,从而进一步实现高相似度传感器数据的异类行为识别。
图4 坐和站—Triplet Loss函数
实验首先针对TCN进行优化策略进行对比实验,其次对TCN损失函数与标准化层进行对比实验,再对TCN添加不同模块注意力进行对比实验,最后将本文所提模型与现有模型进行对比实验。
本实验所采用的数据集来源于加州大学机器学习人工智能实验室所公布的人体行为数据集PAMAP2[19]。该数据集由9名年龄在24岁~30岁的志愿者在身体的腕部、胸部和脚踝这3个不同的部位佩戴内置加速度计、陀螺仪和磁力计等传感器进行数据的采集。该数据集包含躺、坐、站、熨衣服、吸尘、上楼梯、下楼梯、慢走、快走、骑车、跑步和跳绳这12种行为数据。原始数据以100 Hz的频率采集,共采集2 872 352条数据。为了减少非同源数据的量纲和单位的影响,在实验前对数据进行归一化处理,保证所有数据点处于相同的数量级,便于后续数据的分析。数据被分为70%的训练集和30%的测试集。
为了验证基于注意力机制的时间卷积网络模型的识别效果,本实验采用总体分类精度(Accuracy)、召回率(Recall)和精确率(Precision)作为行为识别的评价指标。评价指标的公式如下
(10)
(11)
(12)
式中:TP表示正确预测到正分类结果,即正类被正确地预测为正类;FP表示错误预测到正分类结果,即反类被错误预测为正类;TN表示正确到预测负分类结果,即反类被正确预测为反类;FN表示错误预测到负分类结果,即正类被错误地预测为反类。
基于PAMAP2人体行为数据集,本研究分别使用SGD、RMSprop和Adam策略对TCN进行优化。实验结果见表1,当使用Adam作为优化策略时,其最高识别准确率为89.64%。相较于RMSprop和SGD这两种优化算法,有效地提高了1.71%~3.55%。实验结果表明,结合了多种优化算法的Adam算法可以有效提高模型的识别准确率,但对TCN模型提升能力有限,还需要进一步改进。
表1 不同优化策略方式对准确率的影响
为了验证三元组损失函数对TCN识别准确率的影响,使用该损失函数与交叉熵损失函数(cross entropy loss,CE Loss)、指数损失函数(exponential loss,Exp Loss)、二进制交叉熵损失函数(binary cross entropy loss,BCE Loss)和负对数似然损失函数(negative log likelihood loss,NLL Loss)进行对比实验。
本实验的结果见表2,在相同的标准化层中,当使用Triplet Loss函数作为损失函数时,模型准确率有一定的提升;在相同的损失函数下,使用LN层优化时,准确率高区其它标准化层。实验结果表明,调整损失函数为三元组损失函数并使用LN层优化可以有效地提升模型的识别准确率,提升了1.11%~3.91%。
表2 不同损失函数与不同标准化层对准确率影响
为了验证注意力机制对TCN识别准确率的影响,使用TCN、引入单模块注意力的TCN模型以及引入双模块注意力的TCN模型进行实验。实验结果见表3,当TCN加入SMA模块时,准确率提升了1.46%,加入LGA子模块时,准确率提升了2.77%。实验结果表明,当引入双注意力模块时,TCN模型的准确率得到显著性提升,提高了5.98%。
表3 不同注意力模块对注意力影响
为了验证所提模型的有效性和先进性,本文将所提出的模型与现有模型如RNN[12]、LSTM[13]、Res-BiLSTM[15]、GRU-RNN[21]、BiLSTM[22]和LSTM-DeepRNN[23]进行对比,对每个模型进行10次实验,并使用其平均值为最终结果。
本文所提出的模型在训练集和测试集上的Loss值和Accuracy值如图5和图6所示。首先,在50个Epoch内,图5显示模型的Loss值呈下降趋势,降至0.02以内;其次,50个Epoch内,图6显示模型的Accuracy值在不断提升,上升至95%以上;最后,模型的Loss值降至平稳的趋势且Accuracy值也上升至平缓,稳定在98%附近。与此同时,训练集和测试集之间的差值较小,表明了本文所提出的模型不仅有较高的识别准确率,且具有良好的稳定性。
图5 训练集和测试集损失值
图6 训练集和测试集准确率值
图7表示在测试过程中各类行为组成的混淆矩阵,该混淆矩阵能够显示各类行为的识别准确率。由图7可知,模型对各类行为的识别精度均较高,尤其对坐和站这两类具有高相似度传感器数据的行为,识别准确率均高于98%,这反映了三元组损失函数能够提升模型的学习能力,进而提升各类行为的识别准确率。
图7 各类行为准确率的混淆矩阵
本文所提出的模型与其它模型在PAMAP2数据集上的准确率对比结果见表4,其中RNN和LSTM这两类非混合算法模型的识别准确率最低,其它混合算法模型的准确率相对于二者虽有一定程度的提升,但仍有进一步提升的潜力。实验结果表明,本文的模型相较于表中的非混合算法模型,识别准确率提升了6.48%~8.65%,与表中的混合算法模型相比,识别准确率提高了2.56%~4.83%。
表4 不同算法模型准确率对比
为了观察各类行为和穿戴于不同身体部位上的传感器之间的关系,本文利用SMA模块中的输出权重来绘制注意力权重图。如图8所示,不同部位的传感器对行为的贡献度不同。如熨烫和吸尘这两类行为,腕部的传感器权重得分较高,验证腕部操作对该类行为的贡献较大。骑车、跑步和跳绳这几种行为的脚踝部位传感器权重得分较高,验证该类行为与脚踝部位关联性较大。实验结果表明,本文所提出的模型可以自适应地为不同部位传感器分配注意力权重值。
图8 各传感器在不同行为中的权重分值
本文从TCN模型在使用可穿戴传感器数据进行人体行为识别的准确率低的角度出发,针对不同身体部位的可穿戴传感器数据提出了基于双注意力机制的时间卷积网络人体行为识别模型。首先通过引入SMA和LGA这两类注意力模块改进原始TCN的网络结构;随后创新性地将三元组损失函数应用于传感器数据行为识别研究中,促使网络模型提高了对具有高相似度传感器数据的异类行为识别准确率;最后将该模型应用于公共数据集PAMAP2上,识别结果优于原始TCN及其它现有模型,取得了高达98.25%的平均识别准确率。未来研究中,拟将图卷积神经网络应用到多传感器的人体姿态估计,进而实现更细粒度的行为识别。