使用神经网络对心率和呼吸速率进行联合估计的制作方法


使用神经网络心率和呼吸速率进行联合估计


背景技术:



1.心率和呼吸速率测量是诊断许多疾病和状况的至关重要的步骤。与手指血氧仪等接触式仪器相比,基于非接触式相机的生理测量因为非接触式方法减少感染的风险在远程医疗中往往更容易获得且更方便。然而,由于环境光照变化、头部运动、面部表情等因素,远程生理信号测量正具有挑战性。存在解决与现有技术关联的这些问题和/或其他问题的需求。


技术实现要素:



2.本公开的实施例涉及用于改进联合心率和呼吸速率估计的技术。所公开的系统和方法提供了用于估计心率和呼吸(例如,气息)率的神经网络系统,其与传统系统相比具有更高的准确性,并降低了系统复杂性和延迟。该神经网络系统充分利用双重注意力,特别是空间注意力和通道注意力两者,通过处理受试者的视频来联合估计受试者的心率和呼吸速率。
3.根据实施例,检测网络受试者的图像序列和图像的时间戳。使用受试者的检测网络生成边界框和受试者特征或地标(例如面部特征)。从相邻或接近相邻的帧的边界框生成编码帧之间的特征的移动的运动地图。从图像序列生成外观地图,外观地图编码受试者的外观(例如,作为像素位置的颜值的平均值)和皮肤分割掩码(包括描述受试者皮肤的图像中的区域的二进制语义掩码)。使用外观地图和皮肤分割掩码,外观神经网络从受试者的图像计算空间注意力掩码,该掩码可以表明与受试者面部相关的特征(而不是受试者的头发或肩膀),用于精确估计与受试者面部的特征对应的像素的位置。运动神经网络使用运动地图和图像序列来估计图像中受试者的心率和呼吸速率。空间注意力掩码被提供给运动网络,以引导运动神经网络的焦点,从而产生比传统系统更准确、更高精确和更高效的结果。与传统系统(如上述系统)相比,通过在空间域和逐通道域两者中应用注意力机制来提高估计的准确性。空间域注意力增强了空间编码,其定位了包含强烈生理信号反应的面部区域。逐通道域注意力重新校准逐通道特征反应来选择信息量最大的的特征。通道注意力掩码在训练中被学习,并在部署过程中可用于不同的受试者。
4.在一实施例中,神经网络系统基于心律和呼吸速率之间的相关性来学习估计心律和呼吸速率。在一实施例中,当空间注意力基于识别包括面部皮肤(额头、脸颊和鼻子)、颈部和胸部的区域的皮肤分割掩码来提供用于估计心率和呼吸速率的额外数据(例如,血液循环)时,神经网络系统的准确性得到提高。
5.公开了一种方法、计算机可读介质和系统,用于联合估计受试者的心率或呼吸速率中的至少一个。在一实施例中,受试者的图像序列由运动神经网络模型的层处理,以产生沿两个空间维度的特征向量的通道,并将经学习的通道注意力掩码应用于特征向量的通道,来联合产生受试者的估计心率或估计呼吸速率中的至少一个。
附图说明
6.下面参考附图详细描述本发明用于联合心率和呼吸速率估计的系统和方法,其中:
7.图1a图示了适合用于实现本公开的一些实施例的示例联合心率和呼吸速率估计网络系统的框图。
8.图1b图示了适合用于实现本公开的一些实施例的空间注意力地图。
9.图1c图示了根据一个实施例的用于联合心率和呼吸速率估计的方法的流程图。
10.图2a图示了适合用于实现本公开的一些实施例的另一联合心率和呼吸速率估计网络系统的框图。
11.图2b图示了根据一个实施例的、另一用于联合心率和呼吸速率估计的方法的流程图。
12.图2c图示了适合用于实现本公开的一些实施例的心率和呼吸速率之间的频率关系。
13.图2d图示了适合用于实现本公开的一些实施例的心率和呼吸速率之间的比率分布。
14.图3a图示了适合用于实施本公开的一些实施例的联合心率和呼吸速率估计网络系统的训练配置的框图。
15.图3b图示了适合用于实现本公开的一些实施例的联合心率和呼吸速率估计网络系统的训练方法的另一流程图。
16.图4图示了适合用于实现本公开的一些实施例的示例并行处理单元。
17.图5a为适合用于实现本公开的一些实施例的、使用图4的ppu实现的处理系统的概念图。
18.图5b图示了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
19.图5c图示了在至少一个实施例中可用于训练和利用机器学习的示例性系统的组件。
20.图6图示了适合用于实现本公开的一些实施例的示例性流式系统。
具体实施方式
21.公开了与联合心率和呼吸速率估计网络有关的系统和方法。特别是在汽车、医疗保健和游戏环境中,有许多心率和/或呼吸速率估计的用例。在汽车环境中,心率和呼吸速率估计可用于监测操作员的压力、疲劳或无能力。基于这些估计可以启动最低风险的操作(例如,改变音乐、修改制动设置、靠边停车、紧急呼叫等)。心率和呼吸速率估计也可用于执行儿童存在检测。在游戏环境中,心率和呼吸速率估计可用于测量用户的参与和/或兴奋程度。在医疗保健环境中,心率和呼吸速率估计可用于远程医疗或无接触现场筛查。
22.基于非接触式相机的生理学测量是一个活跃的研究领域,特别是在大流行病和日益普及的远程医疗期间引起了极大的关注。基于非接触式相机的生理测量降低感染风险,并实现远程医疗和远程健康监测。基于相机的生理测量的基本原理是捕捉不易察觉的皮肤颜变化或由血液循环和呼吸运动引起的不易察觉运动。皮肤颜的变化和运动对应于光反射的变化。成像技术通过捕捉由于血液流动和呼吸过程中引起的不易察觉的皮肤颜和
运动变化来测量皮肤表面的血液的体积变化。
23.成像光电容积脉搏波描记法(ippg)和远程光电容积脉搏波描记法(rppg)技术是基于对皮肤反射光的不易察觉变化的测量。图像心冲击描记法(ibcg)技术是基于测量血液在身体周围泵送的机械力而引起的不易察觉运动。心率和呼吸速率都可以用ippg、rppg和/或基于ibcg的方法来恢复。由于血液循环引起的皮肤颜变化和运动可能非常不易察觉,以至于很容易被环境光照变化、头部运动、面部表情等破坏,因此基于相机的心率和呼吸速率估计正具有挑战性。
24.对于模型的理论光学原理,谢弗(shafer)的二反射模型(drm)可用于模拟照明反射和生理信号。图像中第k个皮肤像素的rgb颜(红、绿、蓝)值可以由时变函数来定义:
25.ck(t)=i(t)
·vs
(t)+vd(t)+vn(t)
ꢀꢀꢀ
公式(1)
26.i(t)=i0·
(1+ψ(m(t),θ(b(t),r(t))))
27.vs(t)=(us·
(s0+φ(m(t),θ(b(t),r(t))))
28.vd(t)=(ud·
d0+u
p
·
(θ(b(t),r(t)))
29.其中ck(t)表示rgb值的矢量;i(t)为照明强度;vs(t)和vd(t)分别为镜面反射和漫反射;vn(t)表示相机传感器的量化噪声。i(t)、vs(t)和vd(t)都可以分解为固定部分i0,us·
s0,ud·
d0和时变部分(i0·
ψ(
·
),us·
φ(
·
),u
p
·
θ(
·
)),其中m(t)表示所有非生理变化,例如来自光源、头部运动和面部表情的光照变化。θ(b(t),r(t))表示时变生理信号,其是脉冲b(t)和呼吸r(t)信息的组合;ψ(
·
)表示相机观察到的强度变化;φ(
·
)表示镜面反射的变化部分;us和ud分别表示光源和皮肤组织的单位颜向量;u
p
表示相对的脉动强度。i0表示照度强度的固定部分;s0和d0分别表示固定的镜面反射和漫反射。
30.公式(1)中的皮肤反射模型表明,第k个皮肤像素ck(t)的rgb值与生理信号θ(b(t),r(t))之间的关系是非线性的,并且非线性的复杂性可能是由非固定项引起的,如照度变化、头部运动、面部表情、相机强度变化等。机器学习模型被期望用于模拟ck(t)和θ(b(t),r(t))之间的复杂关系。
31.图1a图示了适合用于实现本公开的一些实施例的示例联合心率和呼吸速率估计网络系统100的框图。应该理解的是,本文描述的这种布置和其他布置仅作为示例。其他布置和元素(例如,机器、界面、功能、顺序、功能的分组等)可以用为所示出的这些例子的增加或者取代,并且一些元素可以被完全省略。此外,本文描述的许多元素是功能实体,其可以作为离散的或分布式的组件,或与其他组件结合,并以任何合适的组合和位置来实现。本文描述的如正由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。而且,本领域的普通技术人员将理解,执行联合心率和呼吸速率估计网络系统100的操作的任何系统都在本公开的实施例的范围和精神之内。
32.在一实施例中,联合心率和呼吸速率估计网络系统100包括运动神经网络,其接收空间注意力112、空间注意力122和运动地图,并使用空间和通道域注意力掩码估计受试者的心率和呼吸速率,来关注对于特定特征数据的处理。在一个或更多个实施例中,可以将运动地图计算为受试者的序列(例如,视频帧)中两个图像之间的每像素差异。这些图像可以由相机获取,包括但不限于rgb(红、绿、蓝)、ir(红外)和rgb_ir相机。在一实施例中,rgb图像可以与ir图像交错。在一实施例中,交错可由图像或外部环境的信噪比(snr)决定,即ir
图像在低照度条件下(如在夜间)和在照度变化(如驾驶过程中经过阴影)下是稳健的。ir图像可用于消除rgb图像中的光照变化。在另一实施例中,rgb图像和ir图像可以串联在一起,形成四通道(红、绿、蓝、红外)输入到网络中,以与仅rgb或仅ir图像的网络相比提高了网络鲁棒性。
33.在一实施例中,运动地图被计算为在序列中的两幅图像中的每幅图像中包括受试者面部的关注区域的每像素差异。在一实施例中,单独神经网络或处理单元将关注区域识别为围绕受试者面部的边界框。空间注意力112和122可以被编码为基于外观的掩码,并且可以由每个图像的注意力神经网络生成。在一实施例中,基于可用的网络带宽或存储资源根据需要对图像进行压缩。压缩水平可以是可变的(即取决于可用带宽)或固定的。为了提高联合心率和呼吸速率估计网络系统100的鲁棒性和通用性,在训练期间,输入图像可以以不同的水平(例如,压缩率)进行压缩(或不压缩)。
34.运动神经网络的每个处理层将经学习的参数应用于输入,以产生多个通道(c)的空间维度高度(h)和宽度(w)的特征数据。单个通道内的特征数据是一个特征向量。在一实施例中,卷积层105包括两层,每个为n
×
36
×
36
×
36(n
×c×h×
w),输入图像为1
×3×
72
×
72。n是帧(例如,图像)的数量,其也等于连续的运动地图的数量。当n》1时,该运动神经网络可以从相邻帧的运动地图中学习时间信息,从而提高鲁棒性。在一实施例中,在输入与经学习的参数进行卷积以提供对池化层110的输入之前,将时间移位(shift)操作应用到卷积层105中的层中的一个或多个层的输入。时间移位可以降低三维卷积的复杂性,通过沿时间维度移动通道的一部分来促进在时间上邻近的图像之间的信息交换。
35.池化层110减少特征图的维度。池化层110接收卷积层105和空间注意力112之间的逐元素乘法。在一实施例中,池化层110是n
×
36
×
36
×
36。由于生理信号在人体皮肤上的分布不均匀,空间注意力112(例如,软空间注意力掩码)可以在生理信号较强的区域定义较高的权重,以提高网络准确性。例如,从受试者的图像中计算的空间注意力掩码可以表明与受试者的脸(而不是受试者的头发或肩膀)相关联的特征,用于更准确地估计心率和/或呼吸速率。换句话说,空间注意力112和122定义了特定层的特征之间的空间关系。
36.池化层110的输出在被输入到也接收空间注意力122的池化层120之前由卷积层115处理。在一实施例中,在输入与经学习的参数进行卷积以提供对池化层120的输入之前,对卷积层115中的层中的一个或多个层的输入应用时间移位操作。池化层120接收卷积层115和空间注意力122之间的逐元素乘法。在一实施例中,池化层120可以被实现为n
×
64
×
18
×
18大小的维度。在一实施例中,空间注意力112是在第二卷积层之后,空间注意力122是在第四卷积层之后。空间注意力112和122提供改进的脸部皮肤定位,并为背景区域定义比受试者的脸部的相关区域更低的权重。
37.池化层120的输出为对通道注意力层125的输入。逐通道域注意力在训练期间被学习,并重新校准逐通道特征响应,用于选择信息量最大的(informative)的特征用于处理。在一实施例中,一维卷积被执行,接着s型(sigmoid)函数来学习通道注意力。通道注意力掩码可以用大小1
×1×
c的维度来实现,提供每通道掩码,这意味着每个通道c将被分配在训练中被学习的权重。与在h和w维度上选择鉴别性特征的空间注意力相反,逐通道注意力在通道维度上选择鉴别性的特征。具有较高权重的通道具有更多信息量大的的特征,而具有较低权重的通道对于估计心率和/或呼吸速率来说不太重要。由通道注意力层125应用于每
个特征向量的经学习的通道注意力掩码可以被通用,因此可以在部署期间用于在训练期间无法使用的受试者。换句话说,相同的经学习的通道注意力掩码可以很好地通用来估计训练期间没有被看到的受试者的心率和/或呼吸速率。在一实施例中,可以学习并选择特定受试者通道注意力掩码和空间注意力掩码以便在部署期间使用。
38.在应用通道注意力后,通道注意力层125的输出被输入到全连接(fc)层130,该层产生估计的心率和/或呼吸速率。在由fc层130执行最终平均池化之前插入通道注意力层125,使运动神经网络强调信息量大的特征并抑制不太有用的特征。
39.在一实施例中,运动神经网络计算用于心率估计的血容量脉冲(bvp)和/或用于呼吸速率估计的呼吸波。在一实施例中,运动神经网络以多任务方式运行,计算bvp和呼吸波。在一实施例中,估计的心率和呼吸速率分别表示为脉冲波形序列和呼吸波形序列。为了提取以每分钟的心率和呼吸速率,可以巴特沃斯带通滤波器应用到fc层130的输出。在一实施例中,对心率使用0.67和4赫兹的滤波器截止频率,并对呼吸速率使用0.08和0.50赫兹的滤波器截止频率。滤波后的信号可被分为10秒的窗口,并可应用傅里叶变换以产生如心率和呼吸速率的主导频率。
40.按照用户的需要,现在将阐述关于各种可选架构和特征的更多示例性信息,上述框架可使用这些架构和功能来实现。应该强烈注意的是,以下信息是为示例性目的而提出的,不应该被理解为以任何方式进行限制。以下的任何特征可以选择性地与其他描述的特征合并或不合并。
41.图1b图示了适合用于实施本公开的一些实施例的空间注意力地图135和140。在一实施例中,空间注意力112和122分别包括空间注意力地图142和140。在一实施例中,空间注意力地图142和140是由外观神经网络生成的,如结合图2a所描述的。
42.将空间注意力地图135与使用常规技术生成的没有通道注意力的空间注意力地图132相比较,空间注意力地图132显示了受试者的脸颊、鼻子和额头的高权重134。然而,空间注意力地图132中的高权重区域的边界是模糊的,并在受试者的眼睑区域显示出假阳性高权重。并且,空间注意力地图132中的高权重134的值小于空间注意力地图135中受试者的脸颊、鼻子和额头的高权重136的值。同样,空间注意力地图135中受试者的眼睛、头发、嘴唇、下巴和颈部的最低权重133与空间注意力地图132中的相同区域相比被更清楚地限定,并具有更低的数值。总的来说,与空间注意力地图132相比,空间注意力地图135清楚地显示了脸部区域和背景之间更大的反差,以及在生理信号更强的皮肤区域(额头和脸颊)更好的边界定位。
43.与使用通道注意力的传统技术生成的并与空间注意力地图140一致的空间注意力地图142相比,空间注意力地图140显示了在脸部区域和背景之间更大的反差,具有更好的边界定位(表明有更好的空间和逐通道特征提取)。特别地,空间注意力地图142的背景区域具有高权重144,而空间注意力地图140的相同区域具有低权重148,正确表明背景区域不太重要。与空间注意力地图135类似,空间注意力地图140限定了受试者的眼睛、鼻孔和嘴唇的最低的权重143,同时保持受试者的额头、鼻子和脸颊的高权重146。总之,与空间注意力地图132和142相比,空间注意力地图135和140在更好定位的情况下在皮肤上具有较高的权重,在背景区域具有较低的权重,这提高了运动神经网络的鲁棒性,减少了背景噪声。
44.图1c根据实施例图示了联合心率和呼吸速率估计的方法150的流程图。本文描述
的方法150的每个块包括一个计算过程,其可以使用硬件、固件和/或软件的任何组合来执行。例如,通过实施存储在存储器中的指令的处理器来实现各种功能。该方法也可以体现为存储在计算机存储介质上的计算机可使用指令。该方法可以由独立的应用程序、服务或托管服务(独立的或与另一托管服务相结合)、或另一产品的插件(仅举几例)来提供。此外,方法150是针对当作示例的图1a的系统100来描述的。然而,该方法可以另外或替代性地由任何一个系统或任何系统的组合来执行,包括但不限于本文描述的系统。此外,本领域的普通技术人员将理解,执行方法150的任何系统都在本公开的实施例的范围和精神之内。
45.在步骤155,由运动神经网络模型的层来处理受试者的图像序列,以产生两个空间维度的特征向量的通道。在一实施例中,运动神经网络模型包括联合心率和呼吸速率估计网络系统100。在一实施例中,该处理包括在层之间应用至少一个空间注意力掩码。在一实施例中,在卷积层和池化层之间应用至少一个外观通道注意力掩码。
46.在一实施例中,接收图像序列中的每个图像的帧速率是可变的,并且处理包括基于帧速率来调整估计心率或估计呼吸速率中的至少一个。在一实施例中,联合的心率和呼吸速率估计网络系统100接收可用于计算帧速率的每个图像的时间戳。在一实施例中,图像序列中的一个或更多个图像被压缩。在一实施例中,该一个或更多个图像以不同的水平被压缩。
47.在一实施例中,对于序列中的每个图像,通过注意力神经网络处理外观地图和皮肤分割掩码以用于计算至少一个空间注意力掩码。在一实施例中,注意力神经网络在注意力神经网络的各层之间应用至少一个外观通道注意力掩码,以用于计算至少一个空间注意力掩码。在一实施例中,外观地图包括受试者的每个图像的一部分,其包括受试者的面部、颈部和胸部区域。在一实施例中,皮肤分割掩码包括从受试者的每个图像中的背景、头发、眼睛、眉毛和胡须区域分别识别包括受试者的额头、脸颊、鼻子、颈部和胸部区域的面部皮肤的掩码。
48.在步骤160,将经学习的通道注意力掩码应用于特征向量的通道,以产生受试者的估计心率或估计呼吸速率中的至少一个。在一实施例中,经学习的通道注意力掩码是每通道掩码,意味着每个通道将被分配在训练期间被学习的权重,具有较高权重的通道具有更多的信息量大的特征,而具有较低权重的通道对于估计心率和/或呼吸速率不太重要。在一实施例中,经学习的通道注意力掩码被应用于池化层120和最终全连接层130之间的每个特征向量。
49.在一实施例中,处理和应用的步骤中的至少一个在服务器上或在数据中心中被执行,并且图像序列从用户设备被流传输到服务器或数据中心。
50.在一实施例中,处理和应用的至少一个步骤是在服务器上或在数据中心中被执行的,并且估计的心率或估计的呼吸速率中的至少一个被流传输到用户设备。在一实施例中,处理和应用的步骤中的至少一个是在云计算环境中被执行的。在一实施例中,处理和应用的步骤中的至少一个被执行以用于训练、测试或认证机器、机器人或自主车辆中使用的神经网络而执行的。在一实施例中,处理和应用的步骤中的至少一个是在包括图形处理单元的一部分的虚拟机上执行的。
51.图2a图示了适合用于实现本公开的一些实施例的另一示例联合心率和呼吸速率估计网络系统200的框图。联合心率和呼吸速率估计网络系统200除了外观神经网络235之
外还包括图1a中所示的运动神经网络。
52.应该理解的是,本文描述的这种和其他设置只是作为示例而提出的。其他设置和元素(例如,机器、界面、功能、顺序、功能的分组等)可被用来补充或代替所示的设置和元素,并且一些元素可被完全省略。此外,本文描述的许多元素是功能实体,其可以作为离散的或分布式的组件,或与其他组件结合,以任何合适的组合和位置来实现。本文描述的由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。此外,本领域的普通技术人员将理解,执行联合心率和呼吸速率估计网络系统200的操作的任何系统都在本公开的实施例的范围和精神之内。
53.外观神经网络235接收外观地图和皮肤分割掩码作为输入,并应用经学习的参数来计算每个图像帧的空间注意力112和122。在一实施例中,外观地图(例如,rgb图像)是受试者的捕获图像的剪裁部分。在一实施例中,捕获的图像被裁剪为识别受试者的面部区域(可以包括颈部或胸部的上部)的边界框。在一实施例中,使用特定任务的神经网络(未显示)来识别该边界框。
54.在一实施例中,特定任务的神经网络(未显示)用于识别面部地标,皮肤分割二进制掩码源自该面部地标。在一实施例中,皮肤分割掩码(例如,二进制分割),该掩码是识别面部皮肤的掩码,例如受试者的额头、脸颊区域、鼻子、颈部和胸部区域。在一实施例中,皮肤分割掩码是二进制图,“皮肤”像素被标记为“1”(真),背景像素、头发像素、关于眼睛、眉毛、胡须等的像素被标记为“0”(假)。
55.注意力神经网络235使用由通道注意力层210和225应用的外观地图、皮肤分割掩码和经学习的的通道注意力掩码来计算空间注意力112和122。通过训练,注意力神经网络235学会了外观地图中的哪些区域对估计心率或呼吸速率更重要。当检查空间注意力权重时,发现额头和脸颊区域的权重更高。皮肤分割掩码的目的是用于告知注意神经网络235,在可以检测到心率/呼吸速率信号的皮肤区域应该使用较高的权重,进一步提高估计的准确性。
56.在一实施例中,外观神经网络235使用1
×
1卷积过滤器生成空间注意力112和122,以分别输入到池化层110和120。然后,空间注意力112和122经由逐元素乘法与运动神经网络中的特征图相乘。在一实施例中,被传递到池化层110和120的遮蔽(masked)特征图(其中k是层索引)被计算为:
[0057][0058]
其中,σ(
·
)是s型激活函数,ωk是1
×
1卷积核,bk是偏置,是运动神经网络特征图,是外观神经网络235特征图,

是逐元素乘法,hk和wk是特征图的高度和宽度。
[0059]
与包括通道注意力层125的运动神经网络一样,外观神经网络235包括逐通道注意力层,具体为通道注意力层210和225。通道注意力层210和225分别位于卷积层205和池化层215之间以及卷积层220和池化层230之间。通过在外观神经网络235中插入一个或多个通道式注意力层,可以生成更好的面部空间注意力掩码。插入通道注意力层210和225有助于外观神经网络235强调信息量大的特征并抑制不太有用的特征。
[0060]
图2b图示了根据一个实施例的用于联合心率和呼吸速率估计的另一个方法250的
流程图。本文描述的方法250的每个块包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。该方法也可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立的应用程序、服务或托管服务(独立的或与另一托管服务相结合)、或另一产品的插件(仅举几例)来提供。此外,方法250是针对当作示例的图2a的系统200来描述的。然而,该方法可以另外或替代性地由任何一个系统或任何系统的组合来执行,包括但不限于本文所描述的系统。此外,本领域的普通技术人员将理解,执行方法250的任何系统都在本公开的实施例的范围和精神之内。
[0061]
在步骤255,接收受试者的图像序列。该序列中的每个图像可被处理以生成运动地图、外观地图和皮肤分割掩码。在步骤260,针对该序列中的每个图像处理外观地图和皮肤分割掩码。在步骤260,外观神经网络模型处理外观地图和皮肤分割掩码,来计算空间注意力掩码。在步骤265,由运动神经网络模型处理图像序列和相应的空间注意力掩码,来生成受试者的估计心率或估计呼吸速率中的至少一个。
[0062]
在空间域和逐通道域两者中应用(双重)注意力提高了联合心率和呼吸速率估计网络系统100和200的准确性。空间域注意力增强了空间编码,该编码定位了包含强生理信号反应的面部区域。逐通道域注意力重新校准了逐通道特征反应以选择信息量最大的特征。
[0063]
联合心率和呼吸速率估计网络系统100和200也可以依靠心率和呼吸速率之间的关联性来提高准确性。图2c图示了适合用于实现本公开的一些实施例的心率和呼吸速率之间的频率关系。对于每个受试者,与测量的呼吸速率280相比,测量的心率275具有较高的频率。测量的心率275和测量的呼吸速率280之间的关系对于大多数受试者来说是一致的。心率和呼吸速率的相关性可以是受试者特定的,在系统校准阶段学到的相关性可以被应用在部署中。
[0064]
图2d图示了适合用于实施本公开的一些实施例的心率和呼吸速率之间的比率分布。心率与呼吸速率之比285的图表示出了该比率聚集在平均比率5.5655的周围,最大为14.8333,最小为2.5417。标准偏差为1.9546,r=0.3000。在一实施例中,在联合心率和呼吸速率估计网络系统100和200的部署过程中,当估计的心率和估计的呼吸速率的比率超出心率和呼吸速率的预定(实况(ground truth))比率范围时,估计的心率和估计的呼吸速率被丢弃(例如,删除)。在一实施例中,通过使用心率波形或呼吸速率波形的信噪比来评估心率或呼吸速率估计的准确性,来移除假阳性心率或呼吸速率估计。信噪比可以在频域中计算为前两个谐波与心率或呼吸速率范围内剩余频率之间的比率。在一实施例中,当信噪比小于零时,心率或呼吸速率估计因为信号比噪声弱而被丢弃。
[0065]
在联合心率和呼吸速率估计网络系统100和200的训练期间,参数(例如,权重)被学习,并且通道注意力也被学习。心率和呼吸速率之间的相关性可在训练期间被使用以提高联合心率和呼吸速率估计网络系统100和200的准确性。在一实施例中,4:1~6:1的心率与呼吸速率之比被用作实况比率范围。
[0066]
传统上,多任务学习损失l是心率波形均方误差(mse)损失和呼吸速率波形mse损失的总和,其被定义为:
[0067][0068]
其中,t是一个时间窗口,p(t)和r(t)分别是时间变化的实况脉冲(如心率)波形序列和呼吸波形序列,p(t)'和r(t)'是预测的脉冲波形和呼吸波形,α、β是平衡脉冲波形损失和呼吸波形损失的经验参数。在一实施例中,α=β=1。
[0069]
目标或损失函数减少预测的心率和呼吸速率与实况心率和呼吸速率之间的差异。在一实施例中,一个基于比率的关联损失被包括在损失函数中:
[0070][0071]
其中,γ是用于控制基于比率的关联损失的经验参数,ratio_diff是预测的心率和呼吸速率的比率与实况比率范围之间的差异。在一实施例中,如果预测的心率和呼吸速率的比率在实况比率范围[4:1,6:1]之外,方程(4)的损失函数l
ratio
会产生更大的不利后果。在一实施例中,在训练期间,调整联合心率和呼吸速率估计网络系统100和200的参数(例如,权重)和通道注意力来减少心率和呼吸速率的估计比率与实况心率和呼吸速率的比率之间的差异。
[0072]
在一实施例中,在训练期间,调整参数以将估计的心率和呼吸速率之间的相关性与实况心率和呼吸速率之间的相关性相一致(align)。在一实施例中,基于比率的相关性损失和一致相关性损失被包括在损失函数中:
[0073][0074]
l
ρ
=1-ρ
p(t)

,r(t
)

[0075][0076]
其中σ
p(t)'
和σ
r(t)'
分别为脉冲波形和呼吸波形的标准偏差,cov为协方差。
[0077]
图3a图示了适用于实现本公开的一些实施例的联合心率和呼吸速率估计网络系统100和200的训练配置300的框图。应该理解的是,本文描述的这种和其他设置只是作为示例而提出的。其他设置和元素(例如,机器、界面、功能、顺序、功能的分组等)可以用来补充或代替所示的设置和元素,并且一些元素可以被完全省略。此外,本文描述的许多元素是功能实体,其可以作为离散的或分布式的组件,或与其他组件结合,以任何合适的组合和位置来实现。本文描述的由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。此外,本领域的普通技术人员将理解,执行训练配置300的操作的任何系统都在本公开的实施例的范围和精神之内。
[0078]
如图3a所示,训练配置300包括联合心率和呼吸速率估计网络系统200、损失函数单元310、比率操作单元315和压缩单元320。联合心率和呼吸速率估计网络系统100可以被替换为联合心率和呼吸速率估计网络系统200。比率操作单元315使用预测的心率、预测的呼吸速率和实况比率范围,来计算心率与呼吸速率的比率和比率差异(ratio_diff)。损失
函数单元310接收预测的心率、预测的呼吸速率、比率差异以及实况心率和呼吸速率。损失函数单元310可以评估方程(3)、(4)或(5)之一,来计算参数更新,并经由反向传播更新联合心率和呼吸速率估计网络系统200的通道注意力。
[0079]
在一些环境中,当联合心率和呼吸速率估计网络系统200被部署时,输入图像可能被压缩,这通常会引入视觉伪影
‑‑
使准确估计更加困难。压缩水平可以是可变的(即,取决于可用的带宽)或固定的。为了提高心率和呼吸速率联合估计网络系统100和200的鲁棒性和通用性,训练可以使用以不同水平(例如,压缩率)被压缩(或不压缩)的输入图像。压缩可以有效地利用以作为训练期间的一种数据增强形式。因此,训练配置300也可以包括压缩单元320,该单元接收受试者的图像,并在计算运动地图之前选择性地压缩每个图像。在一实施例中,外观地图和皮肤分割掩码也是使用选择性地压缩的图像而生成。在一实施例中,当联合心率和呼吸速率估计网络系统100和200使用未压缩的和多级压缩的输入图像进行训练时,对未压缩的输入数据的估计的准确性不会降级。
[0080]
图3b图示了适用于实现本公开的一些实施例的用于训练联合心率和呼吸速率估计网络系统100或200的方法330的另一个流程图。本文描述的方法330的每个块包括可使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。该方法也可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立的应用程序、服务或托管服务(独立的或与另一个托管服务相结合)、或另一个产品的插件(仅举几例)提供。此外,方法330是针对当作示例的图2a的联合心率和呼吸速率估计网络系统200描述的。然而,该方法可以另外或替代性地由任何一个系统或任何系统的组合来执行,包括但不限于本文所描述的系统。此外,本领域的普通技术人员将理解,执行方法330的任何系统都在本公开的实施例的范围和精神之内。
[0081]
在步骤335,接收受试者的图像序列。在步骤340,压缩单元320确定该序列中的每个图像是否被压缩。对于将被压缩的图像的一部分,压缩单元320还确定该部分中的每个图像的压缩级别,并且在步骤345,在生成运动地图、外观地图和皮肤分割掩码中的一个或更多个之前压缩单元320压缩该部分中的每个图像。步骤345可以以相同或不同的水平生成压缩图像作为数据增强,以使用未压缩的数据作为训练数据,从而使双注意力联合心率和呼吸速率估计网络系统100或200学习以产生对于任何压缩水平的估计。虽然图像或视频的压缩因为压缩伪影会破坏生理信号而被传统地视为在rppg中引入伪影,但压缩可以作为训练数据增强技术,来提高联合心率和呼吸速率估计网络系统100或200的鲁棒性。否则,对于未被压缩的图像,压缩单元320使用未压缩形式的图像生成运动地图、外观地图和皮肤分割掩码中的一个或更多个。
[0082]
在步骤350,外观神经网络模型,例如外观神经网络模型235,使用每个外观地图和皮肤分割掩码来生成空间注意力掩码。在步骤355,运动神经网络模型使用空间注意力掩码来生成受试者的估计心率和/或估计呼吸速率。在步骤365,基于估计的心率和/或估计的呼吸速率来评估损失函数。在一实施例中,损失函数单元310评估损失函数。在一实施例中,计算出估计的心率和估计的呼吸速率的比率作为损失函数的输入。在一实施例中,评估根据方程(3)、(4)或(5)计算的损失函数之一。
[0083]
在步骤370,确定是否应该继续训练。在一实施例中,如果损失函数的评估表明损失大于与期望的准确度水平相关的阈值,则继续训练。如果在步骤370,训练不继续,然后在
步骤375训练完成,并且联合心率和呼吸速率估计网络系统100或200可以被部署。否则,在步骤380,联合心率和呼吸速率估计网络系统100或200的参数被调整(例如,更新)。在一实施例中,通道注意力地图也在步骤380被调整。
[0084]
在一实施例中,由运动神经网络模型和/或注意力神经网络模型的层应用参数,并且参数被调整以减少实况心率或呼吸速率与估计的心率或呼吸速率之间的差异。在一实施例中,由运动神经网络模型和/或注意力神经网络模型的各层应用参数,并且参数被调整以减少估计的心率和估计的呼吸速率的估计比率和实况比率范围之间的差异。在一实施例中,参数由运动神经网络模型和/或注意神经网络模型的层应用,并且参数被调整以增加估计的心率和估计的呼吸速率之间的相关性,以与心率和呼吸速率之间的预期相关性相一致。
[0085]
有许多心率和/或呼吸速率估计的用例,特别是在汽车、医疗保健和游戏环境中。在汽车环境中,联合心率和呼吸速率估计网络系统100或200可用于监测操作员的压力、疲劳或无能力。基于这些估计可以启动最低风险的操作(例如,改变音乐、修改制动设置、靠边停车、紧急呼叫等),联合心率和呼吸速率估计网络系统100或200也可用于执行儿童存在检测。在医疗环境中,联合心率和呼吸速率估计网络系统100或200可用于远程医疗或无接触现场筛查。在游戏环境中,联合心率和呼吸速率估计网络系统100或200可用于测量用户的参与和/或兴奋水平。
[0086]
将空间注意力和逐通道注意力都整合到运动神经网络模型和外观神经网络模型的卷积神经网络架构中改善了心率和呼吸速率估计。具体来说,皮肤分割掩码通过识别面部皮肤(额头、脸颊、鼻子等)、颈部和胸部区域,为估计心率和呼吸速率提供额外的数据(例如,血液循环),来提高准确度。相比之下,估计心率和/或呼吸速率的传统技术依赖于空间注意力掩码,并不使用基于通道的注意力。
[0087]
用于传送输入图像序列的可用带宽可以不同,导致帧速率和/或图像压缩水平可变。当输入图像序列的视频帧速率是动态的,心率和呼吸速率可以相应地被调整。在训练期间可以采用(以不同的水平的)压缩增强,来提高运动神经网络模型和外观神经网络模型的通用性和鲁棒性。
[0088]
并行处理架构
[0089]
图4图示了根据一个实施例的并行处理单元(ppu)400。ppu 400可用于实现联合心率和呼吸速率估计网络系统100或200。ppu 400可用于实现运动神经网络模型、外观神经网络模型235、损失函数单元310和压缩单元320中的一个或更多个。在一个实施例中,诸如ppu 400的处理器可以被配置为实现神经网络模型。神经网络模型可以实现为由处理器执行的软件指令,或者在其他实施例中,处理器可以包括被配置为处理输入(例如,表示值的电信号)集以产生输出集的硬件元素矩阵,所述输出可以代表神经网络模型的激活。在其他的实施例中,神经网络模型可以被实现为由硬件元件矩阵执行的处理和软件指令的组合。实现神经网络模型可以包括通过例如神经网络模型的有监督或无监督训练确定用于神经网络模型的参数集,以及或可替换地,使用该参数集执行推理,以处理新输入集。
[0090]
在一个实施例中,ppu 400是在一个或更多个集成电路设备上实现的多线程处理器。ppu 400是被设计为并行处理许多线程的延迟隐藏架构。线程(例如执行线程)是被配置为由ppu 400执行的指令集的实例化。在一个实施例中,ppu 400是图形处理单元(gpu),其
被配置为实现用于处理三维(3d)图形数据的图形渲染管线,以便生成用于在显示设备上显示的二维(2d)图像数据。在其他实施例中,ppu 400可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,这样的处理器仅出于说明目的进行阐述,并且可采用任何处理器来补充和/或替代该处理器。
[0091]
一个或更多个ppu 400可以被配置为加速数千个高性能计算(hpc)、数据中心、云计算和机器学习应用。ppu 400可被配置为加速众多深度学习系统和应用,所述系统和应用用于自主车辆、模拟、诸如光线或路径追踪之类的计算图形学、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
[0092]
如图4所示,ppu 400包括输入/输出(i/o)单元405、前端单元415、调度器单元420、工作分配单元425、集线器430、交叉开关(xbar)470、一个或更多个通用处理集(gpc)450、以及一个或更多个存储器分区单元480。ppu 400可以经由互连402连接到主机处理器或其他外围设备。ppu 400还可以连接到包括多个存储器设备的本地存储器404。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(dram)设备。dram设备可以被配置为高带宽存储器(hbm)子系统,其中多个dram管芯(die)堆叠在每个设备内。
[0093]
nvlink 410互连使得系统能够扩展并且包括与一个或更多个cpu结合的一个或更多个ppu 400,支持ppu 400和cpu之间的高速缓存一致性,以及cpu主控。数据和/或命令可以由nvlink 410通过集线器430发送到ppu 400的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5b更详细地描述nvlink 410。
[0094]
i/o单元405被配置为通过互连402从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。i/o单元405可以经由互连402直接与主机处理器通信,或通过一个或更多个诸如内存桥之类的中间设备与主机处理器通信。在一个实施例中,i/o单元405可以经由互连402与诸如一个或更多个ppu 400之类的一个或更多个其他处理器通信。在一个实施例中,i/o单元405实现外围组件互连高速(pcie)接口,用于通过pcie总线进行通信,并且互连402是pcie总线。在替代的实施例中,i/o单元405可以实现其他类型的已知接口,用于与外部设备进行通信。
[0095]
i/o单元405对经由互连402接收的数据包进行解码。在一个实施例中,数据包表示被配置为使ppu 400执行各种操作的命令。i/o单元405将解码的命令传输至这些命令可能指定的ppu 400的各种其他单元。例如,一些命令可以被传输至前端单元415。其他命令可以被传输至集线器430或ppu 400的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,i/o单元405被配置为在ppu 400的各种逻辑单元之间和之中路由通信。
[0096]
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向ppu 400提供工作负载用于处理。工作负载可以包括若干指令和要由那些指令处理的数据。缓冲区是存储器中可由主机处理器和ppu 400两者访问(例如,读/写)的区域。例如,i/o单元405可以被配置为经由通过互连402传输的存储器请求访问连接到互连402的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然反向ppu 400
传输指向命令流开始的指针。前端单元415接收指向一个或更多个命令流的指针。前端单元415管理所述一个或更多个流,从这些流读取命令并将命令转发到ppu 400的各个单元。
[0097]
前端单元415耦合到调度器单元420,其配置各种gpc 450以处理由所述一个或更多个流定义的任务。调度器单元420被配置为跟踪与由调度器单元420管理的各种任务有关的状态信息。状态可以指示任务被指派给哪个gpc 450,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元420管理所述一个或更多个gpc 450上的多个任务的执行。
[0098]
调度器单元420耦合到工作分配单元425,其被配置为分派任务以在gpc 450上执行。工作分配单元425可以跟踪从调度器单元420接收到的若干调度的任务。在一个实施例中,工作分配单元425为每个gpc 450管理待处理(pending)任务池和活动任务池。当gpc 450完成任务的执行时,该任务从gpc 450的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在gpc 450上执行。如果gpc 450上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从gpc 450中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在gpc 450上执行。
[0099]
在一个实施例中,主机处理器执行实现应用程序编程接口(api)的驱动程序内核,其使得在主机处理器上执行的一个或更多个应用程序能够调度用于在ppu 400上执行的操作。在一个实施例中,多个计算应用程序由ppu 400同时执行,并且ppu 400为所述多个计算应用程序提供隔离、服务质量(qos)和独立地址空间。应用程序可以生成指令(例如,api调用),其使得驱动程序内核生成一个或更多个任务以由ppu 400执行。驱动程序内核将任务输出到正在由ppu 400处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。这些任务可以分配给gpc 450内的一个或更多个处理单元,并且指令被调度用于由至少一个线程束执行。
[0100]
工作分配单元425经由xbar470与所述一个或更多个gpc 450通信。xbar470是将ppu 400的许多单元耦合到ppu 400的其他单元的互连网络。例如,xbar470可以被配置为将工作分配单元425耦合到特定的gpc 450。虽然没有明确示出,但ppu 400的一个或更多个其他单元也可以经由集线器430连接到xbar470。
[0101]
任务由调度器单元420管理并由工作分配单元425分配给gpc 450。gpc 450被配置为处理任务并生成结果。结果可以由gpc 450内的其他任务消费,经由xbar470路由到不同的gpc 450,或存储在存储器404中。结果可以经由存储器分区单元480写入存储器404,存储器分区单元480实现用于从存储器404读取数据和向存储器404写入数据的存储器接口。结果可以经由nvlink410传输至另一个ppu 400或cpu。在一个实施例中,ppu 400包括数量为u的存储器分区单元480,该数量等于耦合到ppu400的存储器404的单独且不同的存储器设备的数量。每个gpc 450可以包括存储器管理单元以提供虚拟地址到物理地址的转化、存储器保护以及存储器请求的仲裁。在一个实施例中,存储器管理单元提供一个或更多个转化后备缓冲区(tlb)以用于在存储器404中执行虚拟地址到物理地址的转化。
[0102]
在一个实施例中,存储器分区单元480包括光栅操作(rop)单元、二级(l2)高速缓存和耦合到存储器404的存储器接口。存储器接口可以实现用于高速数据传输的32比特、64
比特、128比特、1024比特数据总线。ppu 400可以连接到高达y个存储器设备,例如高带宽存储器堆栈或图形双数据速率、版本5、同步动态随机存取存储器或其他类型的持久性存储装置。在一个实施例中,所述存储器接口实现一种hbm2存储器接口,并且y等于u的一半。在一个实施例中,hbm2存储器堆栈位于与ppu 400相同的物理封装上,与常规的gddr5 sdram系统相比提供大量的功率和面积节省。在一个实施例中,每个hbm2堆栈包括四个存储器裸晶并且y等于4,其中每个hbm2堆栈包括每个裸晶的两个129比特通道,总共8个通道且数据总线宽度为1024比特。
[0103]
在一个实施例中,存储器404支持单错纠错双错(secded)纠错码(ecc)以保护数据。ecc为对于数据损坏敏感的计算应用提供了较高的可靠性。可靠性在其中ppu 400处理非常大的数据集和/或在延长的时段运行应用程序的大规模集计算环境中尤为重要。
[0104]
在一个实施例中,ppu 400实现多级存储器层级结构。在一个实施例中,存储器分区单元480支持为cpu和ppu 400存储器提供单个统一的虚拟地址空间的统一存储器,允许实现虚拟存储器系统之间的数据共享。在一个实施例中,ppu 400访问位于其他处理器上的存储器的频率被追踪以确保存储器页面移动到正在更频繁地访问这些页面的ppu 400的物理存储器。在一个实施例中,nvlink 410支持地址转化服务,允许ppu 400直接访问cpu的页面表并且提供ppu 400对cpu存储器的完全访问。
[0105]
在一个实施例中,复制引擎在多个ppu 400之间或ppu 400和cpu之间传输数据。复制引擎可以为没有映射到页面表中的地址生成页面错误。然后,存储器分区单元480可以维修页面错误,将这些地址映射到页面表中,之后,复制引擎可以执行所述传输。在常规的系统中,存储器被固定(例如不可分页)用于多个处理器之间的多个复制引擎操作,大大地减少了可用存储量。在硬件页面故障的情况下,可以将地址传递给复制引擎,而不用担心存储器页面是否驻留,并且复制过程是透明的。
[0106]
来自存储器404或其他系统存储器的数据可以由存储器分区单元480获取并且存储在位于片上且在各种gpc 450之间共享的l2高速缓存460中。如图所示,每个存储器分区单元480包括与相应存储器404关联的l2高速缓冲的部分。然后,可以在gpc 450内的各种单元中实现低级高速缓存。例如,gpc 450内的处理单元中的每一个可以实现一级(l1)高速缓存。l1高速缓存是专用于特定处理单元的私有存储器。l2高速缓存460耦合到存储器接口470和xbar 470,并且来自l2高速缓存的数据可以被获取且存储在l1高速缓存中的每一个中以用于处理。
[0107]
在一个实施例中,每个gpc 450内的处理单元实现一种simd(单指令多数据)架构,其中线程组(例如线程束)中的每个线程被配置为基于相同的指令集合处理不同的数据集合。线程组中的所有线程执行相同的指令。在另一个实施例中,处理单元实现一种simt(单指令多线程)架构,其中线程组中的每个线程被配置为基于相同的指令集合处理不同的数据集合,但是其中线程组中的个别线程允许在执行期间有分歧。在一个实施例中,对于每个线程束维持程序计数器、调用堆栈和执行状态,允许在线程束内的线程有分歧时实现线程束之间的并发性和线程束内的串行执行。在另一个实施例中,对于每个个别的线程维持程序计数器、调用堆栈和执行状态,允许实现线程束之内和之间的所有线程之间的同等的并发性。当对于每个个别的线程维持执行状态时,执行相同指令的线程可以聚合并且并行地执行以获得最大效率。
[0108]
协作组是一种用于组织通信线程组的编程模型,其允许开发人员表达线程正在通信的粒度,允许实现更丰富、更高效的并行分解的表达。协作启动api支持用于执行并行算法的线程块之间的同步。常规的编程模型提供了用于同步协作线程的单个简单构造:跨线程块的所有线程的屏障(例如syncthreads()函数)。然而,程序员经常愿意以集体组范围的函数接口的形式定义小于线程块粒度的线程组,并且在定义的组内同步以便允许实现更大的性能、设计灵活性和软件重用。
[0109]
协作组使得程序员能够以子块和多块粒度显式地定义线程组(如和单个线程一样小),并且在协作组中的线程上执行诸如同步之类的集体操作。该编程模型支持跨软件边界的清洁组成,使得库和实用函数可以在其局部上下文内安全地同步而不必做出关于聚合的假设。协作组基元允许实现新的协作并行模式,包括生产者消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
[0110]
每个处理单元包括大量(例如128等等)不同的处理核心(例如功能单元),这些处理核心可以是完全管线化的、单精度的、双精度的和/或混合精度的,并且包括浮点算术逻辑单元和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的ieee 754-2008标准。在一个实施例中,所述核心包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心。
[0111]
张量核心被配置为执行矩阵运算。特别地,张量核心被配置为执行深度学习矩阵算术,例如gemm(矩阵-矩阵乘法),用于神经网络训练和推理期间的卷积运算。在一个实施例中,每个张量核心在4x4矩阵上运算,并且执行矩阵乘法和累加运算,d=a
×
b+c,其中a、b、c和d为4x4矩阵。
[0112]
在一个实施例中,矩阵乘法输入a和b可以是整数、定点或浮点矩阵,而累积矩阵c和d可以是相等或更高位宽的整数、定点或浮点矩阵。在一个实施例中,张量核心采用32位整数累加在1位、4位或8位整数输入数据上运算。8位整数矩阵乘法需要1024次运算,并且导致全精度乘积,该全精度乘积然后使用32位整数加法与其他中间乘积累加,以用于8x8x16矩阵乘法。在一个实施例中,张量核心利用32位浮点累加在16位浮点输入数据上运算。16位浮点乘法要求64次运算,并且导致全精度乘积,该乘积然后使用32位浮点加法与其他中间乘积累加以用于4x4x4矩阵乘法。在实践中,张量核心用于执行由这些较小的元素组成的大得多的二维或更高维矩阵运算。诸如cuda 9c++api之类的api公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作以便高效地使用于自cuda-c++程序的张量核心。在cuda层级,线程束级别的接口采取跨越线程束的所有32个线程的16x16大小的矩阵。
[0113]
每个处理单元还可以包括执行特殊功能(例如属性评估、平方根倒数等等)的m个特殊功能单元(sfu)。在一个实施例中,sfu可以包括被配置为遍历层级树数据结构的树遍历单元。在一个实施例中,sfu可以包括被配置为执行纹理图滤波操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器404中加载纹理图(例如2d纹元阵列),并且对这些纹理图采样以便产生采样的纹理值以用于处理单元执行的着器程序。在一个实施例中,纹理图存储在可以包括或包含l1高速缓存的共享存储器中。纹理单元使用mip图(例如细节水平变化的纹理图)实现诸如滤波操作之类的纹理操作。在一个实施例中,每个处理单元包括两个纹理单元。
[0114]
每个处理单元也包括在共享存储器与寄存器文件之间实现加载和存储操作的n个
加载存储单元(lsu)。每个处理单元包括将所述核心中的每一个连接到寄存器文件以及将lsu连接到寄存器文件、共享存储器的互连网络。在一个实施例中,互连网络是一种交叉开关,其可以被配置为将任何所述核心连接到寄存器文件中的任何寄存器并且将lsu连接到寄存器文件和共享存储器中的存储器位置。
[0115]
共享存储器是允许数据存储以及处理单元之间和处理单元内的线程之间通信的片上存储器阵列。在一个实施例中,共享存储器包括128kb存储容量,并且处于从每个所述处理单元到存储器分区单元480的路径上。共享存储器可以用于缓存读和写。共享存储器、l1高速缓存、l2高速缓存和存储器404中的一个或更多个为后备仓。
[0116]
将数据高速缓存和共享存储器功能结合到单一的存储器块中对于两种类型的存储器访问提供了最佳的总体性能。所述容量可以由不使用共享存储器的程序用作高速缓存。例如,如果共享存储器被配置为使用一半的容量,那么纹理和加载/存储操作可以使用剩余的容量。整合到共享存储器内使得共享存储器能够用作用于流式数据的高吞吐量导管,同时提供对于频繁重用的数据的高带宽和低延迟访问。
[0117]
当被配置为通用并行计算时,可以使用与图形计算相比更简单的配置。特别地,绕过固定功能图形处理单元,创建简单得多的编程模型。在该通用并行计算配置中,工作分配单元425将线程块直接分派和分配给gpc450内的处理单元。线程在计算中使用唯一线程id执行相同的程序以便确保每个线程使用执行程序和执行计算的处理单元、在线程之间通信的共享存储器以及通过共享存储器和存储器分区单元480读写全局存储器的lsu生成唯一的结果。当被配置用于通用并行计算时,处理单元也可以写入命令,调度器单元420可以使用所述命令启动处理单元上的新工作。
[0118]
ppu 400中的每一个可以包括诸如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、射线追踪(rt)核心、视觉处理单元(vpu)、图形处理集(gpc)、纹理处理集(tpc)、流式多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连高速(pcie)元件和/或类似物之类的一个或更多个处理核心和/或其组件和/或被配置为执行其功能。
[0119]
ppu 400可以包括在台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如无线、手持式设备)、个人数字助理(pda)、数字照相机、车辆、头戴式显示器、手持式电子设备等等内。在一个实施例中,ppu 400在单个半导体衬底上实施。在另一个实施例中,ppu 400与诸如附加的ppu 400、存储器404、精简指令集计算机(risc)cpu、存储器管理单元(mmu)、数模转换器(dac)等等之类的一个或更多个其他设备一起包括在片上系统(soc)内。
[0120]
在一个实施例中,ppu 400可以包括在包括一个或更多个存储器设备的图形卡上。该图形卡可以被配置为与台式计算机的主板上的pcie插槽接口。在又一个实施例中,ppu 400可以是包括在主板的芯片集中的集成图形处理单元(igpu)或并行处理器。在又一个实施例中,ppu 400可以在可重新配置的硬件中实现。在又一个实施例中,ppu 400的部分可以在可重新配置的硬件中实现。
[0121]
示例性的计算系统
[0122]
随着开发人员在诸如人工智能计算之类的应用中公开和利用更多的并行性,具有
多个gpu和cpu的系统被用于各行各业中。具有数十至数千个计算节点的高性能gpu加速系统部署在数据中心、研究设施和超级计算机中以解决越来越大的问题。随着高性能系统内的处理设备数量的增多,通信和数据传输机制需要扩展以支持增大的带宽。
[0123]
图5a是根据一个实施例的使用图4的ppu 400实现的处理系统500的概念图。示例性系统500可以被配置为分别实现图1c中示出的方法150、图2b中示出的方法250和/或图3b中示出的方法330。处理系统500包括cpu 530、交换机510和多个ppu 400以及各个存储器404。
[0124]
nvlink 410提供每个所述ppu 400之间的高速通信链路。尽管图5b中图示了具体数量的nvlink 410和互连402连接,但是到每个ppu 400和cpu 530的连接的数量可以变化。交换机510在互连402与cpu 530之间形成接口。ppu 400、存储器404和nvlink 410可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两种或更多种协议以在各个不同的连接和/或链路之间形成接口。
[0125]
在另一个实施例中(未示出)中,nvlink 410提供每个ppu 400与cpu 530之间的一个或更多个高速通信链路,并且交换机510在互连402与每个ppu 400之间形成接口。ppu 400、存储器404和互连402可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连402提供每个ppu 400与cpu 530之间的一个或更多个通信链路,并且交换机510使用nvlink 410在每个ppu 400之间形成接口以便提供ppu 400之间的一个或更多个高速通信链路。在另一个实施例(未示出)中,nvlink 410通过交换机510提供ppu 400与cpu 530之间的一个或更多个高速通信链路。在又一个实施例(未示出)中,互连402直接提供每个ppu 400之间的一个或更多个通信链路。nvlink 410高速通信链路中的一个或更多个可以使用与nvlink 410相同的协议实现为物理nvlink互连或片上或裸晶上互连。
[0126]
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的基于半导体的单一集成电路。应当指出,术语单个半导体平台也可以指具有增多的连接性的多芯片模块,其模拟片上操作并且相对于利用常规总线实现方式做出了重大的改进。当然,所述各个不同的电路或设备也可以按照用户的愿望单独地位于半导体平台中或位于其各种不同的组合中。可替换地,并行处理模块525可以实现为电路板衬底,并且每个ppu 400和/或存储器404可以为封装设备。在一个实施例中,cpu 530、交换机510和并行处理模块525位于单个半导体平台上。
[0127]
在一个实施例中,每个nvlink 410的信令速率为20-25千兆比特/秒,并且每个ppu 400包括六个nvlink 410接口(如图5a中所示,对于每个ppu 400包括五个nvlink 410接口)。每个nvlink 410在每个方向提供25千兆字节/秒的数据传输速率,六个链路提供400千兆字节/秒。nvlink410可以如图5a所示排他性地用于ppu到ppu通信,或在cpu 530也包括一个或更多个nvlink 410接口时,用于ppu到ppu和ppu到cpu的某种组合。
[0128]
在一个实施例中,nvlink 410允许从cpu 530到每个ppu 400的存储器404的直接加载/存储/原子访问。在一个实施例中,nvlink410支持一致性操作,允许从存储器404读取的数据存储在cpu 530的高速缓存层级结构中,降低了cpu 530的高速缓存访问延迟。在一个实施例中,nvlink410包括对于地址转化服务(ats)的支持,允许ppu 400直接访问cpu 530内的页面表。nvlink 410中的一个或更多个也可以被配置为操作于低功率模式。
[0129]
图5b图示了示例性系统565,在该系统中可以实现前面各种实施例的各种架构和/
或功能。示例性系统565可以被配置为分别实现图1c中示出的方法150、图2b中示出的方法250和/或图3b中示出的方法330。
[0130]
如图所示,提供了一种系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以直接或间接地耦合以下设备中的一个或更多个:主存储器540,网络接口535,cpu 530,显示设备545,输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何适当的协议实现,并且可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一种或多种总线或链路类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连高速(pcie)总线、超级传输和/或另一种类型的总线或链路。在一些实施例中,存在组件之间的直接连接。作为一个示例,cpu 530可以直接连接到主存储器540。此外,cpu 530可以直接连接到并行处理系统525。在存在组件之间的直接或点对点连接的情况下,通信总线575可以包括实现该连接的pcie链路。在这些示例中,pci总线不必包括在系统565中。
[0131]
尽管利用线条将图5b的不同方框示为经由通信总线575连接,但是这并不预期是限制性的并且只是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是i/o组件,例如输入设备560(例如如果显示器为触摸屏的话)。作为另一个示例,cpu 530和/或并行处理系统525可以包括存储器(例如,主存储器540可以表示除了并行处理系统525、cpu 530之外的存储设备,和/或其他组件)。换言之,图5b的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都预期处于图5b的计算设备的范围内。
[0132]
系统565还包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,其可以采取各种计算机可读介质的形式。计算机可读介质可以是任何可由系统565访问的可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移动和不可移动的介质。通过举例,而不是限制,计算机可读介质可以包括计算机存储介质和通信介质。
[0133]
计算机存储介质可以包括以任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息。例如,主存储器540可以存储诸如操作系统之类的计算机可读指令(例如,其表示程序和/或程序元素)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可以用于存储希望的信息以及可以被系统565访问的任何其他介质。当在本文使用时,计算机存储介质不包括信号本身。
[0134]
计算机存储介质可以在诸如载波或其他传输机制的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
[0135]
当被执行时,计算机程序使得系统565能够执行各种功能。cpu 530可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu530中的每一个可以包括能够同时处理众多软件线程的一个或更多个核心(例如一个、两个、四个、八个、二十八个、七十二个等等)。取决于实现的系统565的类型,cpu 530可以包括任何类型的处理器,并且可以包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器,以及用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或诸如数学协处理器之类的补充协处理器之外,系统565可以包括一个或更多个cpu 530。
[0136]
除了cpu530之外或可替换地,并行处理模块525可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。并行处理模块525可以由系统565用于渲染图形(例如3d图形)或执行通用计算。例如,并行处理模块525可以用于gpu上的通用计算(gpgpu)。在实施例中,cpu 530和/或并行处理模块525可以分立地或联合地执行所述方法、过程和/或其部分的任意组合。
[0137]
系统565还包括输入设备560、并行处理系统525、和显示设备545。显示设备545可以包括显示器(例如,显示器、触摸屏、电视屏幕、平视显示器(hud)、其他显示类型或其组合)、扬声器和/或其他呈现组件。显示设备545可以接收来自其他组件(例如并行处理系统525、cpu 530等等)的数据,并且输出该数据(例如图像、视频、声音等等)。
[0138]
网络接口535可以使得系统565能够逻辑耦合到其他设备,所述其他设备包括输入设备560、显示设备545和/或其他组件,其中一些可以嵌入到(例如集成到)系统565中。说明性输入设备560包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等等。输入设备560可以提供自然用户界面(nui),其处理用户生成的空中手势、语音或其他生理输入。在一些实例中,可以将输入传输至适当的网络元件以供进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头眼跟踪以及与系统565的显示器关联的触摸识别(如下文中更详细地描述的)。系统565可以包括用于手势检测和识别的深度照相机,例如立体照相机系统、红外照相机系统、rgb照相机系统、触摸屏技术及其组合。此外,系统565可以包括允许实现运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由系统565用于渲染沉浸式增强现实或虚拟现实。
[0139]
进一步,系统565可以出于通信的目的通过网络接口535耦合到网络(例如电信网络、局域网(lan)、无线网络、诸如因特网之类的广域网(wan)、对等网络、电缆网络等等)。系统565可以包括在分布式网络和/或云计算环境内。
[0140]
网络接口535可以包括一个或多个接收器、发射器和/或收发器,其使系统565能够经由包括有线和/或无线通信的电子通信网络与其他计算设备通信。网络接口535可以实现为网络接口控制器(nic)),其包括用于执行诸如(例如且不限于)数据包解析和加速网络处理和通信的操作的一个或更多个数据处理单元(dpu)。网络接口535可以包括允许实现通过若干不同网络中的任意网络通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband的通信)、低功率广域
网(例如lorawan、sigfox等等)和/或因特网。
[0141]
系统565还可以包括辅助存储装置(未示出)。辅助存储装置包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、紧密盘驱动器、数字多功能盘(dvd)驱动器、记录设备、通用串行总线(usb)闪存的可移除存储驱动器。可移除存储驱动器以众所周知的方式从可移除存储单元读和/或写到可移除存储单元。系统565也可以包括硬接线电源、电池电源或其组合(未示出)。该电源可以向系统565供电以使得系统565的组件能够操作。
[0142]
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可替换地,各种不同的模块也可以按照用户的愿望单独地放置或位于半导体平台的各种组合中。尽管上面描述了各个不同的实施例,但是应当理解,它们仅仅通过示例的方式且非限制性地给出。因此,优选实施例的宽度和范围应当不受限于上面描述的任何示例性实施例,而是应当仅仅根据下面的权利要求及其等效物限定。
[0143]
示例网络环境
[0144]
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如每个设备)可以在图5a的处理系统500和/或图5b的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括处理系统500和/或示例性系统565的相似的组件、特征和/或功能。
[0145]
网络环境的组件可以经由网络彼此通信,所述网络可以是有线的、无线的或兼而有之。网络可以包括多个网络或网络的网络。举例而言,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络——例如因特网,和/或公共交换电话网络(pstn),和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如、通信塔或甚至接入点之类的组件(以及其他组件)可以提供无线连接性。
[0146]
兼容的网络环境可以包括一个或更多个对等网络环境——在该情况下,服务器可以不包括在网络环境中,以及一个或更多个客户端-服务器网络环境——在该情况下,一个或更多个服务器可以包括在网络环境中。在对等网络环境中,本文关于服务器描述的功能可以在任意数量的客户端设备上实现。
[0147]
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等等。基于云的网络环境可以包括框架层、作业调度器、资源管理器以及在一个或更多个服务器上实现的分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或应用程序可以分别包括基于web的服务软件或应用程序。在实施例中,客户端设备中的一个或更多个可以使用基于web的服务软件或应用程序(例如通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于例如可以将分布式文件系统用于大规模数据处理(例如“大数据”)的免费开源软件web应用程序框架类型。
[0148]
基于云的网络环境可以提供实现本文描述的计算和/或数据存储功能(或其一个或更多个部分)的云计算和/或云存储。这些不同功能中的任何功能可以从中心或核心服务器(例如一个或更多个数据中心的中心或核心服务器,所述数据中心可以跨州、地区、国家、全球等等分布)分布在多个位置。如果到用户(例如客户端设备)的连接相对靠近边缘服务
器,那么核心服务器可以将所述功能的至少一部分指派给边缘服务器。基于云的网络环境可以是私有的(例如限于单个组织),可以是公共的(例如对于许多组织可用),和/或其组合(例如混合云环境)。。
[0149]
客户端设备可以包括图5a的示例处理系统500和/或图5b的示例性系统565的组件、特征和功能中的至少一些。举例而言且非限制性地,客户端设备可以实施为个人计算机(pc)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实头戴式视图器、全球定位系统(gps)或设备、视频播放器、视频照相机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、器具、消费电子设备、工作站、边缘设备、这些划定的设备的任意组合或任何其他适当的设备。
[0150]
机器学习
[0151]
诸如ppu 400之类的处理器上开发的深度神经网络(dnn)已经用于从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像配字幕到视频聊天应用中的智能实时语言翻译的多种多样的用例。深度学习是一种对人脑的神经学习过程进行建模的技术,其不断地学习、不断地变得更聪明并且随着时间的推移更快速地输送更精确的结果。小孩最初由成年人教导对各种不同的形状进行正确的标识和分类,最终能够在没有任何指导的情况下标识形状。类似地,深度学习或神经学习系统需要在受试者识别和分类中进行训练,以便它在标识基本的受试者、被遮挡的受试者等等方面变得更聪明和更高效,同时也将上下文赋予受试者。
[0152]
在最简单的水平下,人脑中的神经元观看接收的各种输入,重要性水平被赋予这些输入中的每一个,并且输出传递至其他神经元以做出反应。人工神经元或感知机是神经网络的最基本模型。在一个示例中,感知机可以接收一个或更多个输入,所述输入表示感知机正被训练对其识别和分类的受试者的各种特征,并且这些特征中的每一个基于在定义受试者的形状中该特征的重要性而被赋予某个权重。
[0153]
深度神经网络(dnn)模型包括许多层许多连接的节点(例如感知机、玻尔兹曼机、径向基函数、卷积层等等),其可以利用巨量的输入数据进行训练以便以高精度快速地解决复杂的问题。在一个示例中,dnn模型的第一层将汽车的输入图像分解为不同的片段并且寻诸如线条和角之类的基本图案。第二层组装这些线条以便寻诸如轮子、风挡和镜子之类的更高水平的图案。下一层标识车辆的类型,并且最终几层生成用于输入图像的标记,标识特定汽车品牌的型号。
[0154]
一旦训练了dnn,dnn就可以被部署且用于在称为推理的过程中对受试者或图案进行标识和分类。推理(dnn通过其从给定输入中提取有用信息的过程)的示例包括标识存入atm机的支票上的手写数字,标识照片中朋友的图像,将电影推荐输送至超过五千万用户,在无人驾驶汽车中对不同类型的汽车、行人和道路危险进行标识和分类,或实时地翻译人类语言。
[0155]
在训练期间,数据在前向传播阶段流经dnn,直到产生指示与输入相应的标记的预测。如果神经网络没有正确地标记输入,那么对正确标记与预测的标记之间的误差进行分析,并且在反向传播阶段期间针对每个特征调节所述权重,直到dnn正确地标记所述输入以及训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括ppu 400
支持的浮点乘法和加法。推理的计算密集程度低于训练,是个延迟敏感过程,其中将训练的神经网络应用到它之前没有见过的新输入以便对图像分类,检测情绪,标识推荐,识别和翻译语言,并且通常推理出新信息。
[0156]
神经网络严重依赖于矩阵数学运算,并且为了效率和速率二者,复杂的多层网络需要巨量的浮点性能和带宽。利用针对矩阵数学运算优化的且提供数十至数百tflops的性能的数千个处理核心,ppu 400是一种能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。
[0157]
此外,应用本文公开的一种或更多种技术产生的诸如图像、预测的心率和/或预测的呼吸速率的数据可用于训练、测试或认证用于识别现实世界中的对象和环境的dnn。这样的数据可以包括车行道、工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理对象或真实世界环境的场景。这样的数据可以用于训练、测试或认证在机器或机器人中被采用于操控、处理或修改真实世界中的物理对象的dnn。此外,这样的数据可以用于训练、测试或认证在自主车辆中被采用于在真实世界中导航和移动车辆的dnn。此外,应用本文公开的技术中的一种或多种生成的数据可以用于将信息传达至这样的机器、机器人和车辆的用户。
[0158]
图5c示出了根据至少一个实施例的可用于训练和利用机器学习的示例性系统555的组件。如将讨论的,可以由可以在单个实体或多个实体的控制下的单个计算系统或计算设备和资源的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求各个方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练。在至少一个实施例中,训练数据(或要由经训练的神经网络分析的数据)可以由供应商、用户或第三方内容供应商524提供。在至少一个实施例中,客户端设备502可以是例如要代表用户被导航的车辆或对象,该用户可以提交请求和/或接收有助于设备导航的指令。
[0159]
在至少一个实施例中,能够通过至少一个网络504提交请求以便由供应商环境506接收。在至少一个实施例中,客户端设备可以是使得用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,诸如但不限于台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏控制台(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒。一个或更多个网络504可以包括用于传输请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、以太网、蜂窝网络、局域网(lan)、广域网(wan)、个人区域网络(pan)、在对等体之间进行直接无线连接的自组织网络等等。
[0160]
在至少一个实施例中,可以在接口层508接收请求,该接口层可以将数据转发到训练和推理管理器532。训练和推理管理器532可以是包括用于管理与数据或内容相应的服务和请求的硬件和软件的系统或服务。在至少一个实施例中,该训练和推理管理器532可以接收训练神经网络的请求,并且可以将用于请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或神经网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是存储在训练数据存储库514中的、从客户端设备502接收的或从第三方供应商524获得的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如递归神
经网络(rnn)或卷积神经网络(cnn)。一旦训练并成功评估了神经网络,就可以将经训练的神经网络存储到例如模型存储库516,其可以存储用于用户、应用程序或服务等的不同模型或网络。在至少一个实施例中,针对单个应用程序或实体可能存在多个模型,其可以基于多个不同因素而被利用。
[0161]
在至少一个实施例中,在随后的时间点,可以从客户设备502(或另一个这样的设备)接收对至少部分地被经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如输入数据,其要使用神经网络进行处理,以获得一个或更多个推理或其他输出值、分类或预测,或对于至少一个实施例,输入数据可以由接口层508接收并且被引导到推理模块518,尽管不同的系统或服务也可以使用。在至少一个实施例中,如果尚未本地存储到推理模块518,则推理模块518可以从模型存储库516中获得适当的训练的网络,例如本文所讨论的训练的深度神经网络(dnn)。推理模块518可以将数据作为输入提供给训练的网络,其然后可以生成一个或更多个推理作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理传输至客户端设备502以向用户显示或与用户进行其他通信。在至少一个实施例中,用户的上下文数据也可以存储到用户上下文数据存储库522,该数据库可以包括关于用户的数据,该数据可以用作生成推理或确定获得实例后返回给用户的数据的网络输入。在至少一个实施例中,可以包括输入或推理数据中的至少一些的相关数据也可以被存储到本地数据库534以用于处理将来的请求。在至少一个实施例中,用户可以使用帐户信息或其他信息来访问供应商环境的资源或功能。在至少一个实施例中,如果允许和可用,还可以收集用户数据并将其用于进一步训练模型,以便为将来的请求提供更精确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用526的请求,并通过相同的界面显示结果。客户端设备可以包括资源,诸如用于生成请求和处理结果或响应的处理器528和存储器562,以及用于存储用于机器学习应用526的数据的至少一个数据存储元件552。
[0162]
在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(cpu)。但是,如上所述,此类环境中的资源可以利用gpu来处理用于至少某些类型的请求的数据。诸如ppu 300之类的gpu具有数千个核心,被设计为处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用gpu进行离线构建允许更快地训练更大、更复杂的模型,但离线生成预测意味着无法使用请求-时间输入特征,或必须针对所有特征排列生成预测并将其存储在查表中以进行服务实时请求。如果深度学习框架支持cpu模式,并且模型足够小且简单以至可以合理的延迟在cpu上执行前馈,则cpu实例上的服务可以托管模型。在这种情况下,可以在gpu上离线进行训练,并在cpu上实时进行推理。如果cpu方法不是可行的,则服务可以在gpu实例上运行。但是,由于gpu具有与cpu不同的性能和成本特性,因此运行将运行时算法卸载到gpu的服务可能要求将其设计成与基于cpu的服务不同。
[0163]
在至少一个实施例中,可以从客户端设备502提供视频数据以便在供应商环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理以便在客户端设备502上进行增强。在至少一个实施例中,可以从第三方内容供应商524流式传输并且由第三方内容供应商524、供应商环境506或客户端设备502增强视频数据。在至少一个实施例中,可以从客户端设备502提供视频数据以便用作供应商环境506中的训练数据。
[0164]
在至少一个实施例中,有监督和/或无监督训练可以由客户端设备502和/或供应商环境506执行。在至少一个实施例中,训练数据514(例如分类的或标记的数据)集作为输入而提供以便用作训练数据。在至少一个实施例中,训练数据可以包括针对其要对神经网络进行训练的至少一种类型的对象的实例,以及标识该对象类型的信息。在至少一个实施例中,训练数据可以包括图像集,其每个图像包括一种类型的对象的表示,其中每个图像也包括标记、元数据、分类或标识对应图像中表示的对象类型的其他信息,或与之关联。各种不同的其他类型的数据也可以用作训练数据,其可以包括文本数据、音频数据、视频数据等等。在至少一个实施例中,训练数据514作为训练输入提供给训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备,以用于训练神经网络(或其他模型或算法等等)。在至少一个实施例中,训练模块512接收指示要用于训练的模型类型的指令或请求,在至少一个实施例中,模型可以是对于这样的目的有用的任何适当的统计模型、网络或算法,其可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等等。在至少一个实施例中,训练模块512可以从适当的储存库中选择初始模型或其他未训练的模型,并且利用训练数据514训练模型,从而生成可以用于对相似类型的数据分类或生成其他这样的推理的训练的模型(例如训练的深度神经网络)。在其中未使用训练数据的至少一个实施例中,仍然可以选择初始模型以便对每个训练模块512的输入数据进行训练。
[0165]
在至少一个实施例中,可以以若干不同的方式训练模型,其可以部分地取决于选择的模型类型。在至少一个实施例中,可以向机器学习算法提供训练数据集,其中模型是通过训练过程创建的模型工件。在至少一个实施例中,训练数据的每个实例包含可以称为目标或目标属性的正确答案(例如分类)。在至少一个实施例中,学习算法到将输入数据属性映射到目标——要预测的答案——的训练数据中的模式,并且机器学习模型是捕获这些模式的输出。在至少一个实施例中,机器学习模型于是可以用于获得对未指定目标的新数据的预测。
[0166]
在至少一个实施例中,训练和推理管理器532可以从包括二元分类、多类分类、生成和回归模型的机器学习模型中进行选择。在至少一个实施例中,要使用的模型的类型可以至少部分地取决于要预测的目标类型。
[0167]
在一个实施例中,ppu 400包括图形处理单元(gpu)。ppu 400被配置为接收指定用于处理图形数据的着器程序的命令。图形数据可以被定义为诸如点、线、三角形、四边形、三角形带等等之类的图元集。典型地,图元包括指定用于该图元的顶点的数量(例如在模型-空间坐标系统中)以及与该图元的每个顶点关联的属性的数据。ppu 400可以被配置为处理图形图元以生成帧缓冲区(例如用于显示器的像素中的每一个的像素数据)。。
[0168]
应用程序将用于场景的模型数据(例如属性和顶点集合)写入诸如系统存储器或存储器404之类的存储器。模型数据定义了可能在显示器上可见的对象中的每一个。然后,应用程序对驱动程序内核进行api调用,其请求渲染和显示该模型数据。驱动程序内核读取该模型数据,并且将命令写入所述一个或更多个流以便执行处理该模型数据的操作。这些命令可以引用要在ppu 400内的处理单元上实现的不同着器程序,包括顶点着器、外壳着器、域着器、几何着器和像素着器中的一个或更多个。例如,所述处理单元中的一个或更多个可以被配置为执行顶点着器程序,其处理模型数据定义的若干顶点。在一
个实施例中,这些不同的处理单元可以被配置为并发地执行不同的着器程序。例如,第一处理单元子集可以被配置为执行顶点着器程序,而第二处理单元子集可以被配置为执行像素着器程序。第一处理单元子集处理顶点数据以产生处理的顶点数据,并且将处理的顶点数据写入l2高速缓存460和/或存储器404。在处理的顶点数据被光栅化(例如从三维数据变换为屏幕空间中的二维数据)以产生片段数据之后,第二处理单元子集执行像素着器以产生处理的片段数据,其然后与其他处理的片段数据混合并且写入存储器404中的帧缓冲区。顶点着器程序和像素着器程序可以并发地执行,以流水线方式处理来自相同场景的不同数据,直到该场景的所有模型数据都被渲染到帧缓冲区。然后,将帧缓冲区的内容传输至显示控制器以便在显示设备上显示。
[0169]
应用本文公开的一种或更多种技术产生的诸如图像、预测的心率和/或预测的呼吸速率的数据可以在监视器或其他显示设备上显示。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接耦合到系统或处理器。这样的网络的示例包括因特网、移动电信网络、wifi网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,系统或处理器生成的数据可以通过网络流式传输至显示设备。这样的流式传输允许例如渲染图像的视频游戏或其他应用程序在服务器、数据中心上或基于云的计算环境中执行,并且渲染的图像被传输和显示于与服务器或数据中心物理上分开的一个或更多个用户设备(例如计算机、视频游戏控制台、智能电话、其他移动设备等等)上。因此,本文公开的技术可以应用于增强被流式传输的图像,并且增强流式传输图像的服务,例如nvidiageforce now(gfn)、google stadia等等。
[0170]
图6为根据本公开一些实施例的流式系统605的示例系统示意图。图6包括服务器603(其可以包括与图5a的示例处理系统500和/或图5b的示例性系统565相似的组件、特征和/或功能)、客户端604(其可以包括与图5a的示例处理系统500和/或图5b的示例性系统565相似的组件、特征和/或功能)和网络606(其可以与本文描述的网络相似)。在本公开的一些实施例中,系统605可以被实现。
[0171]
在一个实施例中,流式系统605为游戏流式系统,并且服务器604为游戏服务器。在系统605中,对于游戏会话,客户端设备604可以响应于输入设备626的输入而仅仅接收输入数据,将输入数据发送至服务器603,接收来自服务器603的编码的显示数据,并且在显示器624上显示该显示数据。这样,计算强度更高的计算和处理被卸载到服务器603(例如游戏会话的图形输出的渲染,尤其是光线或路径追踪,由服务器603的gpu 615执行)。换言之,游戏会话从服务器603流式传输至客户端设备604,从而降低客户端设备604对于图形处理和渲染的要求。
[0172]
例如,关于游戏会话的实例化,客户端设备604可以基于接收到来自服务器603的显示数据而正在显示器624上显示游戏会话的帧。客户端设备604可以接收输入设备626之一的输入,并且作为响应生成输入数据。客户端设备604可以经由通信接口621且通过网络606(例如因特网)将输入数据发送至服务器603,并且服务器603可以经由通信接口618接收该输入数据。cpu 608可以接收输入数据,处理输入数据,并且将数据发送至gpu 615,该数据使得gpu 615生成游戏会话的渲染。例如,输入数据可以表示游戏中用户角的运动,发射武器、重新装弹、传球、使车辆转向等等。渲染组件612可以渲染游戏会话(例如表示输入数据的结果),并且渲染捕获组件614可以捕获游戏会话的渲染作为显示数据(例如作为捕
获游戏会话的渲染的帧的图像数据)。游戏会话的渲染可以包括使用服务器603的一个或更多个并行处理单元(例如gpu,其可以进一步采用一个或更多个专用硬件加速器或处理核心的使用以执行光线或路径追踪技术)计算的光线或路径追踪的光照和/或阴影效果。然后,编码器616可以对显示数据进行编码以生成编码的显示数据,并且该编码的显示数据可以经由通信接口618通过网络606发送至客户端设备604。客户端设备604可以经由通信接口621接收该编码的显示数据,并且解码器622可以对该编码的显示数据进行解码以生成显示数据。然后,客户端设备604可以经由显示器624显示该显示数据。
[0173]
应当指出,本文描述的技术可以包含在存储于计算机可读介质中的可执行指令中,所述指令供基于处理器的指令执行机器、系统、装置或设备使用或结合其使用。本领域技术人员将领会,对于一些实施例而言,可以包括各种不同类型的计算机可读介质以用于存储数据。当在本文使用时,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何适当的介质中的一种或更多种,从而指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令并且执行这些指令以实现所描述的实施例。适当的存储格式包括电子、磁性、光学和电磁格式中的一种或多种。常规的示例性计算机可读介质的非详尽列表包括:便携式计算机磁盘;随机存取存储器(ram);只读存储器(rom);可擦除可编程只读存储器(eprom);闪存设备;以及光学存储设备,包括便携式紧密盘(cd)、便携式数字视频盘(dvd)等等。
[0174]
应当理解,附图中说明的组件的安排是用于说明性目的,并且其他布置是可能的。例如,本文所描述的元件中的一个或更多个可以全部或部分实现为电子硬件组件。其他元件可以以软件、硬件或软件和硬件的组合实现。而且,这些其他元件中的一些或全部可以进行组合,一些可以完全省略,并且可以添加附加的组件,同时仍然实现本文描述的功能。因此,本文描述的主题可以在许多不同的变型中实施,并且所有这样的变型预期处于权利要求书的范围之内。
[0175]
为了便于理解本文描述的主题,许多方面是按照动作序列来描述的。本领域技术人员会认识到,各种不同的动作可以通过专用电路或电路系统、通过一个或更多个处理器执行的程序指令或通过二者的组合执行。本文对于任何动作序列的描述并不预期意味着被描述用于执行该序列的特定顺序必须被遵循。本文描述的所有方法都可以以任何适当的顺序执行,除非本文另有指明或以其他方式与上下文明显矛盾。
[0176]
在描述主题的上下文中(尤其是在下面的权利要求书的上下文中)术语“一”、“一个”、“该/这个”以及类似指称的使用应当被解释为覆盖单数和复数二者,除非本文另有指明或与上下文明显矛盾。后接具有一个或更多个项目的列表的术语“至少一个”(例如a和b中的至少一个)的使用应当被解释为表示选自列出的项目的一个项目(a或b),或列出的项目中的两个或更多个的任意组合(a和b),除非本文另有指明或与上下文明显矛盾。此外,前面的描述仅仅用于说明的目的,并不用于限制的目的,因为寻求保护的范围由此后与其等效物一起阐述的权利要求书限定。本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅仅预期更好地说明所述主题,并不构成对主题的范围的限制,除非另有声明。权利要求书和书面说明书二者中指示带来结果的条件的“基于”以及其他类似短语的使用并不预期排除带来该结果的任何其他条件。说明书中的语言不应当被解释为指示任何未要求权利保护的元素对于要求保护的本发明的实施是必不可少的。

技术特征:


1.一种计算机实现的方法,用于估计受试者的心率或呼吸速率中的至少一个,包括:由运动神经网络模型的层处理所述受试者的图像序列,以产生沿两个空间维度的特征向量的通道;以及将经学习的通道注意力掩码应用于所述特征向量的通道,以生成所述受试者的估计心率或估计呼吸速率中的至少一个。2.根据权利要求1所述的计算机实现的方法,其中该处理包括在所述运动神经网络的两个或更多个层之间应用至少一个空间注意力掩码。3.根据权利要求2所述的计算机实现的方法,进一步包括由注意力神经网络处理所述序列中至少一个图像的外观地图和皮肤分割掩码,来计算所述至少一个空间注意力掩码。4.根据权利要求3所述的计算机实现的方法,其中所述注意力神经网络在所述注意力神经网络的两个或更多个层之间应用至少一个外观通道注意力掩码,来计算所述至少一个空间注意力掩码。5.根据权利要求3所述的计算机实现的方法,其中所述外观地图包括所述受试者的每个图像的一部分,该部分包括受试者的面部、颈部和胸部区域。6.根据权利要求3所述的计算机实现的方法,其中所述皮肤分割掩码包括从所述受试者的每个图像中的背景、头发、眼睛、眉毛和胡须区域分别识别包括所述受试者的每个图像中的额头、脸颊、鼻子、颈部和胸部区域的面部皮肤的分割掩码。7.根据权利要求1所述的计算机实现的方法,其中在卷积层和池化层之间应用所述至少一个外观通道注意力掩码。8.根据权利要求1所述的计算机实现的方法,其中所述图像序列中的每个图像被接收的帧速率是可变的,并且所述处理包括基于所述帧速率调整所述估计心率或所述估计呼吸速率中的至少一个。9.根据权利要求1所述的计算机实现的方法,其中所述图像序列中的一个或更多个图像被压缩。10.根据权利要求9所述的计算机实现的方法,其中所述一个或更多个图像以不同的水平被压缩。11.根据权利要求1所述的计算机实现的方法,进一步包括:确定所述估计心率和所述估计呼吸速率的比率超出预定的有效范围,并丢弃所述估计心率和所述估计呼吸速率。12.根据权利要求1所述的计算机实现的方法,其中由所述运动神经网络模型的层应用参数,并进一步包括调整所述参数来减少实况心率或呼吸速率与所述估计心率或所述估计呼吸速率之间的差异。13.根据权利要求1所述的计算机实现的方法,其中由所述运动神经网络模型的层应用参数,并进一步包括调整所述参数来减少所述估计心率和所述估计呼吸速率的估计比率与实况比率范围之间的差异。14.根据权利要求1所述的计算机实现的方法,其中由所述运动神经网络模型的层应用参数,并进一步包括:调整所述参数来增加所述估计心率和所述估计呼吸速率之间的相关性,以与心率和呼吸速率之间的预期相关性相一致。15.根据权利要求1所述的计算机实现的方法,其中在服务器上或在数据中心中执行处理和应用步骤中的至少一个,并且将所述图像序列从用户设备流传输到所述服务器或所述
数据中心。16.根据权利要求1所述的计算机实现的方法,其中在服务器上或在数据中心中执行处理和应用步骤中的至少一个,并且将估计心率或估计呼吸速率中的至少一个流传输到用户设备。17.根据权利要求1所述的计算机实现的方法,其中在云计算环境中执行处理和应用步骤中的至少一个。18.根据权利要求1所述的计算机实现的方法,其中执行处理和应用步骤中的至少一个以用于对机器、机器人或自主车辆中采用的神经网络进行训练、测试或认证。19.根据权利要求1所述的计算机实现的方法,其中在虚拟机被执行处理和应用步骤中的至少一个,所述虚拟机包括图形处理单元的一部分。20.一种用于估计受试者的心率或呼吸速率中的至少一个的系统,所述系统包括:一个或更多个处理单元,用于通过以下方式实现运动神经网络模型:由所述运动神经网络模型的层处理图像序列,以产生沿两个空间维度的特征向量的通道;以及将经学习的通道注意力掩码应用于所述特征向量的通道,以生成所述受试者的估计心率或估计呼吸速率中的至少一个。21.根据权利要求20所述的系统,其中所述一个或更多个处理单元进一步用于实现注意力神经网络以通过处理所述序列中每个图像的外观地图和皮肤分割掩码,来计算所述至少一个空间注意力掩码。22.根据权利要求21所述的系统,其中所述皮肤分割掩码包括从所述受试者的每个图像中的背景、头发、眼睛、眉毛和胡须区域中分别识别对应于以下中的至少一者的面部皮肤区域的掩码:所述受试者的每个图像中的额头、一个或更多个脸颊、鼻子、颈部和胸部。23.一种非暂时性计算机可读介质,其存储用于估计受试者的心率或呼吸速率中的至少一个的计算机指令,所述计算机指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:由运动神经网络模型的层处理所述受试者的图像序列,以产生沿两个空间维度的特征向量的通道;以及将经学习的通道注意力掩码应用于特征向量的通道,以生成所述受试者的估计心率或估计呼吸速率中的至少一个。24.根据权利要求23所述的非暂时性计算机可读介质,进一步包括由注意力神经网络处理所述序列中每个图像的外观地图和皮肤分割掩码,来计算所述至少一个空间注意力掩码。25.根据权利要求24所述的非暂时性计算机可读介质,其中所述注意力神经网络在所述注意力神经网络的层之间应用至少一个外观通道注意力掩码,来计算所述至少一个空间注意力掩码。

技术总结


本发明涉及使用神经网络对心率和呼吸速率进行联合估计。神经网络系统充分利用双重注意力,特别是空间注意力和通道注意力两者,通过处理受试者的图像来联合估计受试者的心率和呼吸速率。运动神经网络接收受试者的图像,并使用空间和通道域注意力掩码估计受试者的心率和呼吸速率,以集中处理特定的特征数据。外观神经网络从受试者的图像计算空间注意力掩码,并可以表明与受试者的面部(而不是受试者的头发或肩膀)相关的特征,来准确估计心率和/或呼吸速率。逐通道域注意力在训练期间被学习并重新校准逐通道域特征反应来选择信息量最大的特征进行处理。通道注意力掩码在训练中被学习并且在部署过程中可用于不同的受试者。者。者。


技术研发人员:

任育卓 N

受保护的技术使用者:

辉达公司

技术研发日:

2022.08.10

技术公布日:

2023/3/24

本文发布于:2024-09-23 15:24:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/77962.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:心率   速率   多个   神经网络
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议