具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A 和/或 B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参阅图1,本发明实施例提供一种体动伪迹信号的检测方法,包括的步骤如下:
S10:获取待检测的生命体征信号;
在本申请实施例中,所述体动伪迹信号的检测方法的执行主体为体动伪迹信号的检测设备(以下简称检测设备),检测设备可以是一台计算机设备,可以是服务器,或多台计算机设备联合而成的服务器机群。
检测设备可以通过在预设的数据库中进行查询,获取用户当晚的生命体征信号。检测设备也可以采用无扰式传感器实时采集用户当晚的生命体征信号。其中,无扰式传感器包括信号采集模块和数据存储模块。
具体地,信号采集模块放置于用户枕头下放,用户枕在枕头上入睡,用户由于心脏活动、呼吸活动等使身体产生微振,重心发生偏移,产生力信号。信号采集模块可将力信号转换为模拟电信号,随后通过内置的滤波电路、放大电路以及A/D转换电路,对模拟电信号进行滤波、放大、A/D转换变为采样率为1000Hz的数字信号,即为待检测的生命体征信号。其中,待检测的生命体征信号包括心冲击图信号、呼吸信号以及体动伪迹信号。
S20:对待检测的所述生命体征信号进行分窗操作,获得若干个生命体征信号片段;对待检测的所述生命体征信号进行去均值操作,获得去均值后的生命体征信号。
深度学习可以在一定程度上模拟人类学习“经验知识”,也就是模拟人类在某一尺度下对体动伪迹信号进行观测识别。对于深度学习模型而言,每次数据输入长度是固定的。在数据输入至深度模型之前,可以通过固定大小的滑动窗口对数据进行分割(分窗操作),获得固定长度的输入数据。
在本申请实施例中,对待检测的所述生命体征信号进行分窗操作,获得若干个固定信号长度的生命体征信号片段,以便将生命体征信号片段作为后续的预设的体动伪迹信号检测模型的输入数据。
由于BCG信号的个体差异性会导致不同的用户采集的BCG信号的幅值范围有所区别,无论是正常信号还是体动伪迹信号。因此,为了减少不同用户之间的BCG信号幅度范围上的差异性,尽可能保证不同用户之间正常信号和体动伪迹信号幅度波动范围相接近,对待检测的所述生命体征信号进行去均值操作,获得去均值后的生命体征信号。
S30:根据若干个所述生命体征信号片段以及预设的体动伪迹信号检测模型,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果。
在本申请实施例中,预设的体动伪迹信号检测模型为一深度学习模型,用于将生命体征信号片段识别为正常信号和体动伪迹信号。
其中,预设的所述体动伪迹信号检测模型的训练过程如下:获取样本数据集,其中,所述样本数据集包括样本生命体征信号片段以及对应的标签数据。将所述样本生命体征信号片段对应的时序特征向量和形态特征向量以及对应的标签数据输入至待训练的体动伪迹信号检测模型进行训练,得到预设的所述体动伪迹信号检测模型。
S40:根据去均值后的所述生命体征信号计算全局标准差和局部标准差,根据所述全局标准差、所述局部标准差、预设的全局阈值以及预设的局部阈值,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果。
在本申请实施例中,以1s为单位时间粒度,可以将去均值后的所述生命体征信号划分为多个生命体征信号单元,针对每个1s生命体征信号单元,计算生命体征信号幅度的标准差,获得全局标准差;分别计算当前1s生命体征信号单元往后的连续时间段内的生命体征信号幅度的标准差,获得局部标准差。根据所述全局标准差、所述局部标准差、预设的全局阈值以及预设的局部阈值,判断每个1s生命体征信号单元是否为体动伪迹信号,从而获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果。
S50:将所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行融合,根据融合后的体动伪迹信号检测结果获得待检测的所述生命体征信号对应的体动伪迹信号。
在本申请实施例中,生命体征信号片段与生命体征信号单元一一对应,将当前生命体征信号片段对应的所述第一体动伪迹信号检测结果和当前生命体征信号单元对应的所述第二体动伪迹信号检测结果进行融合,若所述第一体动伪迹信号检测结果指示为体动伪迹信号或所述第二体动伪迹信号检测结果指示为体动伪迹信号,则认为生命体征信号片段或生命体征信号单元为体动伪迹信号,从而最大程度提高体动伪迹信号的检出率。
应用本申请实施例,通过获取待检测的生命体征信号;对待检测的所述生命体征信号进行分窗操作,获得若干个生命体征信号片段;对待检测的所述生命体征信号进行去均值操作,获得去均值后的生命体征信号;根据若干个所述生命体征信号片段以及预设的体动伪迹信号检测模型,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果;根据去均值后的所述生命体征信号计算全局标准差和局部标准差,根据所述全局标准差、所述局部标准差、预设的全局阈值以及预设的局部阈值,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果;将所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行融合,根据融合后的体动伪迹信号检测结果获得待检测的所述生命体征信号对应的体动伪迹信号。本申请实施例通过预设的体动伪迹信号检测模型对待检测的生命体征信号进行体动伪迹信号和正常信号的初次分类,基于全局标准差和局部标准差的阈值对待检测的生命体征信号进行体动伪迹信号和正常信号的二次分类,将初次分类结果和二次分类结果进行融合,获取待检测的所述生命体征信号对应的体动伪迹信号,提高了体动伪迹信号获取的精度。
在一个可选的实施例中,所述步骤S10,包括步骤S101,具体如下:
S101:对待检测的所述生命体征信号进行降采样,去除降采样后的所述生命体征信号中的工频干扰以及高频噪声,获取处理后的生命体征信号。
在本申请实施例中,对待检测的所述生命体征信号进行降采样,具体地,对待检测的所述生命体征信号进行间隔采样,例如,每10个信号点采样一次,由于待检测的所述生命体征信号的采样率为1000Hz,从而获得降采样后采样率为100Hz的生命体征信号。
由于生命体征信号中存在工频干扰以及高频噪声等干扰,通过截止频率为15Hz的二阶巴特沃斯低通滤波器,去除降采样后的所述生命体征信号中的工频干扰以及高频噪声,获取处理后的生命体征信号。
在一个可选的实施例中,所述步骤S20中对待检测的所述生命体征信号进行分窗操作,获得若干个生命体征信号片段的步骤,包括步骤S201~S202,具体如下:
S201:根据预设的第二信号长度,对待检测的所述生命体征信号进行滑窗分割,获得分割后的生命体征信号。
S202:对分割后的所述生命体征信号进行Z-Score标准化操作,获得若干个生命体征信号片段。
在本申请实施例中,预设的第二信号长度为5s,将降采样以及滤波后的生命体征信号按顺序以1s为步进,滑窗分割成一个一个5s片段(包括500个信号点)。进一步地,对每个5s片段进行去均值和除以标准差的Z-Score标准化操作,获得若干个生命体征信号片段。其中,Z-Score标准化操作的计算公式如下:
其中,z是每个信号点经过Z-Score标准化操作后的信号幅度,x是每个信号点的信号幅度,
是5s片段内所有信号点的信号幅度平均值,
是5s片段内所有信号点的信号幅度标准差。
通过Z-Score标准化操作,使得每个信号点的信号幅度在0范围上下波动,且波动范围较统一,从而可以减少不同用户之间心冲击信号幅度范围上的差异性,尽可能保证不同用户之间正常信号和体动伪迹信号幅值波动范围相接近,但却不影响生命体征信号的时序特征和形态特征。
在一个可选的实施例中,请参阅图2,预设的所述体动伪迹信号检测模型包括门控循环单元和全卷积神经网络,所述步骤S30,包括步骤S301~S303,具体如下:
S301:将若干个所述生命体征信号片段输入至所述门控循环单元进行时序特征提取,获得若干个所述生命体征信号片段对应的时序特征向量。
门控循环单元(Gated recurrent unit,简称GRU)是一种常见的循环神经网络(Recurrent neural network,简称RNN)改进型,它是一种基于门的循环单元,包括更新门和重置门,更新门用于控制前边记忆信息能够继续保留到当前时刻的数据量,或者说决定有多少之前时间步的信息和当前时间步的信息要被继续传递到未来。重置门用于决定要忘记多少过去的信息,其控制当前信息和记忆信息的数据量,并生成新的记忆信息继续向前传递。
将若干个所述生命体征信号片段输入所述全卷积神经网络进行形态特征提取,获得若干个所述生命体征信号片段对应的形态特征向量,具体的公式如下:
其中,
是更新门当前时间步t的输出,
是重置门当前时间步t的输出,
是当前时间步t输入的生命体征信号片段对应的一维输入向量,
是上一时间步t-1的输出的形态特征向量,
是当前时间步t输出的中间结果,
是当前时间步t输出的形态特征向量,
是更新门的权重参数,
是重置门的权重参数,
是计算中间结果对应的权重参数,
是sigmoid 激活函数,
是tanh激活函数,[ ,]为向量拼接操作。
S302:将若干个所述生命体征信号片段输入所述全卷积神经网络进行形态特征提取,获得若干个所述生命体征信号片段对应的形态特征向量。
卷积神经网络(Convolutional Neural Network, 简称CNN)常用于图像和时间序列等对象的特征提取。全全卷积网络(Fully Convolutional Networks,FCN)由多层卷积块组成,这些卷积块可能具有不同或相同的卷积核大小。将若干个所述生命体征信号片段输入所述全卷积神经网络进行形态特征提取,获得若干个所述生命体征信号片段对应的形态特征向量,具体的公式如下:
其中,x表示生命体征信号片段对应的一维输入向量,
是一维卷积核的权重参数,b是偏置参数,
是卷积核的输出向量,
是对卷积核应用批量归一化操作后(BatchNormalization)的中间结果,然后将
传递给线性整流函数ReLU,以计算卷积核
的输出,获得形态特征向量。
S303:将所述时序特征向量和所述形态特征向量进行拼接,将拼接结果输入至全连接层以及softmax激活函数,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果。
在本申请实施例中,每个5s生命体征信号片段输入至预设的所述体动伪迹信号检测模型后,会返回一个二分类结果,即0和1,0对于正常信号,1对应体动伪迹信号。且前后两个5s生命体征信号片段在待检测的生命体征信号的位置上,每个5s生命体征信号片段的前4s与上一个5s生命体征信号片段是有交叠的,因此当前5s生命体征信号片段判别的是最后1s是否为正常信号或体动伪迹信号。
待检测的生命体征信号对应的若干个生命体征信号片段输入至预设的所述体动伪迹信号检测模型后,会输出N-4个分类结果,其中N为待检测的生命体征信号总长度除以采样率100Hz。对于第一个5s生命体征信号片段,令前4s的分类结果与第5s取相同的数值,从而得到待检测的生命体征信号中每个1s的分类结果,记作
,其中,
为每个1s的分类结果,n为待检测的生命体征信号中1s的总个数。
在一个可选的实施例中,请参阅图3,预设的所述全局阈值包括第一全局阈值和第二全局阈值,预设的所述局部阈值包括第一局部阈值和第二局部阈值,所述步骤S40,包括步骤S401~S408,具体如下:
S401:根据预设的第一信号长度,将去均值后的所述生命体征信号划分为若干个生命体征信号单元。
在本申请实施例中,预设的第一信号长度为1s,将去均值后的所述生命体征信号划分为若干个信号长度为1s的生命体征信号单元。
S402:计算每个生命体征信号单元的标准差,获得第一标准差集合。
计算每个生命体征信号单元的标准差,即每100个生命体征信号点计算一个标准差STD,获得第一标准差集合,记作STD_set(n)=[STD0,STD1,...,STDn-1],其中n=0,1,...,n-1,n为1s生命体征信号单元的总个数。
S403:计算所述第一标准差集合的中位数,将每个生命体征信号单元的标准差与所述第一标准差集合的中位数与所述第一全局阈值的乘积比较,获得第一比较结果;将每个生命体征信号单元的标准差与所述第一标准差集合的中位数与所述第二全局阈值的乘积比较,获得第二比较结果。
S404:根据所述第一比较结果和所述第二比较结果,获得若干个所述生命体征信号单元对应的第一分类结果;所述第一分类结果指示去均值后的所述生命体征信号是否为体动伪迹信号。
计算第一标准差集合的中位数,记作Median_STD。将第一全局阈值记为threshold1,将第二全局阈值记为threshold2,第一全局阈值大于第二全局阈值。对每个1s生命体征信号单元的标准差STDi作判断,判断每个1s生命体征信号单元是否为正常信号或体动伪迹信号。具体判断过程如下:
1、若STDi的值大于Median_STD*threshold1,则判断当前1s的STD_State= 1,STD_State指的是当前1s生命体征信号单元是否为正常信号还是体动伪迹信号,0为正常信号,1为体动伪迹信号。
2、若STDi的值小于Median_STD*threshold2,则判断当前1s的STD_State = 1。
3、若STDi的值大于等于Median_STD*threshold2且小于等于Median_STD*threshold1,则判断当前1s的STD_State= 0。从而获得的分类结果
,其中,
为每个1s的分类结果,n为待检测的生命体征信号中1s的总个数。
S405:计算每个生命体征信号单元之后的连续预设数量的生命体征信号单元的标准差,获得第二标准差集合。
在本申请实施例中,连续预设数量可以为30个、60个、120个和240个。计算当前1s生命体征信号单元之后的30s、60s、120s和240s范围内的每个1s生命体征信号单元的标准差,获得4个第二标准差集合。
S406:计算所述第二标准差集合的中位数,将每个生命体征信号单元的标准差与所述第二标准差集合的中位数与所述第一局部阈值的乘积比较,获得第三比较结果;将每个生命体征信号单元的标准差与所述第二标准差集合的中位数与所述第二局部阈值的乘积比较,获得第四比较结果。
S407:根据所述第三比较结果和所述第四比较结果,获得若干个所述生命体征信号单元对应的第二分类结果;所述第二分类结果指示去均值后的所述生命体征信号是否为体动伪迹信号。
对4个第二标准差集合,计算对应的中位数,分别记作Median_STD30、Median_STD60、Median_STD120和Median_STD240。将第一局部阈值记为threshold3,将第二局部阈值记为threshold4,第一局部阈值大于第二局部阈值。
以第二标准集合的中位数Median_STD30为例进行说明,对每个1s生命体征信号单元的标准差STDi作判断,判断每个1s生命体征信号单元是否为正常信号或体动伪迹信号。具体判断过程如下:
1、若STDi的值大于Median_STD30*threshold3,则判断当前1s的STD_State= 1,STD_State指的是当前1s生命体征信号单元是否为正常信号还是体动伪迹信号,0为正常信号,1为体动伪迹信号。
2、若STDi的值小于Median_STD30*threshold4,则判断当前1s的STD_State = 1。
3、若STDi的值大于等于Median_STD30*threshold4且小于等于Median_STD30*threshold3,则判断当前1s的STD_State= 0。从而获得的分类结果
,其中,
为每个1s的分类结果,n为待检测的生命体征信号中1s的总个数。
对于根据第二标准集合的中位数为Median_STD60、Median_STD120和Median_STD240来对每个1s生命体征信号单元的标准差STDi作判断,判断每个1s生命体征信号单元是否为正常信号或体动伪迹信号的过程与上述过程相同,在此不做赘述。
S408:对所述第一分类结果和所述第二分类结果进行取或运算,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果。
在全局标准差和局部标准差阈值判断结束后,得到了两个分类结果,分别为ch2_result1和ch2_result2,对两个分类结果取或运算,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果。
在一个可选的实施例中,请参阅图4,所述步骤S50,包括步骤S51~S55,具体如下:
S51:对所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行取或运算,获得融合后的体动伪迹信号检测结果。
S52:根据融合后的所述体动伪迹信号检测结果确定标签范围集合;其中,融合后的所述体动伪迹信号检测结果指示体动伪迹信号和正常信号,所述标签范围集合包括一个或多个标签范围,所述标签范围包括的一个或多个连续的体动伪迹信号。
S53:对所述标签范围集合中每个标签范围计算一阶标准差和二阶标准差,根据所述一阶标准差、所述二阶标准差、预设的一阶标准差阈值以及预设的二阶标准差阈值更新所述标签范围集合,获得第一标签范围集合。
S54:对所述第一标签范围集合中每个标签范围之前的连续两个正常信号、之后的连续两个正常信号分别计算标准差,根据计算的标准差结果更新所述第一标签范围集合,获得第二标签范围集合;其中,每个所述第一标签范围之前的所述连续两个正常信号以及之后的连续两个正常信号中有一个正常信号与每个所述第一标签范围相邻。
S55:将所述第二标签范围集合对应的体动伪迹信号作为待检测的所述生命体征信号对应的体动伪迹信号。
在本申请实施例中,为了防止融合后的体动伪迹信号检测结果将过多正常信号也包含进体动伪迹信号的标签范围内,造成过多的正常信号丢失,对融合后的体动伪迹信号检测结果进行标签范围内部二次分类以及标签范围外部缩窄。
其中,标签范围内部二次分类为第一次后处理,具体方法是将检出的标签范围再以1s单位时间粒度量化,取一阶标准差和二阶标准差,用于设定阈值判决,剔除不满足阈值的体动伪迹信号片段,仅保留符合阈值判决的体动伪迹信号片段,防止正常信号的多检;标签范围外部缩窄是第二次后处理,具体方法是取标签范围外前后正常信号的标准差,用于与标签范围头尾的体动伪迹信号片段进行比对,通过阈值判决,将阈值外的正常信号剔除,精炼缩窄标签范围,从而减少正常信号的多检情况。其中,标签范围外前后正常信号是指标签范围之前的相邻的第1s和第2s对应的正常信号,标签范围之后的相邻的第1s和第2s对应的正常信号。若当前标签范围之前不存在相邻的第1s和第2s对应的正常信号,或者,标签范围之后不存在相邻的第1s和第2s对应的正常信号,则可以不对当前标签范围进行第二次后处理。
在一个可选的实施例中,请参阅图5,所述步骤S52,包括步骤S521~S524,具体如下:
S521:遍历融合后的所述体动伪迹信号检测结果,获取第一个体动伪迹信号在融合后的所述体动伪迹信号检测结果中的第一索引,将所述第一索引乘以采样率,获得第一个标签范围的开始位置。
S522:从所述第一个体动伪迹信号开始,遍历融合后的所述体动伪迹信号检测结果,获取第一个正常信号之前的相邻体动伪迹信号在融合后的所述体动伪迹信号检测结果中的第二索引,将所述第二索引乘以采样率,获得第一个标签范围的结束位置。
S523:根据所述第一个标签范围的开始位置和所述第一个标签范围的结束位置,确定所述第一个标签范围。
S524:重复遍历融合后的所述体动伪迹信号检测结果,直至确定所有体动伪迹信号所在的标签范围为止,获得标签范围集合。
在本申请实施例中,将所述第一个标签范围记为label1=[locleft,locright],其中locleft为第一个标签的开始位置,locright为第一个标签的结束位置。重复遍历融合后的所述体动伪迹信号检测结果,直至确定所有体动伪迹信号所在的标签范围为止,获得标签范围集合,将所述标签范围集合记为labelall=[[locleft1,locright1], [locleft2,locright2],..., [locleftn,locrightn]],其中n为最终计算得标签的个数。
在一个可选的实施例中,请参阅图6,预设的所述一阶标准差阈值包括第一标准差阈值和第二标准差阈值,所述步骤S53,包括步骤S531~S536,具体如下:
S531:根据预设的第一信号长度,将所述标签范围集合中每个标签范围划分为若干个体动伪迹信号所在的子标签范围,计算每个子标签范围对应的标准差,获得每个标签范围的一阶标准差集合。
预设的第一信号长度为1s,即将每个标签范围划分为若干个1s体动伪迹信号片段所在的子标签范围,计算每个子标签范围对应的标准差,获得每个标签范围的一阶标准差集合,记为STD1_set(n)=[STD0,STD1,...,STDn-1],其中n=0,1,...,n-1,n为该标签范围的1s体动伪迹信号片段的总个数。
S532:计算每个标签范围的一阶标准差集合的标准差,获得每个标签范围的二阶标准差。
根据每个标签范围的一阶标准差集合中的STD0、STD1、...、STDn-1,计算每个标签范围的二阶标准差,记为STD2。
S533:计算每个标签范围的一阶标准差集合中最小标准差和第二小标准差的平均值。
根据STD1_set排序,计算一阶标准差集合中最小两位数的平均值,记为min2mean=( STDmin1+ STDmin2)/2,其中STDmin1为STD1_set中最小的标准差,STDmin2为第二小的标准差。其中,最小两位取平均的目的是防止标签范围内有异常的体动伪迹信号片段,导致标准差太小,影响后续筛选。
S534:遍历所述标签范围集合中每个标签范围,若当前标签范围的所述二阶标准差大于预设的二阶标准差阈值且所述平均值小于所述第一标准差阈值,将当前标签范围内每个子标签范围对应的标准差分别与所述第二标准差阈值比较,根据比较结果更新当前标签范围。
S535:若当前标签范围的所述二阶标准差小于或等于预设的二阶标准差阈值,或者所述平均值大于或等于所述第一标准差阈值,不更新当前标签范围。
S536:根据所述标签范围集合中每个标签范围是否已更新,获得第一标签范围集合。
将预设的二阶标准差阈值记为thr_std2,将第一标准差阈值记为thr1_min2mean,如果当前标签范围的二阶标准差STD2大于thr_std2,且min2mean小于thr1_min2mean,则认为当前标签范围离散程度足够(达到体动伪迹信号波动的严重程度)且存在正常信号,则进行下一步判断,否则认为当前标签范围内均为体动伪迹信号,不存在正常信号,无需下一步判断。
下一步判断具体过程为:对当前标签范围内的每个1s体动伪迹信号片段进行重新0和1的划分,设定min2mean的上限阈值thr2_min2mean,将当前标签范围对应的STD1_set每个STD值与上限阈值对比,如果小于thr2_min2mean,认为1s体动伪迹信号片段为正常信号,则当前1s的STD_Statei = 0;反之如果大于thr2_min2mean,认为该1s体动伪迹信号片段为体动伪迹信号,则当前1s的STD_Statei = 1。经过以上步骤,得到新的标签结果集合post1_result=[STD_State0,STD_State1,...,STD_Staten-1],其中n为1s的总个数。然后根据二值化标签转标签范围的方法,可得到更新后的当前标签范围,记为post1_labelall。根据所述标签范围集合中每个标签范围是否已更新,获得第一标签范围集合。
在一个可选的实施例中,请参阅图7,预设的所述一阶标准差阈值包括第一标准差阈值和第二标准差阈值,所述步骤S54,包括步骤S541~S546,具体如下:
S541:根据预设的第一信号长度,将所述第一标签范围集合中每个标签范围划分为若干个体动伪迹信号所在的子标签范围,计算每个子标签范围对应的标准差。
预设的第一信号长度为1s,即将所述第一标签范围集合中每个标签范围划分为若干个1s体动伪迹信号片段所在的子标签范围,计算每个子标签范围对应的标准差,获得每个标签范围的一阶标准差集合,记为STD1_set(n)=[STD0,STD1,...,STDn-1],其中n=0,1,...,n-1,n为该标签范围的1s体动伪迹信号片段的总个数。
S542:对所述第一标签范围集合中每个标签范围之前的连续两个正常信号对应的标准差求平均,获得第一平均值。
标签范围之前的连续两个正常信号是指标签范围之前的相邻的第1s和第2s对应的正常信号,计算每个标签范围外前面两个1s的标准差平均值STDleft2mean=(STDleft1+STDleft2)/2,其中STDleft1为标签范围外前面第一个1s的标准差,STDleft2为标签范围外前面第二个1s的标准差。
S543:遍历每个标签范围,将每个标签范围中第一个子标签范围对应的标准差与所述第一平均值与预设阈值的乘积比较,若当前标签范围中第一个子标签范围对应的标准差小于所述第一平均值与预设阈值的乘积,将当前标签范围中第一个子标签范围之后的相邻子标签范围对应的标准差与所述第一平均值与预设阈值的乘积比较,直至当前标签范围中子标签范围对应的标准差大于所述第一平均值与预设阈值的乘积为止,将当前标签范围中所述子标签范围确定为第二标签范围的第一个子标签范围。
在本申请实施例中,预设阈值记为thr_post2,将当前标签范围标准差集合STD1_set的第一个STD值与STDleft2mean * thr_post2比对,如果该STD值小于STDleft2mean *thr_post2,说明该1s体动伪迹信号片段在正常信号范围内,则当前1s的STD_Statei = 0,如果该STD大于或等于STDleft2mean * thr_post2,说明该1s体动伪迹信号片段超出正常信号范围,则当前1s的STD_Statei = 1,判断为体动伪迹信号。
将当前标签范围标准差集合STD1_set的第二个STD值与STDleft2mean * thr_post2比对,判断过程与上一步完全一样。一旦遇到STD_Statei = 1(判为心冲击伪迹)后,将当前标签范围中所述子标签范围确定为第二标签范围的第一个子标签范围,停止当前标签范围标准差集合正序的判断,开始逆序判断,即从最后一个开始,与当前标签范围外后面的标准差平均值判断。若当前标签范围标准差集合正序的判断过程中,不存在STD大于或等于STDleft2mean * thr_post2,则认为当前标签范围不属于第二标签范围集合。
S544:对所述第一标签范围集合中每个标签范围之后的连续两个正常信号对应的标准差求平均,获得第二平均值。
计算每个标签范围外后面两个连续1s的标准差平均值STDright2mean=(STDright1+ STDright2)/2,其中STDright1为标签范围外后面第一个1s的标准差,STDright2为标签范围外后面第二个1s的标准差。
S545:遍历每个标签范围,将每个标签范围中最后一个子标签范围对应的标准差与所述第二平均值与预设阈值的乘积比较,若当前标签范围中最后一个子标签范围对应的标准差小于所述第二平均值与预设阈值的乘积,将当前标签范围中最后一个子标签范围之前的相邻子标签范围对应的标准差与所述第二平均值与预设阈值的乘积比较,直至当前标签范围中子标签范围对应的标准差大于所述第二平均值与预设阈值的乘积为止,将当前标签范围中所述子标签范围确定为第二标签范围的最后一个子标签范围。
在本申请实施例中,将当前标签范围标准差集合STD1_set的倒数第一个STD值与STDright2mean * thr_post2比对,如果该STD小于STDright2mean * thr_post2,说明该1s体动伪迹信号片段属于正常信号范围内,则当前1s的STD_Statei = 0,如果该STD大于或等于STDright2mean * thr_post2,说明该1s体动伪迹信号片段超出正常信号范围,当前1s的STD_Statei = 1,判断为体动伪迹信号。重复上述操作,直至出现STD_Statei = 1,停止判断。当前标签范围标准差集合逆序的判断过程中,不存在STD大于或等于STDright2mean *thr_post2,则第二标签范围的第一个子标签范围作为第二标签范围的最后一个子标签范围。
S546:根据每个标签范围对应的第二标签范围的第一个子标签范围以及第二标签范围的最后一个子标签范围,获得第二标签范围集合。
将每个标签范围经过以上步骤处理,对每个标签范围进行精炼缩窄后,得到新的标签结果集合post2_result=[STD_State0,STD_State1,...,STD_Staten-1],其中n为1s的总个数。然后根据二值化标签转标签范围的方法,可得到更新后的当前标签范围,记为post2_labelall。根据每个标签范围对应的第二标签范围的第一个子标签范围以及第二标签范围的最后一个子标签范围,获得第二标签范围集合。
为了提高计算效率,将待测的生命体征信号都进行了十倍降采样,从1000Hz降到100Hz,因此计算的心冲击伪迹标签范围的开始位置和结束位置,也均是采用100Hz进行表征的,所以在标签最后进行输出之前,需要进行上采样,让标签用于原1000Hz条件下。具体地,将后处理完成之后的post2_labelall每个标签范围的开始和结束位置,乘以十倍,即为上采样之后的标签范围,记为final_labelall,用于最后输出。
相应于上述方法实施例,请参阅8,本发明实施例提供一种体动伪迹信号的检测装置8,包括:
生命体征信号获取模块81,用于获取待检测的生命体征信号;
生命体征信号片段获得模块82,用于对待检测的所述生命体征信号进行分窗操作,获得若干个生命体征信号片段;对待检测的所述生命体征信号进行去均值操作,获得去均值后的生命体征信号;
第一检测结果获得模块83,用于根据若干个所述生命体征信号片段以及预设的体动伪迹信号检测模型,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果;
第二检测结果获得模块84,用于根据去均值后的所述生命体征信号计算全局标准差和局部标准差,根据所述全局标准差、所述局部标准差、预设的全局阈值以及预设的局部阈值,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果;
体动伪迹信号获得模块85,用于将所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行融合,根据融合后的体动伪迹信号检测结果获得待检测的所述生命体征信号对应的体动伪迹信号。
可选的,所述生命体征信号获取模块81,包括:
降采样单元,用于对待检测的所述生命体征信号进行降采样,去除降采样后的所述生命体征信号中的工频干扰以及高频噪声,获取处理后的生命体征信号。
可选的,生命体征信号片段获得模块82,包括:
信号滑窗分割单元,用于根据预设的第二信号长度,对待检测的所述生命体征信号进行滑窗分割,获得分割后的生命体征信号;
标准化操作单元,用于对分割后的所述生命体征信号进行Z-Score标准化操作,获得若干个生命体征信号片段。
可选的,第一检测结果获得模块83,包括:
时序特征提取单元,用于将若干个所述生命体征信号片段输入至所述门控循环单元进行时序特征提取,获得若干个所述生命体征信号片段对应的时序特征向量;
形态特征提取单元,用于将若干个所述生命体征信号片段输入所述全卷积神经网络进行形态特征提取,获得若干个所述生命体征信号片段对应的形态特征向量;
向量拼接单元,用于将所述时序特征向量和所述形态特征向量进行拼接,将拼接结果输入至全连接层以及softmax激活函数,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果。
可选的,第二检测结果获得模块84,包括:
信号划分单元,用于根据预设的第一信号长度,将去均值后的所述生命体征信号划分为若干个生命体征信号单元;
第一标准差集合获得单元,用于计算每个生命体征信号单元的标准差,获得第一标准差集合;
第一比较结果获得单元,用于计算所述第一标准差集合的中位数,将每个生命体征信号单元的标准差与所述第一标准差集合的中位数与所述第一全局阈值的乘积比较,获得第一比较结果;将每个生命体征信号单元的标准差与所述第一标准差集合的中位数与所述第二全局阈值的乘积比较,获得第二比较结果;
第一分类结果获得单元,用于根据所述第一比较结果和所述第二比较结果,获得若干个所述生命体征信号单元对应的第一分类结果;所述第一分类结果指示去均值后的所述生命体征信号是否为体动伪迹信号;
第二标准差集合获得单元,用于计算每个生命体征信号单元之后的连续预设数量的生命体征信号单元的标准差,获得第二标准差集合;
第三比较结果获得单元,用于计算所述第二标准差集合的中位数,将每个生命体征信号单元的标准差与所述第二标准差集合的中位数与所述第一局部阈值的乘积比较,获得第三比较结果;将每个生命体征信号单元的标准差与所述第二标准差集合的中位数与所述第二局部阈值的乘积比较,获得第四比较结果;
第二分类结果获得单元,用于根据所述第三比较结果和所述第四比较结果,获得若干个所述生命体征信号单元对应的第二分类结果;所述第二分类结果指示去均值后的所述生命体征信号是否为体动伪迹信号;
第二检测结果获得单元,用于对所述第一分类结果和所述第二分类结果进行取或运算,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果。
可选的,体动伪迹信号获得模块85,包括:
取或运算单元,用于对所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行取或运算,获得融合后的体动伪迹信号检测结果;
标签范围集合确定单元,用于根据融合后的所述体动伪迹信号检测结果确定标签范围集合;其中,融合后的所述体动伪迹信号检测结果指示体动伪迹信号和正常信号,所述标签范围集合包括一个或多个标签范围,所述标签范围包括的一个或多个连续标签为体动伪迹信号;
第一标签范围集合获得单元,用于对所述标签范围集合中每个标签范围计算一阶标准差和二阶标准差,根据所述一阶标准差、所述二阶标准差、预设的一阶标准差阈值以及预设的二阶标准差阈值更新所述标签范围集合,获得第一标签范围集合;
第二标签范围集合获得单元,用于对所述第一标签范围集合中每个标签范围之前的连续两个正常信号、之后的连续两个正常信号分别计算标准差,根据计算的标准差结果更新所述标签范围集合,获得第二标签范围集合;其中,每个所述第一标签范围之前的所述连续两个正常信号以及之后的连续两个正常信号中有一个正常信号与每个所述第一标签范围相邻;
体动伪迹信号获得单元,用于将所述第二标签范围集合对应的体动伪迹信号作为待检测的所述生命体征信号对应的体动伪迹信号。
应用本申请实施例,通过获取待检测的生命体征信号;对待检测的所述生命体征信号进行分窗操作,获得若干个生命体征信号片段;对待检测的所述生命体征信号进行去均值操作,获得去均值后的生命体征信号;根据若干个所述生命体征信号片段以及预设的体动伪迹信号检测模型,获得若干个所述生命体征信号片段对应的第一体动伪迹信号检测结果;根据去均值后的所述生命体征信号计算全局标准差和局部标准差,根据所述全局标准差、所述局部标准差、预设的全局阈值以及预设的局部阈值,获得去均值后的所述生命体征信号对应的第二体动伪迹信号检测结果;将所述第一体动伪迹信号检测结果和所述第二体动伪迹信号检测结果进行融合,根据融合后的体动伪迹信号检测结果获得待检测的所述生命体征信号对应的体动伪迹信号。本申请实施例通过预设的体动伪迹信号检测模型对待检测的生命体征信号进行体动伪迹信号和正常信号的初次分类,基于全局标准差和局部标准差的阈值对待检测的生命体征信号进行体动伪迹信号和正常信号的二次分类,将初次分类结果和二次分类结果进行融合,获取待检测的所述生命体征信号对应的体动伪迹信号,提高了体动伪迹信号获取的精度。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,则本发明也意图包含这些改动和变形。