魏嘉雪,高冠东,滕桂法,3+
(1.河北农业大学 信息科学与技术学院,河北 保定 071000;2.中央司法警官学院 信息管理系,河北 保定 071000;3.河北农业大学 河北省农业大数据重点实验室,河北 保定 071000)
为进一步提高跌倒检测识别准确率、减少误报率[1,2],解决RNN训练耗时长的问题,本文提出一种基于改进时间卷积网络(temporal convolutional network,TCN)的跌倒检测算法,为避免修正线性单元(rectified linear unit,ReLU)函数引起神经元“坏死”的情况,将ReLU改进为Leaky ReLU函数;在保证参数量更少的情况下使用全局平均池化层代替全卷积层;为了更好拟合模型,在残差结构中添加一层卷积操作。为了验证算法鲁棒性,本文利用智能手机中内嵌的加速度传感器和陀螺仪传感器获取数据集,与公用数据集MobiAct2.0进行融合作为实验的训练数据。实验数据共2359例样本,包括5类日常行为和4类跌倒行为。
目前,根据使用的跌倒检测设备的不同,相关研究基本分为3大类:基于场景传感器[2]的跌倒检测研究、基于机器视觉[3-5]的跌倒检测研究和基于可穿戴设备[6,7]的跌倒检测研究,以减轻老年人因跌倒没有得到及时救治带来的伤害。
基于场景传感器的跌倒检测将传感器放置在室内固定位置以发现区域内跌倒情况。如,Diego等[8]提出基于支持向量机(support vector machine,SVM)与模板匹配结合的跌倒检测算法。该方法通过地板的声传感器捕获信号,不会侵犯用户隐私,但易受环境嘈杂的影响引起错误报警,检测范围有限,不适用于对老年人活动范围的全面检测;基于机器视觉的跌倒检测通过视频或图像形式获取数据进行行为判断,金彦亮等[9]融合多帧运动历史图,使用双流卷积网络进行识别,该算法可达到较高准确率,其检测范围具有一定的局限性,同时存在视频图像易受遮挡、侵犯受试者隐私的问题。
基于可穿戴设备的跌倒检测是将传感器佩戴在人体某个部位,通过获取当前位置的传感器数值变化判断人体是否发生跌倒行为。任磊等[10]提出一种移动设备佩戴位置自适应的方法,通过对旋转模式分量和姿态角融合提取特征,建立了基于时序分析的跌倒检测的方法,其实验准确率达到92%以上。任晓奎等[11]通过将支持向量机与粒子群算法相融合以解决可穿戴跌倒检测问题,其准确率达到89%。刘晓光等[12]提出阈值和极端随机树结合的算法,融合姿态角传感器和压力传感器数据,设计了实时跌倒检测算法。以上研究者利用机器学习算法进行跌倒检测分析,通过分析人工提取的特征值判断行为类别,为了减少因提取特征不当造成的检测误差,研究者需要花费一定的时间学习先验知识。随着深度学习的发展,递归神经网络(recurrent neural network,RNN)在处理时间序列领域捕获时间特征的方面表现出天然优势,一些研究者使用卷积神经网络和RNN对原始数据进行分析,王晶晶等[13]针对基于提取特征的跌倒检测算法误报率较高的问题提出了独立循环神经网络(RNN)结构,可以有效提高准确率。L.Y. Liu等[14]通过设计卷积神经网络(convolutional neural networks,CNN)与长短期记忆网络(long short-term memory,LSTM)结合的网络结构对数据进行分析,利用全连接层对输入数据进行分类。由于RNN在处理长时序列数据时,一次输入只能输入单个信号的问题,导致训练时间过长,且易出现梯度消失的情况,递归神经网络在跌倒检测中表现效果不尽人意。
建立跌倒检测模型的关键点在于特征提取是否恰当、构建的网络模型是否合适。传统的卷积网络模型在处理图像问题上得到广泛认可,但由于其卷积核大小的限制,在处理长时序列数据上通常需要更深层次的网络才能表现出差强人意的效果。本文采用智能手机内置三轴角速度传感器和三轴加速度传感器作为数据源,融合公用测试数据集MobiAct2.0,通过数据格式变换输入TCN网络模型中,利用模型的空洞卷积操作,通过设置不同空洞率来增大卷积核的感受野,使其可以“看到”更远的历史数据;通过残差结构构建深层次的网络,同时利用特征复用这一特点,对跌倒检测做出更准确的判断,改进的TCN跌倒检测算法总体流程如图1所示。
图1 改进的TCN跌倒检测算法总体流程
将跌倒问题简化为二分类问题,从日常活动中识别出跌倒和非跌倒行为。在每个样本中包含x轴加速度Ax、y轴加速度Ay、z轴加速度Az、x轴角速度Gx、y轴角速度Gy和z轴角速度Gz,那么假设长度为t的样本输入数据格式如式(1)所示
(1)
式中:Ax、Ay、Az、Gx、Gy、Gz为含有时间特性的时间序列向量。模拟实验结果表明,跌倒的发生由失衡到碰撞时间不超过3 s,因此将截取3 s内传感器获取的数据长度作为实验数据长度t。
在跌倒检测问题中,获取到3 s内传感器的值形成一段时间的连续信号,具有较长的时间性,传统CNN为了处理这种长时序列只能不断加深网络层数,以增加感受野,尽可能比较全面的提取特征,但极易出现梯度爆炸和梯度弥散的问题,针对这种情况,B.S等[15]提出的TCN是一种在卷积神经网络的基础上通过改进卷积操作和卷积核大小可以处理长时序列数据的网络结构。该网络利用一维全卷积结构和padding操作实现了网络输入长度与输出长度相同的特点;采用因果卷积操作,实现了序列当前输出只与过去有关而与未来无关的目的,使卷积网络也具有“记忆”的特性。
模型结构主要由3部分组成:
输入层:在跌倒问题中,截取t长度的时间数据作为输入序列,假设输入形式为X=(x1,x2,…,xt), 其中在某一时刻输入数据的为矩阵X中的每一行,即Xt=(AxtAytAztGxtGytGzt)。 由于数据集采样频率使用SENSOR_DELAY_FASTEST参数以500 HZ的频率采集数据,为了保证获取完整行为数据并尽可能减少数据量,实验选取传感器3 s内的数据进行了降采样操作,选取长度为200的样本作为网络输入数据。
隐含层:为了不通过堆叠网络层数来扩大感受野,TCN网络引入了为含有扩张因子的扩张卷积,允许卷积操作存在间隔采样,采样率取决于扩张因子d。采用大小为m的卷积核F=(f0,f1,…fm-1), 对于序列元素x在t时刻的操作如式(2)所示
(2)
式中:t-d·i表示过去的方向。随着网络层数的加深,扩张因子呈指数倍增加,因此TCN可以通过较少层的卷积获得较大感受野,计算感受野大小F如式(3)所示
F=(m-1)*d+1
(3)
其次在隐含层建立了残差连接结构,将浅层特征与深层特征结合实现特征复用的效果,将跌倒数据在经过网络变换前的数据和网络变换后的数据进行结合,以降低模型退化情况出现的可能。模型以两层扩张卷积、ReLU函数、权重归一化操作和dropout层组成残差结构,残差结构如图2所示。数学表示如式(4)所示
图2 残差结构
oi=f(h(xi)+F(xi))
(4)
式中:xi和oi分别是第i个单位的输入和输出,h(xi) 是xi的恒等映射,属于浅层特征,F(xi) 是经过网络变换的深层特征,f是激活函数。
输出层:经过网络变换提取到跌倒检测数据的隐藏特征后,通过将特征输入分类器进行分类。在跌倒检测问题中,将非跌倒行为和跌倒行为分别以0、1标签标注,通过全连接层输出网络判别结果。
经过实验发现经典TCN应用在跌倒问题中时,存在以下3个问题:①异常值使网络神经元“坏死”,导致网络参数不正常更新。(“坏死”是指ReLU在负数区域被kill);②全连接层高度提纯特征的操作并没有提高模型性能,并且给网络增加了大量参数;③特征提取不当导致模型处于欠拟合与过拟合之间。
针对老人的跌倒检测问题,有以下两个侧重点:准确率和误报率。提高准确率,当老人跌倒后可以及时报警,提醒医护人员和家人及时救助,增加老人及其家人对跌倒设备的信任,而误报率偏高会存在老人反应过慢,未来得及将报警信息取消,导致家人和医护人员的过度紧张的不良体验,从而减少对跌倒设备的信任,因此拟合出成熟的跌倒检测模型,提高准确率,降低误报率是模型训练的重点。
时间卷积网络与其它卷积神经网络一样,有很强建模能力,但也存在拟合程度不当、参数量大的问题。本文从模型训练阶段对网络结构进行优化。首先针对跌倒检测并非稀疏矩阵的特点,使用强制稀疏的激活函数会造成损失,对比了非饱和激活函数的优缺点,选择收敛快,损失低的函数作为残差结构内部的非线性变换,其次跌倒数据在前期网络提取特征时,已获取到足够特征,全连接层大量的参数会造成模型“臃肿”,且易产生过拟合情况,因此将全局平均池化层代替全连接层做分类,减少了大量参数,降低了模型复杂度,降低了过拟合现象出现的概率。最后为了在不增加网络参数的情况下更好拟合网络模型,调整残差结构内部卷积层和激活函数的顺序,并且适当增加卷积层数以更好拟合模型。
2.2.1 基于激活函数的改进
经典TCN模型中使用ReLU激活函数作为数据变换的依据,数据不免存在某些异常值,可使网络神经元“坏死”,导致网络参数不正常更新,同时使跌倒数据中大量负数被强制为0,极大影响了有效跌倒特征的提取。ReLU函数图像如图3(a)所示,数学表达式如式(5)
图3 激活函数
(5)
为此,本文提出了使用参数化修正线性单元PReLU(parametric rectified linear unit)和Leaky ReLU函数代替ReLU函数。PReLU函数和Leaky ReLU函数都是在负数区域带有参数的激活函数,不会将所有负数强制为0,可以有效避免神经元“坏死”现象。PReLU和Leaky ReLU的函数图像如图3(b)和图3(c)所示,表达式如式(6)、式(7)所示
(6)
(7)
二者的区别在于所带参数是否可学习。其中λ是可学习的参数,a是固定值。虽然每个PReLU只需要学习少量参数,但是改进后的每个残差结构中包含3个激活函数,若将激活函数改进为PReLU,经过多层的网络变换,则需要学习大量参数。因此本文选择Leaky ReLU作为残差结构中激活函数。
2.2.2 基于全连接层的改进
经典TCN模型中使用全连接层进行高度提纯特征,传入softmax分类器进行分类。然而取消全连接层后并没有影响模型性能,甚至在加上该层后导致模型参数量大大增加,产生模型过拟合现象,在测试集效果不佳。为此,本文使用全局平均池化层获取全局信息并进行压缩,同时减少了全连接层的参数,大大降低过拟合现象的可能。全局平均池化层(global average pooling,GAP)在2013年被提出和应用。GAP根据分类任务的类别数量控制输出多少特征图,通过对每个特征图的数值求平均作为某个类别的置信度,再使用softmax回归分类。
本文将在卷积层中进行改进以获取足够信息,结合GAP,对数据信息进行提取、转化和压缩,通过调整数据格式达到期望输出的维度,通过全局平均池化层完成对跌倒行为的分类。改进后TCN整体网络框架如图4所示。
图4 网络整体框架
2.2.3 基于残差结构的改进
针对模型处于欠拟合和过拟合之间摇摆不定的状况,本文提出对残差结构的改进,其中考虑到测试设备为可穿戴式智能手机,因此应适当减少模型规模。具体改进为:①在不增加参数的前提下,在残差块中设计两次“第二”卷积层。②将残差块中“后激活”状态改为“预激活”状态。
一般地,TCN网络有结构简单的特点,需要深层网络才能更好拟合模型。TCN使用残差结构将浅层特征和深层特征结合使用,在解决网络退化问题的同时更好的拟合模型。由于获取跌倒检测数据时具有一定的伤害性,作为模型训练的数据量有一定的局限性,使用复杂的网络模型和层数过深的网络结构极易产生过拟合情况,即模型泛化能力弱的现象。
TCN网络以两层卷积作为残差块,那么每增加一层残差结构至少需要增加两层网络变换。当需要使用奇数层卷积可以获得更好模型效果时,选择使用两层残差结构的网络只有欠拟合和过拟合两种情况。因此,本文经过实验分析,三层卷积在跌倒检测模型中有更好的效果。
此外,本文在残差结构中采用“预激活”代替“后激活”。2016年提出了将“后激活”(先经过卷积层提取特征,再经过激活函数的操作被称为“后激活”)优化为“预激活”(先设计激活函数,再经过卷积层被称为“预激活”),使用卷积层提取非线性变换后的行为数据,再通过恒等映射将浅层特征贯穿网络,提高了网络的泛化能力。
残差网络改进结构如图5所示。其中数据经过两条分支同时进行,一条经过①操作实现恒等映射,另一条经过两层卷积操作(操作②)后,重复进行“第二卷积层”(操作③),将两条输出(操作①与操作④的结果)激活作为残差结构的输出。使用同样的参数量,增加了一层网络变换,提高了网络拟合能力。
图5 残差结构改进
为了验证算法有效性,实验将从3个方面进行论证。首先将改进后的算法与已有算法进行对比,验证改进后算法在跌倒领域中识别的有效性,其次通过对比不同激活函数的效果,验证选择Leaky ReLU函数的正确性,最后通过对比改进前模型与改进后模型的效果验证算法改进的有效性,通过对比融合数据集与公开数据集的效果验证数据的科学性。
本文的数据集采用公共数据集MobiAct2.0和自制数据集结合使用。MobiAct2.0由66名志愿者佩戴智能手机采集了基于三轴加速度传感器和陀螺仪的4种跌倒行为和11种日常行为数据,共包含3200条事件,本文选择4种跌倒事件(向后跌倒BSC、向前跌倒膝盖着地FKL、向前跌倒手扶地FOL、站立跌倒SDL)和5种日常事件(行走WAL、慢跑JOG、坐下SIT、上楼梯STU、下楼梯STN),以4种跌倒行为为例,从平衡状态到跌倒碰撞再到平躺状态的信号波形图如图6所示。
图6 4种跌倒行为波形图
自制数据集由智能手机采集加速度传感器和陀螺仪数据组成,为了与公共数据集相匹配,自制数据集的采样频率与公共数据一致。由于跌倒行为存在一定程度的伤害性,本文选择5名年轻志愿者代替老人参与数据采集,在采集过程中智能手机放置于志愿者裤子口袋。为验证跌倒检测算法的有效性,数据来源包含6部分,分别为行走、慢跑、坐下、上楼梯、下楼梯和跌倒。实验共采集600个样本。融合数据集具体信息见表1。
表1 融合数据集信息
实验中首先对单个样本中大量采样点进行降采样,得到200个采样点,其次进行标准化、归一化操作。随即输入TCN网络端,即一维数据的输入格式为1×200×6。通过实验结果得出,当卷积核大小为6,4层残差时实验效果最好。
在网络训练过程中,使用Adam优化器进行优化,使用交叉熵损失函数进行评估。网络设置了样本批量大小设置为128,以学习率为0.005进行训练。
目前在深度学习领域中解决时序问题的模型基本以LSTM模型为基线模型,因此为了验证本文算法在跌倒检测领域的有效性,本实验使用改进的残差结构、Leaky ReLU激活函数和全局平均池化的优化操作,在相同数据集的基础上对比了其它使用LSTM基线模型的文献的算法。模型对比实验数据见表2。其中LSTM算法以MobiAct数据作为训练数据,以自制数据集作为测试数据,选取腰部和腕部融合的组合时达到最高准确率95.8%。CNN-LSTM算法以MobiAct数据作为训练数据和测试数据,最终达到96.75%准确率。本文算法通过融合数据集可达99.43%精度。
表2 模型对比
为了验证不同激活函数对TCN模型的影响,实验使用最原始的模型参数,控制只有一个激活函数一个变量进行实验。为了选择合适的激活函数在网络中做线性变换,本文选择非饱和函数ReLU、PReLU和Leaky ReLU进行对比。使用不同激活函数对损失的影响如图7所示。
图7 不同激活函数对损失的影响
由图7可知,ReLU收敛最慢,Leaky ReLU其次,PReLU效果最好,收敛最快,但三者都相差不多。经过实验证明,使用ReLU和Leaky ReLU函数时,网络可学习参数为1296个,但使用PReLU,可学习参数高达15 696个。因此,本文选择使用Leaky ReLU激活函数改进网络。
为了验证改进后算法的有效性,本文以TCN网络模型为基础,以改进残差结构、激活函数和全局平均池化操作为优化操作,以此组合做算法性能比较。以准确率Acc、精准率Pre、召回率Recall、F1值和ROC图像作为算法好坏的评估标准。方案如下:
(1)原始TCN算法;
(2)改进残差结构的TCN算法;
(3)改进残差结构和激活函数的TCN算法;
(4)改进残差结构、激活函数和全局平均池化的TCN算法。
经过实验,4种方案对比数据见表3。通过对比表中数据可以得出结论:方案1直接使用TCN算法性能最低;方案2和方案3在TCN基础上加入残差结构和激活函数的优化,算法准确率分别提高了9.65%和8.8%;方案4在此基础上又加入了全局平均池化层,准确率达到了99.43%,与方案1对比提升了10.51%。通过数据对比发现,精准率和F1指标也有所提升。通过改进前模型与改进后模型性能对比,可以发现经过改进,模型ROC下面积AUC提高了0.0962,ROC对比如图8所示,改进后模型损失远小于改进前模型训练损失,损失对比如图9所示。
表3 4种方案对比
图8 改进前后模型ROC对比
图9 改进前后损失对比
为了验证融合数据集的正确性,将公开数据集和融合数据集分别在改进后模型上训练,实验结果见表4。由表4数据可知,公开数据集和融合数据集在改进模型上的效果相似,可以验证融合后数据集的正确性。训练损失图像如图10所示。
表4 数据集对比
图10 不同数据集对损失函数的影响
为准确检测老人跌倒状况,本文提出了基于改进TCN网络的跌倒检测算法。本研究对该网络进行了3处改进:基于激活函数的改进、基于全连接层的改进和基于残差结构的改进。该算法通过将浅层特征与深层特征融合,达到特征复用的效果。为了验证模型的泛化效果,本文将自制数据集与公开数据集融合作为模型训练的数据。对比了改进前后的模型效果,实验结果分析可知所提算法可以将人体日常行为中行走、慢跑、坐下、上下楼梯与跌倒行为准确区分,基于改进TCN模型检测的准确率可达99.43%,检测精确率和召回率均达到0.99。