基于人脸视频的生理指标测量技术分享
一、背景
通过拍摄你的一段人脸视频,就可以测量出你的心率,甚至还可以获得你的呼吸率等生理指标,这种“黑科技”就是近年(本文首次发布时间:2021-12-03)来出现的 rPPG (remote photoplethysmography)技术。rPPG 技术主要是通过捕捉人脸表面由于心脏跳动所带来的皮肤颜色变化来实现对心率等生理量的测量,在健康监控等领域有着重要的应用价值。
二、算法原理
为什么可以通过人脸表面皮肤的颜色变化就能实现对心率的测量呢?这主要是因为在人脸皮肤的真皮层和皮下组织层里有着丰富的毛细血管。如图1所示,当心脏跳动时,毛细血管内的血流量会产生一个周期性的变化,从而导致对外界光照的吸收量有一个周期性的变化。这样的一个周期性变化虽然我们肉眼无法观察到,但是却可以被摄像头所捕捉。通过利用摄像头捕捉这样的皮肤颜色变化,就可以做进一步的生理指标测量了。
三、可测量生理量
通过利用rPPG技术实现对皮肤表面颜色变化的捕捉,不仅可以测量心率,还可以测量一系列其他的生理量。这一测量过程的核心的步骤为恢复出BVP(blood volume pulse)信号,即心率信号。
如图2所示,在通过人脸视频获得原始的颜色变化信号之后,首先可以直接利用不同颜色通道信号直流量和交流量的比值来估计血氧含量(SpO2)。而利用不同颜色通道信号的交流量,经过一定的方法,可以恢复出BVP信号。通过对恢复得到的BVP信号的频域特征进行分析,就可以得到心率和呼吸率。而通过对BVP信号进行时序上的峰值检测,可以获得IBI(Inter-beat-intervals),进而可以计算得到每个时刻的瞬时心率值。在IBI序列中,除了包含着瞬时心率的信息,还可以通过其频谱特征来计算呼吸率和对于睡眠监控、压力检测十分重要的心跳变异性等生理量。
四、现有方法总结
虽然可以通过人脸皮肤的颜色变化来实现心率等生理量的测量,但是这样的颜色变化十分微弱,很容易受到头部姿态,外界光照条件等因素的影响。如图3所示,为了解决这些问题,研究者们提出了一系列的方法,这些方法可以分为传统手工设计方法和数据驱动方法。其中传统手工设计方法主要通过建模人脸皮肤对于光照的吸收和反射情况,或者建模心率信号的物理特性,从而实现对周期性的生理信号的提取。而数据驱动的方式则通过设计相应的颜色变化信号的特征,利用机器学习或者深度学习的方式来学习一个良好的特征到生理量的映射。
传统手工设计方式的优势在于更加可控,在一些限定的场景下能够做到非常准确,但是其问题也在于对于非常复杂的场景,例如环境光照在一直变化,被试者一直摇头晃脑的情况,算法的有效性较为有限。而对于数据驱动的方法而言,其算法上限更高,对复杂场景的适应性更强,但同时,算法也更加不可控。如何采集足够的覆盖各种场景的数据,如何设计和训练一个能有效迁徙到各个应用场景的模型,在现阶段仍然是一个未解决的开放性问题。对相关方法更详细的介绍和讨论可以参考文献 [2]。
算法设计为了实现算法的可控性,我们选择基于传统的手工设计算法来恢复心率信号并进行心率的估计。在获得原始的 R/G/B 颜色空间信号之后,通过寻找最优的颜色空间投影来组合不同颜色空间的信号。这一方法能有效消除头部运动等因素所带来的不稳定,于此同时,我们还基于恢复的心率信号的质量,设计了信号的组合和算法的重启策略,从而让算法能够适应更多的应用场景.
参考文献
[1] Hao-Yu Wu, Michael Rubinstein, Eugene Shih, John Guttag, Fredo Durand, William T. Freeman. Eulerian Video Magnification for Revealing Subtle Changes in the World. ACM Transactions on Graphics 2012
[2] 牛雪松,韩琥,山世光. “基于rPPG的生理指标测量方法综述” 《中国图像图形学报》 2020