EfficientPhys

研究背景

基于相机的生理测量是一种非接触式方法,用于通过从身体反射的光捕获心脏信号。最常见的此类信号是通过光电体积描记图 (PPG) 测量的血容量脉搏 (BVP)。由此,可以推导出心率、呼吸率和脉搏传导时间。神经网络模型是当前最先进的 rPPG 测量方式。这些网络可以学习强大的特征表示,并有效地将由于潜在生理过程引起的像素的细微变化与由于身体运动、光照变化和其他“噪声”来源引起的像素变化区分开来。

问题

虽然之前的研究将架构定义为“端到端”方法,那些实现最先进性能的方法实际上需要几个预处理步骤,然后才能将数据用作网络的输入。例如,使用手工制作的归一化差异帧和归一化外观帧作为其卷积注意力网络的输入。或者使用一个复杂的模式来创建称为“MSTmaps”的特征图,他们的过程包括面部标志检测,使用这些标志提取几个感兴趣区域(ROI),然后平均像素值在两个RGB 和 YUV 颜色空间。这些预处理步骤有几个缺点:

  1. 它们对最佳归一化或表示做出假设,而不允许网络以数据驱动的方式学习这些特征。
  2. 它们的计算成本很高,并且在许多情况下会向视频处理管道添加大量操作。
  3. 这些操作通常难以实现,使复制和部署变得困难,甚至可能比“核心”网络本身具有更高的计算预算。

对比图

理想情况下,基于视频的生理测量方法即使在移动设备上也能以高帧率运行,易于在不同平台上实施,并实现状态-最先进的性能。解决上述挑战将有助于实现这些特性。
在本文中,作者提出了两种用于基于相机的生理测量的新型高效神经模型,称为 EfficientPhys,无需面部检测、分割、归一化、色彩空间变换或任何其他预处理步骤。使用原始视频帧的输入,模型在三个公共数据集上实现了很高的准确性。

方法

Convolution-based EfficientPhys

为了实现简单、快速和准确的基于设备摄像头的实时生命体征测量,本文作者提出了一种一站式解决方案架构,该架构将原始视频帧作为网络的输入并输出 PPG 信号。基于卷积的 EfficientPhys 是一个单分支网络,包含自定义归一化层、自注意力模块、张量移位模块和 2D 卷积运算,以执行高效准确的时空建模,同时使其易于部署。
架构图

Normalization Module

作者针对图片预处理阶段,提出了一个 Normalization 模块,它可以在每两个连续的 RGB 原始帧和规范化之间执行运动建模,以减少光照和运动噪声。更具体地说,所提出的归一化模块包括差异层和批归一化层。
差异层 通过减去每两个相邻帧来计算原始视频帧沿时间轴的第一个前向差异。在每两个连续帧之间执行运动建模和归一化更像是高通滤波,可以帮助减少来自光照和运动噪声的全局噪声,同时保持 PPG 的细微变化。
然而,不同的帧在尺度上可能大不相同,使网络难以学习平均特征表示,特别是当感兴趣的信号隐藏在沿时间轴的细微像素变化中时,噪声伪影会导致更大的相关变化。
为了解决这个问题,作者在差异层之后添加一个批量归一化层。添加批量归一化层有两个好处:

  1. 它在训练期间将批处理中的差分帧归一化为相同的尺度
  2. 与之前工作中固定归一化不同,batchnorm 提供了两个可学习的参数β和γ,用于缩放(到不同的方差)和移位(到不同的平均值)以及两个不可训练的参数,即平均μ和标准差σ。通过学习过程,批量范数层可以学习出最佳参数用于放大像素变化,同时最小化噪声。

如下图所示。如果没有批处理范数层,直接应用差分层意味着帧显示为“黑色”。因为每连续两帧中皮肤像素的细微变化相对非常小。另一方面,添加后续的批处理范数层将有助于它学习归一化函数,从而大幅放大皮肤像素的细微变化。其结果不仅仅是数值的放大,而是规范化和放大。
Normalization

Self-Attention-Shifted Network

为了有效地捕捉丰富的时空信息,作者提出了一个自注意力转移网络(SASN)。 SASN 建立在以前最先进的光学心脏测量-时移卷积注意网络 (TS-CAN) 中的设备上时空建模方法之上。 TS-CAN 有两个卷积分支,其中一个采用预处理的差异帧表示,另一个采用归一化外观帧。运动分支执行主要的时空建模和估计,外观分支提供注意掩码以指导运动分支更好地隔离感兴趣的像素(例如,皮肤像素)。(MTTS-CAN相关内容可以看我另一片博客:传送门)然而,作者认为注意力掩码不必通过单独的外观分支获得,它们也可以通过单个分支端到端网络学习。于是作者使用了一个自我注意模块,以帮助网络最大限度地减少由时间位移以及运动和光照噪声引入的负面影响。

Transformer-based EfficientPhys
Efficient Spatial-Temporal Video Transformer

由于 Vision Transformer 最近在图像和视频理解方面的成功以及注意力机械对这项任务的重要性,作者还提出了 EfficientPhys 的 Vision Transformer 版本。对于这项任务需要一个 Vision Transformer 来学习空间和时间表示。然而,计算复杂性使得这些不利于移动设备上的实时高效建模。在卷积版本中,作者使用了 TSM 的 2D 卷积,这些卷积已被证明可以实现与 3D 卷积相当的性能。受此启发,作者提出的基于 Swin Transformer 的 Efficient-Phys。由于 2D SwinTransformer 只能学习将原始单帧 RGB 值映射到潜在表示的空间特征和目标信号(脉冲)之间的关系,它没有能力对连续帧之外的时间关系进行建模。
SwinTransformer 的主要贡献之一是移动窗口模块,它具有线性计算复杂度,并通过移动窗口分区和将自注意力计算限制在不重叠的局部窗口来允许跨窗口连接。受空间窗口分区移动想法的启发,作者在每个 SwinTransformer 块之前添加一个张量移动模块 (TSM),以促进跨时间轴的信息交换。 TSM 首先将输入张量分成三个块,将第一个块向左移动一位(将时间提前一帧)并将第二个块向右移动一位(将时间延迟一帧)。所有移位操作都沿时间轴进行,并在张量被馈送到每个 Transformer 块之前执行。通过将 TSM 模块添加到 SwinTransformer,新的 Transformer 架构现在能够执行高效的时空变换通过在空间上组合移动窗口分区和在时间上移动帧来建模和注意。值得注意的是,TSM 没有引入任何可学习的参数,因此所提出的 Transformer 架构与原始 SwinTransformer具有相同数量的参数。最后,为了实现真正的端到端推理和学习,作者还在该架构中添加了卷积 EfficientPhys 中提出的相同归一化模块。

实验

尽管视觉变压器已经开始在某些视觉任务中实现最先进的性能,但基于视频的生命体征测量任务并非如此。Efficient-C 在 UBFC 中的 MAE 比 Efficient-T1 高 45%,在 MMSE 和 PURE 中的性能相似,而 Efficient-C 在延迟方面快 7 倍以上。当将基于 Transformer 的 EfficientPhys 缩小到与基于卷积的 EfficientPhys 相似的复杂度时,性能会显着降低。基于轻量级 Transformer 的 EfficientPhys-T2 的误差在 UBFC 中增加了 48% 的 MAE,在 PURE 中增加了 141% 的 MAE,在 MMSE 中增加了 15% 的 MAE。
UBFC, PURE

这些结果表明浅层Transformer架构难以对视频中皮肤像素的细微变化进行建模。这些发现提出了两个潜在的见解。首先,为了使 Transformer 在该领域中胜过甚至相对较浅的卷积模型,需要进一步优化,当没有大量高质量数据可用时,这个现象尤其明显。正如之前的研究所示,Transformers 通常需要更多的预训练样本才能获得最先进的精度。不幸的是,与其他视觉任务相比,目前基于相机的生命测量领域的数据量有限。作者在下表中的实验也支持这一假设,其中 EfficientPhys-C 仅在 PURE 上进行训练就超过了 EfficientPhys-T1 和 T2。作者相信合成数据是帮助解决这个问题的一种方式。其次,如果没有进一步的工作,Vision Transformer 的良好精度-效率权衡可能无法扩展到设备上的架构。由于许多设备上的神经网络需要更少的计算资源来执行实时操作,因此缩小 Transformer 架构并不理想,正如 EfficientPhys-T2 实验结果所显示的那样。

MMSE

Computational Cost and On-Device Latency

这里展现了EfficientPhys-C的优秀性能,处理单帧仅需 40 毫秒,并且执行预处理不需要任何额外的计算时间。另一方面,由于复杂的模型架构和计算手工标准化原始帧和差异帧的额外时间,TS-CAN 每帧需要 63 毫秒。如前所述,Dual-GAN 具有复杂的面部标志检测、分割、颜色变换和增强预处理过程。作者对Dual-GAN 的预处理模块进行了基准测试,每帧花费 275 毫秒,这已经是 EfficientPhys-C 整个计算时间的 7 倍。 Dual-GAN 中的估计网络还包括 12 个 2D 卷积运算和许多 1D 卷积运算。因此,作者相信它会在每帧 275 毫秒的预处理时间之上增加大量的计算时间。默认的基于 Transformer 的 EfficientPhys (T1) 由于其深度架构设计而具有不利的推理时间,并且需要 300 毫秒来处理每一帧。将深度降低到 EfficientPhys-T2 后,可以达到与 EfficientPhys-C 相同的推理时间。然而,EfficientPhys-T2 在所有三个基准数据集上的表现最差。
Computational Cost and On-Device Latency

总结

作者提出了一种称为EfficientPhys的新方法,以实现简单,快速,准确的基于相机的非接触式生命体征测量。并且通过使用显着减少的计算能力实现了强大的性能。凭借简洁优雅的一站式设计,EfficientPhys 还有助于解决上次机器学习部署的问题,并减少健康差距。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zeet构建多云战略充分发挥云的优势

大型企业通常拥有基础设施和应用团队,有能力围绕自己的业务需求构建所需平台。但对于技术团队精简、预算紧张的小企业来说,定制平台往往不现实而且难以扩展,是负担不起的“奢侈品”。 这一情况催生了平台即服务(PaaS)…

高效案例检索工具,Alpha案例库智慧检索成为律师检索工具首选

“工欲善其事,必先利其器。”当今,律界同仁需要权衡的问题早已不是“要不要”使用法律科技,而是如何高质量、高效率地使用法律科技工具。在业内人士看来,随着人工智能技术的不断发展,法律行业科技化将成为不可逆转的趋…

PyCharm中常用插件推荐

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

大厂秋招真题【单调栈】Bilibili2021秋招-大鱼吃小鱼

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出说明 示例二输入输出说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 小明最近喜欢上了俄罗斯套娃、大鱼吃小鱼这些大的包住小的类型的游戏。 于…

c语言:矩阵交换

题目&#xff1a; 代码和思路&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int n 0;int m 0;int arr[10][10] { 0 }; // 输入行和列scanf("%d%d", &n, &m);int i 0;int j 0;//读取数组for (i 0; i < n; i)…

ASUS华硕ROG幻13笔记本电脑GV301QE原厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1aPW0ctRXRNAhE75mzVPdTg?pwdds78 提取码&#xff1a;ds78 华硕玩家国度幻13笔记本电脑锐龙版Ryzen 7 5800HS,显卡3050 3050Ti,3060,3060Ti,3070,3070Ti 原厂W10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办…

MATLAB中plotmatrix函数用法

目录 语法 说明 示例 使用两个矩阵输入创建散点图矩阵 使用一个矩阵输入创建散点图矩阵 指定标记类型和颜色 创建并修改散点图矩阵 plotmatrix函数的功能是创建散点图矩阵。 语法 plotmatrix(X,Y) plotmatrix(X) plotmatrix(___,LineSpec) plotmatrix(ax,___) [S,AX,B…

让别人访问电脑本地

查看本地IP地址&#xff1a; 使用ipconfig&#xff08;Windows&#xff09;或ifconfig&#xff08;Linux/macOS&#xff09;命令来查看你的计算机本地网络的IP地址。确保*****是你的本地IP地址。 防火墙设置&#xff1a; 确保你的防火墙允许从外部访问*****。你可能需要在防火…

服务注册发现 springcloud netflix eureka

文章目录 前言角色&#xff08;三个&#xff09; 工程说明基础运行环境工程目录说明启动顺序&#xff08;建议&#xff09;&#xff1a;运行效果注册与发现中心服务消费者&#xff1a; 代码说明服务注册中心&#xff08;Register Service&#xff09;服务提供者&#xff08;Pro…

Since Maven 3.8.1 http repositories are blocked

原因 高版本的maven不支持http的存储库。 解决方案 其实方法有好几种&#xff0c;比如降级maven版本至3.6.3(之前一直用的都是这个版本)&#xff0c;我选择了一种比较快(但不一定安全)的方式&#xff0c;因为3.6.3版本被我卸载了&#xff0c;这里直接修改idea的setting配置&…

[CUDA]去除Eigen库中的warning

一、问题提出 假如使用nvcc对cuda代码进行编译时&#xff0c;如果代码中使用了Eigen库&#xff08;头文件&#xff09;&#xff0c;编译时可能会显示很多warning information&#xff0c;如下图红框中所示&#xff1a; 这些warning信息虽然不会影响代码的实际运行&#xff0c;…

使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)

最近使用 html2canvas导出Table表单为图片&#xff0c;但是转换出的图片被合并的单元格没有显示边框 查了原因是因为我为tr设置了背景色&#xff0c;然后td设置了rowspan&#xff0c;设置了rowspan的单元格就会出现边框不显示的问题。 解决方法就是取消tr的背景色&#xff0c;然…

图片地址GPS经纬度查询

先打开exif图片查询的网站&#xff1a; 改图宝的&#xff1a;https://www.gaitubao.com/exif图虫de的:EXIF信息查看器 (tuchong.com) 将这个地点&#xff1a;51 deg 30 51.90" N, 0 deg 5 38.73" W 修改为&#xff1a;5130 51.90" N, 05 38.73" W 到谷…

OSI参考模型

目录 一. OSI参考模型的各层功能二. 网络排错三. 网络安全四. 实体、协议、服务和服务访问点SAP五. TCP IP体系结构 一. OSI参考模型的各层功能 \quad \quad \quad \quad 我们首先来看应用层实现的功能 每个字段的各种取值所代表的意思 \quad \quad 比如要保存的文件内容是ab…

「Verilog学习笔记」用3-8译码器实现全减器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 首先列出3-8译码器和全减器的真值表 全减器真值表如下 3-8译码器真值表如下 timescale 1ns/1nsmodule decoder_38(input E ,input A0 …

KylinOSv10修改ulimit值

问题 ulimit 值过小&#xff0c;可能导致压力测试遇到瓶颈&#xff0c;比如通过nginx建立tcp长链接时&#xff0c;链接数量受限。需要修改ulimit值&#xff0c;Linux默认为1024。 解决 使用root或sudo权限&#xff0c;编辑文件/etc/security/limits.conf&#xff0c;新增以下…

数据资产入表,给企业带来的机遇和挑战

作为推动数字经济发展的核心要素&#xff0c;近年来&#xff0c;数据资源对于企业特别是相关数据企业的价值和作用正日益凸显。 数据资产入表之后&#xff0c;能够为企业经营带来实质性的收益。“随着数据资产的纳入&#xff0c;企业的资产也出现了新标的。在资产负债表中&…

letcode::最小栈

最小栈 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。…

如何简单挖掘公益SRC?

目录 1、寻找漏洞 1)谷歌语法 2)fofa 2、挖掘漏洞 3、提交报告 第一步&#xff1a;“标题”和“厂商信息”和“所属域名” 第二步&#xff1a;其它内容 第三步&#xff1a;复现步骤 0、IP域名归属证明 1、漏洞页 2、该干啥 3、注入的结果 4、上榜吉时 时间&#x…

opencv(3):控制鼠标,创建 tackbar控件

文章目录 控制鼠标相关APIsetMouseCallbackcallback TrackBar 控件cv2.createTrackbarcv2.getTrackbarPos&#xff1a; 控制鼠标相关API setMouseCallback(winname, callback, userdata)callback(event, x, y, flags, userdata) setMouseCallback 在 OpenCV 中&#xff0c;s…