基于ZigBee和CNN的低功耗跌倒检测技术

2019-08-02 02:41张子浩王伟东
关键词:量程角速度中断

何 坚 ,张子浩,王伟东

(1. 北京工业大学信息学部,北京 100124;2. 北京市物联网软件与系统工程技术研究中心,北京 100124)

跌倒伤害是导致全球老年人因伤就诊和死亡的首要因素.美国疾病预防控制中心(center for disease control,CDC)数据显示,美国 65岁以上老年人每年逾 30%至少跌倒一次,美国老年人每年因跌倒产生的医疗费用超 300亿美元[1].我国已步入老龄化社会,每年有约4000多万60岁以上老年人发生跌倒,跌倒伤害不仅给老年人生理上(如头部、臀部的受伤)造成伤害,同时也会给他们的心理带来负面影响,进而影响老人的生活质量[2].为了克服跌倒伤害对老年人健康的威胁,国内外研究人员研发了不同的跌倒检测技术.

已有跌倒检测技术根据其所采用传感器技术的不同,可总体上划分为以下 3大类[3]:可穿戴感知技术(wearable sensors)[4]、情景感知技术(ambient sensors)[5-6]和视觉感知技术(vision-based sensors)[7].由于情景感知和视觉感知的跌倒检测系统均需在特定环境中部署传感器,通常可将其归纳为基于情境感知的跌倒检测技术.文献[8-9]都是基于情境感知的跌倒检测系统,虽然这些系统具有准确率高、动作捕捉直观等特点,但传感器部署及检测算法复杂,且监控范围有限,甚至容易暴露用户隐私.随着 MEMS(microelectromechanical systems)技术的发展,研究人员将惯性传感器集成到小型可穿戴设备中来实现跌倒检测.基于 MEMS的跌倒检测方法具有部署成本低、受环境影响小、对用户的隐私干扰较少等优点,成为跌倒检测技术研究的热点[10].例如Gjoreski等[11]开发的RAReFall系统将集成了加速度计的模块分别放在被试的腹部和右大腿上,通过蓝牙将采集的三轴加速度数据传输到笔记本,并通过判断滑动窗口内加速度最大值与最小值之差是否大于阈值来判断是否跌倒.Benocci等[12]构造了基于 ZigBee的三轴加速度感知模块,并将加速度流数据通过 ZigBee传输到主机端处理.此外,研究人员也将机器学习技术应用于跌倒监测.例如,Shi等[13]采用 SVM(support vector machine)确定跌倒的加速度和角速度的阈值,并采用三轴加速度计、陀螺仪和安全气囊设计了可检测并预防跌倒的系统.Wang等[14]采用3轴加速度计和气压计设计实现了吊坠形跌倒检测设备.此外,研究人员针对低功耗跌倒检测也开展了研究.例如 Yuan等[15]结合中断和阈值方法设计了中断驱动的跌倒检测模块,并通过蓝牙将活动数据发送到计算机端通过决策树算法分类跌倒和日常活动.

尽管基于 MEMS的跌倒检测方法具有成本低、简单易用等特点,但 MEMS陀螺仪存在信号漂移误差、三轴加速度计在运动状态下会产生电压波动,这些因素会影响跌倒检测算法精度和有效性[16].此外,实时采集并传输三轴加速度、角速度的方法导致系统功耗较大.例如,文献[16]中一节 600mAh的锂电池仅能工作 6h.针对上述问题,本文采用低功耗ZigBee和MPU6050传感器设计构造运动感知模块,设计了中断驱动的低功耗运动数据采集传输算法;其次,在数据接收端通过滑动窗口实时接收三轴加速度、角速度运动数据,将其进行量程规范映射成对应的 RGB三通道像素数据,实现活动数据的图像化表示;最后,在分析比较日常活动与跌倒图像差异基础上,设计了面向跌倒监测卷积神经网络(fall detection convolutional neural networks,FD-CNN),并结合互联网上公开的日常活动和跌倒数据进行网络的训练和测试.

本文各章节主要内容如下:第1节在建立人体活动模型基础上,设计基于 ZigBee和 MPU6050的运动数据采集模块,并设计了中断驱动的低功耗运动数据采集传送算法;第 2节在对三轴加速度、角速度数据进行量程规范化的基础上进行图像化表示,并分析比较日常活动与跌倒图像差异;第3节设计了面向跌倒检测的卷积神经网络FD-CNN;第4节结合互联网公开数据集进行了系统实验,并将 FD-CNN算法与传统其他分类算法进行了对比分析.

1 活动感知

本节建立了基于笛卡尔坐标的人体活动模型,设计了基于 ZigBee和 MPU6050的运动数据采集模块,并设计了中断驱动的低功耗运动数据采集传送算法.

1.1 基于MEMS的活动感知

人体在运动过程中,加速度和角速度会实时变化.Erdogan等[17]研究表明人体的上躯干(即腰部以上、脖颈以下部分)是采集加速度数据并识别跌倒与其他日常动作的最佳部位.本文从穿戴设备舒适性以及系统可靠性出发,将运动感知模块放置在定制背心的腰部,进而建立基于笛卡尔坐标系的人体活动模型.图 1所示为基于笛卡尔坐标系的人体活动模型,其中ax、ay、az分别代表人体活动沿 x轴、y轴和 z轴的加速度;ωx、ωy、ωz为分别代表人体躯干绕 x轴、y轴和z轴的角速度.可以设置 FIFO缓存的数据容量值,当 FIFO中缓存数据个数大于该值时产生FIFO溢出中断.

通过设置自由落体、静止和 FIFO溢出中断的合理阈值,运动感知模块在检测到自由落体或活动状态时,由 CC3250实时采集用并发送用户的活动数据;当检测到静止中断时,CC3250和 MPU6050都处于休眠状态,由 DMP负责采集三轴加速度和角速度数据并存至 FIFO缓存中,此时无需访问 MPU6050和ZigBee射频进而降低运动感知模块的功耗.

图1 人体活动模型Fig.1 Model representing human activity

参考上述人体活动模型,课题组设计了运动感知模块,图 2(a)为模块原理.模块尺寸为 30mm×30mm×9mm.主要由 CC2530微控制器、MPU6050传感器、ZigBee射频和电源管理模块等组成,其大小适合放置于腰间口袋的位置,可以实时感知用户的运动数据.其中,ZigBee模块的传输速率为115200bit/s,传输最大距离为100m.MPU6050集成了三轴 MEMS陀螺仪、加速度计和一个可扩展的数字运动处理器(digital motion processor,DMP).陀螺仪测量范围最大可达到±2000°/s,加速度计测量范围最大可达±16g.运动感知模块的采样频率为100Hz.图2(b)所示为活动感知模块正面照.

MPU6050包含一个1kB的FIFO寄存器用于缓存数据.同时,MPU6050集成的DMP可以在休眠状态从陀螺仪、加速度计读取数据并存放于 FIFO缓存中,由于此时无需访问微控制器和 ZigBee射频,因此模块处于低功耗模式.此外,MPU6050有一个可编程的中断系统,提供了自由落体(free fall)、静止(zero motion)、FIFO溢出(FIFO overflow)等中断[18].其中,MPU6050的 FF_THR寄存器用于设置自由落体的阈值,FF_DUR寄存器用于设置自由落体持续时间,MPU6050通过检测三轴上的加速度测量值是否在规定阈值内来判断自由落体运动,一旦达到阈值,就触发自由落体中断,并产生标志位.MPU6050的ZRMOT_THR寄存器用于设置静止的阈值,ZRMOT_DUR寄存器用以设置静止中断持续时间,MPU6050当第一次检测到静止且不再检测到时,静止中断都会被触发.MPU6050的FIFO_CNT寄存器

图2 活动感知模块与感知模块原理Fig.2 Sensor board and its schematic diagram

1.2 中断驱动的活动数据采集传输算法

由于人体跌倒的时间通常小于 2s,依据参考文献[15],课题组设置 FF_THR 为 0.5625g,当系统检测到自由落体中断,则系统会通过 ZigBee立即将FIFO中的缓存数据发送给接收端,以便接收端采用跌倒检测算法做出判断.由于人体日常活动的加速度值通常大于 0.5g,因此本文设置 ZRMOT_THR为0.5g,ZRMOT_DUR 为 1000ms,即当加速度计的值小于 0.5g且时延超过 1s,系统产生静止中断,在静止中断处理中设置模块处于休眠模式.此时MPU6050以低功耗模式采集加速度、陀螺仪数据并存储于FIFO缓存中.

基于上述阈值设置,本文设计了中断驱动的人体运动数据感知传输算法.图 3为与算法对应、采用有穷状态机描述的人体运动数据采集传输流程图.图中每个状态说明如下.

F0:初始化状态.初始化 FIFO 缓存并设置数据采样率为 50Hz,设置自由落体中断、静止中断和FIFO溢出中断为使能状态;系统进入低功耗模式,即进入F1.

图3 中断驱动的活动数据采集传输流程Fig.3 Flow chart of the algorithm for data collection and transmission

F1:静止状态.通过 DMP采集三轴加速度、角速度数据并缓存至 FIFO中;如果静止中断持续时间超过 1s,更新 FIFO缓存并清除静止中断标志位,继续低功耗模式.在静止状态,若发生FIFO溢出中断,则 DMP按照先进先出的原则更新 FIFO中的数据;当读取的加速度值大于 0.5g时,若此时没有发生自由落体中断和 FIFO溢出中断,则 DMP继续读取数据并缓存至FIFO;否则通过ZigBee将FIFO缓存中的数据发送至接收端.

F2:活动状态.如果产生自由落体中断,且中断持续时间超过 40ms,则模块通过 ZigBee向接收端发送FIFO缓存数据.若自由落体中断持续时间小于40ms且产生了 FIFO溢出中断,则模块通过 ZigBee向接收端发送 FIFO 缓存数据并返回 F1;否则,向FIFO缓存添加数据,并返回F1.

2 活动数据处理与分析

由于人体跌倒的时间通常小于 2s,因此在服务器端设计了2s的滑动窗口以缓存活动感知模块传来的三轴加速度、角速度数据.本节对这些数据进行量程规范化,将规范化的数据转化为对应像素数据,并分析日常活动与跌倒的差异.

2.1 感知数据量程规范及可视化表示

由于感知模块的采样频率为 100 Hz,MPU6050加速度、角速度值采用2bytes表示,因此滑动窗口的大小为 2 400 kB,即服务器端实时存放了三轴加速度、角速度数据各 200份.若将 x、y、z轴的加速度、角速度值分别对应于三通道图像中 R、G、B通道的数值,这就可以将每份三轴数据转换成一个 RGB像素点.那么滑动窗口中的缓存三轴加速度、角速度数据就可以看成为尺寸为20×20×3的图像(如图4所示).图 4中,每个通道的前 200份数据为三轴加速度值,后 200份为三轴角速度数据.即图 2中从(0,0)到(9,19)为三轴加速度数据,从(10,0)到(19,19)为三轴角速度数据.

图4 将滑动窗口中三轴加速度、角速度数据映射为像素的示意Fig.4 Schematic illustration of mapping three-trial data into RGB bitmap

由于图像数据的量程范围为 0~255的整型数据,而加速度计和陀螺仪的数据量程不尽相同,为此本文采用式(1)对加速度计和陀螺仪传感器数据的量程进行规范化,将两者传感器数据规范到 0~255范围内.

式中:range为加速度计或陀螺仪传感器的量程;value为实测数值.计算结果result后为浮点型,为了表示方便本文通过四舍五入将result转化为整型数据.例如:一份加速度数据为 value=(8.302,-9.532,0.962),传感器的量程为±16g,其对应规范量程后的数据为

图5所示为2s跳跃活动的三轴加速度、角速度量程规范化表示前后的数据变化趋势图.图 5(c)、(d)为原始的加速度、陀螺仪数据,(a)、(b)为量程规范后的加速度、陀螺仪数据.可以看到量程规范只是在纵轴上放大了原始数据,但保持了原始数据的波形和变化规律.

图5 跳的加速度和角速度量程规范化前后对比Fig.5 Comparison of the raw and normalized data of jump

2.2 ADLs与跌倒数据分析

在数据量程规范基础上,课题组对7类日常活动(走路、慢跑、上楼、下楼、跳跃、起立、坐下)和跌倒数据进行了对比分析.图6和图7所示为时长为 2s的跌倒和7类日常活动的加速度、角速度数据变化折线图.从图6(a)可以发现,跌倒时x轴加速度呈快速下降随后快速上升的趋势,说明在跌倒时,在垂直方向上产生了剧烈的变化;行走、慢跑、连续跳等行为的三轴加速度、角速度表现出周期性变化规律,但变化规律却不尽相同,慢跑和连续跳跃在加速度数据上看较为类似,但是对比角速度变化趋势却很明显;上下楼时三轴加速度、角速度都表现出周期性特征,但两者在z轴的变化不同,可以看出上楼时加速度z轴含有波峰,而在下楼时加速度 z轴含有波谷;坐下和起立的动作通过三轴加速度、角速度表现可以看出,两者对x轴数据的变化趋势较为明显,坐下时加速度的x轴呈现上升趋势、起立时加速度的x轴呈现下降趋势.图 8表明在人体活动过程中跌倒与其他日常活动加速度和角速度的取值及其方向向量不尽相同,相应日常活动与跌倒的位图不尽相同.若选取合适的分类算法可将跌倒与其他日常活动区别开来.

图6 量程规范后日常活动与跌倒加速度变化趋势Fig.6 Accelerate velocity line charts of ADLs and fall

图7 量程规范后日常活动与跌倒角速度变化趋势Fig.7 Angular velocity line charts of ADLs and fall

图8 日常活动和跌倒的像素Fig.8 Bitmaps of ADLs and falls

3 跌倒检测算法

课题组参考LeNet 5架构[19]设计了基于CNN的跌倒监测的算法FD-CNN.

3.1 FD-CNN架构

FD-CNN架构如图9所示,其输入为20×20像素的 3通道 RGB图像,共有 6个网络层(不包含输入层).其中,网络的卷积层标注为Cx,下采样层标准为Sx,全连接层标注为Fx,x为网络的层号.在进入网络的C1层前,系统按照式(2)对数据进行规范化,即将图像数据取值范围为0~255归一化为-1~1.这不仅可以加快训练速度,而且可以提高网络的精度.

图9 FD-CNN结构Fig.9 FD-CNN architecture

C1为卷积层.在卷积前,系统对输入层数据进行了边缘扩充,扩充后的图像大小为 22×22,扩充边缘的像素值为 0.边缘扩充在卷积时可避免输入层边缘数据特征丢失.卷积核大小是 5×5×3,每个特征图内只使用一个共同卷积核.每个卷积核有 5×5×3个连接参数以及1个偏置共76个参数.卷积核每次滑动一个像素,因此卷积层形成的每个特征图大小是18×18.卷积过后,系统通过 relu函数进行网络层激活.C1层共有32个卷积核,所以该层输出为32张大小为18×18的特征图.

S2为最大池化层(max pooling).在池化前,系统对C1层输出的数据进行了边缘扩充(扩充边缘的像素值为 0),扩充后的图像大小为 20×20.系统采用2×2的核以步长为2进行最大池化下采样得到32张10×10的特征图.

C3为卷积层.在卷积前,参考C1层也对S2的输出进行了边缘扩充,扩充后的图像大小为 12×12.卷积核大小是5×5×32,卷积核每次滑动一个像素,卷积后形成的每个特征图大小是 8×8.卷积过后,系统通过 relu函数进行网络层激活.C3层共有 64个卷积核,所以该层输出为64张大小为8×8的特征图.

S4为最大池化层.参考C1层也对C3的输出进行了边缘扩充,扩充后的图像大小为 10×10.系统采用2×2的核以步长为 2进行最大池化,下采样得到 64张5×5的特征图.

F5为全连接层,其含有512个神经单元.为了防止网络过拟合,在训练时加入了 dropout.这一层神经元在全连接后使用relu函数进行网络激活.

最后一层是全连接网络输出层.该层有 8个神经单元.在计算网络结果时,将最后一层的输出加到softmax中,得到每个类的预测概率,其中概率最大项为网络的预测结果.

3.2 网络训练

课题组参考图 1的坐标系,首先对 SisFall[20]和MobiFall[21]公开的数据集进行坐标转换,保证这些数据均符合图1所示的坐标系,并对坐标转换后的数据进行量程规范和可视化表示;其次,从MobiFall数据集中提取了走路、跳跃、慢跑、上楼、下楼数据各1000组,跌倒数据 500组;从 SisFall数据集中提取坐下和起立数据各 1000组,跌倒数据 500组;它们共同构成了课题组用的公开数据集.由于跌倒样本量较少,课题组在提取数据时,不再区分前/后向跌倒、左/右侧跌倒,而将它们统一归类为跌倒.

此外,课题组采用图9所示的实验环境,通过20名被试实验获得了 7类日常活动和跌倒各 200组数据,构成了实验数据集.课题组随机选取公开数据集和实验数据集中各 90%的数据作为训练样本,其余作为测试样本.训练样本和测试样本集如表 1所示.其中,每类日常活动和跌倒各有 1080组训练样本,共计 8640组训练样本;每类活动含 120组测试样本,共计960组测试数据.

表1 训练样本和测试样本集Tab.1 Training data and test data

课题组采用 8640组训练样本对 FD-CNN网络进行了训练.并按照 9∶1比例将训练样本划分为训练集和验证集.训练中 batch size设值为 64.使用Adam算法进行网络的优化,其中学习率为0.001.此外,在网络最后全连接层后加上了 softmax层(如式(3)所示)以计算输出结果的概率.最后,和真实值y做一次交叉熵,求其平均值,得出 loss(见式(4)),并依据loss值进一步训练.网络训练迭代8个epoch时候,验证集准确率维持在 99.8%左右,后续训练准确率维持稳定不再上升;此时网络训练结束,并保存网络模型.最终实验验证集准确率为 99.8%,基于验证集的网络模型性能见表2.

表2 FD-CNN验证集测试结果Tab.2 Result of FD-CNN validation data

4 实验与结果分析

课题组开发了集成运动感知模块的可穿戴背心,搭建了实验环境,如图10所示.

图10 跌倒监测实验环境Fig.10 Architecture of the fall detection system

4.1 实验设计

课题组将集成了MPU6050和ZigBee的运动感知模块放置在可穿戴背心的腰部,以实时采集人体活动产生的三轴加速度、角速度数据,并按照第 3.2节的算法将采集的数据通过 ZigBee发送给集成了ZigBee汇聚节点的服务器.服务器将收到的数据缓存到滑动窗口,同时将滑动窗口中的数据量程规范并转换为20×20×3的像素图,服务器上运行FD-CNN算法实时对滑动窗口中的像素数据分析归类.当判断人员发生跌倒时,系统自动通过拨打电话或发送带有GPS位置的短信向监护人员报警.

课题组按照图 10所示结构搭建了实验环境,20名被试(包括 18名男性与 2位女性,年龄在 24~48岁之间)分别完成了行走、慢跑、坐下、起立、上楼、下楼、跳跃和跌倒8类活动,每类活动各10次.课题组提取8类活动中的100组有效数据构成实验数据集,并按照表 1所示构造了训练样本和测试样本.出于安全考虑,本次实验并未邀请50岁以上人员参与.

4.2 实验结果分析

课题组选择了一台 ThinkCenter m6200t台式机(i5CPU,8G 内存,GTX-970图形加速卡)作为服务器,在完成FD-CNN训练后,将表1中的测试集数据导入训练好的网络模型中进行测试,测试结果如表 3所示.

表3 FD-CNN测试结果Tab.3 Result of FD-CNN test

从表 3可以看出网络模型系统的准确率达到了98.6%,敏感度和特异性分别达到 98.6%和 99.8%. 其中,系统对跌倒检测的敏感度和特异性均到达了100%,表明系统对跌倒的识别有很好的效果.

课题组将 FD-CNN测试所用量程规范后的训练样本和测试样本应用于 Weka,进而将 FD-CNN与Weka中集成的常见分类算法进行对比分析.

表4所示为Weka中的分类算法与FD-CNN算法的性能对比.表 4表明 FD-CNN网络算法在多方面均具有明显优势.首先,FD-CNN网络的准确率、平均敏感度和特异性均为最高,比识别效果最接近的Random Forest算法的准确率、敏感性、特异性分别高出 2.7%、2.7%和 0.4%,比识别效果最不理想的 SMO算法分别高出 19.0%、17.5%和 3.7%.可见 FD-CNN算法对跌倒检测具有很高的准确率.同时,FD-CNN算法运行在所用 PC机上的运算时间仅有 0.13s,可以完全满足实时跌倒检测的需要.

此外,课题组选择男、女各 1名被试穿上可穿戴背心进行系统功耗测试.测试表明,运动感知模块在集成 600 mAh的电池时,集成该模块可穿戴背心可连续工作 30 h上.这样护理人员可以在老年人休息时通过替换电池或充电,实现老年人每天 24 h实时跌倒检测.实验表明中断驱动、基于 ZigBee的活动感知模块是一种低功耗的活动感知模块,适合于社区老年人的活动感知与跌倒监测.实验结果表明,本文提出的跌倒检测技术具有以下两方面的优点.

表4 FD-CNN与其他分类算法测试结果对比Tab.4 Comparison of different algorithms with FD-CNN

(1) 低功耗.与传统传输模块(例如蓝牙)相比,ZigBee在大规模组网和传输功耗方面均具有较大优势.同时,本文使用中断技术避免了数据实时传输导致的电能浪费,有效降低了设备使用功耗.

(2) FD-CNN算法具有更高的准确率.本文创新性地将三轴加速度、角速度数据转为 RGB像素,并引入滑动窗口构造能同时反映老年人活动过程中三轴加速度、角速度变化特征的像素图,进而设计FD-CNN网络实现老年人跌倒的准确监测.表 4说明 FD-CNN算法在相同训练样本和测试集上较Weka中集成的机器学习算法无论是系统的准确率、敏感度和特异性指标都有明显提升.此外,基于非公开数据集的跌倒监测系统中,RAReFall[11]系统跌倒检测的召回率和准确率分别为 93.3%和 66.7%,FDCNN比其高出5.3%和31.9%;LPFD[14]系统跌倒检测的敏感度和特异性分别为93%和 87.3%,FD-CNN比其分别高出其算法指标的5.0%和12.5%.本文算法的优势也是比较明显的.

5 结 语

本文设计了一种中断驱动、基于 ZigBee的低功耗运动感知模块,实现人体运动数据的低功耗采集传输;在数据接收端将人体活动的三轴加速度、角速度数据转换成 RGB位图,设计实现了基于 CNN的跌倒检测算法,开发了系统原型并开展实验.实验结果表明,该系统可以有效区分跌倒和其他日常生活动作.同时,运动感知模块配备600mAh锂电池可持续工作 30h以上,将其集成到可穿戴背心上可以在不影响老年人日常生活的情况下,全天候检测老年人跌倒.同时,系统具有成本低、方便携带等特点.将来课题组将研究使用 NB-iot等技术设计构造基于低功耗物联网技术的运动感知模块,同时结合其他算法研究更高效的日常活动与跌倒准确分类技术.

猜你喜欢
量程角速度中断
智能辅助驾驶系统中横摆角速度信号估计方法的研究
基于惯性导航量程扩展的滚动再次受控方法
宽量程计量自动切换及远程传输技术
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Linux中断线程化分析及中断延时测试
高中物理角速度矢量性问题的教学探究
跟踪导练(二)(5)
圆周运动角速度测量方法赏析
启动前功率量程刻度系数的算法优化和应用