一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

将离散光衰减转换为光谱数据以用于渲染对象体积的制作方法

2022-11-23 11:03:06 来源:中国专利 TAG:


1.至少一个实施例涉及用于执行和促进图形应用的计算技术。例如,至少一个实施例涉及在渲染复杂场景的逼真图像中使用的操作,其中复杂场景涉及与吸收和散射介质相互作用的光的透射和反射。


背景技术:

2.图像渲染(图像合成)是从场景数据生成图像的过程,它可以涉及各种二维和/或三维模型。场景数据可以包括场景的各种对象的位置和几何形状(形状、大小、方向)、光源的位置、关于光源产生的光的强度、类型和颜色的信息,以及关于对象反射率/吸收率的信息。渲染然后可以确定场景的每个对象应该如何呈现给从特定有利位置观看场景的观看者。成功的渲染算法除了复杂的软件开发和处理硬件的有效利用外,通常还涉及物理定律、颜色感知的生理科学、数学和统计建模等。渲染可以是静态的和/或动态的。在后一种情况下,至少一些对象和/或观看的有利位置可以移动,使得至少一些渲染是实时执行的。
附图说明
3.图1a是根据至少一些实施例的使用上采样和有效衰减函数来优化与具有体积衰减的介质相互作用的光的光谱渲染的示例计算机系统的框图;
4.图1b是根据至少一个实施例的可以实现与具有体积衰减的介质相互作用的光的上采样和有效光谱渲染的示例计算设备;
5.图2示出了根据至少一些实施例的可用于获得有效衰减函数的示例数据流,该衰减函数用于优化与具有体积衰减的介质相互作用的光的光谱渲染;
6.图3a和图3b示出了根据至少一些实施例的可用于优化与介质相互作用的光的光谱渲染的衰减函数的可能形式的示例,图3a描绘了光的波长的示例分段常数函数,图3b描绘了光的波长的示例连续函数;
7.图4a和图4b示出了根据至少一些实施例的用优化的衰减函数评估光相互作用的渲染准确性的示例评估方案,图4a示出了根据至少一些实施例的使用优化的衰减函数来评估光与体积介质的相互作用的渲染的准确性的示例评估方案,图4b示出了根据至少一些实施例的使用目标空间的原色的衰减函数优化,图4c示出了根据至少一些实施例的使用目标空间的原色的组合的衰减函数优化450;
8.图5是根据本公开的一些实施例的与体积介质相互作用的光的有效光谱渲染的示例方法的流程图;
9.图6是根据本公开的一些实施例的优化衰减函数以用于与体积介质相互作用的光的光谱渲染的示例方法的流程图;
10.图7a示出了根据至少一个实施例的推理和/或训练逻辑;
11.图7b示出了根据至少一个实施例的推理和/或训练逻辑;
12.图8示出了根据至少一个实施例的神经网络的训练和部署;
13.图9是根据至少一个实施例的高级计算管线的示例数据流程图;
14.图10是根据至少一个实施例的用于在高级计算管线中训练、调整、实例化和部署机器学习模型的示例系统的系统图。
具体实施方式
15.高质量图像渲染是一项计算密集型技术,涉及大量处理和存储器资源。因此,在用户(开发人员)可用的硬件上优化算法和有效实现这些算法是一个重要的技术目标。此外,人类的视觉感知是光传播物理和光与物质对象的相互作用以及人眼中的光感受器感知光的生理和神经学规律、通过视神经传递信号和由人脑进行的神经处理的复杂相互作用。虽然光的物理特性由其光谱分布(描述光中各种波长/频率的表示)决定,但对颜色的感知取决于是否存在三种类型的颜色感受器(视锥细胞),它们的光谱灵敏度松散地集中在靠近可见光谱(380

750nm)的红色、绿色和蓝色部分。结果,光的多个光谱分布可能被人眼感知为具有相同的颜色。
16.计算机应用中的颜色渲染(早期的电视技术也是如此)通常使用三原色执行——红色、绿色和蓝色(rgb)——受到与人类感知的近似的启发。rgb渲染方案涉及在某些单元指定每种原色(r、g、b)的数量(通常,每种颜色的范围为[0,255])。而光谱强度i(λ)可以通过投影到三个rgb颜色匹配函数cj(λ)上明确地转换为rgb方案(例如,通过计算∫dλi(λ)cj(λ)对于每个j=r,g,b并归一化到范围[0,255]),识别基础光谱强度i(λ)的逆过程r,g,b

i(λ)有多个解(实际上是无限的)。存在多种上采样程序,这些程序可以识别可行的解决方案,这些解决方案很好地代表了映射到目标rgb值的特定(例如,自然光)环境中的光谱分布。这种上采样可能有利于生成优于在rgb方案中渲染的那些的图像。例如,光谱渲染方案可能涉及光和光-物质相互作用的真实模型。这样的模型可以对在光谱(波长或等效地,频率)域中指定的光强度i(λ)进行操作(例如,用作输入和输出)。另一方面,用户数据(诸如样本图像)经常以rgb格式提供。
[0017]
在生成包括体积介质(例如薄雾、雾、灰尘、水、云、空气的大气深度大)的场景图像时,rgb(或其他三色)渲染可能导致与光谱渲染的输出不同的结果。发生这种情况是因为此类介质的实际粒子在不同程度上散射和吸收不同波长的光。结果,通过体积介质的光的强度随着通过介质的距离l而减小,i(l)=i(0)e-μ(λ)l
,具有衰减(消光)系数μ(λ)取决于波长λ。在通过实际物理介质传播(或反射)期间,单色光保持具有相同波长的单色光(至少只要发光和各种非线性效应保持较小)。另一方面,在三色方案中渲染的相同单色光确实会改变其颜色外观,因为每个底层三色分量的衰减不同。例如,可见光范围的蓝色部分通常比红色部分经历更强的散射,而对于由介质的原子和分子特性确定的特定波段,吸收可能更明显。因此,使用rgb(或其他三色)方案渲染的单色光在通过体积介质(或在从相同介质反射时)传输期间可能会经历与在光谱表示中渲染的色移不同的色移。
[0018]
本公开的方面和实施例通过公开能够对包含体积介质的描绘的图像进行光谱渲染的方法和系统解决了这些和其他技术挑战,这与在利用几个(例如,三个、四个等)原色的渲染方案中的类似介质的渲染紧密匹配,包括但不限于rgb颜色空间(例如cie rgb方案)、cie xyz颜色空间、学院颜色编码系统(aces)、rec.2020/bt.2020颜色空间,或任何其他颜色编码空间。所公开的实施例实现了可在广泛的硬件平台上使用的快速且计算效率高的实
时渲染。在至少一个实施例中,可以定义衰减函数,该衰减函数描述在通过特定体积介质传输和/或从特定体积介质反射时的颜色动态,并通过有限数量的拟合参数(例如,两个、五个或任何其他数量)参数化。拟合参数可以通过优化过程来确定,该过程使(i)透射/反射光在光谱颜色渲染方案中渲染的外观与(ii)相同光在目标颜色渲染方案中的外观之间的差异最小化(例如,rgb、xyz等)。
[0019]
尽管在本公开全文中使用医学成像示例来说明各种概念,但基本相同或相似的概念可用于其他上下文中的对象识别,例如驾驶或工业环境中的对象识别、安全应用中的对象识别、科学和调查研究,以及许多其他应用。
[0020]
系统架构
[0021]
图1a是根据至少一些实施例的示例计算机系统100的框图,该示例计算机系统100使用上采样和有效衰减函数来优化与具有体积衰减的介质相互作用的光的光谱渲染。如图1a所示,用于处理图像数据166的计算机系统100可以包括图像处理服务器101、应用服务器160和经由网络150连接的客户端设备140。网络150可以是公共网络(例如,因特网)、私有网络(例如,局域网(lan)或广域网(wan))、无线网络、个域网(pan)或其组合。
[0022]
图像处理服务器101可以是(或包括)台式计算机、膝上型计算机、智能手机、平板计算机、本地服务器、云服务器、专用图形服务器、多个计算设备的集合、分布式计算系统、智能电视、增强现实设备或能够执行本文描述的技术的任何其他合适的计算设备(或计算设备的集合)。应用服务器160和客户端设备140可以类似地包括上面提到的任何计算设备。或者,客户端设备140可以是缺乏大量计算资源但能够访问图像处理服务器101和/或应用服务器160并与之通信的计算设备。客户端设备140可以具有图形用户界面(gui)142以方便用户使用与客户端设备140、应用服务器160和图像处理服务器101相互作用。gui 142可以在台式或膝上型计算机屏幕、触摸屏、智能电视屏幕或其任何组合上实现。gui 142可以包括任何定点设备(鼠标、触摸板、触控笔、手指、眼睛运动控制设备等)、键盘、控制栏、游戏控制台等。gui 142可以例如使用浏览器、桌面应用程序、移动应用程序等来显示静止和移动对象、光源、阴影、颜色、菜单等。
[0023]
客户端设备140可以包括图形应用客户端144和图像处理客户端146。图形应用客户端144可以是由在应用服务器160上运行的图形应用程序162提供和/或支持的客户端应用。图形应用程序162可以是任何艺术、医学、科学、工程应用程序等。例如,图形应用程序162可以是图像制作应用程序、电影制作应用程序、视频游戏应用程序、工程应用程序、建筑应用程序、飞行模拟应用程序、场景重建应用程序等。图形应用程序162可以与图像数据生成器164一起操作。图像数据生成器164可以从图形应用程序162接收一个或更多个图像的设置。例如,图形应用程序162可以是提供游戏上下文的视频应用程序,例如,玩家相对于建筑物地图的当前位置。图像数据生成器164可以生成各种对象的坐标、这些对象的表面的特性(例如,光入射和反射的各种方向的反射率)、由各种光源发射的光的位置、亮度和颜色等。
[0024]
产生的图像数据166可以被提供(例如,通过网络150)到图像处理服务器101的图像渲染引擎104,用于基于图像数据166生成图像。在一些实施例中,图像数据166可以包括一个或更多个样本图像用作基础图像,以生成与基础图像相似的附加图像。例如,图像数据166可以包括要用作计算机游戏的风景的环境的若干室外和/或室内图像(例如,由图形应
用程序162的用户通过图形应用程序客户端144开发)。图像处理服务器101的任务可以是生成各种图像以支持计算机游戏。图像处理服务器101可以识别接收到的图像中的各种对象和光源,并使用该数据生成涉及不同有利位置、对象的不同布置、一些附加对象、不同光源等的附加图像。
[0025]
生成的图像可以是任何数字(例如,基于像素或基于矢量)格式,包括但不限于jpeg、gif、png、bmp、tiff、cib、dimap、nitf等。在一些实施例中,可以在使用有限数量的原色的颜色空间中提供图像数据166。为简洁起见,在图像数据166中指定的颜色空间在本文中有时被称为rgb空间,但应该理解的是,可以替代地使用任何三色空间或其他颜色空间。图像渲染引擎104可以包括颜色空间到光谱转换组件106,以将图像数据166中指定的各种光源的颜色和强度转换为光谱表示:r,g,b

i(λ)。在一些实施例中,可以根据场景的类型和/或场景的照明来不同地执行转换。例如,如果物体被室外自然光照亮,则可以使用从特定物体反射的光的第一种类型的转换,而当物体被室内泛光灯照亮时,可以使用第二种(和不同的)类型的转换。如果同一物体在夜间被路灯照亮,则可以使用另一种不同的第三种类型的转换。
[0026]
体介质(volume medial)渲染引擎108可以确定光源的转换光谱强度i(λ)在光传输通过(部分)透明但衰减介质时如何变化。例如,体介质渲染引擎108可以从图像数据166确定该介质是特定密度的雾。体介质渲染引擎108可以访问存储的(例如,在存储器120中的)光吸收和散射数据,并且基于雾密度和访问的数据计算雾的物理衰减函数μ(λ)。体介质渲染引擎108然后可以确定确保光谱渲染与rgb空间中相同雾的渲染的一致性的模型衰减函数。在一些实施例中,代替指定物质的类型,图像数据166可以明确地提供用于主要rgb颜色的衰减系数μj,并且体介质渲染引擎108然后可以基于最大化光谱渲染方案和rgb渲染方案中透射/反射光的颜色外观之间的相似性来确定模型衰减函数μ(λ)。
[0027]
图像渲染引擎104然后可以使用确定的模型衰减函数μ(λ)来基于图像数据166生成输出图像。另外,如对应的虚线框所描绘的,确定的衰减函数124可以存储在存储器120中用于随后的图像(包括基于由除图形应用程序162之外的应用程序提供的图像数据生成的图像)的重用。在一些实施例中,图像渲染引擎104的操作可以是完全自动化的。在一些实施例中,一些操作可以由用户经由gui 109控制。如果用户从客户端设备140远程访问图像处理服务器101,则可以将gui 109的至少一部分作为gui 142提供给客户端设备140。图像处理客户端146可以进一步促进客户端设备140的用户与图像渲染引擎104的相互作用。可以通过图像处理客户端146控制的图像渲染引擎104的一些操作可以包括:为模型衰减函数μ(λ)选择多个拟合参数,选择模型衰减函数μ(λ)旨在模拟的目标颜色空间类型,更改用于评估模型衰减函数μ(λ)近似目标颜色空间中的光衰减的精度的指标等。
[0028]
存储器120可以与图像处理服务器101的一个或更多个处理设备通信耦合,例如一个或更多个图形处理单元(gpu)110和一个或更多个中央处理单元(cpu)130。图像渲染引擎104可以由gpu 110和/或cpu 130或其组合执行。图像处理服务器101还可以包括各种输入/输出(i/o)组件134以促进与各种外围设备的信息交换。
[0029]
尽管在图1a中示出了图像处理服务器101、应用服务器160和客户端设备140作为单独的设备,但是在各种实施例中,这些设备中的任何两个(或所有)可以组合在单个计算机器上。例如,图像处理服务器101和应用服务器160可以在由客户端设备140远程访问的同
一机器上执行。在另一个实施例中,图像处理服务器101、应用服务器160和客户端设备140可以在用户(或开发人员)的计算机上执行(例如台式机或笔记本电脑)。
[0030]
图1b是根据至少一个实施例的示例计算设备102,其可以实现对与具有体积衰减的介质相互作用的光的上采样和有效光谱渲染。在一些实施例中,计算设备102可以是图像处理服务器101或实现图像渲染引擎104的另一计算设备。在一些实施例中,图像渲染引擎104可以由一个或更多个gpu 110执行并且可以包括颜色空间到光谱转换组件106和体介质渲染引擎108执行光谱上采样和在光谱表示中的体介质的模拟。在一些实施例中,gpu 110包括多个核心111,每个核心能够执行多个线程112。每个核心可以同时(例如,并行)运行多个线程112。在一些实施例中,线程112可以访问寄存器113。寄存器113可以是线程特定的寄存器,其对寄存器的访问限于相应线程。此外,共享寄存器114可以被核心的所有线程访问。在至少一个实施例中,每个核心111可以包括调度器115以在核心111的不同线程112之间分配计算任务和进程。分派单元116可以使用正确的私有寄存器113和共享寄存器114在适当的线程上实现调度任务。计算设备102可以包括一个或更多个输入/输出组件134以促进与外围设备以及用户和开发者的信息交换。
[0031]
在一些实施例中,gpu 110可以具有(高速)缓存118,对缓存118的访问可以由多个核心111共享。此外,计算设备102可以包括gpu存储器119,其中gpu 110可以存储由gpu 110执行的各种计算的中间和/或最终结果(输出)。在完成特定任务之后,gpu 110(或cpu 130)可以将输出移动到(主)存储器132。在一些实施例中,cpu 130可以执行涉及串行计算任务(例如衰减函数的优化),而gpu 110可以执行适合并行处理的任务(例如使用优化的衰减函数渲染图像)。在一些实施例中,图像渲染引擎104可以确定哪些进程将在gpu 110上执行以及哪些进程将在cpu 130上执行。在其他实施例中,cpu 130可以确定哪些进程将在gpu 110上执行以及哪些进程将在cpu 130上执行。
[0032]
图2示出了根据至少一些实施例的示例数据流200,该示例数据流200可用于获得用于优化与具有体积衰减的介质相互作用的光的光谱渲染的有效衰减函数。如示意性描绘的,可以将输入数据202提供给体积传播建模210。输入数据202可以包括对存在于正在渲染的场景中的一个或更多个体积介质的描述。场景可以与具有任意数量的对象和光源的室外或室内环境相关联,例如发射光源(太阳、电灯泡/发光二极管、自然或工业火灾等)、反射光源(例如,镜子、液体物质的表面、光滑的表面、无光泽的表面等)、漫射/散射光源(例如,大气、颗粒物等)。一些对象可能同时是光源。输入数据202可以包括各种对象和光源的位置(例如,图像空间中的坐标)、大小、方向和属性。光源的特性可以包括其辐射度、方向、发射(或反射/散射)光的颜色的表征。对象的属性可能包括对象表面的特征,例如光谱反射率、透射率、各种入射和反射/透射光方向的吸收率(例如,双向散射函数)。在一些实施例中,要渲染的图像是其中对象和/或光源相对于观看者移动的动态图像序列(帧)的一部分。例如,这样的图像序列可以对应于观察运动对象的静止观察者、观察静止对象的运动观察者或观察运动对象的运动观察者。
[0033]
输入数据202可以允许图像渲染引擎104渲染一个或更多个图像,这可以包括模拟图像的各种元素(例如,像素或体素)将从场景中的各种对象接收到多少光(以及什么颜色)。如输入数据202可以指定的,场景可以包括对象和介质,其通过与介质相互作用的光的体积衰减表征,例如,传播从介质通过(透射)、反射或散射的光。介质可以包括任何气态物
质(例如大气)、液态物质(例如水、油、饮料等)、至少部分透光的固态物质(例如玻璃、塑料、冰等),或任何悬浮液、溶液或上述的组合(例如,雾、雾、灰尘等)。在下文中,为简洁起见,提及单一介质,但应理解场景中存在的多种介质可以以基本相似的方式处理。输入数据202可以指示光与介质相互作用的强度。例如,可以用吸收系数μa和散射系数μs来表征介质。吸收系数μa指定在光传播的单位距离内被介质吸收的光的分数。类似地,散射系数μs指定了在单位距离上被介质散射的光的分数。
[0034]
由于吸收和散射,光的强度可能会随着传播距离呈指数下降,
[0035]
i(l)=i(0)e-μl
,
[0036]
其中μ是消光系数。在一些实施例中,例如在可以忽略光的多重散射的情况下,消光系数可以近似为吸收系数和散射系数的总和,μ=σa σs。在考虑光的多重散射的一些实施例中,消光系数可以非线性地取决于吸收和散射系数。在一个示例实施例中,如下所述,消光系数可以近似为光系数可以近似为在一些实施例中,可以使用其他形式的衰减系数μ。
[0037]
衰减(来自散射和/或吸收)通常取决于光的波长(或等效地,频率)。例如,σs(λ)在较短的波长λ(例如,蓝光)处可能比在较长的波长(例如,红光)处更大。同样,特定介质在某些特定颜色(例如红色)处可能具有更强的吸收σa(λ),而在其他波长处可能具有较弱的吸收。结果,单色光可能会随着通过距离l衰减,
[0038]
i(λ,l)=i(λ)e-μ(λ)l
,
[0039]
衰减系数μ(λ)取决于光的波长λ。当非单色光通过介质传播(或以其他方式与介质相互作用)时,光的光谱可能会发生变化,因为不同的光谱分量可能会以不同的方式衰减。相应地,入射光在光与介质相互作用之前对人类观察者的外观可能与透射光在与介质相互作用之后的外观不同(例如,透射光被感知为具有不同的颜色)。应该理解,强度对距离l的指数依赖性仅用于说明目的。在一些实施例中,衰减系数可以是位置相关的,例如μ(λ,z)。在这样的实施例中,光的强度可以通过衰减系数对光行进距离的积分来确定,
[0040][0041]
在整个本公开中,为了简洁和简明,参考了均匀体积介质中的简单指数衰减,但是基本上相同的技术可以用于异构介质。
[0042]
输入数据202可以包括允许捕获这种颜色变化的信息。例如,输入数据可以包括实际场景的图像(例如,数码照片)。图像可以使用三色空间(例如,rgb、xyz、aces等)或具有n个参考颜色(例如,红色、绿色、蓝色和/或一些其他颜色)的一些其他目标颜色空间。每个参考颜色j可以与在波长区间[λ
min

max
]中定义的相应颜色匹配函数cj(λ)相关联,该区间可以是可见范围(λ
min
=380nm,λ
max
=700nm))或一些其他范围。例如,在工业、医疗和汽车(例如,自主车辆)应用中,可以使用各种其他范围的电磁波(例如,红外线、紫外线、x射线等)。术语“光”应理解为涵盖所有此类相关范围的电磁波,并不意味着限于可见波长范围。具有给定光谱强度i(λ)的光可以在目标颜色空间中表示,其值[a1,a2,

,an]通过将光谱强度i(λ)投影到相应的颜色匹配函数来确定(λ)投影到相应的颜色匹配函数来确定
[0043]
输入数据202中的图像可以具有关于入射在体积介质上的光的颜色的信息(例如,从光源或被光照射的其他对象的直接观察中确定)以及透射过介质的光的颜色。在某些情况下,入射光可以是已知光(例如,rgb颜色空间中的d65自然光)。在一些情况下,透射光可以穿过已知(例如,可从图像确定)厚度l的云。在一些实施例中,体介质渲染引擎108可以识别图像中的入射光在目标空间中具有表示[a1,a2,

,an]。体介质渲染引擎108可以进一步确定(例如,根据已知或估计的介质厚度l)透射光具有不同于入射光的表示的表示[b1,b2,

,bn]。目标空间的各种原色j的体积衰减系数μj可以标识为μj=l-1
ln(aj/bj),使得各原色以各自的系数μj进行衰减,意味着透射光随距离衰减:
[0044]
入射光:[a1,a2,

,an]
[0045]
透射光:
[0046]
对于不同的原色,衰减系数μj可能不同,例如,在rgb目标颜色空间中,μ
t
≠μg≠μb。在一些实施例中,衰减系数μj可以与输入数据202一起提供,而不是从现有图像中确定。例如,应用程序(例如,图形应用程序162或图像数据生成器164)可以在目标空间中明确指定要渲染的各种介质的衰减系数。为了识别光谱表示中应该使用什么衰减函数e-μ(λ)l
来匹配目标颜色空间中的图像(存在或正在渲染)的外观和颜色,体介质渲染引擎108可以执行下面描述的一些操作。
[0047]
如用体积传播建模210框示意性地描绘的,可以首先确定入射在介质212上的光214的光谱强度i(λ)。在一些实施例中,光谱强度i(λ)可以是独立已知的,例如,自然光可以存在于户外场景的白天图像中。在一些实施例中,i(λ)可以由开发者指定。在一些实施例中,可以基于图像中未被介质212遮蔽的对象的颜色外观从图像中确定i(λ)。在光谱强度i(λ)不明确(例如,不提供输入数据202)的那些情况下,并且只有目标颜色空间中的表示[a1,a2,

,an]可用,体介质渲染引擎108可以首先从可能的光谱强度中选择转换[a1,a2,

,an]

i(λ),所述可能的光谱强度在目标颜色空间中可能具有正确表示[a1,a2,

,an]。
[0048]
体介质渲染引擎108还可以识别原色如何随距离l衰减(如示意图220所示),例如,通过识别输入数据202中明确提供的相应衰减系数μj,从输入数据202中包括的图像确定衰减系数,访问各种介质属性的数据库,等等。类似于衰减系数μj如何表征透射光216,可以类似地获得描述反射光218如何通过目标颜色空间中的原色表示的附加反射系数rj,例如,[r1·
a1,r2·
a2,

,rn·an
]。尽管为了简明起见,结合透射光描述了各种实施例,但可以使用基本相似的操作来模拟体积介质的衰减函数,例如光谱反射率r(λ),以获得与在目标空间中渲染的反射光的最大相似性。
[0049]
体介质渲染引擎108然后可以使用衰减函数模块230将衰减函数t(λ,l)的形式定义为波长的模型函数,其可以将透射光的强度与入射光的强度相关联:i(λ,l)=t(λ,l)
·
i(λ)。(类似地,可以定义反射r(λ)的衰减函数,它将反射光的强度与入射光的强度联系起来:ir(λ)=r(λ)
·
i(λ)。)衰减函数可以以各种方式建模。图3a和图3b示出了根据至少一些实施例的可用于优化与介质相互作用的光的光谱渲染的衰减函数t(λ,l)的可能形式的示例。图3a描绘了光波长的分段常数函数300。图3b描绘了光波长的连续函数310。在一些实施例中,作为距离l的函数,衰减函数t(λ,l)可以是连续的,例如距离l的指数递减函数,即使可以使用距离l的非指数(例如幂律)函数。衰减函数可以至少在感兴趣的光区间[λ
min

max
]中定义,例如,可见光范围或任何其他波长范围。衰减函数可能取决于一个或更多个参数。
在一个特定的非限制性示例中,衰减函数可以假定由n-1个边界λ
α
分隔的n个区域中的n个值(例如,图3a中描绘的函数300用于n=3)。
[0050][0051]
在一个实施例中,参数可以取等于目标空间中的衰减系数μj,而边界集合{λ
α
}通过优化确定。在另一个实施例中,参数也通过优化确定,连同边界{λ
α
}。在又一个实施例中,参数可用于参数化连续衰减函数(例如,如图3b中所描绘的),例如多项式函数、分段多项式函数或λ的任何其他函数。例如,值可以指衰减函数(或其对数-l-1
log t(λ,l))在区间[λ
min
,λ1]中的平均值(与值类似与区间[λ1,λ2]相关,依此类推)。又如,参数可以指衰减函数在各个区间的最大值(或其对数-l-1
log t(λ,l))或衰减函数(或其对数-l-1
log t(λ,l))在各个区间的中点(例如,值可能与衰减函数的值或其对数在(λ
min
λ1)/2)的值。可以使用体现各种映射的几乎无限数量的不同衰减函数。
[0052]
返回参考图2,体介质渲染引擎108可以使用定义的模型衰减函数和参数λ
α
(以及可选地,如果经受优化)的一些初始值来确定可以计算透射光的光谱分布,i(λ,l)=t(λ,l)
·
i(λ)。接下来,体介质渲染引擎108可以将计算的强度i(λ,l)投影到颜色匹配函数cj(λ)上以获得目标颜色空间中透射光[d1,d2,

,dn]的表示,
[0053][0054]
并且将获得的表示执行映射240到目标颜色空间。如以下关于图4a-c更详细地描述的,一些评估量度250可用于评估基于初始参数的衰减函数表示目标颜色空间中的透射光有多接近。优化模块260随后可以确定如何调整衰减函数的初始参数以提高两个表示之间的相似性。在衰减函数模块230对衰减函数的参数进行调整后,可以重复图2中的循环所代表的过程直到优化模块确定达到期望的(例如,预定的)精度。衰减函数(具有确定的优化参数)然后可以用于使用光谱表示的图像渲染。可以针对其入射光强度i(λ)和透射光强度i(λ,l)已用于优化衰减函数的同一图像执行这种图像渲染。此外,确定的衰减函数可用于渲染具有相似介质和各种其他入射光强度i1(λ),i2(λ)

等的后续图像。
[0055]
图4a示出了根据至少一些实施例的用于使用优化的衰减函数来评估渲染光与体积介质的相互作用的准确性的示例评估方案400。示意性地示出了评估方案400的四个阶段:选择入射光402、执行介质建模404、计算透射光406和执行优化408。首先,可以选择入射光402。入射光可以在三色(或任何其他)目标颜色空间(例如,xyz或srgb)中定义,例如,通过一组三色值{aj}。入射光402可以是目标颜色空间的原色或目标颜色空间的两种或更多种原色的任何混合。入射光402可以是任何光源,例如但不限于白光、自然户外光或任何其他颜色的组合。入射光402也可以通过其光谱强度i(λ)420来表示(例如,使用各种颜色上采样技术)。然后可以在两种表示中获得透射光406。例如,使用体积介质412中各个原色的已知衰减系数{μj},对于介质的给定长度,可以获得目标颜色空间中的透射光406。类似地,可
以进一步使用模型衰减系数μ(λ)422(对于模型体积介质414)获得光谱表示424中的透射光强度i(λ)e-μ(λ)l
,其可能有一个或更多个优化参数。在一些实施例中,代替指数衰减函数e-μ(λ)l
,可以使用更一般形式的一些其他衰减函数t(λ,l)。
[0056]
目标颜色空间和光谱表示中的透射光406可以使用一些颜色空间(例如,xyz或srgb)中的二维色度平面在平等的基础上进行表征,其可以与目标颜色相同或不同空间。在一些实施例中,色度平面xy可以是cie xyz颜色空间的色度平面。如图4a所示,目标颜色空间中的透射光406可以映射到色度值(x,y)上,而光谱表示中的相同透射光可以映射到色度值(x,y)上。用于表征衰减函数的所选参数的精度的误差测量416可以是光谱表示中透射光的色度值x、y和目标颜色空间中的透射光的色度值x、y的某个函数f(x,y;x,y)。例如,误差测量可以基于各个坐标之间的欧几里得距离,f(x,y;x,y)=(x-x)2 (y-y)2。误差最小化模块418可以使用确定的误差量度来修改衰减系数(或更一般地,衰减函数)的参数以减少误差量度。虽然在上面的例子中,只比较了两个透射光的相对色度(而不是总强度),但在一些实施例中,也可以比较透射光的总强度,f=(x-x)2 (y-y)2 w(i-i)2,其中i是光谱表示中透射光的总强度,i是目标颜色空间中透射光的总强度。权重w可以描述颜色感知相对于亮度感知的重要性,并且可以从经验测试中确定。类似地,在一些实施例中,可以使用完整的三个(未归一化到单位亮度)色值集(例如,x、y、z)。然后,误差测量416可以是在色度值的三维空间中的欧几里得距离之和。在一些实施例中,沿每个色度轴的距离的权重可以不同,f=α
·
(x-x)2 β
·
(y-y)2 γ
·
(z-z)2,权重为α,β,γ,至少其中一些可能不相等。在一些实施例中,可以为不同入射光的集合定义误差测量416,例如,
[0057][0058]
其中索引i列举了各种入射光。在一些实施例中,测量f可以使用不同函数沿两个(或三个)轴加权误差,例如,f=∑i[a
·
|x
i-xi|k b
·
|y
i-yi|
l
]具有不同的k≠l。
[0059]
在一个示例中,三个入射光可以是目标颜色空间的原色。图4b示出了根据至少一些实施例的使用目标空间的原色的衰减函数优化430。图4b中阴影区域的内侧部分对应于人眼可以感知的各种颜色。色度值x和y表征三种原色的相对存在。白色圆圈描绘了目标颜色空间中光的色度,黑色圆圈描绘了光谱表示中的光色度,而黑/白圆圈描绘了两种表示中具有相同色度(感知颜色)的光。图4b中示出的是三原色:第一原色431、第二原色432和第三原色433。如图4b所示,在两种表示中相同的入射光(左图)431在透射后(右图)在目标空间中保持其颜色,但在光谱表示中转变为由色度值x和y描述的新颜色由点441描绘。类似地,在光谱表示中,第二(第三)原色从点432(点433)移动到点442(点443)。用于优化衰减函数的误差测量416可以是任何距离431-441、432-442和/或433-443单独或组合(例如,距离的总和、距离的平方和)距离、加权和等)。可以执行优化直到误差测量416被最小化。
[0060]
在另一个示例中,入射光可以是目标颜色空间的原色的任意组合。如图。图4c示出了根据至少一些实施例的使用目标空间的原色组合的衰减函数优化450。如图所示。图4c(左图)是在目标颜色空间和光谱表示中具有相同表示的入射光(如黑/白圆454所示)。透射后(右图),入射光在目标颜色空间中移动到点455(如相应的白色圆圈所示)。在光谱表示中,相同的透射光移动到不同的点456(如对应的黑色圆圈所示)。用于优化衰减函数的误差
测量416可以是距离455-456。可以执行优化直到误差测量416被最小化。尽管在图4c中描绘了单个入射/透射光,可以基于多个入射/透射光的误差测量的总和来执行优化,如上文更详细描述的。
[0061]
衰减函数的参数的优化可以使用任何优化算法迭代地执行,包括梯度下降、有限差分、牛顿法、基于hessian的方法、黄金分割法等。在调整参数之后,可以重新计算对应于光谱表示中的透射光的点(x,y)的位置,并且可以确定误差度量f的新值。可以执行优化直到满足一个或更多个准确度条件,例如直到误差度量f变得小于预定阈值f
t
。备选地,可以执行优化直到两个或更多个后续迭代未能将误差度量改进至少某个值δf或度量的某个百分比(例如,5%、10%等)。
[0062]
在一些实施例中,衰减函数的参数可以使用入射光的单个光谱分布i(λ)来确定。在至少一些实施例中,优化可以涉及多个光谱分布ik(λ)。可以为每个分布ik(λ)计算单独的误差测量fk,并且可以基于所有测量fk执行优化。例如,可以形成一个全局误差度量,f=∑
kfk
(或或一些其他全局度量)。衰减函数的参数然后可以根据误差的全局度量f的优化来确定,基本如上所述。在一些实施例中,可以针对单个光谱分布但多个距离l执行优化。在一些实施例中,可以基于多个光谱分布和多个距离执行优化。
[0063]
尽管以上对优化衰减函数的识别的描述涉及特定的(例如,已知的)介质,但是当单个衰减函数用于渲染可能包含多种介质的图像时,可以执行基本相似的操作。例如,在某些情况下,需要渲染的图像可能具有一种或更多种介质,其特定衰减系数(在目标颜色空间中)可能是未知的。在这种情况下,可以使用预先计算的通用衰减函数,该函数被优化用于渲染可能在类似类型的图像中遇到的各种体积介质,例如雾、灰尘、薄雾、云、水等。这样的通用衰减函数可以通过优化针对衰减系数可用的多个(例如,m)体积介质确定的全局误差测量f=∑
kfk
来确定。(在一些实施例中,对于特定介质,可能只有一些衰减系数是已知的,例如,对于红色和绿色原色已知,但对于蓝色未知。)此外,在这种情况下,全局误差测量可以包括若干(例如,n)不同入射光(对全局误差测量f=∑
kfk
的总共n x m不同贡献)。以这种方式获得的通用衰减函数然后可用于渲染先前在优化期间未使用的新体积介质。
[0064]
下表显示了在用于各种三色空间是区间λ∈[380nm,780nm]内优化获得的示例边界λ
α
,使用5nm离散化计算波长上的积分。
[0065]
颜色空间λ1λ2xyz500nm575nmsrgb485nm595nmaces505nm550nmacescg505nm570nmrec2020500nm570nm
[0066]
此表中列出的值是通过使用白色光源和三种不同的介质获得的,每种原色一个(图4b的431、432和433),以及作为所有三个距离之和的误差度量,431-441、432

442和433

443。
[0067]
尽管关于透射光的衰减描述了上述实施例,但是对于从具有散射和吸收两者的介质反射的光,可以以类似的方式类似地执行颜色匹配。在至少一个实施例中,沿正向传播的
光i
t
和沿反向传播的光ir可以通过耦合方程建模:
[0068][0069][0070]
其中z是光束行进的距离;术语σai
t
和σair描述了相应光的吸收,而术语
±
σs(i
r-i
t
)描述了散射效应,例如,由于散射到反向传播的光ir中,正向传播的光i
t
的强度降低,并且由于后向传播光ir的散射,前向传播光i
t
的强度增加。
[0071]
上述等式表明,前向传播光的强度取决于距离z为
[0072]it
(z)=i0e-μz
,
[0073]
其中,散射系数σs(λ)、吸收系数σs(λ)和衰减系数μ(λ)中的每一个可以取决于波长λ。将常数i0与入射光相关联,i0=i(λ),并进一步将反向传播光ir(0)在z=0处作为从介质反射的光,反射率r(λ)=ir(0)/i0可以表示为
[0074][0075]
如上所述,光谱表示中的反射率r(λ)可以以与如何执行透射率t(λ,l)的确定基本相似的方式确定。具体地,模型反射率可以包括一个或更多个拟合参数(例如由边界λ
α
分隔的各种光谱区间内的反射率值)。然后基于目标颜色空间中反射光的颜色外观与光谱表示中模拟的反射光之间的相似性来确定拟合参数。
[0076]
图5是根据本公开的一些实施例的对与体积介质相互作用的光进行有效光谱渲染的示例方法500的流程图。在一些实施例中,方法500可以由执行一个或更多个软件模块(例如,图像渲染引擎104)的指令的图1的图像处理服务器101的处理单元来执行。方法500可由一个或更多个处理单元(例如,cpu和/或gpu)执行,其可包括(或与之通信)一个或更多个存储器设备。在一些实施例中,方法500可由多个处理线程(例如,cpu线程和/或gpu线程)执行,每个线程执行一个或更多个单独的功能、例程、子例程或方法的操作。在一些实施例中,实现方法500的处理线程可以被同步(例如,使用信号量、临界区和/或其他线程同步机制)。或者,实现方法500的处理线程可以相对于彼此异步地执行。与图5所示的顺序相比,方法500的各种操作可以以不同的顺序执行。方法的某些操作可以与其他操作同时进行。在一些实施例中,图5中所示的一个或更多个操作可能并不总是执行。
[0077]
可以执行方法500以使用光谱表示渲染图像,所述图像基于不同于光谱表示的表示(例如,在任何三色空间中)中可用(例如,由用户或图像开发者提供的)图像数据。在一些实施例中,图像数据可以包括三色(例如,rgb、xyz等)空间中的输入图像,并且图像渲染引擎104可以在将输入图像的颜色再现为高精度的同时渲染光谱表示中输入图像的副本。在一些实施例中,图像渲染引擎104可以使用输入图像作为基础图像来渲染其他图像。例如,其他渲染图像可以是具有相同对象和光源的不同位置的图像、具有不同对象和/或光源的图像、动画图像、运动图片帧(例如,视频游戏图像)等。在框510,执行方法500的处理单元可
以识别具有第一颜色渲染方案(crs)中的第一表示和第二crs中的第二表示的第一光。例如,第一光可以是在输入图像或其他输入数据中识别的入射光。第一crs可以是光谱渲染方案,并且第一表示,例如i(λ),可以将光强度指定为波长λ的函数。第二crs可以是三色渲染方案,其中相同的第一光通过三色值[a1,a2,a3]来表示。在一些实施例中,第二表示与输入数据一起提供(例如,从输入图像确定),而第一表示是基于三色值来模拟的。在一些实施例中,可以使用多于三个的值来识别第二rcs中的第一光。
[0078]
在框520,方法500可以继续处理单元识别表征第一光与介质的相互作用的衰减函数(如结合图3a和图3b更详细地描述)。介质可以是至少对光(例如,第一光)部分透明的任何体积介质;当第一光与介质相互作用(例如,通过透射或反射或两者)时,介质可吸收和散射光,从而导致第一光的强度衰减。在一些实施例中,可以在输入数据中指定第一光被吸收和/或散射的程度,例如,通过第二src的不同原色的散射和/或吸收系数。所识别的衰减函数可以描述光通过体积介质的传输,例如,在传输实例中的t(λ,l)或ln[t(λ,l)]和/或反射的实例中的r(λ)。衰减函数的识别可以包括指定衰减函数的一般形式、拟合参数的数量和类型、衰减函数表征的波长范围等。在一些实施例中,衰减函数可以是衰减系数μ(λ)与介质深度l的乘积的指数函数t(λ,l)=e-μ(λ)l

[0079]
在一些实施例中,衰减函数可以是波长的分段常数函数,其取多个值多个值中的每一个与多个波长间隔中的相应一个波长间隔相关联,例如[λ
min
,λ1],[λ1,λ2],


n-1

max
]。在一些实施例中,衰减函数的一个或更多个拟合参数可以包括多个波长区间的相邻区间之间的至少一个边界λj。在一些实施例中,多个值(例如)中的一个或更多个可以基于针对第二crs的相应颜色的介质的衰减系数μ1,μ2,

μn。在一些情况下,介质的衰减系数μ1,μ2,

μn可以在输入数据中指定或从输入图像确定。在一些实施例中,一些值可以等于(或成比例)一些衰减系数μ1,μ2,

μn。在一些实施例中,m个值可以与n个衰减系数μj不同。在一些实施例中,m个值可以与n个衰减系数μj相同。在一些实施例中,可以如下选择值
[0080]
在框530,方法500可以继续处理单元使用衰减函数确定与介质相互作用的第一光在第一crs中的第三表示。例如,第三表示可以是透过介质的第一光的光谱强度,例如t(λ,l)i(λ)或从介质反射的第一光的光谱强度r(λ)i(λ)。除了第三表示之外,可以使用表征第一光如何与第二crs中的介质相互作用的第四表示,例如,第四表示可以包括在第一光已经穿过(或从介质反射)介质之后的第一光的三色值。
[0081]
在框540,方法500可以继续处理单元至少部分地基于最小化第一光的第三表示和与介质相互作用的第一光的第四表示之间的差来确定(例如,如结合图4a和图4b更详细地描述的)衰减函数的一个或更多个拟合参数。在一些实施例中,可以结合图6描述的方法600来执行确定一个或更多个拟合参数。
[0082]
在框550,方法500可以继续处理单元使用衰减函数和所确定的一个或更多个拟合参数来渲染包括与介质相互作用的第一光或与介质相互作用的第二光中的至少一个的图像。例如,所确定的衰减函数可用于在光谱表示(第一crs)中渲染具有第一光的输入图像的至少一部分。具体而言,图像渲染引擎可以使用光谱表示和确定的衰减函数来渲染输入图像的副本。在一些实施例中,图像渲染引擎可以使用光谱表示和确定的衰减函数来创建一
个或更多个附加图像。此类一个或更多个附加图像的创建可包括渲染具有不同于用于获得衰减函数的第一光的光谱成分i(λ)的光谱组成(例如,i2(λ),i3(λ),i4(λ)、...)的一个或更多个第二(第三、第四等)光。
[0083]
图6是根据本公开的一些实施例的优化衰减函数以用于与体积介质相互作用的光的光谱渲染的示例方法600的流程图。在一些实施例中,方法600可以由图像渲染引擎104作为方法500的一部分来执行(例如,结合框540)。更具体地,确定拟合参数可以包括在框610识别对应于第一光的第三表示(例如,t(λ,l)i(λ)或r(λ)i(λ))的多个色度值(例如,x和y)。在一个实施例中,多个参考色度值可以与第二crs的多个原色(例如,xyz颜色空间或rgb颜色空间)相关联。如方法600的框620所示,确定拟合参数还可以包括确定表示多个色度值中的每一个与多个参考色度值(例如,(xj,yj),如结合图4a、图4b和图4c更详细描述的)中的相应一个之间的距离的度量(例如,误差度量f。如方法600的框620所示,确定拟合参数可进一步包括修改至少一些拟合参数以改进(例如,最小化)确定的度量。在一些实施例中,拟合参数的修改可以使用多次迭代来执行。
[0084]
推理和训练逻辑
[0085]
图7a示出了用于执行与一个或更多个实施例相关联的推理和/或训练操作的推理和/或训练逻辑715。
[0086]
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于代码和/或数据存储701,用于存储前向和/或输出权重和/或输入/输出数据,和/或在一个或更多个实施例的方面中配置被训练为和/或用于推理的神经网络的神经元或层的其他参数。在至少一个实施例中,训练逻辑715可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储701,其中权重和/或其他参数信息被加载以配置逻辑,包括整数和/或浮点单元(统称为算术逻辑单元(alu)或简单电路)。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器alu中。在至少一个实施例中,代码和/或数据存储701存储在使用一个或更多个实施例的方面训练和/或推理期间的输入/输出数据和/或权重参数的前向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储701的任何部分都可以包括在其他片上或片外数据存储内,包括处理器的l1、l2或l3高速缓存或系统存储器。
[0087]
在至少一个实施例中,代码和/或数据存储701的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个实施例中,代码和/或代码和/或数据存储701可以是高速缓存存储器、动态随机可寻址存储器(“dram”)、静态随机可寻址存储器(“sram”)、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,对代码和/或代码和/或数据存储701是在处理器的内部还是外部的选择,例如,或者由dram、sram、闪存或某种其他存储类型组成,可以取决于存储片上或片外的可用存储空间,正在执行训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。
[0088]
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于代码和/或数据存储705,以存储与在一个或更多个实施例的方面中被训练为和/或用于推理的神经网络的神经元或层相对应的反向和/或输出权重和/或输入/输出数据。在至少一个实施例中,在使
用一个或更多个实施例的方面训练和/或推理期间,代码和/或数据存储705存储在输入/输出数据和/或权重参数的反向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑715可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储705,其中权重和/或其他参数信息被加载以配置逻辑,该逻辑包括整数和/或浮点单元(统称为算术逻辑单元(alu))。
[0089]
在至少一个实施例中,代码(诸如图代码)使得基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器alu中。在至少一个实施例中,代码和/或数据存储705的任何部分可以与其他片上或片外数据存储一起包括,包括处理器的l1、l2或l3高速缓存或系统存储器。在至少一个实施例中,代码和/或数据存储705的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路上的内部或外部。在至少一个实施例中,代码和/或数据存储705可以是高速缓存存储器、dram、sram、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,代码和/或数据存储705是在处理器的内部还是外部的选择,例如,是由dram、sram、闪存还是其他某种存储类型组成,取决于可用存储是片上还是片外,正在执行的训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据批量大小或这些因素的某种组合。
[0090]
在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以是分开的存储结构。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以是组合的存储结构。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以部分地被组合和部分分离。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的l1、l2或l3高速缓存或系统存储器。
[0091]
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于一个或更多个算术逻辑单元(“alu”)710(包括整数和/或浮点单元),用于至少部分地基于训练和/或推理代码(例如,图代码)或由其指示来执行逻辑和/或数学运算,其结果可能会产生存储在激活存储720中的激活(例如,来自神经网络内部的层或神经元的输出值),其是存储在代码和/或数据存储701和/或代码和/或数据存储705中的输入/输出和/或权重参数数据的函数。在至少一个实施例中,激活响应于执行指令或其他代码,由alu710执行的线性代数和/或基于矩阵的数学生成在激活存储720中存储的激活,其中存储在代码和/或数据存储705和/或数据存储701中的权重值用作具有其他值的操作数,例如偏置值、梯度信息、动量值或其他参数或超参数,可以将任何或所有这些存储在代码和/或数据存储705或代码和/或数据存储701或另一个片上或片外存储中。
[0092]
在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电路中包括一个或更多个alu 710,而在另一实施例中,一个或更多个alu710可以在处理器或其他硬件逻辑设备或使用它们(例如协处理器)的电路外。在至少一个实施例中,可以将一个或更多个alu 710包括在处理器的执行单元之内,或者以其他方式包括在由处理器的执行单元可访问的alu组中,该处理器的执行单元可以在同一处理器内或者分布在不同类型的不同处理器之间(例如,中央处理单元、图形处理单元、固定功能单元等)。在至少一个实施例中,代码和/或数据存储701、代码和/或数据存储705以及激活存储720可以共享处理器或其他硬件
逻辑设备或电路,而在另一实施例中,它们可以在不同的处理器或其他硬件逻辑设备或电路或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储720的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的l1、l2或l3高速缓存或系统存储器。此外,推理和/或训练代码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。
[0093]
在至少一个实施例中,激活存储720可以是高速缓存存储器、dram、sram、非易失性存储器(例如,闪存)或其他存储。在至少一个实施例中,激活存储720可以完全地或部分地在一个或更多个处理器或其他逻辑电路内部或外部。在至少一个实施例中,可以取决于片上或片外可用的存储,进行训练和/或推理功能的延迟要求,在推理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合,选择激活存储720是处理器的内部还是外部,例如,或者包含dram、sram、闪存或一些其他存储类型。
[0094]
在至少一个实施例中,图7a中所示的推理和/或训练逻辑715可以与专用集成电路(“asic”)结合使用,例如来自google的处理单元、来自graphcore
tm
的推理处理单元(ipu)或来自intel corp的(例如“lake crest”)处理器。在至少一个实施例中,图7a所示的推理和/或训练逻辑715可与中央处理单元(“cpu”)硬件、图形处理单元(“gpu”)硬件、硬件或其他硬件(例如现场可编程门阵列(“fpga”))结合使用。
[0095]
图7b示出了根据至少一个实施例的推理和/或训练逻辑715。在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于硬件逻辑,其中计算资源被专用或以其他方式唯一地连同对应于神经网络内的一层或更多层神经元的权重值或其他信息一起使用。在至少一个实施例中,图7b中所示的推理和/或训练逻辑715可以与专用集成电路(asic)结合使用,例如来自google的处理单元,来自graphcore
tm
的推理处理单元(ipu)或来自intel corp的(例如“lake crest”)处理器。在至少一个实施例中,图7b中所示的推理和/或训练逻辑715可以与中央处理单元(cpu)硬件、图形处理单元(gpu)硬件、硬件或其他硬件(例如现场可编程门阵列(fpga))结合使用。在至少一个实施例中,推理和/或训练逻辑715包括但不限于代码和/或数据存储701以及代码和/或数据存储705,其可以用于存储代码(例如,图代码)、权重值和/或其他信息,包括偏置值、梯度信息、动量值和/或其他参数或超参数信息。在图7b中所示的至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705中的每一个都分别与专用计算资源(例如计算硬件702和计算硬件706)相关联。在至少一个实施例中,计算硬件702和计算硬件706中的每一个包括一个或更多个alu,这些alu仅分别对存储在代码和/或数据存储701和代码和/或数据存储705中的信息执行数学函数(例如线性代数函数),执行函数的结果被存储在激活存储720中。
[0096]
在至少一个实施例中,代码和/或数据存储701和705以及相应的计算硬件702和706中的每一个分别对应于神经网络的不同层,使得从代码和/或数据存储701和计算硬件702的一个存储/计算对701/702得到的激活提供作为代码和/或数据存储705和计算硬件706的下一个存储/计算对705/706的输入,以便反映神经网络的概念组织。在至少一个实施例中,每个存储/计算对701/702和705/706可以对应于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑715中可以包括在存储/计算对701/702和705/706之后或
与之并行的附加存储/计算对(未示出)。
[0097]
神经网络训练和部署
[0098]
图8示出了根据至少一个实施例的深度神经网络的训练和部署。在至少一个实施例中,使用训练数据集802来训练未训练的神经网络806。在至少一个实施例中,训练框架804是pytorch框架,而在其他实施例中,训练框架804是tensorflow,boost,caffe,microsoft cognitive toolkit/cntk,mxnet,chainer,keras,deeplearning4j或其他训练框架。在至少一个实施例中,训练框架804训练未经训练的神经网络806,并使它能够使用本文所述的处理资源来训练,以生成训练的神经网络808。在至少一个实施例中,权重可以被随机选择或通过使用深度信念网络预训练。在至少一个实施例中,可以以有监督、部分有监督或无监督的方式执行训练。
[0099]
在至少一个实施例中,使用有监督学习来训练未训练的神经网络806,其中训练数据集802包括与用于输入的期望输出配对的输入,或者其中训练数据集802包括具有已知输出的输入和神经网络806是手动分级的输出。在至少一个实施例中,以有监督的方式来训练未经训练的神经网络806,并且处理来自训练数据集802的输入,并将结果输出与一组期望或想要的输出进行比较。在至少一个实施例中,然后通过未训练的神经网络806将误差传播回去。在至少一个实施例中,训练框架804调整控制未经训练的神经网络806的权重。在至少一个实施例中,训练框架804包括用于监视未训练的神经网络806向模型(例如,训练的神经网络808)收敛的程度的工具,适于基于输入数据(例如新数据集812)生成正确答案(例如结果814)的模型。在至少一个实施例中,训练框架804反复训练未训练的神经网络806,同时调整权重以使用损失函数和调整算法(例如随机梯度下降)来改善未训练的神经网络806的输出。在至少一个实施例中,训练框架804训练未训练的神经网络806,直到未训练的神经网络806达到期望的精度为止。在至少一个实施例中,然后可以部署训练的神经网络808以实现任何数量的机器学习操作。
[0100]
在至少一个实施例中,使用无监督学习来训练未训练的神经网络806,其中未训练的神经网络806尝试使用未标记的数据来训练自己。在至少一个实施例中,无监督学习训练数据集802将包括输入数据,而没有任何关联的输出数据或“地面实况”数据。在至少一个实施例中,未训练的神经网络806可以学习训练数据集802内的分组,并且可以确定各个输入如何与未训练的数据集802相关。在至少一个实施例中,可以使用无监督训练来在训练的神经网络808中生成自组织图,其能够执行对减少新数据集812的维度有用的操作。在至少一个实施例中,无监督训练也可以用于执行异常检测,这允许识别新数据集812中偏离新数据集812的正常模式的数据点。
[0101]
在至少一个实施例中,可以使用半监督学习,这是一种技术,其中在训练数据集802中包括标记数据和未标记数据的混合。在至少一个实施例中,训练框架804可以用于例如通过转移的学习技术来执行递增学习。在至少一个实施例中,递增学习使得训练的神经网络808能够适应新数据集812,而不会忘记在初始训练期间注入到训练的神经网络808内的知识。
[0102]
参照图9,图9是根据至少一个实施例的用于生成和部署处理和推理管线的过程900的示例数据流图。在至少一个实施例中,过程900可以被部署以用于在诸如数据中心之类的一个或更多个设施902处对用户反馈数据执行游戏名称识别分析和推理。
[0103]
在至少一个实施例中,过程900可以在训练系统904和/或部署系统906内执行。在至少一个实施例中,训练系统904可以用于执行机器学习模型(例如,神经网络、对象检测算法、计算机视觉算法等)的训练、部署和实现,以用于部署系统906。在至少一个实施例中,部署系统906可以被配置为在分布式计算环境中卸载处理和计算资源,以减少设施902的基础设施需求。在至少一个实施例中,部署系统906可以提供流水线平台用于选择、定制和实现虚拟仪器,以在设施902处与计算设备一起使用。在至少一个实施例中,虚拟仪器可以包括用于针对反馈数据执行一个或更多个处理操作的软件定义的应用程序。在至少一个实施例中,管线中的一个或更多个应用程序在应用程序执行期间,可以使用或调用部署系统906的服务(例如,推理、可视化、计算、ai等)。
[0104]
在至少一个实施例中,在高级处理和推理管线中使用的一些应用程序可以使用机器学习模型或其他ai来执行一个或更多个处理步骤。在至少一个实施例中,可以在设施902处使用存储在设施902处的反馈数据908(例如反馈数据)或来自另一个或更多个设施的反馈数据908,或其组合,来训练机器学习模型。在至少一个实施例中,训练系统904可以用于提供应用程序、服务和/或其他资源,以生成用于部署系统906的工作的、可部署的机器学习模型。
[0105]
在至少一个实施例中,模型注册表924可以由对象存储支持,该对象存储可以支持版本控制和对象元数据。在至少一个实施例中,可以从云平台内通过例如云存储(例如,图10的云1026)兼容的应用程序编程接口(api)来访问对象存储。在至少一个实施例中,模型注册表924内的机器学习模型可以由与api交互的系统的开发者或合作伙伴上传、列出、修改或删除。在至少一个实施例中,api可以提供对方法的访问,所述方法允许具有适当凭证的用户将模型与应用程序相关联,使得模型可以作为应用程序的容器化实例化的执行的一部分来执行。
[0106]
在至少一个实施例中,训练管线1004(图10)可以包括以下情形:其中设施902正在训练他们自己的机器学习模型,或者具有需要优化或更新的现有机器学习模型。在至少一个实施例中,可以接收来自各种通道(诸如论坛、web表单等)的反馈数据908。在至少一个实施例中,一旦接收到反馈数据908,ai辅助注释910就可以用于帮助生成与反馈数据908相对应的注释,以用作机器学习模型的地面实况数据。在至少一个实施例中,ai辅助注释910可以包括一个或更多个机器学习模型(例如,卷积神经网络(cnn)),可以对该机器学习模型进行训练,以生成对应于某些类型的反馈数据908(例如,来自某些设备)的注释,和/或反馈数据908中某些类型的异常。在至少一个实施例中,然后ai辅助注释910可以被直接使用,或者可以使用注释工具进行调整或微调,以生成地面实况数据。在至少一个实施例中,在一些示例中,标记的数据912可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,ai辅助注释910、标记的数据912或其组合可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,训练的机器学习模型可以被称为输出模型916,并且可以由部署系统906使用,如本文所述。
[0107]
在至少一个实施例中,训练管线1004(图10)可以包括以下情形:其中设施902需要机器学习模型,以用于执行用于部署系统906中的一个或更多个应用程序的一个或更多个处理任务,但是设施902当前可能没有这种机器学习模型(或者可能没有为此目的而优化的、高效的或有效的模型)。在至少一个实施例中,可以从模型注册表924中选择现有的机器
学习模型。在至少一个实施例中,模型注册表924可以包括机器学习模型,其被训练为对成像数据执行各种不同的推理任务。在至少一个实施例中,可以在来自不同的设施(例如,位于远处的设施)而不是设施902的成像数据上训练模型注册表924中的机器学习模型。在至少一个实施例中,机器学习模型可能已经在来自一个位置、两个位置或任意数量的位置的成像数据上进行训练。在至少一个实施例中,当在来自特定位置的成像数据上进行训练时,可以在该位置处进行训练,或者至少以保护成像数据的机密性或限制成像数据从场外转移的方式进行训练(例如,遵守hipaa法规、隐私法规等)。在至少一个实施例中,一旦在一个位置处训练了模型或部分地训练了模型,则可以将机器学习模型添加到模型注册表924。在至少一个实施例中,然后可以在任意数量的其他设施处对机器学习模型进行重新训练或更新,并且重新训练或更新的模型可以在模型注册表924中使用。在至少一个实施例中,然后可以从模型注册表924中选择机器学习模型(并称为输出模型916),并且可以在部署系统906中使用,以执行用于部署系统的一个或更多个应用程序的一个或更多个处理任务。
[0108]
在至少一个实施例中,训练管线1004(图10)可用于包括设施902的场景中,所述设施需要机器学习模型,以用于执行用于部署系统906中的一个或更多个应用程序的一个或更多个处理任务,但是设施902当前可能没有这样的机器学习模型(或者可能没有为此目的的优化的、高效的或有效的模型)。在至少一个实施例中,由于用于训练机器学习模型的训练数据的种群差异、遗传变异、稳健性,训练数据异常的多样性,和/或训练数据的其他问题,从模型注册表924中选择的机器学习模型可能不会针对在设施902处生成的反馈数据908进行微调或优化。在至少一个实施例中,ai辅助注释910可以用于帮助生成与反馈数据908相对应的注释,以用作重新训练或更新机器学习模型的地面实况数据。在至少一个实施例中,标记的数据912可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,重新训练或更新机器学习模型可以称为模型训练914。在至少一个实施例中,模型训练914(例如ai辅助注释910,标记的数据912或其组合)可以用作重新训练或更新机器学习模型的地面实况数据。
[0109]
在至少一个实施例中,部署系统906可以包括软件918、服务920、硬件922和/或其他组件、特征和功能。在至少一个实施例中,部署系统906可以包括软件“栈”,以使软件918可以构建在服务920的顶部上,并且可以使用服务920来执行一些或全部处理任务,并且服务920和软件918可以构建在硬件922的顶部上,并使用硬件922来执行部署系统906的处理、存储和/或其他计算任务。
[0110]
在至少一个实施例中,软件918可以包括任意数量的不同容器,其中每个容器可以执行应用程序的实例化。在至少一个实施例中,每个应用程序可以在高级处理和推理管线中执行一个或更多个处理任务(例如,推理、对象检测、特征检测、分割、图像增强、校准等)。在至少一个实施例中,对于每种类型的计算设备,可能有任意数量的容器,其可以对反馈数据908(或其他数据类型,例如本文所述的数据类型)执行数据处理任务。在至少一个实施例中,除了接收和配置成像数据以供每个容器使用和/或在通过管线处理后由设施902使用的容器以外,还可以基于对处理反馈数据908想要的或所需的不同容器的选择来定义高级处理和推理管线(例如,以将输出转换回可用的数据类型,以便在设施902进行存储和显示)。在至少一个实施例中,软件918内的容器组合(例如,其构成管线)可以被称为虚拟仪器(如本文中更详细地描述的),并且虚拟仪器可以利用服务920和硬件922来执行容器中实例化
的应用程序的部分或全部处理任务。
[0111]
在至少一个实施例中,数据可以作为数据处理管线的一部分进行预处理,以准备数据用于由一个或更多个应用程序处理。在至少一个实施例中,可以在管线的一个或更多个推理任务或其他处理任务的输出上执行后处理,以准备下一个应用程序的输出数据和/或准备输出数据,以供用户传输和/或使用(例如作为对推理请求的响应)。在至少一个实施例中,推理任务可以由一个或更多个机器学习模型执行,例如训练的或部署的神经网络,所述模型可以包括训练系统904的输出模型916。
[0112]
在至少一个实施例中,数据处理管线的任务可以封装在一个或更多个容器中,每个容器表示能够引用机器学习模型的应用程序和虚拟化计算环境的离散、全功能实例化。在至少一个实施例中,容器或应用程序可被发布到容器注册表(本文更详细地描述)的私有(例如,有限访问)区域中,并且训练的或部署的模型可存储在模型注册表924中,并与一个或更多个应用程序相关联。在至少一个实施例中,应用程序的图像(例如,容器图像)可在容器注册表中使用,并且一旦用户从容器注册表中选择图像以用于在管线中部署,则该图像可用于生成用于应用程序的实例化的容器,以供用户的系统使用。
[0113]
在至少一个实施例中,开发者可以开发、发布和存储应用程序(例如,作为容器),用于对所提供的数据执行处理和/或推理。在至少一个实施例中,可以使用与系统相关联的软件开发工具包(sdk)来执行开发、发布和/或存储(例如,以确保开发的应用程序和/或容器符合系统或与系统兼容)。在至少一个实施例中,所开发的应用程序可以使用sdk在本地测试(例如,在第一设施处,对来自第一设施的数据),所述sdk作为系统(例如图10中的系统1000)可以支持至少某些服务920。在至少一个实施例中,一旦通过系统1000的验证(例如,为了准确性等),应用程序便会在容器注册表中可用,以供用户(例如,医院、诊所、实验室、医疗保健提供者等)选择和/或实现,以对用户的设施(例如第二设施)处的数据执行一个或更多个处理任务。
[0114]
在至少一个实施例中,开发者随后可以通过网络共享应用程序或容器,以供系统(例如,图10的系统1000)的用户访问和使用。在至少一个实施例中,可以将完成并经过验证的应用程序或容器存储在容器注册表中,并且可以将相关的机器学习模型存储在模型注册表924中。在至少一个实施例中,请求实体(其提供推理或图像处理请求)可以浏览容器注册表和/或模型注册表924,用于应用程序、容器、数据集、机器学习模型等,选择所需的元素组合以包含在数据处理管线中,并提交处理请求。在至少一个实施例中,请求可以包括执行请求所必需的输入数据,和/或可以包括对在处理请求时要执行的应用程序和/或机器学习模型的选择。在至少一个实施例中,然后可以将请求传递到部署系统906的一个或更多个组件(例如,云),以执行数据处理管线的处理。在至少一个实施例中,由部署系统906进行的处理可以包括引用从容器注册表和/或模型注册表924中选择的元素(例如,应用程序、容器、模型等)。在至少一个实施例中,一旦通过管线生成结果,结果可返回给用户以供参考(例如,用于在本地、本地工作站或终端上执行的查看应用程序套件中进行查看)。
[0115]
在至少一个实施例中,为了帮助处理或执行管线中的应用程序或容器,可以利用服务920。在至少一个实施例中,服务920可以包括计算服务、人工智能(ai)服务、可视化服务和/或其他服务类型。在至少一个实施例中,服务920可以提供软件918中的一个或更多个应用程序所共有的功能,因此可以将功能抽象为可以被应用程序调用或利用的服务。在至
少一个实施例中,由服务920提供的功能可以动态且更有效地运行,同时还可以通过允许应用程序并行地处理数据(例如,使用图10中的并行计算平台1030)来很好地缩放。在至少一个实施例中,不是要求共享服务920提供的相同功能的每个应用程序都必须具有服务920的相应实例,而是可以在各种应用程序之间和之中共享服务920。在至少一个实施例中,作为非限制性示例,服务可包括可用于执行检测或分割任务的推理服务器或引擎。在至少一个实施例中,可以包括模型训练服务,其可以提供机器学习模型训练和/或重新训练能力。
[0116]
在至少一个实施例中,在服务920包括ai服务(例如,推理服务)的情况下,作为应用程序执行的一部分,可以通过调用(例如,作为api调用)推理服务(例如,推理服务器),以执行一个或更多个机器学习模型或其处理,来执行与用于异常检测(例如,肿瘤、生长异常、瘢痕形成等)的应用程序相关联的一个或更多个机器学习模型。在至少一个实施例中,在另一应用程序包括用于分割任务的一个或更多个机器学习模型的情况下,应用程序可以调用推理服务来执行机器学习模型,以用于执行与分割任务相关联的一个或更多个处理操作。在至少一个实施例中,实现高级处理和推理管线的软件918可以被流水线化,因为每个应用程序可以调用相同的推理服务来执行一个或更多个推理任务。
[0117]
在至少一个实施例中,硬件922可包括gpu、cpu、图形卡、ai/深度学习系统(例如,ai超级计算机,诸如nvidia的dgx超级计算机系统)、云平台或其组合。在至少一个实施例中,可以使用不同类型的硬件922,以为部署系统906中的软件918和服务920提供高效的、专门构建的支持。在至少一个实施例中,可以实现使用gpu处理来在ai/深度学习系统内、云系统中、和/或部署系统906的其他处理组件中进行本地处理(例如,在设施902处),以提高游戏名称识别的效率、准确性和效能。
[0118]
在至少一个实施例中,作为非限制性示例,关于深度学习、机器学习和/或高性能计算,可以针对gpu处理优化软件918和/或服务920。在至少一个实施例中,部署系统906和/或训练系统904的计算环境中的至少一些可以在具有gpu优化的软件(例如,nvidia dgx系统的硬件和软件组合)的数据中心、一个或更多个超级计算机或高性能计算机系统中执行。在至少一个实施例中,如本文所述,硬件922可包括任意数量的gpu,所述gpu可被调用以并行执行数据处理。在至少一个实施例中,云平台还可包括用于深度学习任务的gpu优化执行、机器学习任务或其他计算任务的gpu处理。在至少一个实施例中,可以使用ai/深度学习超级计算机和/或gpu优化的软件(例如,如在nvidia的dgx系统上提供的)作为硬件抽象和缩放平台,来执行云平台(例如,nvidia的ngc)。在至少一个实施例中,云平台可以在多个gpu上集成应用程序容器集群系统或协调系统(例如,kubernetes),以实现无缝缩放和负载均衡。
[0119]
图10是根据至少一个实施例的用于生成和部署一部署管线的示例系统1000的系统图。在至少一个实施例中,系统1000可以用于实现图9的过程900和/或其他过程,包括高级处理和推理管线。在至少一个实施例中,系统1000可以包括训练系统904和部署系统906。在至少一个实施例中,可以使用软件918、服务920和/或硬件922,来实现训练系统904和部署系统906,如本文所述。
[0120]
在至少一个实施例中,系统1000(例如,训练系统904和/或部署系统906)可以在云计算环境中(例如,使用云1026)实现。在至少一个实施例中,系统1000可以在本地实现(关于设施),或者作为云计算资源和本地计算资源的组合来实现。在至少一个实施例中,可以
通过制定安全措施或协议,将对云1026中的api的访问权限限制为授权用户。在至少一个实施例中,安全协议可以包括网络令牌,其可以由认证(例如,authn、authz、gluecon等)服务签署,并且可以携带适当的授权。在至少一个实施例中,虚拟仪器的api(本文中描述的)或系统1000的其他实例可以被限制为已被审核或授权用于交互的一组公共ip。
[0121]
在至少一个实施例中,系统1000的各个组件可以使用多种不同网络类型中的任何一种在彼此之间和之中进行通信,所述不同网络类型包括但不限于经由有线和/或无线通信协议的局域网(lan)和/或广域网(wan)。在至少一个实施例中,系统1000的设施和组件之间的通信(例如,用于发送推理请求、用于接收推理请求的结果等)可以通过一个或更多个数据总线、无线数据协议(wi-fi)、有线数据协议(例如以太网)等进行传送。
[0122]
在至少一个实施例中,类似于本文关于图9所描述的,训练系统904可以执行训练管线1004。在至少一个实施例中,其中部署系统906将在部署管线数据1660中使用一个或更多个机器学习模型,训练管线1004可用于训练或重新训练一个或更多个(例如,预训练的)模型,和/或实现一个或更多个预训练模型1006(例如,无需重新训练或更新)。在至少一个实施例中,作为训练管线1004的结果,可以生成输出模型916。在至少一个实施例中,训练管线1004可以包括任意数量的处理步骤,ai辅助注释910、反馈数据908的标记或注释用于生成标记的数据912、从模型注册表中选择模型、模型训练914、训练、重新训练或更新模型,和/或其他处理步骤。在至少一个实施例中,对于由部署系统906使用的不同的机器学习模型,可以使用不同的训练管线1004。在至少一个实施例中,类似于关于图9描述的第一示例的训练管线1004可用于第一机器学习模型,类似于关于图9描述的第二示例的训练管线1004可用于第二机器学习模型,类似于关于图9描述的第三示例的训练管线1004可用于第三机器学习模型。在至少一个实施例中,可以根据每个相应机器学习模型的要求来使用训练系统904内任务的任何组合。在至少一个实施例中,一个或更多个机器学习模型可能已经被训练并准备好用于部署,因此训练系统904可能不会对机器学习模型进行任何处理,并且机器学习模型可以由部署系统906来实现。
[0123]
在至少一个实施例中,根据实施例或实施例,一个或更多个输出模型916和/或预训练模型1006可包括任何类型的机器学习模型。在至少一个实施例中并且不限于此,系统1000使用的机器学习模型可以包括使用线性回归、逻辑回归、决策树、支持向量机(svm)、朴素贝叶斯、k-最近邻(knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(lstm)、bi-lstm、hopfield、boltzmann、深层信念、反卷积、生成对抗、液体状态机等),和/或其他类型的机器学习模型。
[0124]
在至少一个实施例中,训练管线1004可以包括ai辅助注释。在至少一个实施例中,可以通过任何数量的技术来生成标记的数据912(例如,传统注释)。在至少一个实施例中,在一些示例中可以在绘图程序(例如,注释程序)、计算机辅助设计(cad)程序、标记程序、适用于生成地面实况的注释或标签的另一类型的应用程序中、和/或可以手绘,生成标签或其他注释。在至少一个实施例中,地面实况数据可以被合成产生(例如,从计算机模型或渲染生成)、真实产生(例如,从真实世界数据设计和生成)、机器自动产生(例如,使用特征分析和学习从数据中提取特征,然后生成标签)、人工注释(例如,标记器或注释专家,定义标签的位置)和/或其组合。在至少一个实施例中,对于反馈数据908(或机器学习模型使用的其他数据类型)的每个实例,可以存在由训练系统904生成的相应的地面实况数据。在至少一
个实施例中,可以作为部署管线数据1660的一部分执行ai辅助注释;补充或代替训练管线1004中包括的ai辅助注释。在至少一个实施例中,系统1000可以包括多层平台,所述多层平台可以包括诊断应用程序(或其他应用程序类型)的软件层(例如软件918),其可以执行一个或更多个医学成像和诊断功能。
[0125]
在至少一个实施例中,软件层可以被实现为安全的、加密的和/或经认证的api,通过所述api可以从外部环境(例如,设施902)援引(invoke)(例如,调用(call))应用程序或容器。在至少一个实施例中,应用程序随后可以调用或执行一个或更多个服务920,以执行与各自的应用程序相关联的计算、ai或可视化任务,并且软件918和/或服务920可以利用硬件922以有效和高效的方式执行处理任务。
[0126]
在至少一个实施例中,部署系统906可以执行部署管线数据1660。在至少一个实施例中,部署管线数据1660可以包括任意数量的应用程序,所述应用程序可以是顺序的、非顺序的,或者以其他方式应用于反馈数据(和/或其他数据类型)-包括ai辅助注释,如上所述。在至少一个实施例中,如本文所述,用于个体设备的部署管线数据1660可以被称为用于设备的虚拟仪器。在至少一个实施例中,对于单个设备,可以存在不止一个部署管线数据1660,这取决于从设备生成的数据所期望的信息。
[0127]
在至少一个实施例中,可用于部署管线数据1660的应用程序可包括可用于对反馈数据或来自设备的其他数据执行处理任务的任何应用程序。在至少一个实施例中,由于各种应用程序可以共享公共图像操作,因此在一些实施例中,可以使用数据增强库(例如,作为服务920之一)来加速这些操作。在至少一个实施例中,为了避免依赖于cpu处理的传统处理方法的瓶颈,并行计算平台1030可用于这些处理任务的gpu加速。
[0128]
在至少一个实施例中,部署系统906可以包括用户接口数据1664(例如,图形用户接口、web接口等),所述用户接口可以被用于选择要包括在部署管线数据1660中的应用程序、布置应用程序、修改或改变应用程序或其参数或构造、在设置和/或部署期间使用部署管线数据1660以及与其交互,和/或以其他方式与部署系统906交互。在至少一个实施例中,尽管没有关于训练系统904示出,但是用户接口数据1664(或不同的用户接口)可用于选择在部署系统906中使用的模型、用于选择用于在训练系统904中训练或重新训练的模型,和/或用于以其他方式与训练系统904交互。
[0129]
在至少一个实施例中,除了应用程序协调系统1028之外,还可以使用管线管理器数据1662来管理部署管线数据1660的应用程序或容器与服务920和/或硬件922之间的交互。在至少一个实施例中,管线管理器数据1662可以被配置为促进从应用程序到应用程序、从应用程序到服务920,和/或从应用程序或服务到硬件922的交互。在至少一个实施例中,尽管示出为包括在软件918中,这并不旨在进行限制,并且在一些示例中,管线管理器数据1662可以被包括在服务920中。在至少一个实施例中,应用程序协调系统1028(例如,kubernetes、docker等)可以包括容器协调系统,其可以将应用程序分组到容器中,作为用于协调、管理、缩放和部署的逻辑单元。在至少一个实施例中,通过将来自部署管线数据1660的应用程序(例如,重建应用程序、分割应用程序等)与各个容器相关联,每个应用程序可以在自包含的环境(例如,在内核级)中执行,以提高速度和效率。
[0130]
在至少一个实施例中,每个应用程序和/或容器(或其映像)可以被单独开发、修改和部署(例如,第一用户或开发者可以开发、修改和部署第一应用程序,第二用户或开发者
可以开发、修改和部署与第一用户或开发者分开的第二应用程序),这可以允许专注并关注单个应用程序和/或容器的任务,而不受另一个应用程序或容器的任务的阻碍。在至少一个实施例中,管线管理器数据1662和应用程序协调系统1028可以辅助不同容器或应用程序之间的通信和协作。在至少一个实施例中,只要每个容器或应用程序的预期输入和/或输出是系统已知的(例如,基于应用程序或容器的构造),则应用程序协调系统1028和/或管线管理器数据1662可以促进每个应用程序或容器之间和之中的通信以及资源的共享。在至少一个实施例中,由于部署管线数据1660中的一个或更多个应用程序或容器可以共享相同的服务和资源,因此应用程序协调系统1028可以在各个应用程序或容器之间和之中进行协调、负载均衡,并确定服务或资源的共享。在至少一个实施例中,调度器可用于跟踪应用程序或容器的资源需求、这些资源的当前使用或计划使用,以及资源可用性。因此,在至少一个实施例中,考虑到系统的需求和可用性,调度器可以将资源分配给不同的应用程序,并在应用程序之间和之中分配资源。在一些示例中,调度器(和/或应用程序协调系统1028的其他组件)可以基于施加在系统上的约束(例如,用户约束)来确定资源可用性和分布,例如服务质量(qos)、对数据输出的迫切需求(例如,以确定是执行实时处理还是延迟处理)等。
[0131]
在至少一个实施例中,由部署系统906中的应用程序或容器利用并由其共享的服务920,可以包括计算服务数据1666、ai服务数据1668、可视化服务1020和/或其他服务类型。在至少一个实施例中,应用程序可以调用(例如,执行)一个或更多个服务920,以执行针对应用程序的处理操作。在至少一个实施例中,应用程序可以利用计算服务数据1666来执行超级计算或其他高性能计算(hpc)任务。在至少一个实施例中,可以利用一个或更多个计算服务数据1666来执行并行处理(例如,使用并行计算平台1030),以通过一个或更多个应用程序和/或单个应用程序的一个或更多个任务基本上同时地处理数据。在至少一个实施例中,并行计算平台1030(例如,nvidia的cuda)可以在gpu(gpgpu)(例如,gpu 1022)上实现通用计算。在至少一个实施例中,并行计算平台1030的软件层可以提供对gpu的虚拟指令集和并行计算元素的访问,以执行计算内核。在至少一个实施例中,并行计算平台1030可以包括存储器,并且在一些实施例中,可以在多个容器之间和之中,和/或在单个容器内的不同处理任务之间和之中共享存储器。在至少一个实施例中,可以为多个容器和/或容器内的多个进程生成进程间通信(ipc)调用,以使用来自并行计算平台1030的共享存储器段的相同数据(例如,其中一应用程序或多个应用程序的多个不同阶段正在处理相同的信息)。在至少一个实施例中,不是复制数据并将数据移动到存储器中的不同位置(例如,读/写操作),而是可以将存储器相同位置中的相同数据用于任何数量的处理任务(例如,在同一时间、不同时间等)。在至少一个实施例中,由于作为处理的结果数据被用于生成新数据,因此数据的新位置的该信息可以在各个应用程序之间存储和共享。在至少一个实施例中,数据的位置以及经更新或修改的数据的位置可以是如何理解容器中的有效负载的定义的一部分。
[0132]
在至少一个实施例中,可以利用ai服务数据1668来执行推理服务,该推理服务用于执行与应用程序相关联的机器学习模型(例如,任务为执行应用程序的一个或更多个处理任务)。在至少一个实施例中,ai服务数据1668可以利用ai系统1024来执行机器学习模型(例如,诸如cnn之类的神经网络)以用于分割、重建、对象检测、特征检测、分类和/或其他推理任务。在至少一个实施例中,部署管线数据1660的应用程序可以使用来自训练系统904的一个或更多个输出模型916和/或应用程序的其他模型,来对成像数据(例如,dicom数据、
ris数据、cis数据、符合rest的数据、rpc数据、原始数据等)执行推理。在至少一个实施例中,使用应用程序协调系统1028(例如,调度器)进行推理的两个或更多个示例可以是可用的。在至少一个实施例中,第一类别可以包括高优先级/低延时路径,其可以实现更高服务水平协议,例如用于在紧急情况下对紧急请求执行推理,或者在诊断过程中用于放射科医生。在至少一个实施例中,第二类别可以包括标准优先级路径,其可用于可能不紧急的请求或者可以在稍后的时间执行分析的情况。在至少一个实施例中,应用程序协调系统1028可以基于优先级路径来分配资源(例如,服务920和/或硬件922),以用于ai服务数据1668的不同推理任务。
[0133]
在至少一个实施例中,共享存储器可以被安装到系统1000中的ai服务数据1668。在至少一个实施例中,共享存储器可以操作为高速缓存(或其他存储设备类型),并且可以用于处理来自应用程序的推理请求。在至少一个实施例中,当提交推理请求时,部署系统906的一组api实例可以接收请求,并且可以选择一个或更多个实例(例如,为了最佳拟合、为了负载均衡等)来处理请求。在至少一个实施例中,为了处理请求,可以将请求输入到数据库中,如果尚未在高速缓存中,则可以从模型注册表924定位机器学习模型,验证步骤可以确保将适当的机器学习模型加载到高速缓存中(例如,共享存储),和/或可以将模型的副本保存到高速缓存中。在至少一个实施例中,如果应用程序尚未运行或没有足够的应用程序的实例,则可使用调度器(例如,管线管理器数据1662的调度器)来启动在请求中引用的应用程序。在至少一个实施例中,如果尚未启动推理服务器来执行模型,则可以启动推理服务器。在至少一个实施例中,每个模型可以启动任意数量的推理服务器。在至少一个实施例中,在将推理服务器聚类的拉(pull)模型中,每当负载均衡有利时,就可以将模型高速缓存。在至少一个实施例中,推理服务器可以静态加载到相应的分布式服务器中。
[0134]
在至少一个实施例中,可以使用在容器中运行的推理服务器来执行推理。在至少一个实施例中,推理服务器的实例可以与模型(并且可选地与模型的多个版本)相关联。在至少一个实施例中,如果在接收到对模型执行推理的请求时推理服务器的实例不存在,则可以加载新实例。在至少一个实施例中,当启动推理服务器时,可以将模型传递到推理服务器,使得可以使用相同的容器来服务不同的模型,只要推理服务器作为不同的实例运行即可。
[0135]
在至少一个实施例中,在应用程序执行期间,可以接收对给定应用程序的推理请求,并且可以加载(如果尚未加载的话)容器(例如,托管推理服务器的实例),以及可以调用启动程序。在至少一个实施例中,容器中的预处理逻辑可以(例如,使用cpu和/或gpu)对传入的数据进行加载、解码和/或执行任何附加的预处理。在至少一个实施例中,一旦数据准备好进行推理,容器就可以根据需要对数据进行推理。在至少一个实施例中,这可以包括对一个图像(例如,手部x射线)的单个推理调用,或可要求对数百个图像(例如,胸部ct)进行推理。在至少一个实施例中,应用程序可在完成之前总结结果,其可以包括但不限于单个置信度得分、像素级分割、体素级分割、生成可视化或生成文本以总结结果。在至少一个实施例中,可以为不同的模型或应用程序分配不同的优先级。例如,一些模型可具有实时(tat小于1分钟)优先级,而其他模型可具有较低的优先级(例如,tat小于10分钟)。在至少一个实施例中,模型执行时间可以从请求机构或实体进行测量,并且可以包括合作网络遍历时间以及推理服务的执行时间。
[0136]
在至少一个实施例中,请求在服务920和推理应用程序之间的传送可以隐藏在软件开发工具包(sdk)后面,并且可以通过队列提供鲁棒的传输。在至少一个实施例中,将通过api将请求放置在队列中,以用于个体应用程序/租户id组合,并且sdk将从队列中拉取请求并将请求提供给应用程序。在至少一个实施例中,在sdk将从中拾取队列的环境中,可以提供队列的名称。在至少一个实施例中,通过队列的异步通信可能有用,因为它可以允许应用程序的任何实例在其可用时拾取工作。在至少一个实施例中,可以通过队列将结果传送回去,以确保没有数据丢失。在至少一个实施例中,队列还可以提供对工作进行分割的能力,因为最高优先级的工作可以进入与应用程序的大多数实例连接的队列,而最低优先级的工作可以进入与单个实例连接的队列,所述实例按照接收到的顺序处理任务。在至少一个实施例中,应用程序可以在gpu加速的实例上运行,所述实例在云1026中生成,并且推理服务可以在gpu上执行推理。
[0137]
在至少一个实施例中,可以利用可视化服务1020来生成用于查看应用程序和/或部署管线数据1660输出的可视化。在至少一个实施例中,可视化服务1020可以利用gpu 1022来生成可视化。在至少一个实施例中,可视化服务1020可以实现诸如光线追踪之类的渲染效果,以生成更高质量的可视化。在至少一个实施例中,可视化可以包括但不限于2d图像渲染、3d体渲染、3d体重建、2d层析切片、虚拟现实显示、增强现实显示等。在至少一个实施例中,可以使用虚拟化环境来生成虚拟交互显示或环境(例如,虚拟环境),以供系统用户(例如,医生、护士、放射科医生等)进行交互。在至少一个实施例中,可视化服务1020可以包括内部可视化器、电影和/或其他渲染或图像处理能力或功能(例如,光线追踪、光栅化、内部光学器件等)。
[0138]
在至少一个实施例中,硬件922可以包括gpu 1022、ai系统1024、云1026和/或用于执行训练系统904和/或部署系统906的任何其他硬件。在至少一个实施例中,gpu 1022(例如,nvidia的tesla和/或quadro gpu)可包括可用于执行计算服务数据1666、ai服务数据1668、可视化服务1020、其他服务和/或软件918的任何特征或功能的处理任务的任意数量的gpu。例如,对于ai服务数据1668,gpu 1022可用于对成像数据(或机器学习模型使用的其他数据类型)执行预处理,对机器学习模型的输出执行后处理和/或执行推理(例如以执行机器学习模型)。在至少一个实施例中,云1026、ai系统1024和/或系统1000的其他组件可以使用gpu1022。在至少一个实施例中,云1026可以包括用于深度学习任务的gpu优化的平台。在至少一个实施例中,ai系统1024可以使用gpu,并且可以使用一个或更多个ai系统1024来执行云1026(或者任务为深度学习或推理的至少部分)。同样,尽管硬件922被示出为离散组件,但这并不意图是限制,并且硬件922的任何组件可以与硬件922的任何其他组件组合,或由硬件922的任何其他组件利用。
[0139]
在至少一个实施例中,ai系统1024可包括专门构建的计算系统(例如,超级计算机或hpc),该计算系统配置用于推理、深度学习、机器学习和/或其他人工智能任务。在至少一个实施例中,除了cpu、ram、存储器和/或其他组件、特征或功能之外,ai系统1024(例如,nvidia的dgx)还可以包括可以使用多个gpu 1022来执行分gpu优化的软件(例如,软件栈)。在至少一个实施例中,可以在云1026中(例如,在数据中心中)实现一个或更多个ai系统1024,以执行系统1000的一些或全部基于ai的处理任务。
[0140]
在至少一个实施例中,云1026可以包括gpu加速的基础设施(例如,nvidia的ngc),
其可以提供用于执行系统1000的处理任务的gpu优化的平台。在至少一个实施例中,云1026可以包括ai系统1024,其用于执行系统1000的一个或更多个基于ai的任务(例如,作为硬件抽象和缩放平台)。在至少一个实施例中,云1026可以与利用多个gpu的应用程序协调系统1028集成,以实现应用程序和服务920之间和之中的无缝缩放和负载均衡。在至少一个实施例中,如本文所述,云1026可以负责执行系统1000的至少一些服务920,包括计算服务数据1666、ai服务数据1668和/或可视化服务1020。在至少一个实施例中,云1026可以执行大小批的推理(例如,执行nvidia的tensor rt),提供加速的并行计算api和平台1030(例如,nvidia的cuda),执行应用程序协调系统1028(例如,kubernetes),提供图形渲染api和平台(例如,用于光线跟踪,2d图形、3d图形和/或其他渲染技术以产生更高质量的电影效果),和/或可以为系统1000提供其他功能。
[0141]
在至少一个实施例中,为了保护患者的机密性(例如,在非现场使用患者数据或记录的情况下),云1026可以包括注册表-例如深度学习容器注册表。在至少一个实施例中,注册表可以存储用于实例化应用程序的容器,所述应用程序可以对患者数据执行预处理、后处理或其他处理任务。在至少一个实施例中,云1026可接收数据,所述数据包括患者数据以及容器中传感器数据,仅对那些容器中的传感器数据执行所请求的处理,然后将结果输出和/或可视化转发给适当的各方和/或设备(例如用于可视化或诊断的本地医疗设备),而无需提取、存储或以其他方式访问患者数据。在至少一个实施例中,根据hipaa和/或其他数据规定来保留患者数据的机密性。
[0142]
可以根据以下条款来描述本公开的至少一个实施例:
[0143]
在条款1中,一种图像渲染方法,所述方法包括:识别场景中的第一光,所述第一光具有第一颜色渲染方案(crs)中的第一表示和第二crs中的第二表示;识别表征所述第一光与所述场景中介质的相互作用的衰减函数;使用所述衰减函数确定与所述介质相互作用的所述第一光在所述第一crs中的第三表示;至少部分地基于使所述第一光的所述第三表示与所述第二crs中与所述介质相互作用的所述第一光的第四表示之间的差最小化来确定所述衰减函数的一个或更多个拟合参数;以及使用所述衰减函数和所确定的一个或更多个拟合参数来渲染包括与所述介质相互作用的所述第一光或与所述介质相互作用的第二光中的至少一个的图像。
[0144]
在条款2中,根据条款1所述的方法,其中,所述第一crs是光谱渲染方案。
[0145]
在条款3中,根据条款1所述的方法,其中,所述第二crs是三色渲染方案。
[0146]
在条款4中,根据条款1所述的方法,其中,所述衰减函数是衰减系数与所述介质的深度的乘积的指数函数。
[0147]
在条款5中,根据条款1所述的方法,其中,所述衰减函数是包括多个值的波长的分段常数函数,所述多个值中的每一个与多个波长间隔中的相应一个相关联。
[0148]
在条款6中,根据条款5所述的方法,其中,所述多个值中的一个或更多个值是基于对于所述第二crs的相应颜色的所述介质的衰减系数。
[0149]
在条款7中,根据条款5所述的方法,其中所述一个或更多个拟合参数包括所述多个波长间隔的相邻间隔之间的至少一个边界。
[0150]
在条款8中,根据条款1所述的方法,其中确定所述衰减函数的所述一个或更多个拟合参数包括:识别与所述第一光的所述第三表示相对应的多个色度值;以及确定表示多
个色度值中的每一个与多个参考色度值中的相应一个之间的距离的度量。
[0151]
在条款9中,根据条款8所述的方法,其中,所述多个参考色度值与所述第二crs的多个原色相关联。
[0152]
在条款10中,根据条款1所述的方法,其中,所述第二光具有不同于所述第一光的光谱成分的光谱成分。
[0153]
在条款11中,根据条款1所述的方法,其中,所述第一光具有自然室外光源的光谱成分。
[0154]
在条款12中,一种系统,包括:存储设备;以及一个或更多个处理设备,通信地耦合到所述存储设备,用于:识别场景中的第一光,所述第一光具有第一颜色渲染方案(crs)中的第一表示和第二crs中的第二表示;识别表征所述第一光与所述场景中介质的相互作用的衰减函数;使用所述衰减函数确定与所述介质相互作用的所述第一光在所述第一crs中的第三表示;至少部分地基于使所述第一光的所述第三表示与所述第二crs中与所述介质相互作用的所述第一光的第四表示之间的差最小化来确定所述衰减函数的一个或更多个拟合参数;以及使用所述衰减函数和所确定的一个或更多个拟合参数来渲染包括与所述介质相互作用的所述第一光或与所述介质相互作用的第二光中的至少一个的图像。
[0155]
在条款13中,根据条款12所述的系统,其中,所述第一crs是光谱渲染方案,并且所述第二crs是三色渲染方案。
[0156]
在条款14中,根据条款12所述的系统,其中,所述衰减函数是衰减系数与所述介质的深度的乘积的指数函数。
[0157]
在条款15中,根据条款12所述的系统,其中所述衰减函数是包括多个值的波长的分段常数函数,所述多个值中的每一个与多个波长间隔中的相应一个相关联,并且其中所述多个值中的一个或更多个基于所述第二crs的相应颜色的所述介质的衰减系数。
[0158]
在条款16中,根据条款15所述的系统,其中所述一个或更多个拟合参数包括所述多个波长间隔的相邻间隔之间的至少一个边界。
[0159]
在条款17中,根据条款12所述的系统,其中为了确定所述衰减函数的所述一个或更多个拟合参数,所述一个或更多个处理设备进一步用于:识别对应于所述第一光的所述第三表示的多个色度值;以及确定表示所述多个色度值中的每一个与多个参考色度值中的相应一个之间的距离的度量。
[0160]
在条款18中,根据条款17所述的系统,其中,所述多个参考色度值与所述第二crs的多个原色相关联。
[0161]
在条款19中,根据条款12所述的系统,其中,所述第二光具有不同于所述第一光的光谱成分的光谱成分。
[0162]
在条款20中,一种非暂时性计算机可读介质,在其上存储指令,其中所述指令在由处理设备执行时,使所述处理设备:识别场景中的第一光,所述第一光具有第一颜色渲染方案(crs)中的第一表示和第二crs中的第二表示;识别表征所述第一光与所述场景中介质的相互作用的衰减函数;使用所述衰减函数确定与所述介质相互作用的所述第一光在所述第一crs中的第三表示;至少部分地基于使所述第一光的所述第三表示与所述第二crs中与所述介质相互作用的所述第一光的第四表示之间的差最小化来确定所述衰减函数的一个或更多个拟合参数;以及使用所述衰减函数和所确定的一个或更多个拟合参数来渲染包括与
所述介质相互作用的所述第一光或与所述介质相互作用的第二光中的至少一个的图像。
[0163]
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
[0164]
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。在至少一个实施例中,除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
[0165]
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“a,b和c中的至少一个”或“a,b与c中的至少一个”形式的短语之类的连接语在上下文中理解为通常用来表示项目、条款等,其可以是a或b或c,也可以是a和b和c集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“a,b和c中的至少一个”和“a,b与c中的至少一个”是指以下任意集:{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}。因此,这种连接语言通常不旨在暗示某些实施例要求存在a中的至少一个,b中的至少一个和c中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。在至少一个实施例中,多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
[0166]
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括在暂时性信号收发器内的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计
算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“cpu”)执行一些指令,而图形处理单元(“gpu”)和/或数据处理单元(“dpu”)(其可能与gpu一起)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
[0167]
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
[0168]
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
[0169]
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
[0170]
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
[0171]
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
[0172]
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是cpu或gpu。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。在至少一个实施例中,术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。
[0173]
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。在至少一个实施例中,可以通过多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在至少一个实施例中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,可以通过经由计算
机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
[0174]
尽管本文的描述阐述了所描述的技术的示例实施例,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于描述的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
[0175]
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献