一种可快速适应各种变化因素的睡眠动作识别系统
技术领域
本发明涉及一种睡眠动作识别技术领域,特别是涉及一种可快速适应各种变化因素的睡眠动作识别系统。
背景技术
人在睡觉的过程中会产生各种肢体动作,通过对肢体动作的识别可以预测当前的睡眠状态、检测各种生理和精神疾病。Moreau等人使用高分辨率的腕部活动记录仪监测记录用户的抓挠动作,需要侵入式设备附着在人体上。Kurihara等人使用压力陶瓷设备的非侵入性方法来测量患者睡眠时的抓挠和翻身运动,Waltisberg等人使用一系列应变仪组成的床内传感器系统来监测睡眠疾病中的呼吸暂停和周期性肢体运动,识别动作的种类比较单一。Nukaya等人提出了一种床传感系统,它使用压电陶瓷粘接在夹在地板和床腿之间的不锈钢板上,该系统可以感知许多人体生物信号,包括身体运动,不能方便扩展识别其它动作。Nishyama等开发了一种监测呼吸和身体运动的系统,该系统使用基于hetro-core光纤的压力传感器,这是高成本系统,需要特殊安装。总的来说,由于这些系统需要指定的传感器设备,按照固定的方式部署,而且只针对于某些特定的动作进行识别,没有扩展识别其它动作的接口,所以导致系统的适应性不强。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种可快速适应各种变化因素的睡眠动作识别系统。
为了实现本发明的上述目的,本发明提供了一种可快速适应各种变化因素的睡眠动作识别系统,包括数据采集模块、数据处理模块、特征提取模块、规则提取模块以及工作引擎模块;
所述数据采集模块用于通过振动传感器实现对原始数据的获取;
所述数据处理模块用于对原始数据的预处理;
所述特征提取模块用于对数据特征的计算;
所述规则提取模块用于提取出动作识别的规则;
所述工作引擎模块用于基于动作规则推理出动作识别的结论。
在本发明的一种优选实施方式中,依次根据数据采集模块、数据处理模块、特征提取模块得到的数据特征,以及根据规则提取模块提取的动作识别的规则再通过工作引擎模块推理出动作结论。
在本发明的一种优选实施方式中,数据采集模块包括安设在床体上的M个振动数据采集模块,所述M为大于或者等于1的正整数,分别为第1振动数据采集模块、第2振动数据采集模块、第3振动数据采集模块、……、第M振动数据采集模块,第m振动数据采集模块采集的振动数据传输至处理器,所述m为小于或者等于M的正整数。
在本发明的一种优选实施方式中,振动数据采集模块包括:振动传感器采集的数据经过放大器放大后再传输给BeagleBone开发板,BeagleBone开发板使用Wi-Fi通讯,并基于NTP协议进行时间同步;将振动数据传输给处理器;
或/和M取5时,第1振动数据采集模块安设在床脚,第2振动数据采集模块和第3振动数据采集模块安设在床头两边且第2振动数据采集模块安设在床头右边;第4振动数据采集模块和第5振动数据采集模块安设在床尾两边且第4振动数据采集模块安设在床尾右边。
在本发明的一种优选实施方式中,数据处理模块包括以下步骤:针对环境中的随机噪声,使用Daubechies作为小波基函数,通过小波变换分解出不同波形,把随机噪声的波通过去噪阈值Tn0筛选的方法去除,再重构成新的波形;
针对设备本身产生的高频噪声,把傅里叶变换后高于频率阈值Tf0的系数置零来实现低通滤波,再利用傅里叶逆变换重构出新的波形;
由于滤波后振动幅度差异非常小,最后需要通过最大最小归一化处理适当放大最大值和最小值的差异使其显示出清晰的峰值。
在本发明的一种优选实施方式中,特征提取模块包括极差特征提取、均值特征提取、标准差特征提取、能量特征提取、频域熵特征提取、均方根特征提取之一或者任意组合;
极差特征提取的方法为:Range=max(X)-min(X),
其中,Range表示极差特征;
其中,N为样本数,xi为第i个样本,Mean表示均值特征;
其中,fi为第i个FFT系数,滤掉了直流分量;
其中,vi为第i个归一化的FFT系数,滤掉了直流分量;Energy表示能量特征;
其中,di(n)为小波变换第n样本第i层分解的细节系数,iH为RMS的最大值对应的分解级数,RMS(i)表示第i层均方根特征;RMS表示各层均方根累加和的特征。
在本发明的一种优选实施方式中,还包括时间队列,该队列用于存储时间和对应的动作数据,该队列包含两个属性:时间窗口t和时间步长T0,时间窗口表示该队列可以存储多长时间的数据,时间步长表示窗口每次移动的距离,即该队列每次计算后需要丢弃多长时间的数据,特征提取过程中将实时产生的动作数据通过时间队列存储起来,当队列存储满指定时间窗口的数据时,计算队列中数据的特征,计算完毕后丢弃前T0时间的数据,添加新数据,重新计算队列中的特征,这样就能实时计算出当前时间点下的动作特征。
在本发明的一种优选实施方式中,规则提取模块包括以下步骤:首先利用CART算法来训练决策树模型,得到不同特征的特征重要性参数,通过筛选阈值Ti0筛选出重要特征,把重要特征替换原有动作特征后再重新训练出新的决策树模型,然后对新的决策树模型进行剪枝来防止过拟合,最后基于剪枝后的决策树模型使用规则提取算法得到动作识别的规则。
在本发明的一种优选实施方式中,对新的决策树模型进行剪枝的方法为:预剪枝使用随机搜索算法来实现超参数优化,通过十折交叉验证评估剪枝效果;后剪枝使用CCP算法实现。
在本发明的一种优选实施方式中,规则提取算法为:从决策树模型的根结点开始遍历,按照深度优先的路径遍历方式搜索叶子结点,记录非叶子结点中的分支条件,搜索到叶子结点后,开始计算叶子结点中对应类样例数占总样例数的比例,得到动作概率,把得到的条件和结论组成规则,按照动作概率从小到大的顺序插入规则列表中。
综上所述,由于采用了上述技术方案,本发明提取出的动作识别规则,可识别多种睡眠动作,每种动作的识别准确率均可达到96%以上,总识别准确率达到98.9%,且该系统扩展识别其它动作操作简捷。实验结果表明,该系统通过更新规则可快速适应睡眠动作识别中节点位置、节点数量和用户需求的变化。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明睡眠动作识别系统框架示意图。
图2是本发明睡眠动作识别系统的工作流程示意图(主智能节点中的数字表示执行步骤)。
图3是本发明数据处理过程示意图。
图4是本发明特征提取过程示意图。
图5是本发明规则提取过程示意图。
图6是本发明规则推理过程示意图。
图7是本发明不同节点位置在不同规则方案下的推理结果示意图。
图8是本发明不同节点数量在不同规则下的推理结果示意图。
图9是本发明上下床动作规则增加前后的推理结果示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本文设计了可快速适应各种变化因素的睡眠动作识别系统,如图1所示,该系统包括五大模块:数据采集模块、数据处理模块、特征提取模块、工作引擎模块和应用模块。数据采集模块通过振动传感器实现对原始数据的获取;数据处理模块基于计算引擎实现对动作原始数据的预处理,例如:滤波、去噪、归一化等操作;特征提取模块基于计算引擎实现对动作数据特征的计算,例如:极差、均值、标准差等特征;工作引擎模块基于动作规则实时读取动作数据驱动推理引擎推理出动作结论并提供给应用层,是软件定义智能中智能层的核心组件;应用模块通过智能层提供的动作结论,实现了睡眠动作识别,并通过规则进一步实现了异常动作监测、用户在床状态监测。根据经验知识总结规则或机器学习挖掘规则,面对节点布局变化、用户需求变化,只需更新规则就能够解决这些变化导致的问题来提高系统的适应性。
基于该睡眠动作识别系统框架实现多个智能节点的推理,如图2所示,工作流程如下:
①脚本配置:基于各种变化因素总结规则或通过机器学习挖掘规则,客户端通过Wi-Fi把规则文件上传到规则库中;设置一个主智能节点和多个从智能节点及其IP、端口,设置系统相应参数,形成配置文件,通过Wi-Fi上传配置文件,通过智能节点解析配置文件。
②数据采集:各个智能节点使用振动传感器采集睡眠动作产生的振动数据,存储到上下文库中。
③数据处理:数据处理模块读取原始数据,基于计算引擎实现数据处理,得到预处理后的动作数据。
④特征提取:特征提取模块读取预处理后的数据,基于计算引擎实现特征提取,得到动作特征数据。
⑤规则推理:推理引擎读取规则库和上下文库,通过脚本解释器解析规则,计算引擎执行计算操作,根据计算结果得到动作结论。
⑥结论发送:若为从智能节点,则把推理结论发送给主智能节点;若该节点为主智能节点,则接收其它节点推理的局部动作结论再统一推理出全局动作结论。
⑦响应控制:根据主智能节点的动作结论做出响应控制,比如检测到异常动作时给予用户警报。
数据采集模块
本文使用的节点设备如图2右上角所示,每个传感器采集的数据经过放大器放大后再传输给相应的BeagleBone开发板,不同开发板使用Wi-Fi通讯,并基于NTP(NetworkTime Protocol)协议进行时间同步。本文采集数据的节点设备部署方式如图2所示,在床头两边、床尾两边还有床脚的下边沿处共部署了5个振动传感器(采样频率记为f),它们监测的重点部位为上半身、下半身以及脚部动作。本文总结了3种类型共9种常见的睡眠动作,并定义其相关编号(动作标签),如表1所示。
表1常见的睡眠动作及其动作编号
动作类型 |
动作名称(动作编号action_num) |
大动作 |
翻身(0)、腿部伸展(1)、手部伸展(2) |
小动作 |
头部轻微移动(3)、脚部轻微移动(4)、手部轻微移动(5) |
异常动作 |
踢腿(6)、腿部抖动(7)、手部抖动(8) |
数据处理模块
由于原始数据包含环境中的随机噪声和节点设备本身产生的高频噪声,所以动作特征提取前,需对数据进行预处理。数据处理过程如图3所示。针对环境中的随机噪声,使用Daubechies作为小波基函数,通过小波变换分解出不同波形,把随机噪声的波通过去噪阈值(记为Tn0)筛选的方法去除,再重构成新的波形。针对设备本身产生的高频噪声,本文把傅里叶变换后高于频率阈值(记为Tf0)的系数置零来实现低通滤波,再利用傅里叶逆变换重构出新的波形。由于滤波后动作的振动幅度差异非常小,最后需要通过最大最小归一化处理适当放大最大值和最小值的差异使其显示出清晰的峰值。
特征提取模块
根据不同动作特点,总结了六种特征,如表2所示,分别是时域特征:极差、均值、标准差;频域特征:能量、频域熵;时频域特征:均方根。
表2睡眠动作特征及其公式
本文设计了时间队列,该队列用于存储时间和对应的动作数据,该队列包含两个属性:时间窗口(记为t)和时间步长(记为T0)。时间窗口表示该队列可以存储多长时间的数据,时间步长表示窗口每次移动的距离,即该队列每次计算后需要丢弃多长时间的数据。特征提取过程如图4所示,将实时产生的动作数据通过时间队列存储起来,当队列存储满指定时间窗口的数据时,计算引擎计算队列中数据的特征,计算完毕后丢弃前T0时间的数据,添加新数据,重新计算队列中的特征,这样就能实时计算出当前时间点下的动作特征。
规则提取模块
规则反映了人类求解问题的行为特征,是一种知识的表示方法,它以“IF-THEN”的形式表现了因果关系,IF后面接规则的条件(规则前件),THEN后面接规则的结论(规则后件)。规则可以通过经验总结得到,也可以基于机器学习挖掘得到。
本文通过决策树模型提取规则,提取过程如图6所示,首先利用CART算法来训练决策树模型,得到不同特征的特征重要性参数,通过筛选阈值(记为Ti0)筛选出重要特征,把重要特征替换原有动作特征后再重新训练出新的决策树模型,然后对新的决策树模型进行剪枝来防止过拟合(预剪枝使用随机搜索算法来实现超参数优化,通过十折交叉验证评估剪枝效果;后剪枝使用CCP算法实现),最后基于剪枝后的决策树模型使用规则提取算法(路径遍历)得到动作识别的规则。动作规则如图5中的规则1、规则2所示,其中SD表示标准差特征、Mean表示均值特征,action_num表示识别的动作编号,action_proba表示识别的动作概率。
规则提取算法如算法1所示,算法第1~7行为从决策树模型的根结点开始遍历,按照深度优先的路径遍历方式搜索叶子结点,记录非叶子结点中的分支条件,搜索到叶子结点后,算法第8~10行开始计算叶子结点中对应类样例数占总样例数的比例,得到动作概率,算法第11~13行把得到的条件和结论组成规则,算法第14~15把规则按照动作概率从小到大的顺序插入规则列表中。
工作引擎模块
工作引擎主要由推理引擎、计算引擎、规则库、上下文库组成。推理引擎为核心组件,用于支撑智能节点的智能实现,使用Flex&Bison工具编写脚本解释器,从上下文库中读取上下文知识,再从规则库中读取规则,通过脚本解释器解析规则进行匹配;计算引擎通过C++实现,包括算术计算和统计计算,用于完成推理引擎需要的计算操作,同时实现数据处理和特征提取等操作。
规则推理过程如图6所示,首先脚本解释器解析动作规则,得到规则前件和规则后件,每条规则前件中包含动作特征相关的计算操作,前件中变量替换为动作特征的值,计算引擎计算每条规则的前件,若计算结果为true则表示规则匹配成功,给相应的规则后件中的变量赋值,得到动作结论及其相应的动作概率。例如,输入动作特征数据SD=0.2、Mean=0.6,与其相匹配的规则为规则2,由于规则2的前件计算结果为true,因此把该规则对应后件中的变量action_num赋值为1,action_proba赋值为1,此时通过action_num得到动作的编号,通过action_proba得到动作的概率。
实验验证与结果分析
实验准备
数据采集参数:设置振动传感器的采样频率f=70Hz,放大器放大倍数m=2。
数据处理参数:根据噪声的大小,设置小波变换的去噪阈值Tn0=0.08,设置低通滤波的频率阈值Tf0=25Hz。
特征提取参数:由于人的大部分睡眠动作都在2s时间间隔内,因此设置时间队列的时间窗口t=2s,而相邻窗口的重叠率通常为50%,这一比例已有研究工作证明有效,所以本文设置时间步长T0=1s。
规则提取参数:设置特征重要性参数的筛选阈值Ti0=0.1。
为了采集实验所需要的数据,本文的实验环境如图2所示,5个振动传感器部署位置分别为床的中下、左上、右上、左下、右下,对应智能节点编号为1、2、3、4、5,其中1号为主智能节点,其它智能节点为从智能节点。实验过程中通过NTP协议将从智能节点的时间同步到主智能节点。参加实验的志愿者共有10人,年龄在22~28岁之间,其中7名男性,3名女性。实验要求每位志愿者模拟自然睡觉情况下表1中的睡眠动作,每个动作持续时间为30秒。将采集的数据按照8:2的比例用于规则的提取和推理引擎的测试。通过规则提取得到不同位置节点设备的规则集,记为R1、R2、R3、R4、R5(与智能节点编号对应),其对应的规则数量为85、87、93、89、86。基于规则通过推理引擎推理出动作结论,根据结论和对应动作标签计算动作的识别准确率。另外,如表3所示,根据经验总结多个节点设备推理的规则(DR1~DR2)和不同用户需求的规则(AR1~AR5)。本文设置3组实验,通过更新规则分别应对不同节点位置、不同节点数量和不同用户需求进行实验。
表3根据经验总结的规则
表3注释:其中conclusion_list表示不同智能节点的局部动作结论(conclusion)组成的列表,conclusion表示的结论记为四元组(time,node_num,action_num,action_proba),time表示时间,node_num表示智能节点编号,action_num表示识别的动作编号,action_proba表示识别的动作概率,action_proba_sum表示识别的动作概率和,Sort(conclusion_list,action_proba)和Sort(conclusion_list,action_proba_sum)分别表示把结论列表按照动作概率、动作概率之和从小到大排序;warning_light_state表示警报灯的状态,on_bed_state表示用户在床状态。action_num=6表示踢腿动作,action_num=7表示腿部抖动动作,action_num=8表示手部抖动动作,action_num=9表示上床动作,action_num=10表示下床动作。warning_light_state=1表示点亮第一警报灯,warning_light_state=2表示点亮第二警报灯,warning_light_state=3表示点亮第三警报灯。on_bed_state=1表示点亮上床指示灯,on_bed_state=0表示熄灭上床指示灯。conclusion_list[-1][2]中的第一个“[]”内的数值表示动作概率最大对应的结论位置;第二个“[]”内的数值表示识别的结论元组中动作编号的位置。
应对节点位置变化
本节实验用于验证通过更新规则集可提高节点在不同位置上的适应性。节点设备位置如图2所示,不同节点位置使用规则方案如表4所示,前5组方案只使用一种规则集,第6组方案针对不同位置的节点设备使用不同的规则集,在不同规则方案下进行实验,计算不同位置推理出的局部动作结论的总识别准确率(9种动作),实验结果如图7所示,结果保留1位小数。
表4不同节点位置使用的规则方案
规则方案 |
中下 |
左上 |
右上 |
左下 |
右下 |
RS1 |
R1 |
R1 |
R1 |
R1 |
R1 |
RS2 |
R2 |
R2 |
R2 |
R2 |
R2 |
RS3 |
R3 |
R3 |
R3 |
R3 |
R3 |
RS4 |
R4 |
R4 |
R4 |
R4 |
R4 |
RS5 |
R5 |
R5 |
R5 |
R5 |
R5 |
根据上图实验结果显示,前5组方案下的动作识别准确率中,使用了对应位置的规则集时准确率超过80%,其它位置的准确率不超过20%;第6组方案中每个位置的动作识别准确率均达到了前5组方案中所有位置的最大值,分别是87.8%、83.2%、90.6%、83.0%、87.8%,因此不同位置使用相同的规则集得到的结果往往是不理想的。不同位置的局部动作识别准确率不同,主要是因为不同位置离震源的远近导致动作产生的振动幅度不同,理论上左上和右上、左下和右下属于对等位置,动作的识别准确率应相差较小,但由于睡姿不能保证对等位置离震源的距离相同,将会造成对等位置准确率相差较大,如表4中结果显示的准确率分别相差7.4%、4.8%。
由上述实验可得,不同节点位置若使用同一套规则,结果将会受到极大影响。如果不通过软件定义智能的方式,将需要对每个位置分别进行嵌入式开发,而不同位置均包含通用部分,重复开发将增加不必要工作量,而利用规则的灵活性,通过更新规则方案,可快速适应不同位置的变化,不需要重新编写新的代码,方便调试且不易产生故障。
应对节点数量变化
本节实验用于验证通过更新规则集的方式可提高系统在不同节点数量上的适应性。基于软件定义智能的动作识别系统只需给新节点增加相应的规则即可开始工作,所有节点均独立,不需要进行复杂的嵌入式开发,而传统的智能环境开发方法不仅需要重新设计功能算法,且必须将所有已安装的智能节点取下,重新烧录功能算法,然后将智能节点重新安装固定进行算法调试。因此,可通过直接增加新智能节点并导入相应规则进行实验。
使用如表3所示的规则DR1和DR2,DR1表示把不同节点的局部动作结论中动作概率最大的动作结论作为全局结论,DR2表示把不同节点的局部动作结论中动作概率总和最大的动作结论作为全局结论,按照节点编号的顺序添加新的节点设备,节点数量从1增加到5,每个节点导入对应规则集R1~R5,计算不同节点数量在两种规则下推理得到的总识别准确率(9种动作),实验结果如图8所示,结果保留1位小数。
根据上图实验结果显示,在应用规则DR1时,动作识别准确率随节点数量增加而上升,从1个节点增加到5个节点时准确率增加了8%;在应用规则DR2时,动作识别准确率也随节点设备数量增加而上升,从1个节点增加到5个节点时准确率增加了11.1%;当节点数量超过2个时,应用规则DR2的动作识别准确率均高于应用规则DR1时的识别准确率,在节点数量为5时,两种规则识别准确率相差3.1%;在应用规则DR2和节点数量为5时,识别率为98.9%,其规则集为{R1,R2,R3,R4,R5,DR1}。
由上述实验可得,由于节点数量增加可得到更多位置的振动信息,因此当节点数量增加时,系统动作识别的准确率也随之提高。通过比较在应用规则DR1和DR2时的动作识别准确率,可发现一个动作在多个节点概率相加的最大值(概率和)比单个节点动作概率的最大值更加有效,可更好的体现出动作发生时的整体性。
应对用户需求变化
本节实验用于验证通过更新规则集的方式可提高系统在不同用户需求上的适应性。当需求增加时,基于软件定义智能的动作识别系统可以快速响应,不需要把原来的节点设备拆下重新开发,只需要导入相应的规则,就能够快速实现新的需求。根据上组实验数据可知,通过规则集{R1,R2,R3,R4,R5,DR2}(记为RC1)可实现对9种常见睡眠动作的识别,且总识别准确率达到98.9%。假设用户增加新的需求,需要识别新的动作:上床动作(action_num=9)、下床动作(action_num=10)。首先需采集这两种动作的数据,将上床和下床动作记为1组,10人每人一组共采集10组,每个动作时长6s左右,将采集的数据按照8:2的比例用于规则的提取和推理引擎的测试,将该测试数据加上之前所采集9种常见动作的测试数据作为本节实验最终的测试数据。规则提取可以得到上下床的动作规则集r,把该规则集添加到RC1规则集中,得到规则集{R1,R2,R3,R4,R5,DR1,r}(记为RC2),计算上下床动作规则添加前后推理引擎得到的各种动作识别准确率,实验结果如图9所示,结果保留1位小数。
根据上图实验结果显示,在应用规则集RC1时,识别率最高的动作是头部微小移动和腿部抖动动作,识别率均为98.5%,识别率最低的动作是上床动作和下床动作,识别率均为0.0%;在应用规则集RC2时,识别率最高的动作是腿部伸展、头部微小移动、踢腿、腿部抖动、上床和下床动作,识别率均为100.0%,识别率最低的动作是脚部微小移动动作,识别率为96.7%。总体而言,在应用规则集RC2时除了脚部微小移动以外其它动作的识别准确率均高于应用规则集RC1时的动作识别准确率,两种条件下识别率相差最大的动作是上床动作和下床动作,均相差100%,识别率相差最小的动作是脚部微小移动动作,相差0%。头部微小移动的振动幅度比较小,腿部抖动的频率比较高,这两种动作与其它动作相比差异性更大,导致在两种规则集下它们的识别准确率均最高,而在应用规则集RC1时上下床动作识别率最低是由于规则集RC1中没有上下床动作识别的规则集,在应用规则集RC2时脚部微小移动动作识别率最低可能是由于该动作与某些动作相似,其特征不明显所致。由于规则集RC1中不包含上下床动作的规则集,系统将上下床动作误识别为其它动作,导致应用规则集RC2时识别准确率高于9种常见动作的识别准确率。
另外,基于动作识别的规则集RC2,加入不同的规则可以实现不同的用户需求,包括异常动作监测、用户在床状态监测,监测过程中通过系统的服务程序获取状态信息并进行响应控制。异常动作监测可通过表3中所示的规则AR1、AR2、AR3检测出异常动作予以警报。用户在床状态监测可通过表3中所示的规则AR4、AR5检测到上床动作判断用户为在床状态,检测到下床动作判断用户为离床状态。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。