各种智能手表/智能手环的心率监测功能精准度怎么样?都有哪些技术在里面?

众所周知心率是运动中极其重要的一项指标,各种智能设备相继推出了心率监测功能,它的准确度如何?用到了哪些技术?有哪一些优缺点?
关注者
3,388
被浏览
2,090,390

86 个回答

前两天接到知乎的通知这篇回答会被转载到外网,做了一定修订。以下是正文:


目前已经被可穿戴设备商用的,或者有一定潜力被商用的非侵入式心率测量有几种方法:光电体积(PPG)法,心电信号(ECG)法,动脉血压法,视频法,除此之外还有一些缺乏产品级应用的测量方法,我也会在未来慢慢补充。

1)光电体积(PPG)法是目前产品化最广泛的一种方法,相比其他测量方法,PPG最大的优点就在于这种方法对传感器与皮肤的接触要求非常低,哪怕是宽松到传感器与皮肤没有直接接触,中间有一定的空气间隔,传感器仍然能够获得比较理想的信噪比,这点优势在产品实际使用环境中非常显著,因为太紧密的传感器接触给人会带来明显的不适感和压迫感,用户非常偏爱可以宽松佩戴的可穿戴设备。

1-1)PPG的基本原理:传感器先发射某种波长的光(测量心率时一般是用绿光),然后用光电二极管测量反射/透射的光的强度。因为人体的皮肤,骨骼,肉,脂肪等对光的反射/透射是固定的,毛细血管脉和静脉的容积也不随着脉搏变化,以上对光的反射强度均是相对固定的值,只有动脉容积的一部分血液会随着脉搏不停变换涨落,这部分血液对光的反射是波动值。这个波动的频率就是脉搏,一般跟心率是一致的,所以这个波动值是我们最关心的信号。如下图所示:

固定值从下到上分别是骨骼与组织,毛细血与静脉血,动脉的本底容积,最上是变化值:动脉的变化容积

这个波动变化值相对固定值非常小,是根据具体佩戴的位置(血管丰富程度与血管埋藏的深度等),具体的佩戴方式(紧密贴合还是中间有一定空气间隙),以及测量使用的波长(绿光还是红光还是红外光)不同, 一般是1:50:到1:400左右。但是现代的高精度数模转换器已经足够精确地识别这个微小地变化量了。下图是一个非常典型的,对变化值部分做了夸张处理的PPG信号:

红线:红光;黑线:红外光。红光随着脉搏波动的变化量大于红外

1-2)讨论一些产品级的技术细节:一个典型的PPG传感器由3部分电路构成:LED,光电二极管,和信号处理/补偿电路。手表手环等C端的产品的上游会有几家大的PPG 传感器供应商,各类琳琅满目的产品大部分都基于这几家有限的传感器供应商,当然技术实力特别强大的Apple之类的巨头公司会自己内部从头优化设计,这又是另当别论。

1-2-1)LED: LED各家产品的区别不会特别大,主要是光的波长选择的区别,一般来说,

1-2-1-1)因为血液对光的反射率在570nm到600nm(黄光)之间会出现剧烈变化,波长低于黄光的光(绿蓝紫,紫外)反射率比较高,而高于黄光的光(橙红,红外)反射率相对不太高。绝大多数手环手表都是测量反射光而不是透射光,那么低于黄光的光可以获得比较好的信号,就我们实际产品开发中的经验来说,前后两者的信噪比差距会达到2到6倍。

1-2-1-2)但是相应的,波长越低,LED所需要的电压越高,获得相同强度的光需要功耗也越高。产品的功耗也是一大设计考量,所以不能无限度地追求低波长。这是发光二极管LED的物理特性决定的:波长越短,能量越高,激发它所需的最低电压也越高。

结合1-2-1-1)和1-2-1-2)的限制,一般就选取略低于黄光波长的光,也就是绿光。市面上大部分仅测量心率的手环手表产品,都是用的绿光。也有少部分产品看起来是红光,其实这种产品是红光+红外,只是红外光看不到。此类产品往往会同时测量血氧和心率,而血氧测量必须同时使用红光和红外,并行地用红光或者红外也可单独计算出心率。虽然红光红外测得的心率信号信噪比不如绿光,但是也在可容忍的范围之内,出于省电的考虑,就不另外再加绿光了。另外绿光还有一个缺点是对深色皮肤的人效果很差,信号不太好,而红外表现更好一点,当然这个考虑主要是基于美国市场了,中国市场的消费者肤色比较接近,都比较浅。

1-2-2)光电二极管,测量反射/透射的光。这个部分不同供应商是有一定技术代差的,越好的光电二极管对光子越敏感,所以在相同LED激发电流和光强的情况下,光电二极管接收到的信号越强,信噪比越好,功耗也有更大优化空间。这个部分我写得有点犹豫,就不展开评价产品/供应商了。

1-2-3)信号处理与补偿电路,一般主要补偿环境光信号与运动噪声

1-2-3-1)因为人类生活的环境中也有很强的光信号,有的环境光信号甚至比LED本身激发的光强数量级,比如太阳光。特别是当使用者非常宽松地佩戴手环手表时,漏进来的环境光信号会淹没LED激发的信号光,所以需要传感器本身能够补偿/滤去这种环境光,这个层面上,不同传感器供应商的解决方案有一定的差距,但不大。

1-2-3-2)当使用者处在运动状态中时,那么皮肤与传感器往往也有相对运动(除非传感器与人体紧密贴合,而这一点又是消费者所不喜的),这会引入比1-1)中所叙的变化值大很多的噪声。通行的做法是在PPG传感器旁边放一个加速度仪,然后采集运动运动状态来补偿消去这个噪声。这个层面上,不同传感器供应商的解决方案基本是差不多的。

1-3)PPG心率测量精确度与其在手表手环的其他应用:FDA对可穿戴设备测量的各种生理信号做了分类,PPG心率信号测量管理一般是归在general wellness类别,FDA不会太仔细检查这个类别中的产品。PPG心率测量精确度的标准是各个公司自己定的,FDA也没有给统一的标准。大家一般通用的标准是,几个使用场景中(跑步,坐下,躺倒,骑车,走路等),+/- 10bpm误差之内都算作“准确“(用基于ECG的产品作为标准,下文会介绍);90%的数据点需要落在”准确“的范围内。其实就我内心来说觉得这个标准是有点坑爹,这个”准确“的范围也未免太宽了吧,因为正常人的静止心率范围也就60到80bpm。。。不过实际上市面上的产品(apple watch为例)表现是远高于这个标准的,它们基本可以以90%的概率落在+/-2bpm的范围内,或者98%的概率落在+/- 10bpm范围之内。

而上文所提及的基于PPG的血氧测量则是归在是二类医疗器械中,要通过FDA审批相对麻烦一点,FDA对精确度也有统一标准,所以做这个功能的手环手表相对少,但是技术本身是相当成熟了。基于PPG还可以测量血压,直到现在(2019年11月),我所知道的学术界和工业界的普遍认知还是这类产品商业化还不够成熟,血压趋势可能还有点戏,但是绝对血压还差得远。但是上个月我听说了一个令人震惊的消息,Biobeat的基于PPG的绝对血压产品通过FDA了!我那天愣是半天说不出一句话,FDA官网消息如下:

声明一下,我这不是打广告,这家公司的产品市面上也买不到。只要是做这方面研究的同学都能理解我震惊的心情。因为血氧和血压都不是这个问题所要讨论的,未来有空我再另外开一篇回答在其他相关问题下。

2)心电信号(ECG)法是最精确的一种测量方法,是作为gold standard为其他心率测量提供参考的。目前主要被应用在一些与剧烈运动配合的心率测量产品,例如锻炼时使用的心率带。

心脏窦房结有节律地控制心脏收缩舒张从而向躯干泵血。这个控制信号是一个电信号(人体神经信号在神经上都表现为电信号),会逐渐扩散到体表,可以在皮肤通过电极测量。大家去医院一般用的心电仪就是采用这个原理。这个节奏就是心率,除此之外,心电信号还可以为医生诊断提供很多参考信息。

这个方法在实际落地成为手环手表产品有2个问题:

2-1)心电信号的强弱直接取决于皮肤电极的输入电阻,而输入电阻直接取决于电极与皮肤的接触情况。如果这个输入电阻太大,那基本采集不到信号。为了降低输入电阻,采集到足够强的信号,我们可以:

2-1-1)涂凝胶在电极与皮肤之间,也就是用湿电极,这个做法在医院心电监护仪用用没问题,但是日常佩戴消费者吃饱了撑的愿意接受一款黏糊糊的可穿戴设备。

2-1-2)不涂凝胶,也就是干电极,但是紧紧地把电极与皮肤贴合在一起,这个做法就是目前心率带的方案,但是正如上文所叙,这种压迫感会让佩戴者不那么舒服,不愿意接受24小时佩戴。另外这种方法的信号强度是不如2-1-1)的,我看到这类产品的讨论论坛上有分享的trick,当信号不好时涂口水上去。。。。anyway口水是一种不错的凝胶替代品了。。

2-2) ECG本质上是测量心电信号沿着人体分布的两点不同位置的电势差,为了获得尽量强的信号,这两点之间相对心脏的距离和角度的差距就必须足够大,一般距离需要分米级才够。心率带一般是佩戴在胸部或者腹部,两个电极之间距离往往是够用的,而手表手环的物理尺寸限制了其产品最远两点往往也不够分米级。Apple watch讨了一个巧,让非佩戴手去接触apple watch的旋钮也就是电极A,测量非佩戴手指尖的电势,而apple watch背部是电极B,测量佩戴手腕部的电势,这样两个电极的距离实际上是从佩戴手的腕部到非佩戴手的指尖,距离达到了米级。

3)血压法这其实是最古老的方法,中医的诊脉。在手腕或者颈部两侧,都可以经皮肤摸到动脉的压力有规律地涨落。通过压力传感器可以将这个信号变成心率。上个世纪90年代一度非常火,一些日本科学家非常热衷于这个方法,希望落地到具体产品,结果显而易见,失败了。问题主要在于脉搏点的寻找,压力选择,精确度和佩戴舒适度。

3-1)脉搏点的个体差异是存在的,而可穿戴设备往往需要用户自己佩戴,而用户是缺乏专业训练的,一般人很难把传感器刚好对准脉搏点,除非你把传感器做得非常非常大,可以覆盖整个脉搏点可能出现的位置。

3-2)压力的选择。这个方法需要外加一个有限度的力量到动脉,既不太大,不会完全遏制血流流动,也不太小,要足够动脉血管产生一定形变,而这个所需压力的个体差异很大。这对有经验的老中医来说问题不大,人类的手是一个非常精确敏捷的工具,但是对于仪器来说就很头大。之前科学界提供的解决方案是放一个快速的伺服电机来控制压力,控制算法的难度和整个系统的复杂度都非常之高。

3-3)克服了那么多的困难,最后大家发现这个系统的精确度跟PPG菜鸡互啄,不如心电法,但是佩服舒适度又被PPG吊起来打,两头都不沾,所以基本就被商用可穿戴设备放弃了,这个方法只在医院中的病床侧的心率血压监测有一定应用,原因是这个方法可以提供无创连续的血压监测,在PPG测血压法成熟之前,这是印象里唯一的可连续监测无创监测血压的办法。袖带法测血压不是严格意义上的”连续测量“。

4)视频拍摄法是不需要任何附加硬件的一种测量方法,只需要几乎每个人都有的智能手机。App store也有大量收费的免费的APP。

4-1)打开视频拍摄测心率的APP,APP会直接调用手机摄像头拍摄人的面部的视频,持续一定时间:5秒到30秒,之后这段视频的每个frame会分离出RGB分量,每个颜色分量的绝对值会随着心跳而变化,这个因为一般情况下周围环境提供的可见光光变化是不大的,而面部皮肤下有丰富的血管,其反射/吸收的可见光会随着动脉血的涨落而变化,手机摄像头获得光强也随之变化。究其原理跟PPG是非常相似的。

4-2)这个方法的优点显而易见,缺点也很明显:需要人手持手机一直对着面部,不太符合我们通常认知的“可穿戴设备”的使用场景。另外因为信号质量也不太好,所以一般要通过ICA之后去频域找信号,这使得每次测量必须采集足够长时间的信号,这跟前三种方法可以直接在时域里找信号相比,需要等待较长时间才能看到心率信号。

5)超声测量法。这种方法的原理也是与PPG相似的,射入某种波长的机械波(PPG是电磁波),测量反射信号的随心率的涨落。超声/多普勒测量心率法最广泛的产品落地在未出生的婴儿的心率监测:胎心仪。技术上是可以小型化成可穿戴手环/手表给成人使用,但我没有看到市面上有此类产品问世。我跟同事讨论过可能的技术瓶颈,但是我自己捣鼓过一些prototype,我觉得这些瓶颈技术上都是可以克服。可能的技术瓶颈如下:

5-1)小型化难度。

TBD。。

看到楼上有PhD从技术角度作答,同为EE的PhD,我也从技术角度回答一下。

(1) 我不赞同 @王法同学将 photoplethysmography (PPG)/光电体积信号 的心率估计分为血氧法和光电体积法。因为不存在所谓的血氧法。。。。

我们讨论的血氧含量一般指动脉中的血氧含量,正常人的范围是从95%到100%。这个参数不会随心率产生周期性变化。这是因为动脉中始终流淌着尚未给组织供氧的含氧的血,这些血的含氧量主要有心肺来决定,而给组织供氧后含氧量减少的血会进入静脉。

@超哥 提到的,随心脏泵血呈现周期性变化得是PPG的接收器(detector)接收到的光强度。这个光强度表征的是所测量位置的血管里的血液体积随心脏泵血的变化。也正是这种血液体积的周期性变化构成了一切利用PPG信号来进行心率估计的基础,无论你利用的是什么光(绿,红,红外)。如图1所示,这是典型的PPG信号,一般都是通过计算相邻周期内特征点间(最简单的比如峰值间)的距离来实现心率估计。

图1 典型的PPG 信号




(2) 我不赞同 @王法提到的 “至于用绿光的原因,真正原因是绿光对外界温度变化造成的信号漂移是最小的 “

As far as I know, 选择绿光的最大原因是基于信噪比的考虑,正如 @MikeWay提到的那样。具体对比可参照图2。图3给出了波长与搏动程度(pulsations)的关系(不熟悉波长的小伙伴参考图4)。说得简单一点:假设PPG信号 y=a+b*sin(x)+c (PPG信号都是由一个mean和一个波动的量组成)。b就是我们看到的搏动(图1中peak-peak大概是3v),a是我们看到的mean reflectance(可以对应于图1中的1.7v),c是噪声。图3中的mean reflectance对应于a,reflectance pulsation对应于b/a,approximate noise level 对应于 c/a.可以看到在绿光的波长附近,b/a最大,并且大于c/a,意味着搏动比噪声要更明显,我们感兴趣的搏动信号更容易被观察到。当然,这个图针对于血管较少的测量位置。当用在血管成分较多的手指尖时,红色和红外的搏动也是通常大于噪声的。不过整体上,绿光都是可以获得更大的搏动幅度从而掩盖掉噪声的影响。

图2 红光和绿光的波形对比



图3 波长与mean reflectance和pulsation的关系



图 4 不同光的波长




还有一点小的评论是,该同学提到温度漂移,根据这两篇文章的发表时间(2008年和2013)和引用次数,我的感觉这些大概是使用绿光的额外bonus。还想补充一点是,我们上学时候用血氧的仪器来测量心率都是在运动以后静止的状态下,如果运动的时候来搞,可以想象其诡异的效果。


(3) 我不完全赞同 @王法 所提到的 血氧监护仪的缺点是在另一端需要接受透射光信号,而导致其使用范围有限,所以没有被选择。在手腕确实难以使用透射光,但我觉得这里的因果有点颠倒。

实际上,PPG一直就分两种模式:反射(reflectance-mode)和透射(transmission-mode)。反射就是PPG中的发生器(emitter)和接收器(detector)位于同一侧,主要测量反射回来的光。透射就是这两个器位于两侧,通常由一个夹子固定,现在绝大多数血氧含量的sensor都是透射的。图5中左图为透射模式的PPG,右图为反射模式PPG。


图 5 透射和反射模式的PPG



透射通常因为contact pressure较大会取得更高的信噪比,其实主要就是类似于sensor固定在皮肤上,不会有相对运动造成的噪声。此外对于测血氧含量的测量,也因为这个较大的contact pressure 可以减少静脉血体积变化的影响(毕竟我们测的动脉中的血氧而不是静脉,静脉中的血氧通常低一些),从而降低动脉血氧的测量误差,而这一点是反射模式很难做到的。另外PPG通常是用在血管组织结构简单的位置,比如手指,脚趾,耳垂,用在手腕明显会带来很多的技术难题,所以更像是从市场应用的角度考虑。

我觉得更大的可能是,公司首先考虑到市场,手腕是更容易被消费者接受的位置,所以选择手腕。然后考虑反射透射,在手腕只能选择反射。再然后,考虑光的波长,选择信噪比更高的绿光。

谈到这里,我看有小伙伴回答其公司在用耳机在测心率 @付学文 。这实际是一个很好的想法,现在市场上已经有几家公司有产品,似乎在layout上要下一番功夫。我觉得耳机最大的优势在于头部的运动是相对小而且简单规则的,不会出现手的那种可能一下就饱和的状况。这种相对容易handle的运动也可以比较容易通过额外的加速度传感器去自适应消除噪声。到这里,我同意 @王法同学提到的各个公司算法应该大同小异,都是加速度计作为reference去自适应滤波。


(4) 关于利用PPG血压测量, @陈程 提到 “绿光不能测量血压和呼吸。在单独测量心率的时候使用。”

我不禁想问,难道红光和红外就可以?
目前用PPG估计血压要么是利用PPG信号和连续血压信号波形上的相似性,要么是利用pulse transit time。
前者存在一个很难逾越的鸿沟,就是这个顺应性曲线(compliance curve),见图6。因为PPG毕竟是取决于血液体积,而不是压力。从体积到压力的转移函数(transfer function)不仅仅非线性还不停地改变(伴随交感副交感的活动)。第二种方法,目前来看需要不停的校正(calibration),而且就连pulse transit time本身都还难以准确测量。

图 6 compliance curve



所以,很抱歉的告诉 @cydonia 目前从学术圈子来看,利用PPG的血压估计还是一个需要被解决的问题。。。 离靠谱的产品化应该还有一定的距离。不过如果你不介意压力传感器测血压(就是在手腕来回充放气),应该效果比PPG好。



最后,
谢谢小伙伴读到这里。正如 @晓磊 所说,目前做到绝对值很准大概很难,不过其实趋势就很有价值了,这大概不仅仅适用于心率,我想也适用于大部分wearable sensors。
还想对 @王法,抱歉一直在讨论你的观点,其实感谢你第一个跳出来做技术贴,才让我回了一次上知乎以来最长的帖子。不过这大概不是你的area of expertise,难免有不准确的地方。共勉学业顺利。


以上。


Reference
1. Cui et al, In Vivo Reflectance of Blood and Tissue as a Function of Light Wavelength, 1990
2. Reisner et al. Utility of the Photoplethysmogram in Circulatory Monitoring, 2008