[0085] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0086] 相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
[0087] 参见图1,为本发明的方法步骤流程图,包括以下步骤:
[0088] S1,对三轴加速度传感器所采集的数据进行加速度计算,通过BP神经网络确定阈值范围,比较加速度是否超出来判断人体当前的运动是否异常激烈;
[0089] S2,通过S1计算出的加速度数据乘以时间再对时间的积分进一步计算出人体相对能量损耗,比较是否超出设定阈值来判断人当前的运动是否异常激烈;
[0090] S3,利用三轴陀螺仪采集数据,通过卡尔曼滤波算法计算出人体的倾斜角和横滚角,通过判断二者是否超过设定阈值来确定人体的姿态是否异常。
[0091] S1具体包括以下步骤:
[0092] 由采集获取的三轴加速度值ax,ay,az表示X、Y、Z轴的加速度,aall代表合加速度;将加速度特征组合样本表示为X={x1,x2,x3,,,xn},n表示为训练样本的个数;将跌倒的样本标记为1,不跌到的样本标记为0,那么样本对应表示为Y={y1,y2,y3,,,yn},Y表示样本类别,取值范围为0或1;
[0093] 本方法基于三层神经网络结构,三层包括两个隐藏层和一个输出层;
[0094] 前向传播阶段:
[0095] 输入的样本为:xi={ax,ay,az},i=1,2,,,,n
[0096] 第一层隐藏层有3个神经元,编号为1,2,3,第一层网络的参数为:
[0097]
[0098] b(1)=[b1,b2,b3];
[0099] 其中,W(ax,1)为x轴加速度在第一个神经元的权重,以此类推;b1为第一个神经元的(1) (1)偏置,以此类推;W 为第一层隐藏层的权重矩阵,以此类推;b 为第一层隐藏层的偏置矩阵,以此类推;
[0100] 第二层有2个神经元,编号为4,5,第二层隐藏层的参数为:
[0101]
[0102] b(2)=[b4,b5]
[0103] 第三层有1个神经元,编号为6,参数为:
[0104] W(3)=[W(4,6) W(5,6)]
[0105] b(3)=[b6]
[0106] 得第一层隐藏层的输入为:
[0107]
[0108]
[0109]
[0110] z1为第1个神经元的输入,以此类推,
[0111] 选择Logistic函数: 作为该层的激活函数,k=1,2,3,表示层数,该层的输出为
[0112] 第二层隐藏层的输入为:
[0113]
[0114]
[0115] 该层的输出分别为
[0116] 输出层只有一个神经元,该层的输入为:
[0117]
[0118] 最后的输出为
[0119] 误差反向传播阶段:
[0120] 使用随机梯度下降的方式来学习神经网络的参数,设定损失函数:其中y是该样本的真实类标, 是神经网络的预测值,是使用梯度下降进行参数的学习,计算出损失函数关于神经网络中各层参数的偏导数:
[0121]
[0122]
[0123] 计算
[0124] 第k层神经元的输入为:z(k)=W(k)·n(k‑1)+b(k),n(k‑1)为第k‑1层神经元的输出,以(k‑1) (k‑1)此类推,n =fk‑1(z );
[0125] 分别求偏导解得(k) (k)
代表第k层神经元的权重矩阵W 的第m行, 代表着第k层神经元的权重矩阵W
的第m行中的第n列;
[0126]
[0127] 计算偏导数
[0128] 称为误差项,用δ(k)表示;
[0129] 第k+1层神经元的输入为:z(k+1)=W(k+1)·n(k)+b(k+1);
[0130]
[0131] 得
[0132] 于是
[0133] 更新参数阶段:
[0134] 在误差反向传播阶段中已经计算出每一层的误差项,在本阶段中利用每一层的误(k) (k)差项和梯度来更新每一层的权重W 和偏置b :
[0135] W(k)=W(k)‑α(δ(k)(n(k‑1))T+W(k))
[0136] b(k)=b(k)‑αδ(k);
[0137] 其中,α是学习率;
[0138] 通过样本不断输入,最后得到的参数即构成本神经网络模型的参数,从而确定加速度的阈值范围;若判定表明当前用户的加速度异常时,则执行S2。
[0139] S2具体包括:
[0140] 当加速度判定当前行为为跌倒时,则进入第二级能量判定做进一步分析:依据人体在跌倒过程中不同姿态所损耗的能量的不同来判定是否为跌倒状态,状态能量损耗可以通过动态加速度在特定时间域上的积分乘以重力加速度求得,其计算公式为:
[0141] Energy=g∫aztdt;
[0142] 其中,g为重力加速度,az为z轴加速度,t为特定时间域;
[0143] 若能量判定算法判定的结果未超出阈值,则表明了S1中预置的加速度跌倒特征与用户个性化的加速度跌倒阈值存在矛盾,此时用新的特征修正存储器中的预置加速度跌倒阈值;
[0144] 若能量判定表明当前用户的运动异常时,则执行S3。
[0145] S3具体包括:
[0146] 用四元数及三轴陀螺仪静态漂移值作为卡尔曼滤波的状态量X(k|k‑1)=[q1,q2,Tq3,q4,ωx,ωy,ωz];
[0147] 其中,X(k|k‑1)为k时刻的状态量,q1,q2,q3,q4为四元数值,ωx,ωy,ωz为三轴陀螺仪静态漂移值;
[0148] 更新k时刻的状态估计量:X(k|k‑1)=AX(k‑1|k‑1);
[0149] 其中,
[0150]
[0151] 其中,X(k‑1|k‑1)为k‑1时刻的最优状态量,A为状态转移矩阵,Ts为采样周期;
[0152] 得k时刻协方差估计值P(k|k‑1)=AP(k‑1|k‑1)AT+Q;
[0153] 其中,P(k‑1|k‑1)为k‑1时刻最优协方差,Q为系统噪声方差矩阵;
[0154] 最优状态估计X(k|k)=X(k|k‑1)+Kk(Zk‑HX(k|k‑1)),Kk为最优卡尔曼增益;Zk为量测值:
[0155] Zk=[ax,ay,az]T
[0156]
[0157]
[0158] 得卡尔曼增益:
[0159] 其中,R为量测噪声方差矩阵;
[0160] 得k时刻协方差最优估计值:P(k|k)=(I‑KkH)P(k|k‑1),其中,I为单位矩阵;
[0161] 通过以上卡尔曼滤波后得到k时刻最优状态量X(k|k)=[q0,q1,q2,q3,ωx,ωy,Tωz],通过比较四元数姿态矩阵与方向余弦矩阵后得到俯仰角和横滚角:
[0162]
[0163] 若倾斜角和横滚角判定人体当前处于正常状态,则用新的特征修正加速度、能量判定阈值;若倾斜角和横滚角判定人体当前处于跌倒状态,则最终判定人体当前发生跌倒并报警。
[0164] 参见图2,为方法对应的装置结构框图,包括微处理器10、与微处理器10连接的三轴加速度计21、三轴陀螺仪22、北斗模块12、时钟模块13、4G模块14、外部存储模块11、电源模块15,还包括上位机管理模块30,上位机管理模块30包括查询模块32、数据库31;
[0165] 其中,微处理器10与北斗模块12与4G模块14通过串口方式连接,三轴加速度计21与三轴陀螺仪22通过IC总线接口与微处理器10连接;微处理器10控制三轴加速度计21和三轴陀螺仪22进行数据采集,通过北斗模块12进行室外定位,控制报警信息的发送,控制外部存储模块11的数据读写和擦除;微处理器10发送求救指令唤醒4G模块14,4G模块14以短信的形式将定位信息和报警信息发送给看护者;北斗模块12在默认情况下工作在睡眠模式,在判断为跌倒状态下,微处理器10发送定位指令唤醒北斗模块12,北斗模块12搜索卫星信号进行定位;外部存储模块11进行缓存定位和加速度;时钟模块13为微处理器10提供时间参考信息;数据库31存储采集到的数据;查询模块32,对佩戴装置者的位置和姿态进行查询。
[0166] 对人体跌倒进行建模,我们可将其分为三个阶段,分别为失重阶段,撞击阶段与静止阶段。当处于失重阶段时,人体的三轴加速度幅值矢量会发生明显变化,变化持续时间由人体所处高度决定;撞击阶段会瞬间的剧烈变化,并伴随着相应的能量损耗;跌倒并撞击地面后,人体通常无法立即站立起来,会处于短时间的静止阶段。根据该原理,我们将加速度幅值矢量作为跌倒状态判定的第一个判断依据。除了加速度外,人体姿态角也会在发生跌倒时产生相应变化,因此可将其作为判定跌倒的辅助依据。
[0167] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。