APP下载

基于自适应变分模态分解的视频心率检测算法

2022-06-10陈龙保欧卫华

关键词:变分人脸模态

陈龙保,欧卫华,韩 杰

(贵州师范大学 大数据与计算机科学学院,贵州 贵阳 550025)

0 引言

心率是指人在安静状态下每分钟心跳的次数,是人体健康状况的重要指标。传统心率检测方法需要皮肤接触(如心电图),易造成不舒适、不卫生等问题。视频心率检测是通过检测心跳导致的人脸表皮微弱颜色变化实现心率检测,属于无接触式检测方法,在远程医疗、情绪分析、活体检测等方面有广泛的应用前景[1-4]。

视频心率检测一般步骤如图1所示。首先通过人脸检测获取感兴趣区域(Region of interest,ROI);其次计算ROI像素的空间均值及滤波等预处理得到含有噪声的rPPG信号;然后,对rPPG信号进行分解、滤波等处理提取心率信号;最后通过功率谱分析计算心率。由于皮肤血管分布不均匀、心率信号微弱,以及光照变化、运动等因素影响[5],与接触式心率检测方法相比,视频心率检测的鲁棒性和准确性离实际应用仍然有一定差距。

图1 视频心率检测流程

目前视频心率检测方法主要有传统方法和深度学习方法两大类。传统方法的基本思想是构造模型解耦心率信号和噪声干扰。如主成分分析法[6]、色度特征法(Chrominance,Chrom)[7]、皮肤正交空间法(Plane-orthogonal-to-skin,POS)[8]等。这些方法通过建立皮肤光照模型,根据不同的先验知识,选择不同的投影方向将心率信号成份与噪声干扰分离[9]。但实际中心率信号非常微弱,同时受到光照、运动、被测试者与摄像头的距离、摄像头的帧速率和分辨率等诸多因素影响,仅仅通过固定投影难以将各种耦合信号进行分离。另外传统方法需要兴趣区域选择、滤波等预处理和后处理,需要调节的参数太多。

随着深度学习在计算机视觉、自然语言处理等诸多领域的成功应用,近年来研究人员提出了端对端的深度学习网络心率检测算法。如petlík等[10]提出HR-CNN网络,通过基于信噪比约束的二维卷积网络获取rPPG信号。考虑到异常光照和运动的影响,Chen等[11]引入注意力机制,通过构造学习时空信息特征图,提出了DeepPhys方法。为了能够更好的表示颜色变化信息,Niu等[12]将RGB信号转换到YUV空间,提取心率的变化信息,将其转化为时空图进行心率的检测。以上方法使用2D卷积,为了解决2D卷积不能提取视频时间信息,Artemyev等[13]提出使用3D时空卷积,提取视频在时间和空间上的多重特征,利用丰富的特征信息提取rPPG信号。为了解决视频压缩对心率检测的影响,Yu等[14]提出了rPPGNet方法,通过使用3D卷积增强视频恢复rPPG信号。深度学习方法在现有公开数据集上获得了较传统方法更准确的检测结果,但模型复杂、计算量大,且模型泛化性弱、缺乏可解析性。

Demirezen等[15]利用非线性模态分解进行心率信号的提取,并取得了不错的效果。但如何选择合适的模态数是算法有效的关键。选择模态数过多会引起过分解,产生虚假信号对信号的合成造成干扰;过少会引起欠分解,导致信号分解不够充分,出现模态混叠现象。欠分解现象如图2所示,若分解模态数选择固定值4时,合成的心率信号与PPG信号存在较大偏差,且存在噪声残余,表明欠分解未有效去除噪声干扰。

图2 欠分解示例

事实上,每个人的心率信号具有不同的特点,同时易受实际环境中运动、光照等影响[16],如何自适应的选择分解模态数是算法鲁棒的难点。针对上述问题,本文设计了基于自适应变分模态分解的心率信号提取算法。具体来说,首先将rPPG信号进行经验模态分解获取信号模态数;然后进行变分模态分解为不同频率和带宽的模态;最后根据模态的中心频率和心率频率范围合成心率信号。

1 相关工作

1.1 皮肤光照反射模型

视频心率检测的依据是心跳引起血液流动导致人脸表皮发生微弱颜色变化,该颜色变化中蕴含了心率信息。具体的皮肤光照反射模型如图3所示,光源照射在人脸表皮,一部分经过镜面反射直接被摄像头采集,而另一部分渗透真皮和皮下组织,经过血液吸收后反射回来形成漫反射。由于血液流动改变光的吸收量造成漫反射光有微弱的差别,因此漫反射光中含有心率信息。具体的皮肤光照反射模型如公式(1)所示。

图3 皮肤光照反射模型

Ci(t)=I(t)*(Ss(t)+Sd(t))+Sn(t)

(1)

其中,Ci(t)为第i通道t时刻的像素值,I(t)为光照强度,Ss(t)为镜面反射部分,Sd(t)为漫反射部分,Sn(t)为量化噪声。基于皮肤光照反射模型的心率信号提取方法的基本出发点是设计算法去除镜面反射部分和光照强度,从Sd(t)中提取心率信号。

1.2 变分模态分解

变分模态分解是Dragomiretskiy等[17]在2014年提出的一种信号分解方法,其目标是将一个输入信号分解为若干不同的模态,每个模态具有不同的中心频率和带宽。

具体地,通过搜寻约束变分模型的最优解来自适应分解信号。每个模态的中心频率和带宽在求解过程中不断迭代更新,最终根据信号的频域特征将信号分解为不同的频率和带宽的子信号。其约束变分模型如式(2)所示:

(2)

其中,x为rPPG信号,uk(k=1,2,3,…,K)表示分解后模态的集合,ωk(k=1,2,3,…,K)为对应模态中心频率的集合,δ(t)为冲激函数,∂t为对时间求偏导。

约束变分问题不易求解。因此,通过Lagrange乘子法将约束变分模型转化为非约束变分模型,如式(3)所示。

(3)

然后利用交替方向乘子法[18]求解上述非约束变分模型,在频域内迭代更新子信号和中心频率,其表达式如式(4)、(5)所示:

(4)

(5)

2 自适应变分模态分解心率检测算法

2.1 算法流程

自适应变分模态分解算法流程如图4所示,主要包含4个步骤。第一步对输入的视频帧进行人脸检测和皮肤检测;第二步选择人脸区域的皮肤像素作为ROI,计算ROI的像素平均值归一化后作为源信号;第三步利用自适应变分模态分解算法分解源信号,得到不同的频率和带宽的子信号;第四步根据心率频率范围选取子信号合成心率信号,对心率信号进行功率谱密度分析计算心率。

图4 算法流程

2.2 人脸检测和皮肤检测

ROI的选择是视频心率检测算法鲁棒的关键步骤,而人脸检测是选择合适ROI的重要前提。随着计算机视觉技术的发展,人脸检测技术已经比较成熟,有多种不同的人脸检测算法可供使用。考虑到运行效率和鲁棒性,本文采用Dlib工具箱中人脸检测器进行人脸检测和特征点定位[19]。兴趣区域选择的出发点是保证所选区域有较丰富的心率信号。但实际中人脸皮肤血管分布不均,且人脸表面存在刘海、眼镜等干扰因素影响。因此有效去除干扰区域是保证信号质量的关键。皮肤检测的目的是去除人脸区域的非皮肤像素。考虑颜色特征在YCrCb颜色空间表示更合适,因此先将RGB空间转换到YCrCb空间。具体流程如图5所示。首先,检测视频帧中的人脸;接着依据公式(6)将RGB颜色空间转换到YCrCb颜色空间;然后根据肤色范围形成人脸皮肤掩码;最后把掩码下人脸图像作为兴趣区域。

图5 皮肤检测流程图

(6)

人脸检测及皮肤检测结果如图6所示,其中,(a)为Dlib人脸检测器检测人脸81个关键点,(b)为皮肤检测结果,白色区域为皮肤像素,黑色区域为非皮肤像素。从图中可以看出,皮肤检测有效地去除了人脸区域的非皮肤像素,保障了原始rPPG信号的质量。

(a) (b)

2.3 源信号计算

心跳引起的颜色变化极其微弱,且易受皮肤镜面反射和运动等噪声的影响。为此,采用ROI空间像素均值和通道归一化计算源信号。

首先,对每帧视频中的皮肤像素在空间上按式(7)计算均值。然后,在时间上按式(8)[7]方法进行归一化以消除信号中的直流分量。

(7)

(8)

考虑到运动对心率信号的影响较大,事实上运动干扰影响所有通道,而心率信号在每个通道的强弱不同。血液中的血红蛋白对绿光有较强的吸收,红光次之[20]。因此,归一化的绿色通道信号和红色通道信号的比值受运动的影响较小,可以提高rPPG信号质量,如式(9)[7]所示。

(9)

2.4 自适应变分模态分解

EMD算法[21]能够自适应对信号进行循环迭代分解,其目标是把混合信号x分解为n个模态,n个模态分别为n-1个子信号和1个残差项。其目标函数如式(10)所示。在变分模态分解中,变分问题的约束条件为所有模态可以重构源信号。因此,本文在求解变分模态分解时,考虑引入EMD的模态数,解决变分模态分解需预设模态数问题。

(10)

考虑到每个人的心率信号分布在不同的频率,且受到不同噪声的影响。在针对不同的人进行心率检测时,应当能够自适应分解为合适的模态数。基于以上分析,本文设计一种自适应变分模态分解算法,具体步骤如下:首先,对提取到的rPPG信号自适应进行经验模态分解,获得信号的模态数。然后,将经验模态分解的模态数作为变分模态分解的模态数K,对rPPG信号进行自适应变分模态分解。

算法1 自适应变分模态分解

1.IMFs = EMD(rPPG).decompose();//对rPPG信号进行经验模态分解

2.IMFs_num = len(IMFs[:,0]);//获取经验模态分解的模态数

3.U,U_f,C_f = VMD(rPPG,K = IMFs_num);//对rPPG信号进行变分模态分解,获取信号的模态和中心频率

自适应变分模态分解结果如图7所示。其中(a)为原始rPPG信号,(b)为变分模态分解后得到不同频率和带宽的模态,分解结果按照频率由低到高依次排序。

图7 变分模态分解示意图

2.5 心率信号合成和功率谱分析

心率频率范围为0.75~4 Hz,对应的心率为45~240 bpm。rPPG信号经变分模态分解后得到不同中心频率的子信号,根据每个子信号的中心频率和心率频率范围选取子信号合成心率信号。然后对心率信号进行功率谱分析计算心率,以最大功率对应的频率作为心率的频率(fHR)。计算公式如式(11)[22]所示。

HR=fHR×60

(11)

合成心率信号和PPG信号对比如图8所示,合成心率信号除存在时间偏移,基本上与PPG信号波形一致,表明本文方法所合成的心率信号较准确。功率谱分析结果如图9所示。

图8 合成心率信号与PPG信号对比图

图9 功率谱分析

3 实验及结果分析

3.1 数据集和评价指标

1)PURE数据集[23]:该数据集由10名受试者(8男2女)在6种不同状态下录制60个视频,6种状态分别为:Steady,Talking,Slow Translation,Fast Translation,Slow Rotation and Medium Rotation。视频的分辨率为640×480,帧速率为每秒30帧,视频存储格式为png。真实心率的测量使用采样率为60 Hz的脉搏血氧仪收集。

2)UBFC数据集[24]:该数据集包含42名受试者录制自然状态下的42个视频,受试者录制视频的同时配戴脉搏血氧仪指夹传感器(Contec Medical CMS50E)用于真实心率的采集。视频的分辨率为640×480,帧速率为每秒30帧,视频时长为1 min。受试者距离摄像机1 m,视频采集设备为Logitech C920 HD Pro,存储格式为无压缩的8位RGB格式。

PURE和UBFC数据集部分样本图片如图10所示,第一行为UBFC数据集,第二行为PURE数据集。

图10 数据集部分样本图片

本文采用平均绝对误差(Mean absolute error,MAE)和均方根误差(Root mean square error,RMSE)作为算法的评价指标。平均绝对误差衡量检测结果和真实值之间的绝对误差,均方根误差衡量算法的精度。计算公式分别如式(12)、(13)所示。

(12)

(13)

其中,N为检测的样本总数,HR(T)为第T个样本检测心率值,HRtrue(T)为第T个样本真实心率值。

3.2 实验设置

本文在PyCharm平台Python 3.7环境下进行实验,实验设备CPU为Intel(R)Core(TM)i7-6500U,显卡为NVIDIA GeForce 940M。

本文皮肤检测采用YCrCb颜色空间阈值检测,其中YCrCb颜色空间阈值设置为0

变分模态分解算法中惩罚因子α设置为2 000。PURE数据集进行检测时使用视频的所有帧,UBFC数据集选取每个视频1 200帧。

3.3 皮肤检测实验结果

皮肤检测采用YCrCb颜色空间阈值检测,并对比了无皮肤检测和HSV颜色空间阈值检测方法。其中,信号分解算法为本文所提自适应变分模态分解方法,实验结果如表1~表3所示。由表1~表3结果可见,YCrCb颜色空间的检测结果优于HSV颜色空间和未做皮肤检测的结果。在PURE数据集的Steady状态和Slow Translation状态下,YCrCb颜色空间的检测结果较HSV颜色空间检测结果差。原因是空间阈值皮肤检测方法较简单,在出现不同强度的光照和伪影时,皮肤检测结果可能影响原始rPPG信号的提取。

表1 PURE数据集皮肤检测对比结果(MAE/bpm)

表2 PURE数据集皮肤检测对比结果(RMSE/bpm)

表3 UBFC数据集皮肤检测对比结果

3.4 心率检测实验结果分析

为了验证本文方法的有效性,选择与EMD、ICA、Chrom、POS、rPPG-NMD、PBV、LGI等方法进行比较[3,6-8,15,25-26]。为了保证实验结果的客观公正,文中所对比的方法均采用同一种人脸检测器和皮肤检测方法。

PURE数据集实验结果如表4和表5所示。结果可知,本文所提方法优于基于模型的方法和EMD方法。在Talking状态下,平均绝对误差和均方根误差均较大,原因是说话时人脸皮肤存在褶皱,造成提取到的rPPG信号质量较差。在Fast Translation状态下,由于快速旋转,数据帧变得模糊,微小的颜色变化被模糊干扰,提取到的原始rPPG信号受干扰影响较大,造成实验结果误差较大。在Slow Translation状态下,本文方法和文献[8]方法的均方根误差相同,表明在该状态下,2种算法的鲁棒性非常接近。在Medium Rotation状态下,文献[7]和文献[8]的方法优于本文方法,表明中度旋转噪声的频率与心率信号的频率相近,通过自适应变分模态分解后合成的心率信号仍含有噪声,本文方法不能很好的去除中度旋转噪声。PURE数据集检测结果与真实值间的相关性如图11所示。

表4 PURE数据集平均绝对误差(MAE/bpm)

表5 PURE数据集均方根误差(RMSE/bpm)

图11 PURE数据集检测结果相关性示意图

UBFC数据集实验结果如表6所示。由表可知,本文的方法优于其他对比方法。文献[3]的方法进行心率信号合成时去掉2个高频噪声和残差分量。经验模态分解得到的不同模态并非频率固定,因此,去掉的高频中可能含有心率信号。本文的方法得到具有物理意义的模态,频率相对较为集中,因此获得较好的结果。UBFC数据集检测结果与真实值间的相关性如图12所示。

表6 UBFC数据集检测结果

图12 UBFC数据集检测结果相关性示意图

4 结语

本文针对心率信号提取算法鲁棒不强的问题,提出了一种自适应变分模态分解算法。首先,采用EMD自适应分解rPPG信号获得信号模态数,将其作为VMD算法的模态数进行信号分解,对分解后的信号根据心率频率范围和中心频率提取心率信号。最后进行功率谱分析计算心率。

在公开数据集PURE和UBFC上实验结果表明,YCrCb颜色空间阈值皮肤检测方法对于光照具有较高敏感性,可以进一步研究光照变化,采取更加鲁棒的皮肤检测方法。对比经验模态分解、基于模型的信号提取算法具有更高的准确性。未来的研究将注重在运动噪声对心率信号提取的影响,提高运动情况下的算法鲁棒性。

猜你喜欢

变分人脸模态
基于BERT-VGG16的多模态情感分析模型
多模态超声监测DBD移植肾的临床应用
有特点的人脸
一起学画人脸
逆拟变分不等式问题的相关研究
求解变分不等式的一种双投影算法
带椭球势阱的Kirchhoff型方程的变分问题
三国漫——人脸解锁
车辆CAE分析中自由模态和约束模态的应用与对比
基于变分水平集方法的数字图像分割研究