CN118196277A - 复制物理环境并生成3d资产用于合成场景生成 - Google Patents
复制物理环境并生成3d资产用于合成场景生成 Download PDFInfo
- Publication number
- CN118196277A CN118196277A CN202311701487.1A CN202311701487A CN118196277A CN 118196277 A CN118196277 A CN 118196277A CN 202311701487 A CN202311701487 A CN 202311701487A CN 118196277 A CN118196277 A CN 118196277A
- Authority
- CN
- China
- Prior art keywords
- data
- representation
- environment
- objects
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 112
- 230000015654 memory Effects 0.000 claims description 73
- 238000013528 artificial neural network Methods 0.000 claims description 40
- 230000005540 biological transmission Effects 0.000 claims description 14
- 238000013135 deep learning Methods 0.000 claims description 12
- 238000004088 simulation Methods 0.000 claims description 9
- 230000003190 augmentative effect Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 4
- 230000003287 optical effect Effects 0.000 claims description 2
- 230000008447 perception Effects 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 abstract description 40
- 230000003362 replicative effect Effects 0.000 abstract 1
- 238000012549 training Methods 0.000 description 126
- 238000012545 processing Methods 0.000 description 94
- 238000010801 machine learning Methods 0.000 description 86
- 230000008569 process Effects 0.000 description 71
- 238000013473 artificial intelligence Methods 0.000 description 49
- 238000003860 storage Methods 0.000 description 37
- 238000003384 imaging method Methods 0.000 description 32
- 230000000007 visual effect Effects 0.000 description 28
- 230000000875 corresponding effect Effects 0.000 description 27
- 238000004422 calculation algorithm Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 18
- 238000012800 visualization Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 230000033001 locomotion Effects 0.000 description 14
- 238000007781 pre-processing Methods 0.000 description 14
- 238000009877 rendering Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000004913 activation Effects 0.000 description 9
- 238000001994 activation Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 239000013598 vector Substances 0.000 description 8
- 230000000670 limiting effect Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000012163 sequencing technique Methods 0.000 description 6
- 230000007613 environmental effect Effects 0.000 description 5
- 238000005259 measurement Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 210000000056 organ Anatomy 0.000 description 5
- 238000011960 computer-aided design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000005286 illumination Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000002146 bilateral effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000002059 diagnostic imaging Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000002595 magnetic resonance imaging Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013481 data capture Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000002591 computed tomography Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
- G06T7/33—Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/70—Labelling scene content, e.g. deriving syntactic or semantic representations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V2201/00—Indexing scheme relating to image or video recognition or understanding
- G06V2201/07—Target detection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Architecture (AREA)
- Computational Linguistics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了复制物理环境并生成3D资产用于合成场景生成,本文提出的方法可提供环境的数字表示的自动生成,该环境可包括各个对象类型的多个对象。环境的初始表示(例如,点云)可从例如配准的图像或扫描数据生成,并且环境中的对象可至少基于该初始表示来分割和识别。对于基于这些分割识别的对象,所存储的准确表示可以替换环境的表示中的那些对象,并且如果没有这样的模型可用,则可以生成并在环境中定位该对象的网格或其他表示。然后,结果可以包括其中对象被识别出来并被分割为个体对象的场景或环境的3D表示,并且场景或环境的表示可以通过各个视口、位置和视角被查看并与之交互。
Description
背景技术
存在获得物理环境的虚拟重建可以是有用或有益的各种情况。这可包括例如生成对应于该环境的数字表示,诸如三维模型。用于生成这样的表示的现有方法可以利用通过扫描这样的环境获得的数据,但是这些现有方法通常仅生成作为整体的环境的单个三维表示,并且不将环境分割成可以对应于环境的不同方面的各个区域或部分。对环境中的个体对象进行分割以及标识或修改该环境中的对象的表示的尝试通常需要至少一些量的手动交互,这对于许多用户而言可能是繁重的或复杂的,并且可能产生不是最佳的结果。
附图说明
将参考附图描述根据本公开的各个实施例,在附图中:
图1A和图1B示出了根据各个实施例的所捕获的场景图像和可以生成的所重建的场景图像;
图2A、图2B、图2C和图2D示出了根据各个实施例的特定对象的图像以及包括那些对象中的至少一些的所重建场景的图像;
图3A和图3B示出了根据至少一个实施例的可以重建的示例环境的图像;
图4示出了根据至少一个实施例的用于重建包括一个或更多个对象的环境的示例系统;
图5示出了根据至少一个实施例的可用于配准、确定和跟踪相对于场景的移动、位置或取向的示例关键点和法线;
图6示出了根据至少一个实施例的用于重建环境的示例过程;
图7示出了根据至少一个实施例的用于自动生成环境的表示的示例过程,该环境包括对象在该环境中的独立且准确的表示;
图8示出了根据至少一个实施例的用于生成环境中的所识别对象的分段表示的示例过程;
图9示出了根据至少一个实施例的可以用于确定和/或执行任务的示例分布式系统的组件;
图10A示出了根据至少一个实施例的推理和/或训练逻辑;
图10B示出了根据至少一个实施例的推理和/或训练逻辑;
图11示出了根据至少一个实施例的示例数据中心系统;
图12示出了根据至少一个实施例的计算机系统;
图13示出了根据至少一个实施例的计算机系统;
图14示出了根据一个或更多个实施例的图形处理器的至少部分;
图15示出了根据一个或更多个实施例的图形处理器的至少部分;
图16是根据至少一个实施例的高级计算管线的示例数据流图;
图17是根据至少一个实施例的用于在高级计算管线中训练、适配、实例化和部署机器学习模型的示例系统的系统图;以及
图18A和图18B示出了根据至少一个实施例的用于训练机器学习模型的过程的数据流图,以及利用预训练的注释模型来增强注释工具的客户端-服务器架构。
具体实施方式
在以下描述中,将描述各个实施例。出于解释的目的,阐述了具体配置和细节以便提供对实施例的透彻理解。然而,对本领域技术人员而言将显而易见的是,实施例可在没有某些具体细节的情况下实践。此外,可以省略或简化众所周知的特征,以免模糊所描述的实施例。
根据各个实施例的方法可以提供环境或场景的虚拟表示或数字表示的自动生成,该环境或场景可以包括可以属于各种对象类型的多个对象。在至少一个实施例中,重建系统可以利用端到端过程来生成环境的表示,其中可以基于所捕获的图像数据来分割和识别环境中的对象。如本文所使用的,“图像数据”将用于泛指表示场景或环境中的一个或更多个对象的一个或更多个表面的一个或更多个视觉方面的任何类型的数据,如可包括传感器数据、LIDAR数据、RGB-D数据、视频序列等。对于被分类的对象,诸如与来自三维(3D)模型的目录或储存库的图像和其他表示相匹配的对象,可以使用表示对象的实际形状或维度(dimension)的所存储的3D几何形状,对于其他对象,可以生成新的估计的3D重建/近似(例如,网格)。此表示可通过捕获场景的视频数据(例如RGB-D数据)(无需放慢速度的(slower)、用户或计算密集型技术,诸如运动捕获等)、多个图像或甚至单个图像来生成。这可以作为离线过程或在线的实时过程的一部分来执行,其中可以实时地向用户提供反馈,诸如在尚未针对对象扫描足够的数据的情况下。环境或场景中的关键点可被识别并用于相机跟踪,以及用于辅助模型重建。可分析该图像和/或视频数据以生成该环境的3D模型或表示,随后可使用一个或更多个模型(其可以是特定于类的)来分析该3D模型或表示,以识别该模型的与那些类的个体对象相对应的区段(segment)。可以生成这些对象的向量或潜在表示并且将其与对象的库或储存库进行比较以便准确地识别这些对象。然后,结果可以是场景或环境的3D表示,其中对象被识别出来并被分割成各个对象,并且场景或环境的表示(例如,图像)可以是通过各个视口、位置和视角查看(view)并与之交互的。
可以在各种应用中并且针对各种使用情况获得生成此类表示的优点。作为示例而非限制,这些可以包括在车辆中使用以生成周围环境的模型(包括所识别对象的准确表示)用于导航和安全。使用情况还可以涉及购物,其中这样的表示可以帮助顾客识别、移动、修改、放置或以其他方式查看顾客可能想要购买以用于空间(例如,用于家庭设计或购物)的对象,以及用于基于场景或环境的限制的设计或对象操纵的对象。此类方法还可有利地用于至少基于理解环境中的对象和放置来确定人类或机器人应如何与场景交互,以及生成对于场景或环境(包括对于用户能够与其交互的场景中的个体对象)是准确的增强现实(AR)、虚拟现实(VR)、增强的现实内容、或模拟和合成数据生成。此类方法还可有益于扫描和分类现实世界对象以添加到虚拟环境,诸如将作为可用虚拟对象添加到视频游戏中的物品,或可通过电子商务平台获得且可以各个潜在布置可查看的物品。
如本领域普通技术人员鉴于本文所包含的教导和建议将显而易见的,在各个实施例的范围内还可以使用这种和其他此类功能的变型。本文描述的系统和方法可用于各种目的,作为示例而非限制,用于机器控制、机器运动、机器驾驶、合成数据生成、模型训练、感知、增强现实、虚拟现实、混合现实、机器人、安全和监督、模拟和数字孪生、自主或半自主机器应用、深度学习、环境模拟、对象或动作者模拟和/或数字孪生、数据中心处理、对话AI、光传输模拟(例如,光线跟踪、路径跟踪等)、3D资产的协作内容创建、云计算和/或任何其他合适的应用。
所公开的实施例可以包括在多种不同的系统中,诸如汽车系统(例如,用于自主或半自主机器的控制系统、用于自主或半自主机器的感知系统)、使用机器人实现的系统、空中系统、医疗系统、划船系统、智能区域监视系统、用于执行深度学习操作的系统、用于执行模拟操作的系统、用于执行数字孪生操作的系统、使用边缘设备实现的系统、包括一个或更多个虚拟机(VM)的系统、用于执行合成数据生成操作的系统、至少部分地在数据中心中实现的系统、用于执行对话AI操作的系统、用于执行光传输模拟的系统、用于执行3D资产的协作内容创建的系统、至少部分地使用云计算资源实现的系统,和/或其他类型的系统。
图1A示出了根据各个实施例的可以由相机或其他成像传感器捕获的环境的示例图像100。这可为单个图像、图像序列中的图像、视频捕获的视频帧、立体图像或具有深度数据的图像及其他此类选项。环境可以包括任何物理(或虚拟)位置、区域(region)或可以在至少一个相机、传感器或设备的视野(或其他视图或捕获区)内捕获该区域的至少一部分的区(area),其中该区域可以包括一个或更多个前景对象或背景对象。如图像中所示的,此环境(或“场景”)包括多个对象,诸如桌子102、椅子104、小地毯106、以及各种背景对象等。其他环境也可以包括不同数量、类型、布置和对象的选择。在至少一个实施例中,可分析这样的图像(以及环境的潜在的其他相关图像或数据)以尝试生成该环境的虚拟或数字表示。这样的表示可包括例如表示环境中的对象的形状和相对放置的三维模型、网格或点云。
在许多情况下,能够生成包括对应于场景中的个体对象的个体表示或分割的表示可以是有用的或有益的。这可以在生成作为整体的环境的表示期间或者通过分析这样的初始表示来执行。然后,这种表示可以包括个体物品的单独分割,例如,图1B中所示的示例环境的桌子152、各个椅子154、156和小地毯158。能够为这些对象生成单独的二维或三维(3D)表示可以提供若干潜在的优点。一个优点是知道环境的哪些部分属于不同对象可以帮助更好地识别对象,因为如果知道小地毯上的桌子是两个单独的对象并且能够准确地确定每一个的相应形状,则可以提高对象检测过程的准确度。进一步地,使对象分开且独立地表示可使得那些对象能够被移动、替换、复制或以其他方式修改。
例如,考虑图1A的图像中的椅子104,在这种情况下,椅子都是相同类型的椅子。如图2A所示,可存在椅子数据的目录或储存库,其可包括多种类型的椅子的表示200以及其他此类对象。这些表示可以包括图像、模型、网格、点云、特征向量、嵌入或其他这样的表示。一旦确定或生成环境中的椅子对象的分割或表示,可以将该分割与这些所存储的椅子的表示进行比较,以便确定与所生成的椅子分割相对应的匹配或已知的椅子类型,该匹配或已知的椅子类型具有至少最小水平的置信度或确定性、或具有小于最大允许量的匹配偏差或误差。使用这样的过程,可以识别与环境中的椅子相匹配的特定类型的椅子202。这可以是提供给用户或应用的有用信息,例如,因为它可以提供诸如价格、纹理、大小、材料等之类的信息。
此外,所存储的匹配物品(在本示例中,椅子202)的信息可以用于改进物理环境的虚拟表示。在至少一个实施例中,这可以涉及取得所识别对象的维度或形状数据并且基于实际的而不是估计的形状和维度信息调整椅子的3D分割。在一些实施例中,可能存在可被置于环境的虚拟表示中的该对象(诸如椅子202)的网格、模型或其他表示,来代替所估计的、生成的或推理的分割。例如,图2B的图像220示出了其中椅子的所生成的分割已经被来自对象数据库的3D表示222替代的情形,该3D表示222是已经生成的并针对物理物品验证过的那些对象的准确表示。能够用已知为准确的对象的表示进行替代可改善环境的虚拟表示的总体质量,同时还极大地提高生成环境的逼真虚拟表示的过程的效率。在没有定位到匹配物品或不能以其他方式识别出对象或这种准确信息不可用的实例中,网格、模型、点云或其他表示可被生成并用于表示该对象,在至少一些实施例中,该网格、模型、点云或其他表示可表示给定区段的相对通用的重建,诸如该类型、实例或类的对象的通用网格或点云表示。
环境的这种虚拟表示(包括该环境中的对象的准确的个体表示)的自动生成可以提供如之前提及的多个不同任务的执行。例如,在设计或购物应用的情况下,这样的环境可以使得物品能够被移动、添加、替换或以其他方式修改,并且提供环境表示的经更新的视图。例如,在图2C的图像240中,可以看到两个椅子242相对于初始表示220被移除,并且至少一个椅子246已经被稍微改变位置。因为这些对象具有分开且独立的表示,所以可在虚拟3D环境中四处移动它们以查看这些物品适合位于何处或者它们在不同位置中可能看起来如何。在该示例中,用户还可具有替换表示之一的选项,诸如以从数字目录中选择图2A中的椅子204的数据并使得对应的表示244被放置到环境的虚拟表示中,如图2C的图像240中所示。用户还可能够改变该表示244的选项,诸如以基于可用选项来改变该表示的颜色或纹理。这样的功能对于设计或购物应用可以是有用的。这种功能对于诸如动画、虚拟现实(VR)、增强现实、游戏、模拟、或可能期望生成物理环境的准确的虚拟或数字表示的任何其他使用情况之类的目的而言也是有益的。能够从场景中移除物品对于动画或游戏可以是有益的,例如,其中环境的表示将被生成并使用,但某些对象被包括在对于该使用而言不感兴趣的数据捕获中。用户还可使得对象的表示被添加到环境的虚拟表示,诸如图2D的图像260中所示。这可包括例如将镜子262虚拟地悬挂在墙壁上或将花瓶264或中心装饰品放置在桌子上,其中那些对象的表示的维度对于环境的表示是准确的。使用来自数据库的所识别对象的准确表示还有助于校正环境的表示的各部分和本文所包含的对象的比例和维度。这样的过程可以帮助用户进行设计或购物过程,例如,由此用户可以在添加特定或潜在感兴趣物品时获得环境的视图,该特定或潜在感兴趣物品可以放置在环境中的各个位置。具有关于各个物品的信息也可以帮助这些对象被放置在准确或逼真的位置中,如可以基于诸如所识别的对象的重量、纹理或材料之类的信息。准确表示的环境对于模拟环境内的对象的外观和行为也可以是有用的,例如用于仓库或工厂中的机器人或车辆的路径、时间表或任务规划,或者用于设计在模拟环境中测试自主车辆传感器、感知或控制栈的行为的场景。本公开的一个或更多个实施例可能有用的另一场景是合成数据生成,其中可以从基本表示或参考表示来修改或增强虚拟环境的一个或更多个对象或虚拟环境的视角,同时主要和以其他方式保留场景的其余特性。
例如,图3A示出了根据各个实施例的可以捕获的环境的示例图像300。该图像可以是从在诸如城市道路之类的环境中导航的车辆捕获的流视频的视频帧。可以分析该图像数据(以及潜在地其他传感器数据,诸如LIDAR、深度图(RGB-D)、视频、或雷达数据)以生成车辆正在其中操作的环境的3D表示。如上所述,可以使用所捕获的数据(连同其他潜在数据,诸如地图或GPS数据)来生成包括环境中的个体表示或分割对象的准确3D表示。这可以包括例如附近其他车辆302、304的分割、诸如邮箱306或道路标志308之类的对象、行人310、滑板车312和其他这样的对象。能够自动且准确地将该环境分割成各个对象可以通过理解附近对象的类型来帮助该车辆的导航或安全系统做出更好的决策。这可包括例如确定哪些对象可能是静止的以及哪些对象可移动,以及那些对象移动的方式或速率。能够识别特定类型的对象可进一步改善这些决策。例如,如果可以识别出特定类型的汽车,则可以使用其他信息来基于诸如加速度、制动距离、转弯半径限制之类的因素和针对不同车辆的其他此类因素来计算各种情形的概率。此外,能够确定滑板车是机动滑板车还是非机动滑板车能够帮助做出更好的决策。在一些实施例中,可以存储环境的3D表示,以便需要较少的实时处理并且减少做决策的时间,并且能够确定哪些对象在该环境中可能是静止的以及哪些对象可能随时间改变或移动可以有助于更好地理解应该存储该环境的哪些对象。
图3B示出了环境中的另一组对象的示例图像350。在该示例中,对象可包括例如仓库或库房中的货架358上的各种物品352、354、356。可生成该环境的虚拟表示,其中可识别出对象的个体表示。这样的表示对于自动化库存管理是有用的,以确定哪些物品有货、那些物品有多少现货以及它们位于哪里。这样的表示对于指导人或机器人定位、取出(retrieve)那些物品或与那些物品交互也可以是有用的。例如,机器人可以在其移动通过仓库时捕获视频数据。可以实时分析该视频以识别机器人(或可以向机器人或机器人控制系统等提供信息的相机)的视图内的各个对象。如果机器人要从仓库取出物品,则机器人可以导航,直到至少基于该环境表示定位到该物品为止,并且然后可以至少基于该物品的形状和位置确定如何最佳地从货架或该位置获取或抓取该物品。如果人类要取出该对象,则该信息在生成供人能够定位该对象并与该对象交互的指令或指导时可以是有用的。在一些实施例中,人的表示也可被添加到场景中,并被渲染或动画化以至少部分地基于所确定的该对象的信息来演示与特定对象的交互。能够基于如本文所讨论的模型或其他信息,用对象的实际形状替换对象的所估计形状可有助于基于实际测量或形状信息以及其他信息(诸如重量、材料等)来更好地确定与对象的交互。根据本文提供的教导和建议,这种功能的各种其他应用对本领域普通技术人员来说是显而易见的。这些应用可包括但不限于扫描建筑物环境或矿井并执行物理测量、具有改进的跟踪和扩展范围的虚拟现实(VR)应用、历史和文化遗产地点的扫描、用于定制时尚设计的对人体的扫描、以及用于定制适配假体的假肢和牙齿扫描或对身体部位和牙齿的3D重建。
在至少一些实施例中,这样的方法也可以用于DeepSearch应用。如所提及的,一个应用可能出于库存目的利用环境重建。在环境中的对象的类型可能不是已知的情况下,这样的方法可帮助搜索关于这些对象的可帮助识别那些对象的信息,或以其他方式提供关于那些对象的信息。这可包括例如生成个体对象的表示,然后尝试至少部分地基于那些表示搜索关于那些对象的信息。这可包括数据库、库或目录中的搜索,以及跨因特网或另一此类网络对各个源或储存库进行搜索。在一些实施例中,用户还可能够使用此类过程来简单地通过捕获图像或以其他方式扫描特定对象来识别或获得关于该对象的信息。对于本文所论述的任何图像或数据捕获,应理解,可存在通过从多个视点或方向捕获数据来扫描该环境的优点,例如通过沿着轨迹移动相机穿过环境,以便尝试获得环境的尽可能多的图像或传感器数据,以便提供环境的最准确表示且减少可能需要估计或推理的表示的量。
图4示出了示例系统400,该系统可以用于生成这种表示,以及允许对该表示进行至少某些修改、重建或与该表示进行交互。虽然示出为单个系统的一部分,但是应当理解的是,各种组件(包括图中未示出的那些)可以位于不同的位置或由各个实体提供,例如可以通过一个或更多个有线或无线网络进行通信。在该示例中,相机404(例如,全色RGB、RGB-D(ToF或立体相机)、单通道、红外(IR)或灰度相机)可捕获相机视野内的环境中的一个或更多个对象402的图像数据。可使用相同或不同类型的一个以上相机或图像传感器来捕获不同视野或视点的环境。如所提及的,也可以使用其他类型的传感器或设备来捕获数据,如可以包括LIDAR、雷达、深度感测或其他此类设备。在该示例中,该数据被提供给环境重建系统406。数据可被接收到接口层408,该接口层408可包括用于接收信息的一个或更多个接口或地址以及用于引导该信息的组件,如可包括一个或更多个路由器、网络交换机、负载平衡器或其他此类组件。在该示例中,数据可经历使用一个或更多个预处理模块410的至少一些量的预处理。这可包括例如输入去噪、调整大小、失真校正、关键点提取、法线图计算和深度图到图像配准,以及其他此类可能性。
在至少一个实施例中,预处理模块410可以包括一个或更多个单帧RGB-D处理算法,该一个或更多个单帧RGB-D处理算法可以采用RGB-D帧和相机固有参数作为输入。然后可执行深度图预处理,其中将自适应双边滤波器应用于深度图以便在保留锐度特征和不连续性的同时对该图进行去噪。可计算存储每个像素的输入深度置信度的置信度图,且可将深度图反向投影到存储每个像素中可见的点的3D相机帧位置的逐像素顶点图中。可以从顶点图计算每像素法线图,用于存储每个像素中可见的点的3D相机帧法线方向。颜色/法线/顶点图金字塔可以通过在若干阶段中对原始图进行下采样来生成。为了执行用于视觉跟踪的3D关键点提取,在至少一个实施例中可将彩色图像数据转换成灰度级和在灰度级图像中识别的2D关键点。还可从灰度级图像中提取每个关键点的局部视觉描述符,且可通过使用深度将2D关键点反向投影到3D关键点中。数据还可被传递通过至少一个滤波器以减少图像中的噪声,无论是在使用预处理模块410执行的对输入数据的其他预处理之前、期间还是与其一起。这可以是可以与优化算法一起使用以在保留精细细节的同时去除噪声的任何适当的滤波器,诸如线性滤波器或数字信号处理器。也可以使用其他滤波器,诸如模糊滤波器或运动滤波器。
姿态估计模块412可以分析输入扫描或图像数据以试图针对个体帧、图像或实例确定相对于环境的相机位置(在3D空间中)。这可涉及确定可用于配准环境的不同视图的一组关键点和表面法线,如本文稍后更详细讨论的。在该示例中,可将所确定的姿态信息传递到多视图表面重建模块414。多视图表面重建模块可采用可用信息(例如,这些关键点、表面法线和深度信息(在可用的情况下))以将来自该输入的表面点投影到3D表示空间中。这可包括通过在空间中定位视频(例如,RGB-D或RGB视频)的帧以产生环境的点云表示来配准这些帧。此配准可包括确定相对于此视频数据的初始帧的六个自由度姿态信息。在一些实施例中,可以将来自环境扫描的数据分成多个部分以允许优化3D模型以补偿漂移(drift)。在深度信息不可用的情况下,深度可从输入数据推理出来并将其用于估计此3D表示空间中的特定点的位置。然后来自不同视图的点可被融合(fuse)或以其他方式被利用以生成从多个视图看均一致的环境的单个一致的表示,诸如表示整体环境的点云或网格。在一些实施例中,稀疏3D模型可至少通过使用这些关键点和法线来配准不同视图并构建环境的一致的稀疏表示来生成,并且然后来自这些不同视图的数据一旦被生成就可用于填充到稀疏模型中。在至少一些实施例中,关键点的稀疏模型还可被保留并用于随时间跟踪和配准。
环境的初始表示可以被传递到语义分割模块416。此模块可包括至少一个分割算法或神经网络,例如,所述分割算法或神经网络被训练以将环境分割成个体对象,其中可能或至少最小置信度被满足。针对环境表示的每个点或至少点的子集,该网络可以执行至少一些量的域组织,诸如以标识该点是否对应于特定类的对象,以及在特定类的特定实例的一些情况下也如此。相同或不同网络、组件或过程还可确定关于所确定分割的至少一些语义信息,诸如对象类的类型、对象类型的实例或一个或更多个分割的独立性。在一些实施例中,这可包括生成可能尚不存在于环境的初始表示中的附加点或分割数据。例如,考虑图1A中的地板上的小地毯。小地毯的顶部和侧面可能已在环境的初始点云或网格中,但是小地毯的底部不一定已由该初始网格或表示中的点表示。类似地,小地毯下面的地板部分可能尚未由该初始网格或点云中的点表示。在该语义分割过程期间,小地毯和地板可以被识别为单独的(separate)对象,或者至少地板被识别为独立于环境的背景的对象,并且针对小地毯和地板的点或网格被填充或完成,以便为每一个提供完全的分割或表示。以此方式,可为个体对象生成完整表示,即使仅该对象的一部分在所捕获数据中可见。这可针对任何对象发生,其中对象的至少一部分被遮挡或以其他方式不被反映在所捕获的环境数据的至少一部分中。在一些实施例中,单个神经网络可用于所有语义分割任务,而在其他实施例中,可存在针对特定类型的环境训练的单独的神经网络,诸如针对仓库的一个模型、针对家庭内部的一个模型、针对城市交通环境的一个模型等,这可在至少那些场景中提供更准确的分割。在一些实施例中,语义分割模块可以提供具有关联的置信度得分的一个或更多个分割选项,然后可以更详细地分析该一个或更多个分割选项以确定哪个选项更可能是准确的,诸如分割实际上是单个对象还是应当是对应于在环境中可以彼此连接或彼此靠近的单独的对象的两个分割。
在至少一个实施例中,语义分割模块416可以利用Minkowsky引擎对所产生的点云进行分割。语义分割器或实例分割器可以用在各个实施例中。在一些实例中,可能难以获得被正确分类的足够数据来训练点云分割器,因此可利用一个或更多个增强和聚类技术来改进结果。例如,一个或更多个嵌入可以用于自动地聚类和创建语义类。对象可以被随机地放置在场景中或者具有不同的特性(颜色、大小等),并且物理模拟器用于使得那些对象能够演变为在空间中具有更加物理准确的关系。
一旦已经执行至少一些量的分割(语义或其他),就可以使用至少一个对象分类模块420分析那些分割。在一些实施例中,分类可以是语义分割模块416的一部分,或者可以与单独的检索模块(未示出)一起工作,以及其他可能的配置。在该示例中,对象分类模块420可包括被训练以将对象分割与存储在对象数据库418或其他此类位置中的数据进行比较的算法或神经网络。该模块可以在3D形状和材料的现有数据库中找到一组最合适的3D模型,以用于由例如语义分割模块416在图像或点云中找到的全部对象或对象的子集。此对象数据库418中的数据可包括对象的任何适当表示、形状或维度信息,诸如网格、计算机辅助设计(CAD)文件、点云或其他此类表示。该比较包括例如对用于3D分割的形状数据进行比较的算法,或对潜在空间中的特征向量或嵌入进行比较的神经网络,以及其他此类选项。可以使用可以在网格上操作的示例检索过程,诸如来自NVIDIA公司的DeepSearch。针对每个网格,它可以从不同的视角生成多个图像,并且以“概念上”相似的网格在向量空间中看起来也相对接近的方式来生成向量(“嵌入”)表示。这些向量可以存储在专门的存储中,该专门的存储实现快速的近似和/或精确的最近邻搜索。为了检索输入点云或图像区段的最近对象,可以使用来自先前步骤的网络和在数据库中识别的兼容对象来生成嵌入。检索系统的总体架构可被设计为微服务的集合,其可被容易地缩放以高效地处理和搜索大的对象集合。
即使对象不能被分类,利用潜在对象空间也是有益的,因为潜在空间中的位置可以使得能够进行对象类型的一般识别。这样的对象空间还可以使得能够做出关于该对象的大小、形状和其他方面的各种假设,这些假设可以用于创建该对象的更准确的网格或表示。在一些实施例中,可使用可从可用对象数据实例的数据集预定义或自动计算的类的层次结构识别已被分割的对象的类。可使用网格生成器422来生成不能被成功识别的对象的对象表示,或能够被识别但针对其的模型、点云、网格或其他表示尚未存在于数据库中并且如果它们要被包括在环境的表示中则必须被创建或生成的对象的对象表示。网格生成器422可包括能够获取诸如点云或维度数据之类的数据并生成如本文所讨论的对象的2D或3D虚拟表示的任何合适的算法、组件、网络或过程。在至少一个实施例中,可使用网格化和纹理化技术而无需去光照(de-lighting),而另一实施例可利用来自Kaolin库的基于NeRF的实现方式,该基于NeRF的实现方式可被扩展以使用点云数据、相机姿态和/或来自原始RGB(-D)扫描的多个视图来重建对象。网格化方法可以利用点云和法线数据来使用递归细分的栅格(grid)上的样本(其可被转换成网格(mesh))以及从点云和法线数据对表面的颜色进行采样的技术来找到隐式表面表示。示例性基于NeRF(或类似的)的实现方式可利用经受全局优化的可微分渲染,其中所构造的表面由神经网络表示。
在其他实施例中,对象分类模块420可以返回基于其嵌入在潜在空间中的接近度而被确定为最近的对象。可以利用诸如转换器、用于图像的ResNet或者用于点云的Minokowski引擎之类的网络,该网络可以将点云或网格作为输入,并且可以将嵌入与由语义分割模块416识别的点云区段相关联。这样的网络可以使用对比学习以该网络允许将点云区段投影到嵌入空间中的方式来训练,该嵌入空间可以在图像、文本和其他这样的数据之间共享。
如所提及的,一旦被确定或生成,对象的预先存在的或所生成的表示就可以替换到环境的表示中来代替从环境的初始(或中间)表示所估计或推理的表示。在至少一个实施例中,这可以由场景重组组件424执行。在至少一个实施例中,这可包括一个或更多个算法、组件、网络或过程,这些算法、组件、网络或过程可采用环境的初始表示、或用于生成该初始表示的数据、以及该环境中的个体对象的所识别的或生成的表示,以及可生成或重建在所捕获的图像(或其他)数据中被表示的环境的或感兴趣的虚拟或数字表示。在该示例中,此虚拟表示(或此虚拟表示的至少2D视图)可被提供给客户端设备426或其他此类设备、系统或组件,其可使得此虚拟表示的视图能够例如在从在此客户端设备426上执行的内容或用户接口应用程序428接收内容的一个或更多个显示设备上呈现给用户或其他此类实体。应当理解,出于其他目的,诸如机器人引导或车辆导航,该数据可以替代地(或附加地)被提供给控制系统或其他这样的组件、服务或过程,并且可不执行或不需要视觉呈现。
在呈现该表示的视图的示例中,用户(或其他实体)可以通过图形用户界面(GUI)或其他此类机制被提供有修改虚拟环境的一个或更多个方面的能力。如上所述,这可以包括移动对象、添加对象、移除对象、修改对象等。某些修改(诸如移动或移除对象)可能够在客户端设备上的应用程序426中执行。其他操作(诸如添加或替换特定物品)可涉及将信息反馈至场景分解模块422,场景分解模块422可与对象分类模块416、网格生成器420或其他此类组件一起工作以执行必要操作。在一些实施例中,用户可使得附加对象的信息被相机404捕获或从另一此类源提供,且可处理此附加信息以生成环境的经更新表示。这可以在例如新对象被添加到环境中或以其他方式在环境中新可见时发生。在一些实施例中,如果对象不能被识别并且不能生成准确的表示,则UI可以指示用户尝试更详细地扫描该对象以便获得用于重建的附加数据。可以做出以及本文所讨论和建议的各种其他修改。对于图像、视频或其他信息可被连续地或周期性地更新或捕获的情形,诸如对于移动通过环境的车辆或机器人,该表示可被相应地更新或重建。这种系统的优点是,这种表示可以在线且实时地被生成和更新,诸如当车辆或机器人在环境内导航时。
在某些实施例中,可存在用于RGB和RGB-D数据的不同管线。对于RGB-D管线,可以使用被设计成通过使用相对便宜的RGB-D扫描设备来重建静态场景或刚性对象的在线增量SLAM(同时定位和映射)方法。这种管线可以使用RGB-D视频流作为输入,并且重建密集3D点云和相机轨迹,两者都是增量地构建的,诸如可以在每个传入帧处被更新。这可以通过相机姿态的视觉—几何跟踪来实现,并且通过将来自所有视频帧的深度图融合到全局3D点云中,同时在运行中(on-the-fly)移除异常值并且对点云进行去噪来实现。这样的管线在扫描时可以假设固定的相机内参数(例如,不允许变焦改变),并且可以不利用任何机器学习或深度学习模型。
在至少一个实施例中,输入适配器(adaptor)可以用于从磁盘加载传感器数据或从扫描设备的传感器获取原始输入。适配器可以通过逐像素地(pixel-wise)对齐原始彩色图像和原始深度图来从原始输入生成RGB-D帧,并且可以从图像和深度图中移除镜头失真。适配器还可以将来自感测设备的帧流式传输到运行SLAM管线的设备。诸如可基于包括RGB-D帧和相机固有参数的输入,执行一定量的预处理。可执行一些量的深度图预处理,如可包含将自适应双边滤波器应用于深度图以便对其进行去噪声同时保留锐度特征和不连续性。可计算存储每个像素的输入深度置信度的置信度图。深度图可以被反向投影到每像素顶点图中,每像素顶点图可以存储在每个像素中看到的点的3D相机帧位置,并且可以从顶点图计算每像素法线图,该每像素法线图存储在每个像素中看到的点的3D相机帧法线方向。然后可通过在若干级(stage)中对原始图进行下采样(例如,其中每个级下采样的因子为2)来生成颜色/法线/顶点图金字塔。在一个或更多个实施例中,在预处理之后可能不再需要(并且因此可被丢弃)深度图。在至少一个实施例中,可通过将彩色图像转换成灰度图、检测灰度图像中的2D关键点、(也从灰度图像中)提取每一关键点的局部视觉描述符,以及通过使用深度(例如,在双边滤波之后来自顶点图的深度)将2D关键点反向投影到3D关键点以获得具有相机帧中的位置的3D关键点列表,来执行用于视觉跟踪的3D关键点提取。可生成由两个部分组成的3D图,所述两个部分包括从深度图重建的密集3D云,所述密集3D云可用于基于几何/深度图的相机跟踪。这还可包括从关键点重建的视觉特征点(landmark)的稀疏3D云,其可用于视觉相机跟踪。
在至少一个实施例中,密集映射可以用于从来自个体相机位置的逐像素3D测量中创建3D表面元素(“surfel”)的去噪的、融合的密集云。这样的过程可以采用在当前帧中潜在可见的先前重建的(在全局空间中)所有3D surfel以及来自预处理的输入帧金字塔和新输入帧的全局相机姿态作为输入。帧整合(integration)可用于将来自当前帧的逐像素3D测量整合到现有3D surfel云中,这可仅影响相机正在观察的场景的部分。在相机视锥体内并且朝向相机定向的surfel可以被投影到当前相机视图中,其中为每个像素存储所投影surfel的列表。可以确定深度图的每个像素应当被融合到的“最佳”surfel,这如可以至少部分地基于颜色/深度/法线一致性标准和surfel置信度。可以在每个像素处更新所选择的surfel,或者如果在该像素中没有surfel是可见的,则可以从该像素创建新的surfel。加权移动平均值可用于更新surfel(在全局空间中)的位置、法线和颜色。surfel的置信度可以随着像素的深度测量的置信度(如可以从置信度图中采样的)而增加。在一个或更多个实施例中,可执行对surfel的附加处理,诸如去除噪声或异常surfel。
稀疏映射可以用于建立特征点的一致的3D图,所述特征点可以由它们在新帧中的视觉外观识别。这可以用于视觉跟踪和视觉重新定位。此过程可采用先前重建的在当前帧中潜在可见的所有特征点(在全局空间中)、从新输入帧提取的RGB-D关键点和针对新输入帧的全局相机姿势作为输入。
帧整合可以用于将在当前帧中检测到的RGB-D关键点整合到3D视觉特征点的全局集合中。可以在新视图中将特征点变换或投影到相机视椎体内。这可包含由于遮挡而在新帧中看不到的特征点。视锥体内特征点的数量可以限于最近创建的N个特征点,为了保持下面步骤的运行时处于控制之下,这可能是重要的。可使用局部视觉搜索,使得针对在新帧中检测到的每个RGB-D关键点,可选择在小半径(例如,几个像素)内视觉上最相似的视锥体内特征点。在一个或更多个实施例中,在该示例中,关键点可与至多一个特征点匹配。可用新的RGB-D关键点或在关键点附近不具有类似特征点的情况下所创建的新特征点来更新所选视锥体内特征点。移动平均值可以用于更新特征点的位置(在全局空间中)。随着每个新的观察(observation)被整合,特征点的置信度也可以增加。还可执行特征点清除,例如以移除对相机定位无用的不可重复的特征点。
在至少一个实施例中,3D映射可能需要整合任何新帧的相机姿态(全局空间中的3D相机位置和取向)。相机跟踪的作用可以是在假设连续帧具有足够重叠的情况下估计新帧的相机姿态。相机跟踪可通过将新输入视频帧配准到从已知附近相机姿态的3D模型生成的虚拟帧来执行。此方法在本文中被称为帧到模型跟踪,且可具有比帧到帧跟踪低的漂移(误差累积)。
可以从最后已知视点的3D图生成虚拟帧,该最后已知视点可以对应于最后被跟踪的帧的姿态。虚拟帧可具有与新帧的(经预处理的)输入相同的格式。此过程可涉及视锥体剔除以及将surfel(在全局空间中)投影到虚拟视图中,以及将所投影surfel的法线/顶点光栅化到顶点/法线缓冲器中。帧金字塔可从经光栅化的顶点/法线缓冲器构建。金字塔可以具有与输入帧金字塔相同的维度。可执行视锥体剔除以及将特征点投影到虚拟视图中,随后转换为RGB-D关键点。
由于包括在扫描期间没有足够时间收集置信度的有噪声surfel,对所有surfel进行光栅化可能影响相机跟踪的效率或效力。相反,当仅低置信度surfel可用时,仅渲染高置信度surfel可能导致次优的(例如,空的、稀疏的或不完整的)虚拟帧。后者可发生在扫描开始时(空虚拟帧)或在快速运动期间(稀疏填充的虚拟帧)。因此,本公开的实施例包括自适应策略的实现方式,其中高于阈值置信度水平的一些(例如,所有)surfel与尽可能地确保在虚拟帧中像素的某覆盖率(例如,50%)所必需的较低置信度surfel(以置信度的反向顺序)一起被光栅化。该实现方式可以首先在surfel置信度直方图中找到正确的阈值,然后将具有高于该阈值的置信度的所有surfel光栅化到虚拟帧中。
为了在相机姿态估计中使用视觉特征点,在新帧中检测到的RGB-D关键点可与投影到虚拟视图中的视觉特征点匹配。匹配可实施为视觉搜索:可将每一所检测到的关键点的视觉描述符与虚拟视图中观察到的每一特征点的视觉描述符进行比较。诸如256比特二进制视觉描述符之类的描述符可以在汉明距离方面被使用和比较。为了效率,匹配可为单向的,其中所有关键点都被匹配到特征点,且反之亦然。具有高于阈值的最佳与第二(best-to-second)距离比的匹配可能是有歧义的(ambiguous)并且可被移除,这在实践中可提供非常强的异常值(outlier)过滤器(a.k.a.Lowe-criterion)。
可执行异常值过滤,诸如其中来自以上匹配的关键点至特征点对可包含与虚拟视图和新输入帧之间的实际(未知)相机运动不一致的异常值。为了找到并消除未知运动下的剩余异常值,可以采用诸如3点RANSAC算法之类的算法。此算法可重复地选择三个随机匹配,估计来自每个三元组的运动,且找到与所估计的运动一致的所有匹配。然后该算法可挑选具有最高数目的正常值(inlier)的候选运动,且丢弃异常值匹配。
然后可以执行视觉—几何配准,如可以涉及计算每个新输入帧(源帧)与虚拟帧(目标帧)之间的相对姿态(3D位置和取向)。然后可通过将所估计的相对姿态与虚拟帧的全局姿态进行组合(compose)来计算新帧的未知的全局姿态。该算法可以组合几何线索(cue)和视觉线索以优化相对姿态。对于几何线索,源顶点/法线图中的点可变换为接近于目标顶点/法线图中的对应点。对于视觉线索,源帧中的RGB-D(3D)关键点可以变换为接近于目标帧中的视觉上匹配的“虚拟”RGB-D关键点(投影特征点)。此算法可具有各种其他特性,诸如通过首先从最粗金字塔层处的顶点/法线图估计相对姿态、然后通过从较粗的结果初始化每一层处的相对姿态而继续到较精细层来在本质上是分层的。该算法可以使用相对运动的小角度近似,因为这可导致简单的线性最小二乘问题。该算法可以从3D-3D约束(与更复杂的2D-3D和2D-2D替代方案相比)来估计3D运动,并且可以联合地最小化顶点图之间的点—平面距离度量以及匹配的关键点之间的点—点距离。如果关键点匹配可用(由视觉线索引起),那么联合配准可用于处理仅基于几何线索(例如,平面几何形状、旋转对称几何形状)的分层ICP的退化(degeneracy)。
当没有先前的姿态信息是已知的时(不同于在相机跟踪中),可以使用视觉重新定位来找到关于3D模型的针对新帧的全局相机姿态。这可以使得用户能够在新会话中或者在相机跟踪器失去跟踪的情况下继续扫描现有模型。一个示例实现方式可将新帧中检测到的RGB-D关键点与特征点匹配,且可使用图像检索来加速搜索。在至少一个实施例中,全局优化可以用于通常通过联合地优化多个相机姿态和/或3D点来从所估计的相机轨迹和对应的3D模型消除漂移(累积误差)。
在至少一个实施例中,可以仅使用RGB数据(如视频输入数据)执行重建。然后用户可以仅需要相机(例如,移动电话)来捕获输入数据。对象的稀疏模型可诸如通过在用户移动相机时在运行中(on-the-fly)使用运动恢复结构(SfM)来递增地构建。可以使用例如密集多视图立体(MVS)以低得多的速率来重建对象的密集3D点云。如前所述,与RGB-D结果相比,质量可能较低。来自甚至几十个高分辨率图像的离线MVS可能持续(几十)分钟。可利用大规模GPU并行化和输出质量的牺牲来实现较低的处理时间。从视频输入进行重建仅可具有优点,因为其可利用较简单、较便宜的传感器,具有比RGB-D所可能的更高的可能分辨率和较大的深度范围(例如,扫描比RGB-D传感器更近和更远的对象的能力,尽管误差高得多)。这样的方法可以支持比RGB-D更复杂的算法,并且可以采用受控采集和高分辨率输入提供比来自RGB-D的更高级别的细节。
在许多实例中,将存在待分析的传感器数据的多于一个图像或实例。这可以包括例如从不同位置或取向捕获的、具有不同视野或分辨率的图像或视频帧,并且甚至可以使用多个设备来捕获。为了生成在空间上和时间上均一致的环境的准确表示,此数据需要相关,以使得跨这些各个图像、帧或实例来识别并关联(correlate)相同特征。在至少一些实施例中,这可通过确定和配准环境的每个图像或表示中的多个关键点502来执行,如图5所示。这些关键点可包括环境的任何特有或标识特征,这些特征可用于配准数据的不同实例。这些可包括例如角、边或极值点等,其在不同视图中应容易地被识别出来,且使得能够将那些视图一起配准到单个表示中。如图5中所示,可确定这些关键点中的每一者的视觉外观以辅助从不同视点捕获的数据的配准,且该视觉外观可表示可仅具有有限数目的重叠关键点的环境的不同子集。此类关键点还可用于随时间稳定相机跟踪。在一些实施例中,这些关键点可用于配准可用于生成环境的表示的所捕获数据。在其他实施例中,可基于此不同数据生成多个初始模型,且然后可使用这些关键点来将这些单独的模型配准、关联及提炼(refine)成单个一致的表示。
此类重建方法可以使得能够仅从来自单个相机(诸如,移动电话的相机)的视频输入数据来自动地生成环境的虚拟表示。对象或环境的稀疏模型可在用户移动相机时在运行中递增地建立(例如,使用运动恢复结构(SfM))。可以使用例如密集多视图立体(MVS)以低得多的速率来重建对象的密集3D点云。与使用包括深度信息(例如,RGB-D)的数据生成的表示的质量相比,仅从视频生成的表示的质量在质量上可能较低,但较高的分辨率捕获可以是可能的,该较高的分辨率捕获具有较大深度范围且可利用受控采集和高分辨率提供较高细节。
稀疏映射的目标可以是构建特征点的一致3D图,这些特征点可以通过其在新帧中的视觉外观来识别。这可以遵循与密集映射相似的方案在视觉跟踪和视觉重新定位中被利用。该过程可接收先前重建的在当前帧中潜在可见的所有特征点(在全局空间中)以及从新输入帧提取的RGB-D关键点和针对新输入帧的全局相机姿态作为输入。然后可执行帧整合或特征点融合,其将在当前帧中检测到的RGB-D关键点整合到3D视觉特征点的全局集合中。
示例过程可以将相机视锥体内的特征点变换/投影到新视图中。然而,变换/投影可以包含由于一个或更多个遮挡而在新帧中看不到的特征点。对于在新帧中检测到的每个RGB-D关键点,可识别在小半径(例如,几个像素)内在视觉上最相似的所投影特征点。在至少一些实施例中,关键点匹配到至多一个特征点。然后可用新RGB-D关键点或在关键点附近不具有类似特征点的情况下创建的新特征点来更新所选特征点。移动平均值可以用于更新特征点在全局空间中的位置。特征点置信度的置信度也可以随着每个新的观察被整合而增加。特征点融合可促进检测到的RGB-D关键点变成特征点的一部分。这可导致大量的特征点,包括仅在单个视图中已观察到且从未再次识别的特征点。这样的不可重复的特征点的使用可能很少。因此,在一个或更多个实施例中,可以移除在其创建之后在有限数量的视频帧内未达到最小数量的观察的特征点。此过滤对后续帧中的强关键点的偶然错失可以是鲁棒的,强关键点可能在下一帧后的两或三帧中被重新检测到,而不是在下一帧中被检测到,但移除由于噪声而被检测到且不太可能在其他帧中重新检测到的关键点。
在至少一些实施例中,纹理化可以用于将重叠输入图像的冗余集合映射至底层网格三角形。每个图像的网格和投影参数可以由3D重建给出。纹理化可涉及网格分割、网格的U-V参数化、空间高效的打包(packing)、经由表面将图像映射到U-V空间中、以及向图像或像素分配贡献权重以及在U-V空间中对图像进行混合。还可以执行去光照以去除在纹理中在采集时间捕获的光照或阴影,并且可选地提取表面的辐射度特性,使得可以在任何优选的照明设置下忠实地渲染模型。纹理化和去光照可以以最小延时执行,因此用户可以接收关于几何形状和辐射度模型如何发展的完全照片逼真的反馈。
图6示出了根据各个实施例的用于自动生成可以利用的至少一个对象、环境或场景的数字表示的示例过程600。应当理解,对于本文所讨论的该过程和其他过程,在各个实施例的范围内,可存在以类似或替代的顺序、或至少部分并行地执行的附加的、更少的或替代的步骤,除非另外特别说明。进一步地,尽管该过程被描述为产生表示以供通过界面来呈现,但应当理解,此类准确数字表示的优点也可针对其他用户或上下文来获得,诸如本文其他地方讨论和建议的。在该示例中,使用一个或更多个设备扫描602环境以获得一个或更多个对象的图像和/或传感器数据。这可包括在一个或更多个文件、流或实例中捕获的图像、视频或其他传感器数据。在任何预处理之后,可以使用该扫描数据中的至少一些来定位相机并且将来自所有视点的三维(3D)测量结果整合到该环境的全局3D模型(诸如3D点云或其他初始数字表示)中。该3D模型可例如通过使用分割神经网络被分区(partition)606为对应于环境中的不同对象或对象实例的一个分割或多个区段。可以分析608这些分割中的至少一些以尝试识别环境中的这些对象中的一个或更多个。在一些实施例中,这可以包括生成这些对象的嵌入向量或特征向量以及在嵌入空间或潜在空间中搜索匹配点或邻近点。如果这些对象中的一个或更多个能够至少在最小置信度下被分类610,则这些所识别出的对象的一个或更多个所存储的表示可被利用,诸如通过用所存储的理想表示来替换612所分类的对象,所存储的理想表示诸如可包括基于那些对象的实际维度或形状的准确网格或其他图表示。如果确定不能准确地对一个或更多个对象进行分类,或者如果不存在所识别出的对象的所存储的表示,则可以利用614如可以至少基于那些对象的相应表示中的点以及扫描数据的对应部分中的潜在图像特征为那些对象生成或重建的表面表示(诸如网格、点云或其他自由形式的表示)。然后,可以自动生成616环境的重建的3D表示,其包括所识别出的或生成的环境中的个体对象的单独的且独立的(independent)表示。在该示例中,然后可通过包括、提供或关联于用于修改此表示的一个或更多个方面的一个或更多个工具的界面提供618此3D表示的呈现。这可包括例如使得查看该呈现的用户能够修改、替换、移动、添加、删除或以其他方式提供关于该环境中表示的或者能够在该环境中表示的这些或其他此类对象中的一个或更多个的输入。
图7示出了根据各个实施例的可以利用的用于提供3D表示的呈现的另一个示例过程700。在该示例中,接收702环境的图像数据,如可能已使用一个或更多个装置捕获或由一个或更多个源提供。该图像数据可以已经被配准,或者可以使用诸如识别并关联图像数据中的特征点之类的过程来配准。然后,可以至少基于该图像数据以及可以提供的关于该环境的其他数据来生成704该环境的三维(3D)表示,例如网格或点云。可以分析706该3D表示以确定该3D表示的与环境中的一个或更多个对象相对应的一个或更多个区段、分割或部分。然后可以至少基于与这些一个或更多个对象的一个或更多个段相对应的数据来确定708这些对象的身份。一旦确定了这些对象的身份,就可以使用所存储的那些类型的对象的数据(诸如该类型的对象的形状和尺寸准确的网格或点云)来替换710、补充或修改那些所识别出的对象的区段的数据的至少一部分。此方法可使得准确的表示能够用于所识别出的对象而不是从图像数据生成的估计表示。可以提供712该3D表示的呈现,该3D表示包括自动确定的环境中的一个或更多个对象的独立表示。
图8示出了根据各个实施例的用于自动生成可以利用的环境的表示的示例过程800。在该示例中,可捕获802环境的图像数据,所述图像数据可包括颜色数据和/或深度数据以及其他此类选项。从此图像数据,可生成804环境的三维(3D)数字表示。然后,可自动分割806该表示以包括环境中的对象的分开且独立的表示,诸如环境点云中的点的单独的分组或分割。然后,可以利用808这些对象的这些单独的表示来识别一个或更多个对象,如通过至少基于这些相应分割的一个或更多个点生成一个或更多个嵌入,以及然后基于在嵌入空间或潜在空间中定位接近点来识别这些对象。在至少一个实施例中,然后可以诸如通过修改或替换环境中的一个或更多个对象的表示来使用这些识别出的对象的数据来提高表示的准确度。然后所生成的表示的数据可用于各种目的,诸如本文讨论和建议的那些目的。
如所讨论的,本文呈现的各种方法足够轻量以便在客户端设备(诸如个人计算机或游戏控制台)上实时地执行。这样的处理可以对在该客户端设备上生成的或从外部源接收的内容执行,诸如通过至少一个网络接收的流内容。该源可以是任何适当的源,诸如游戏主机、流媒体提供者、第三方内容提供商、或其他客户端设备、以及其他这样的选项。在一些实例中,这些内容的处理和/或渲染可以由这些其他设备、系统或实体中的一个来执行,然后被提供给客户端设备(或另一这样的接收者)以用于呈现或另一这样的使用。
作为示例,图9示出了可以用于提供、生成、修改、编码和/或传输内容的示例网络配置900。在至少一个实施例中,客户端设备902可使用客户端设备902上的内容应用程序904的组件和本地存储在该客户端设备上的数据来生成或接收会话的内容。在至少一个实施例中,在内容服务器920(例如,云服务器或边缘服务器)上执行的内容应用924(例如,图像生成或编辑应用)可以发起与至少客户端设备902相关联的会话,如可以利用会话管理器和存储在用户数据库934中的用户数据,并且可以使内容管理器926确定内容932。内容生成或管理应用程序926可确定待生成的图像的捕获或扫描数据,其可被传递到处理组件930和/或重建组件928,以及其他此类组件、模块或过程,以生成图像数据、在扫描或图像数据中表示的对象或环境的表示,该表示可被发送到客户端设备902或其他此类接收方。可以使用适当的传输管理器922将该内容的至少一部分传输至客户端设备902,以通过下载、流式传输或另一种这样的传输通道进行发送。编码器可以用于在发送到客户端设备902之前对该数据中的至少一些数据进行编码和/或压缩。在至少一个实施例中,接收此内容的客户端设备902可将此内容提供到对应内容应用程序904,所述内容应用程序904还可包括或替代地包括如本文呈现的内容管理器910、重建组件912或处理组件914。解码器还可用于解码通过网络940接收的数据以用于经由客户端设备902呈现,例如通过显示器906的图像或视频内容以及通过至少音频重放装置908(例如扬声器或头戴式耳机)的音频(例如声音和音乐)。在至少一个实施例中,此内容中的至少一些可能已经存储在客户端设备902上、再现在客户端设备902上或可由客户端设备902访问,使得对于内容的至少所述部分不需要通过网络940进行传输,例如在所述内容可能先前已下载或本地存储在硬盘驱动器或光盘上的情况下。在至少一个实施例中,诸如数据流传输之类的传输机制可以用于将该内容从服务器920或用户数据库934传输到客户端设备902。在至少一个实施例中,可以从诸如第三方服务960之类的另一源获得或流式传输该内容的至少一部分,第三方服务960还可以包括用于生成或提供内容的内容应用962。在至少一个实施例中,可以使用多个计算设备或一个或更多个计算设备内的多个处理器(诸如可以包括CPU和GPU的组合)来执行此功能的部分。
在该示例中,这些客户端设备可以包括任何适当的计算设备,如可以包括台式计算机、笔记本计算机、机顶盒、流式传输设备、游戏控制台、智能手机、平板计算机、VR耳机、AR护目镜、可穿戴计算机或智能电视。每个客户端设备可以通过至少一个有线或无线网络提交请求,所述网络可以包括因特网、以太网、局域网(LAN)或蜂窝网络,以及其他此类选项。在该示例中,这些请求可以提交到与云提供商相关联的地址,所述云提供商可以在云提供商环境下操作或控制一个或更多个电子资源,所述云提供商环境诸如可以包括数据中心或服务器群。在至少一个实施例中,该请求可以由位于网络边缘并且在与云提供商环境相关联的至少一个安全层之外的至少一个边缘服务器接收或处理。通过这种方式,可以通过使得客户端设备能够与距离更近的服务器交互来减少延时,同时还可以提高云提供商环境中资源的安全性。
在至少一个实施例中,此类系统可以用于执行图形渲染操作。在其他实施例中,此类系统可以用于其他目的,诸如用于提供图像或视频内容以测试或验证自主机器应用,或者用于执行深度学习操作。在至少一个实施例中,此类系统可以使用边缘设备来实现,或者可以合并一个或更多个虚拟机(VM)。在至少一个实施例中,此类系统可以至少部分地在数据中心中或至少部分地使用云计算资源来实现。
推理和训练逻辑
图10A示出了用于执行与一个或更多个实施例相关联的推理和/或训练操作的推理和/或训练逻辑1015。下面结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于代码和/或数据存储1001,用于存储前向和/或输出权重和/或输入/输出数据,和/或在一个或更多个实施例的方面中配置被训练为和/或用于推理的神经网络的神经元或层的其他参数。在至少一个实施例中,训练逻辑1015可以包括或耦合到用于存储图形代码或其他软件以控制时序和/或顺序的代码和/或数据存储1001,其中权重和/或其他参数信息被加载以配置逻辑,包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1001存储在使用一个或更多个实施例的方面训练和/或推理期间的输入/输出数据和/或权重参数的前向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储1001的任何部分都可以包括在其他片上或片外数据存储内,包括处理器的L1、L2或L3高速缓存或系统存储器。
在至少一个实施例中,代码和/或数据存储1001的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个实施例中,代码和/或数据存储1001可以是高速缓存存储器、动态随机可访问存储器(“DRAM”)、静态随机可访问存储器(“SRAM”)、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,对代码和/或数据存储1001是在处理器的内部还是外部的选择,例如,或者由DRAM、SRAM、闪存或某种其他存储类型组成,可以取决于片上或片外的可用存储空间,正在执行训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于代码和/或数据存储1005,用于存储与在一个或更多个实施例的方面中被训练为和/或用于推理的神经网络的神经元或层相对应的反向和/或输出权重和/或输入/输出数据。在至少一个实施例中,在使用一个或更多个实施例的方面训练和/或推理期间,代码和/或数据存储1005存储在输入/输出数据和/或权重参数的反向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑1015可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储1005,其中权重和/或其他参数信息被加载以配置逻辑,该逻辑包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储1005的任何部分可以与其他片上或片外数据存储一起包括,包括处理器的L1、L2或L3高速缓存或系统存储器。在至少一个实施例中,代码和/或数据存储1005的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路上的内部或外部。在至少一个实施例中,代码和/或数据存储1005可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,代码和/或数据存储1005是在处理器的内部还是外部的选择,例如,是由DRAM、SRAM、闪存还是其他某种存储类型组成,取决于可用存储是片上还是片外,正在执行的训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据批量大小或这些因素的某种组合。
在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是单独的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是相同的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005可以是部分相同的存储结构和部分分离的存储结构。在至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。
在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于一个或更多个算术逻辑单元(“ALU”)1010(包括整数和/或浮点单元),用于至少部分地基于训练和/或推理代码(例如,图代码)或由其指示来执行逻辑和/或数学运算,其结果可能会产生存储在激活存储1020中的激活(例如,来自神经网络内部的层或神经元的输出值),其是存储在代码和/或数据存储1001和/或代码和/或数据存储1005中的输入/输出和/或权重参数数据的函数。在至少一个实施例中,激活响应于执行指令或其他代码,由ALU1010执行的线性代数和/或基于矩阵的数学生成在激活存储1020中存储的激活,其中存储在代码和/或数据存储1005中和/或代码和/或数据存储1001中的权重值用作具有其他值的操作数,例如偏置值、梯度信息、动量值或其他参数或超参数,可以将任何或所有这些存储在代码和/或数据存储1005或代码和/或数据存储1001或其他片上或片外存储中。
在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电路中包括一个或更多个ALU 1010,而在另一实施例中,一个或更多个ALU1010可以在处理器或其他硬件逻辑设备或使用它们(例如协处理器)的电路外。在至少一个实施例中,可以将一个或更多个ALU 1010包括在处理器的执行单元之内,或者以其他方式包括在由处理器的执行单元可访问的ALU组中,该处理器的执行单元可以在同一处理器内或者分布在不同类型的不同处理器之间(例如,中央处理单元、图形处理单元、固定功能单元等)。在至少一个实施例中,代码和/或数据存储1001、代码和/或数据存储1005以及激活存储1020可以在同一处理器或其他硬件逻辑设备或电路上,而在另一实施例中,它们可以在不同的处理器或其他硬件逻辑设备或电路或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储1020的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。此外,推理和/或训练代码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。
在至少一个实施例中,激活存储1020可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储。在至少一个实施例中,激活存储1020可以完全地或部分地在一个或更多个处理器或其他逻辑电路内部或外部。在至少一个实施例中,可以取决于片上或片外可用的存储,进行训练和/或推理功能的延迟要求,在推理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合,选择激活存储1020是处理器的内部还是外部,例如,或者包含DRAM、SRAM、闪存或其他存储类型。在至少一个实施例中,图10A中所示的推理和/或训练逻辑1015可以与专用集成电路(“ASIC”)结合使用,例如来自Google的处理单元、来自GraphcoreTM的推理处理单元(IPU)或来自IntelCorp的(例如“LakeCrest”)处理器。在至少一个实施例中,图10A所示的推理和/或训练逻辑1015可与中央处理单元(“CPU”)硬件,图形处理单元(“GPU”)硬件或其他硬件(例如现场可编程门阵列(“FPGA”))结合使用。
图10B示出了根据至少一个或更多个实施例的推理和/或训练逻辑1015。在至少一个实施例中,推理和/或训练逻辑1015可以包括但不限于硬件逻辑,其中计算资源被专用或以其他方式唯一地连同对应于神经网络内的一层或更多层神经元的权重值或其他信息一起使用。在至少一个实施例中,图10B中所示的推理和/或训练逻辑1015可以与专用集成电路(ASIC)结合使用,例如来自Google的处理单元,来自GraphcoreTM的推理处理单元(IPU)或来自IntelCorp的/>(例如“LakeCrest”)处理器。在至少一个实施例中,图10B中所示的推理和/或训练逻辑1015可以与中央处理单元(CPU)硬件、图形处理单元(GPU)硬件或其他硬件(例如现场可编程门阵列(FPGA))结合使用。在至少一个实施例中,推理和/或训练逻辑1015包括但不限于代码和/或数据存储1001以及代码和/或数据存储1005,其可以用于存储代码(例如,图代码)、权重值和/或其他信息,包括偏置值、梯度信息、动量值和/或其他参数或超参数信息。在图10B中所示的至少一个实施例中,代码和/或数据存储1001以及代码和/或数据存储1005中的每一个都分别与专用计算资源(例如计算硬件1002和计算硬件1006)相关联。在至少一个实施例中,计算硬件1002和计算硬件1006中的每一个包括一个或更多个ALU,这些ALU仅分别对存储在代码和/或数据存储1001和代码和/或数据存储1005中的信息执行数学函数(例如线性代数函数),执行函数的结果被存储在激活存储1020中。
在至少一个实施例中,代码和/或数据存储1001和1005以及相应的计算硬件1002和1006中的每一个分别对应于神经网络的不同层,使得从代码和/或数据存储1001和计算硬件1002的一个“存储/计算对1001/1002”得到的激活提供作为代码和/或数据存储1005和计算硬件1006的下一个“存储/计算对1005/1006”的输入,以便反映神经网络的概念组织。在至少一个实施例中,每个存储/计算对1001/1002和1005/1006可以对应于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑1015中可以包括在存储计算对1001/1002和1005/1006之后或与之并行的附加存储/计算对(未示出)。
数据中心
图11示出了可以使用至少一个实施例的示例数据中心1100。在至少一个实施例中,数据中心1100包括数据中心基础设施层1110、框架层1120、软件层1130和应用层1140。
在至少一个实施例中,如图11所示,数据中心基础设施层1110可以包括资源协调器1112、分组的计算资源1114和节点计算资源(“节点C.R.”)1116(1)-1116(N),其中“N”代表任何正整数。在至少一个实施例中,节点C.R.1116(1)-1116(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等),存储器设备(例如动态只读存储器)、存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NWI/O”)设备,网络交换机,虚拟机(“VM”),电源模块和冷却模块等。在至少一个实施例中,节点C.R.1116(1)-1116(N)中的一个或更多个节点C.R.可以是具有一个或更多个上述计算资源的服务器。
在至少一个实施例中,分组的计算资源1114可以包括容纳在一个或更多个机架内的节点C.R.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源1114内的节点C.R.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括CPU或处理器的几个节点C.R.分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。
在至少一个实施例中,资源协调器1112可以配置或以其他方式控制一个或更多个节点C.R.1116(1)-1116(N)和/或分组的计算资源1114。在至少一个实施例中,资源协调器1112可以包括用于数据中心1100的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器108可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图11所示,框架层1120包括作业调度器1122、配置管理器1124、资源管理器1126和分布式文件系统1128。在至少一个实施例中,框架层1120可以包括支持软件层1130的软件1132和/或应用程序层1140的一个或更多个应用程序1142的框架。在至少一个实施例中,软件1132或应用程序1142可以分别包括基于Web的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层1120可以是但不限于一种免费和开放源软件网络应用程序框架,例如可以利用分布式文件系统1128来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器1122可以包括Spark驱动器,以促进对数据中心1100的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器1124可以能够配置不同的层,例如软件层1130和包括Spark和用于支持大规模数据处理的分布式文件系统1128的框架层1120。在至少一个实施例中,资源管理器1126能够管理映射到或分配用于支持分布式文件系统1128和作业调度器1122的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层1110上的分组计算资源1114。在至少一个实施例中,资源管理器1126可以与资源协调器1112协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层1130中的软件1132可以包括由节点C.R.1116(1)-1116(N)的至少一部分,分组的计算资源1114和/或框架层1120的分布式文件系统1128使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层1140中包括的一个或更多个应用程序1142可以包括由节点C.R.1116(1)-1116(N)的至少一部分、分组计算资源1114和/或框架层1120的分布式文件系统1128使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序、认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器1124、资源管理器1126和资源协调器1112中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心1100的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心1100可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心1100描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心1100所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC)、GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。本文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在系统图11的系统中使用,用于至少部分地基于使用神经网络训练操作、神经网络函数和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测操作。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
计算机系统
图12是示出根据至少一个实施例示例性计算机系统的框图,该示例性计算机系统可以是具有互连的设备和组件的系统,片上系统(SOC)或它们的某种形成有处理器的组合,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机系统1200可以包括但不限于组件,例如处理器1202,其执行单元包括逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机系统1200可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(Intel Corporation of Santa Clara,California)获得的处理器家族、XeonTM、/>XScaleTM和/或StrongARMTM,/>CoreTM或/>NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统1200可以执行可从华盛顿州雷蒙德市的微软公司(Microsoft Corporation ofRedmond,Wash.)获得的WINDOWS操作系统版本,尽管其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议(Internet Protocol)设备、数码相机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应用程序可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机(“NetPC”)、机顶盒、网络集线器、广域网(“WAN”)交换机,或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。
在至少一个实施例中,计算机系统1200可包括但不限于处理器1202,该处理器1202可包括但不限于一个或更多个执行单元1208,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统1200是单处理器台式机或服务器系统,但是在另一实施例中,计算机系统1200可以是多处理器系统。在至少一个实施例中,处理器1202可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器1202可以耦合到处理器总线1210,该处理器总线1210可以在处理器1202与计算机系统1200中的其他组件之间传输数据信号。
在至少一个实施例中,处理器1202可以包括但不限于1级(“L1”)内部高速缓存存储器(“cache”)1204。在至少一个实施例中,处理器1202可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓存存储器可以驻留在处理器1202的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件1206可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑执行单元1208,其也位于处理器1202中。在至少一个实施例中,处理器1202还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元1208可以包括用于处理封装指令集1209的逻辑。在至少一个实施例中,通过将封装指令集1209包括在通用处理器的指令集中,以及要执行指令的相关电路,可以使用处理器1202中的封装数据来执行许多多媒体应用程序使用的操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。
在至少一个实施例中,执行单元1208也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机系统1200可以包括但不限于存储器1220。在至少一个实施例中,存储器1220可以实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。在至少一个实施例中,存储器1220可以存储由处理器1202可以执行的由数据信号表示的指令1219和/或数据1221。
在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线1210和存储器1220。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)1216,并且处理器1202可以经由处理器总线1210与MCH 1216通信。在至少一个实施例中,MCH1216可以提供到存储器1220的高带宽存储器路径1218以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,MCH 1216可以在处理器1202、存储器1220和计算机系统1200中的其他组件之间启动数据信号,并且在处理器总线1210、存储器1220和系统I/O 1222之间桥接数据信号。在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 1216可以通过高带宽存储器路径1218耦合到存储器1220,并且图形/视频卡1212可以通过加速图形端口(AcceleratedGraphics Port)(“AGP”)互连1214耦合到MCH 1216。
在至少一个实施例中,计算机系统1200可以使用系统I/O 1222,所述系统I/O1222是专有集线器接口总线来将MCH 1216耦合到I/O控制器集线器(“ICH”)1230。在至少一个实施例中,ICH 1230可以通过本地I/O总线提供与某些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到存储器1220、芯片组和处理器1202的高速I/O总线。示例可以包括但不限于音频控制器1229、固件集线器(“FlashBIOS”)1228、无线收发器1226、数据存储1224、包含用户输入和键盘接口1225的传统I/O控制器1223、串行扩展端口1227(例如通用串行总线(USB)端口)和网络控制器1234。数据存储1224可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
在至少一个实施例中,图12示出了包括互连的硬件设备或“芯片”的系统,而在其他实施例中,图12可以示出示例性片上系统(SoC)。在至少一个实施例中,设备可以与专有互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,计算机系统1200的一个或更多个组件使用计算快速链路(CXL)互连来互连。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在图12的系统中使用,用于至少部分地基于使用神经网络训练操作、神经网络函数和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测操作。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
图13是示出根据至少一个实施例的用于利用处理器1310的电子设备1300的框图。在至少一个实施例中,电子设备1300可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。
在至少一个实施例中,系统1300可以包括但不限于通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备的处理器1310。在至少一个实施例中,处理器1310使用总线或接口耦合,诸如I2C总线、系统管理总线(“SMBus”)、低引脚数(LPC)总线、串行外围接口(“SPI”)、高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。在至少一个实施例中,图13示出了系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图13可以示出示例性片上系统(SoC)。在至少一个实施例中,图13中所示的设备可以与专有互连线、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,图13的一个或更多个组件使用计算快速链路(CXL)互连线来互连。
在至少一个实施例中,图13可以包括显示器1324、触摸屏1325、触摸板1330、近场通信单元(“NFC”)1345、传感器集线器1340、热传感器1346、快速芯片组(“EC”)1335、可信平台模块(“TPM”)1338、BIOS/固件/闪存(“BIOS,FWFlash”)1322、DSP 1360、驱动器1320(例如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)1350、蓝牙单元1352、无线广域网单元(“WWAN”)1356、全球定位系统(GPS)1355、相机(“USB3.0相机”)1354(例如USB3.0相机)和/或以例如LPDDR3标准实现的低功耗双倍数据速率(“LPDDR”)存储器单元(“LPDDR3”)1315。这些组件可以各自以任何合适的方式实现。
在至少一个实施例中,其他组件可以通过上文所述的组件通信地耦合到处理器1310。在至少一个实施例中,加速度计1341、环境光传感器(“ALS”)1342、罗盘1343和陀螺仪1344可以可通信地耦合到传感器集线器1340。在至少一个实施例中,热传感器1339、风扇1337、键盘1336和触摸板1330可以通信地耦合到EC 1335。在至少一个实施例中,扬声器1363、耳机1364和麦克风(“mic”)1365可以通信地耦合到音频单元(“音频编解码器和D类放大器”)1362,其又可以通信地耦合到DSP 1360。在至少一个实施例中,音频单元1362可以包括例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。在至少一个实施例中,SIM卡(“SIM”)1357可以通信地耦合到WWAN单元1356。在至少一个实施例中,组件(诸如WLAN单元1350和蓝牙单元1352以及WWAN单元1356)可以被实现为下一代形式因素(NGFF)。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,推理和/或训练逻辑1015可以在图13系统中用于至少部分地基于使用神经网络训练操作、神经网络功能和/或架构或本文描述的神经网络用例计算的权重参数来推理或预测操作。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
图14是根据至少一个实施例的处理系统的框图。在至少一个实施例中,系统1400包括一个或更多个处理器1402和一个或更多个图形处理器1408,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器1402或处理器核心1407的服务器系统。在至少一个实施例中,系统1400是结合在片上系统(SoC)集成电路内的处理平台,以在移动、手持或嵌入式设备使用。
在至少一个实施例中,系统1400可以包括或结合在基于服务器的游戏平台中,包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,系统1400是移动电话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中,处理系统1400还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在至少一个实施例中,处理系统1400是电视或机顶盒设备,其具有一个或更多个处理器1402以及由一个或更多个图形处理器1408生成的图形界面。
在至少一个实施例中,一个或更多个处理器1402每个包括一个或更多个处理器核心1407,以处理指令,该指令在被执行时执行针对系统和用户软件的操作。在至少一个实施例中,一个或更多个处理器核心1407中的每一个被配置为处理特定指令组1409。在至少一个实施例中,指令组1409可以促进复杂指令集计算(CISC)、精简指令集计算(RISC),或通过超长指令字(VLIW)进行计算。在至少一个实施例中,处理器核心1407可以各自处理不同的指令组1409,该指令组可以包括有助于仿真其他指令组的指令。在至少一个实施例中,处理器核心1407还可以包括其他处理设备,例如数字信号处理器(DSP)。
在至少一个实施例中,处理器1402包括高速缓存存储器1404。在至少一个实施例中,处理器1402可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器在处理器1402的各个组件之间共享。在至少一个实施例中,处理器1402还使用外部高速缓存(例如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在处理器核心1407之间共享该外部高速缓存。在至少一个实施例中,处理器1402中另外包括寄存器文件1406,处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。在至少一个实施例中,寄存器文件1406可以包括通用寄存器或其他寄存器。
在至少一个实施例中,一个或更多个处理器1402与一个或更多个接口总线1410耦合,以在处理器1402与系统1400中的其他组件之间传输通信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线1410在一个实施例中可以是处理器总线,例如直接媒体接口(DMI)总线的版本。在至少一个实施例中,接口总线1410不限于DMI总线,并且可以包括一个或更多个外围组件互连总线(例如,PCI,PCIExpress)、存储器总线或其他类型的接口总线。在至少一个实施例中,处理器1402包括集成存储器控制器1416和平台控制器集线器1430。在至少一个实施例中,存储器控制器1416促进存储器设备与处理系统1400的其他组件之间的通信,而平台控制器集线器(PCH)1430通过本地I/O总线提供到I/O设备的连接。
在至少一个实施例中,存储器设备1420可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储设备或具有适当的性能以用作处理器存储器。在至少一个实施例中,存储设备1420可以用作处理系统1400的系统存储器,以存储数据1422和指令1421,以在一个或更多个处理器1402执行应用程序或过程时使用。在至少一个实施例中,存储器控制器1416还与可选的外部图形处理器1412耦合,其可以与处理器1402中的一个或更多个图形处理器1408通信以执行图形和媒体操作。在至少一个实施例中,显示设备1411可以连接至处理器1402。在至少一个实施例中,显示设备1411可以包括内部显示设备中的一个或更多个,例如在移动电子设备或膝上型设备或通过显示器接口(例如显示端口(DisplayPort)等)连接的外部显示设备中。在至少一个实施例中,显示设备1411可以包括头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用中的立体显示设备。
在至少一个实施例中,平台控制器集线器1430使外围设备能够通过高速I/O总线连接到存储设备1420和处理器1402。在至少一个实施例中,I/O外围设备包括但不限于音频控制器1446、网络控制器1434、固件接口1428、无线收发器1426、触摸传感器1425、数据存储设备1424(例如,硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备1424可以经由存储接口(例如,SATA)或经由外围总线来连接,诸如外围组件互连总线(例如,PCI、PCIe)。在至少一个实施例中,触摸传感器1425可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中,无线收发器1426可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G或长期演进(LTE)收发器。在至少一个实施例中,固件接口1428使能与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。在至少一个实施例中,网络控制器1434可以启用到有线网络的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口总线1410耦合。在至少一个实施例中,音频控制器1446是多通道高清晰度音频控制器。在至少一个实施例中,处理系统1400包括可选的传统(legacy)I/O控制器1440,用于将传统(例如,个人系统2(PS/2))设备耦合到系统1400。在至少一个实施例中,平台控制器集线器1430还可以连接到一个或更多个通用串行总线(USB)控制器1442,该控制器连接输入设备,诸如键盘和鼠标1443组合、相机1444或其他USB输入设备。
在至少一个实施例中,存储器控制器1416和平台控制器集线器1430的实例可以集成到离散的外部图形处理器中,例如外部图形处理器1412。在至少一个实施例中,平台控制器集线器1430和/或存储器控制器1416可以在一个或更多个处理器1402的外部。例如,在至少一个实施例中,系统1400可以包括外部存储器控制器1416和平台控制器集线器1430,其可以配置成在与处理器1402通信的系统芯片组中的存储器控制器集线器和外围控制器集线器。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,部分或全部推理和/或训练逻辑1015可以结合到图形处理器1400中。例如,在至少一个实施例中,本文描述的训练和/或推理技术可以使用一个或更多个ALU,所述ALU体现在图形处理器中。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以使用除图10A或图10B所示的逻辑之外的逻辑来完成。在至少一个实施例中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出)中,其配置图形处理器的ALU,以执行一种或更多种本文所述的机器学习算法、神经网络架构、用例或训练技术。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
图15是根据至少一个实施例的具有一个或更多个处理器核心1502A-1502N、集成存储器控制器1514和集成图形处理器1508的处理器1500的框图。在至少一个实施例中,处理器1500可以包含附加核心,多达并包括以虚线框表示的附加核心1502N。在至少一个实施例中,每个处理器核心1502A-1502N包括一个或更多个内部高速缓存单元1504A-1504N。在至少一个实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存单元1506。
在至少一个实施例中,内部高速缓存单元1504A-1504N和共享高速缓存单元1506表示处理器1500内的高速缓存存储器层次结构。在至少一个实施例中,高速缓存存储器单元1504A-1504N可以包括每个处理器核心内的至少一级指令和数据高速缓存以及共享中级高速缓存中的一级或更多级缓存,例如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存,其中将外部存储器之前的最高级别的高速缓存归类为LLC。在至少一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元1506和1504A-1504N之间的一致性。
在至少一个实施例中,处理器1500还可包括一组一个或更多个总线控制器单元1516和系统代理核心1510。在至少一个实施例中,一个或更多个总线控制器单元1516管理一组外围总线,例如一个或更多个PCI或PCIe总线。在至少一个实施例中,系统代理核心1510为各种处理器组件提供管理功能。在至少一个实施例中,系统代理核心1510包括一个或更多个集成存储器控制器1514,以管理对各种外部存储器设备(未示出)的访问。
在至少一个实施例中,一个或更多个处理器核心1502A-1502N包括对多线程同时进行的支持。在至少一个实施例中,系统代理核心1510包括用于在多线程处理期间协调和操作核心1502A-1502N的组件。在至少一个实施例中,系统代理核心1510可以另外包括电源控制单元(PCU),该电源控制单元包括用于调节处理器核心1502A-1502N和图形处理器1508的一个或更多个电源状态的逻辑和组件。
在至少一个实施例中,处理器1500还包括用于执行图处理操作的图形处理器1508。在至少一个实施例中,图形处理器1508与共享高速缓存单元1506和包括一个或更多个集成存储器控制器1514的系统代理核心1510耦合。在至少一个实施例中,系统代理核心1510还包括用于驱动图形处理器输出到一个或更多个耦合的显示器的显示器控制器1511。在至少一个实施例中,显示器控制器1511也可以是经由至少一个互连与图形处理器1508耦合的独立模块,或者可以集成在图形处理器1508内。
在至少一个实施例中,基于环的互连单元1512用于耦合处理器1500的内部组件。在至少一个实施例中,可以使用替代性互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器1508经由I/O链路1513与环形互连1512耦合。
在至少一个实施例中,I/O链路1513代表多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1518(例如eDRAM模块)之间的通信的封装I/O互连。在至少一个实施例中,处理器核心1502A-1502N和图形处理器1508中的每一个使用嵌入式存储器模块1518作为共享的最后一级高速缓存。
在至少一个实施例中,处理器核心1502A-1502N是执行公共指令集架构的同质核心。在至少一个实施例中,处理器核心1502A-1502N在指令集架构(ISA)方面是异构的,其中一个或更多个处理器核心1502A-1502N执行公共指令集,而一个或更多个其他处理器核心1502A-1502N执行公共指令集的子集或不同指令集。在至少一个实施例中,就微架构而言,处理器核心1502A-1502N是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心耦合。在至少一个实施例中,处理器1500可以在一个或更多个芯片上实现或被实现为SoC集成电路。
推理和/或训练逻辑1015用于执行与一个或更多个实施例相关联的推理和/或训练操作。下文结合图10A和/或图10B提供关于推理和/或训练逻辑1015的细节。在至少一个实施例中,部分或全部推理和/或训练逻辑1015可以结合到处理器1500中。例如,在至少一个实施例中,本文描述的训练和/或推理技术可以使用一个或更多个ALU,所述ALU体现在图15中的图形处理器1512、图形核心1502A-1502N或其他组件中。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以使用除图10A或图10B所示的逻辑之外的逻辑来完成。在至少一个实施例中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出)中,其配置图形处理器1500的ALU以执行一种或更多种本文所述的机器学习算法、神经网络架构、用例或训练技术。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
虚拟化计算平台
图16是根据至少一个实施例的生成和部署图像处理和推理管线的过程1600的示例数据流程图。在至少一个实施例中,过程1600可以被部署用于在一个或更多个设施1602处与成像设备、处理设备和/或其他设备类型一起使用。过程1600可以在训练系统1604和/或部署系统1606内执行。在至少一个实施例中,训练系统1604可以用于执行机器学习模型(例如,神经网络、对象检测算法、计算机视觉算法等)的训练、部署和实现,以用于部署系统1606。在至少一个实施例中,部署系统1606可以被配置为在分布式计算环境中卸载处理和计算资源,以减少设施1602的基础设施需求。在至少一个实施例中,管线中的一个或更多个应用程序在应用程序执行期间,可以使用或调用部署系统1606的服务(例如,推理、可视化、计算、AI等)。
在至少一个实施例中,在高级处理和推理管线中使用的一些应用程序可以使用机器学习模型或其他AI来执行一个或更多个处理步骤。在至少一个实施例中,可以使用在设施1602处生成(并存储在设施1602处的一个或更多个图片存档和通信系统(PACS)服务器上)的数据1608(例如成像数据)在设施1602处训练机器学习模型,可以使用于自另一个或更多个设施的成像或测序数据1608来训练机器学习模型,或其组合。在至少一个实施例中,训练系统1604可以用于提供应用程序、服务和/或其他资源,以生成用于部署系统1606的工作的、可部署的机器学习模型。
在至少一个实施例中,模型注册表1624可以由对象存储支持,该对象存储可以支持版本控制和对象元数据。在至少一个实施例中,可以从云平台内通过例如云存储(例如,图14的云1426)兼容的应用程序编程接口(API)来访问对象存储。在至少一个实施例中,模型注册表1624内的机器学习模型可以由与API交互的系统的开发者或合作伙伴上传、列出、修改或删除。在至少一个实施例中,API可以提供对方法的访问,所述方法允许具有适当凭证的用户将模型与应用程序相关联,使得模型可以作为应用程序的容器化实例化的执行的一部分来执行。
在至少一个实施例中,训练管线1404(图14)可以包括以下情形:其中设施1602正在训练他们自己的机器学习模型,或者具有需要优化或更新的现有机器学习模型。在至少一个实施例中,可以接收由成像设备、测序设备和/或其他类型设备生成的成像数据1608。在至少一个实施例中,一旦接收到成像数据1608,AI辅助注释1610就可以用于帮助生成与成像数据1608相对应的注释,以用作机器学习模型的地面实况数据。在至少一个实施例中,AI辅助注释1610可以包括一个或更多个机器学习模型(例如,卷积神经网络(CNN)),可以对该机器学习模型进行训练,以生成对应于某些类型的成像数据1608(例如,来自某些设备)的注释。在至少一个实施例中,然后AI辅助注释1610可以被直接使用,或者可以使用注释工具进行调整或微调,以生成地面实况数据。在至少一个实施例中,AI辅助注释1610、标记的临床数据1612或其组合可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,经训练的机器学习模型可以被称为输出模型1616,并且可以由部署系统1606使用,如本文所述。
在至少一个实施例中,训练管线1404(图14)可以包括以下情形:其中设施1602需要机器学习模型,以用于执行用于部署系统1606中的一个或更多个应用程序的一个或更多个处理任务,但是设施1602当前可能没有这种机器学习模型(或者可能没有为此目的而优化的、高效的或有效的模型)。在至少一个实施例中,可以从模型注册表1624中选择现有的机器学习模型。在至少一个实施例中,模型注册表1624可以包括机器学习模型,其被训练为对成像数据执行各种不同的推理任务。在至少一个实施例中,可以在来自不同的设施(例如,位于远处的设施)而不是设施1602的成像数据上训练模型注册表1624中的机器学习模型。在至少一个实施例中,机器学习模型可能已经在来自一个位置、两个位置或任意数量的位置的成像数据上进行训练。在至少一个实施例中,当在来自特定位置的成像数据上进行训练时,可以在该位置处进行训练,或者至少以保护成像数据的机密性或限制成像数据从场外转移的方式进行训练。在至少一个实施例中,一旦在一个位置处训练了模型或部分地训练了模型,则可以将机器学习模型添加到模型注册表1624。在至少一个实施例中,然后可以在任意数量的其他设施处对机器学习模型进行重新训练或更新,经重新训练或更新的模型可以在模型注册表1624中使用。在至少一个实施例中,然后可以从模型注册表1624中选择机器学习模型(并称为输出模型1616),并且可以在部署系统1606中,以执行用于部署系统的一个或更多个应用程序的一个或更多个处理任务。
在至少一个实施例中,在训练管线1404(图14)中,场景可以包括需要机器学习模型的设施1602,以用于执行用于部署系统1606中的一个或更多个应用程序的一个或更多个处理任务,但是设施1602当前可能没有这样的机器学习模型(或者可能没有优化的、高效的或有效的模型)。在至少一个实施例中,由于用于训练机器学习模型的训练数据的种群差异、稳健性,训练数据异常的多样性,和/或训练数据的其他问题,从模型注册表1624中选择的机器学习模型可能不会针对在设施1602处生成的成像数据1608进行微调或优化。在至少一个实施例中,AI辅助注释1610可以用于帮助生成与成像数据1608相对应的注释,以用作训练或更新机器学习模型的地面实况数据。在至少一个实施例中,标记的临床数据1612可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,重新训练或更新机器学习模型可以称为模型训练1614。在至少一个实施例中,模型训练1614(例如AI辅助注释1610,标记的临床数据1612或其组合)可以用作重新训练或更新机器学习模型的地面实况数据。在至少一个实施例中,训练的机器学习模型可以被称为输出模型1616,并且可以由部署系统1606使用,如本文所述。
在至少一个实施例中,部署系统1606可以包括软件1618、服务1620、硬件1622和/或其他组件、特征和功能。在至少一个实施例中,部署系统1606可以包括软件“栈”,以使软件1618可以构建在服务1620的顶部上,并且可以使用服务1620来执行一些或全部处理任务,并且服务1620和软件1618可以构建在硬件1622的顶部上,并使用硬件1622来执行部署系统的处理、存储和/或其他计算任务。在至少一个实施例中,软件1618可以包括任意数量的不同容器,其中每个容器可以执行应用程序的实例化。在至少一个实施例中,每个应用程序可以在高级处理和推理管线中执行一个或更多个处理任务(例如,推理、对象检测、特征检测、分割、图像增强、校准等)。在至少一个实施例中,除了接收和配置成像数据以供每个容器使用和/或在通过管线处理后由设施1602使用的容器以外,还可以基于对处理成像数据1608想要的或所需的不同容器的选择来定义高级处理和推理管线(例如,以将输出转换回可用的数据类型。在至少一个实施例中,软件1618内的容器组合(例如,其构成管线)可以被称为虚拟仪器(如本文中更详细地描述的),并且虚拟仪器可以利用服务1620和硬件1622来执行容器中实例化的应用程序的部分或全部处理任务。
在至少一个实施例中,数据处理管线可以响应于推理请求(例如,来自部署系统1606的用户的请求)接收具体格式的输入数据(例如,成像数据1608)。在至少一个实施例中,输入数据可以代表由一个或更多个成像设备生成的一个或更多个图像、视频和/或其他数据表示。在至少一个实施例中,数据可以作为数据处理管线的一部分进行预处理,以准备数据用于由一个或更多个应用程序处理。在至少一个实施例中,可以在管线的一个或更多个推理任务或其他处理任务的输出上执行后处理,以准备下一个应用程序的输出数据和/或准备输出数据,以供用户传输和/或使用(例如作为对推理请求的响应)。在至少一个实施例中,推理任务可以由一个或更多个机器学习模型执行,例如经训练或部署的神经网络,所述模型可以包括训练系统1604的输出模型1616。
在至少一个实施例中,数据处理管线的任务可以封装在容器中,每个容器表示能够引用机器学习模型的应用程序和虚拟化计算环境的离散、全功能实例化。在至少一个实施例中,容器或应用程序可被发布到容器注册表(本文更详细地描述)的私有(例如,有限访问)区域中,并且经训练或部署的模型可存储在模型注册表1624中,并与一个或更多个应用程序相关联。在至少一个实施例中,应用程序的图像(例如,容器图像)可在容器注册表中使用,并且一旦用户从容器注册表中选择图像以用于在管线中部署,则该图像可用于生成用于应用程序的实例化的容器,以供用户的系统使用。
在至少一个实施例中,开发者(例如,软件开发者、临床医生、医生等)可以开发、发布和存储应用程序(例如,作为容器),用于对所提供的数据执行图像处理和/或推理。在至少一个实施例中,可以使用与系统相关联的软件开发工具包(SDK)来执行开发、发布和/或存储(例如,以确保开发的应用程序和/或容器符合系统或与系统兼容)。在至少一个实施例中,所开发的应用程序可以使用SDK在本地测试(例如,在第一设施处,对来自第一设施的数据进行测试),所述SDK作为系统(例如图14中的系统1400)可以支持至少某些服务1620。在至少一个实施例中,由于DICOM对象可能包含一到数百个图像或其他数据类型,并且由于数据的变化,因此开发者可负责管理(例如,设置构造,用于将预处理构建到应用程序中等)传入的数据的提取和准备。在至少一个实施例中,一旦通过系统1400的验证(例如,为了准确性),应用程序便会在容器注册表中可用,以供用户选择和/或实现,以对用户的设施(例如第二设施)处的数据执行一个或更多个处理任务。
在至少一个实施例中,开发者随后可以通过网络共享应用程序或容器,以供系统(例如,图14的系统1400)的用户访问和使用。在至少一个实施例中,可以将完成并经过验证的应用程序或容器存储在容器注册表中,并且可以将相关的机器学习模型存储在模型注册表1624中。在至少一个实施例中,请求实体(其提供推理或图像处理请求)可以浏览容器注册表和/或模型注册表1624,以获得应用程序、容器、数据集、机器学习模型等,选择所需的元素组合以包含在数据处理管线中,并提交图像处理请求。在至少一个实施例中,请求可以包括执行请求所必需的输入数据(以及在一些示例中与患者相关的数据),和/或可以包括对在处理请求时要执行的应用程序和/或机器学习模型的选择。在至少一个实施例中,然后可以将请求传递到部署系统1606的一个或更多个组件(例如,云),以执行数据处理管线的处理。在至少一个实施例中,由部署系统1606进行的处理可以包括引用从容器注册表和/或模型注册表1624中选择的元素(例如,应用程序、容器、模型等)。在至少一个实施例中,一旦通过管线生成结果,结果可返回给用户以供参考(例如,用于在本地、本地工作站或终端上执行的查看应用程序套件中进行查看)。
在至少一个实施例中,为了帮助处理或执行管线中的应用程序或容器,可以利用服务1620。在至少一个实施例中,服务1620可以包括计算服务、人工智能(AI)服务、可视化服务和/或其他服务类型。在至少一个实施例中,服务1620可以提供软件1618中的一个或更多个应用程序所共有的功能,因此可以将功能抽象为可以被应用程序调用或利用的服务。在至少一个实施例中,由服务1620提供的功能可以动态且更有效地运行,同时还可以通过允许应用程序并行地处理数据(例如,使用图14中的并行计算平台1430)来很好地缩放。在至少一个实施例中,不是要求共享服务1620提供的相同功能的每个应用程序都必须具有服务1620的相对应实例,而是可以在各种应用程序之间和之中共享服务1620。在至少一个实施例中,作为非限制性示例,服务可包括可用于执行检测或分割任务的推理服务器或引擎。在至少一个实施例中,可以包括模型训练服务,其可以提供机器学习模型训练和/或重新训练能力。在至少一个实施例中,可以进一步包括数据增强服务,其可以提供GPU加速的数据(例如,DICOM、RIS、CIS、符合REST、RPC、原始等)提取、调整大小、缩放和/或其他增强。在至少一个实施例中,可以使用可视化服务,其可以添加图像渲染效果(例如光线跟踪、光栅化、去噪、锐化等),以向二维(2D)和/或三维(3D)模型添加真实感。在至少一个实施例中,可以包括虚拟仪器服务,其为虚拟仪器的管线内的其他应用程序提供波束赋形、分割、推理、成像和/或支持。
在至少一个实施例中,在服务1620包括AI服务(例如,推理服务)的情况下,作为应用程序执行的一部分,可以通过调用(例如,作为API调用)推理服务(例如,推理服务器),以执行一个或更多个机器学习模型或其处理,来执行一个或更多个机器学习模型。在至少一个实施例中,在另一应用程序包括用于分割任务的一个或更多个机器学习模型的情况下,应用程序可以调用推理服务来执行机器学习模型,以用于执行与分割任务相关联的一个或更多个处理操作。在至少一个实施例中,实现高级处理和推理管线的软件1618,其包括分割应用程序和异常检测应用程序,可以被管线化,因为每个应用程序可以调用相同的推理服务来执行一个或更多个推理任务。
在至少一个实施例中,硬件1622可包括GPU、CPU、图形卡、AI/深度学习系统(例如,AI超级计算机,诸如NVIDIA的DGX)、云平台或其组合。在至少一个实施例中,可以使用不同类型的硬件1622,以为部署系统1606中的软件1618和服务1620提供高效的、专门构建的支持。在至少一个实施例中,可以实现使用GPU处理来在AI/深度学习系统内、云系统中、和/或部署系统1606的其他处理组件中进行本地处理(例如,在设施1602处),以提高图像处理和生成的效率、准确性和效能。在至少一个实施例中,作为非限制性示例,关于深度学习、机器学习和/或高性能计算,可以针对GPU处理优化软件1618和/或服务1620。在至少一个实施例中,部署系统1606和/或训练系统1604的计算环境中的至少一些可以在具有GPU优化的软件(例如,NVIDIADGX系统的硬件和软件组合)的数据中心、一个或更多个超级计算机或高性能计算机系统中执行。在至少一个实施例中,如本文所述,硬件1622可包括任意数量的GPU,所述GPU可被调用以并行执行数据处理。在至少一个实施例中,云平台还可包括用于深度学习任务的GPU优化执行、机器学习任务或其他计算任务的GPU处理。在至少一个实施例中,可以使用AI/深度学习超级计算机和/或GPU优化的软件(例如,如在NVIDIA的DGX系统上提供的)作为硬件抽象和缩放平台,来执行云平台(例如,NVIDIA的NGC)。在至少一个实施例中,云平台可以在多个GPU上集成应用程序容器集群系统或协调系统(例如,KUBERNETES),以实现无缝缩放和负载均衡。
图17是根据至少一个实施例的用于生成和部署成像部署管线的示例系统1700的系统图。在至少一个实施例中,系统1700可以用于实现图16的过程1600和/或其他过程,包括高级处理和推理管线。在至少一个实施例中,系统1700可以包括训练系统1604和部署系统1606。在至少一个实施例中,可以使用软件1618、服务1620和/或硬件1622,来实现训练系统1604和部署系统1606,如本文所述。
在至少一个实施例中,系统1700(例如,训练系统1604和/或部署系统1606)可以在云计算环境中(例如,使用云1726)实现。在至少一个实施例中,系统1700可以在本地实现(关于医疗服务设施),或者作为云计算资源和本地计算资源的组合来实现。在至少一个实施例中,可以通过制定安全措施或协议,将对云1726中的API的访问权限限制为授权用户。在至少一个实施例中,安全协议可以包括网络令牌,其可以由认证(例如,AuthN、AuthZ、Gluecon等)服务签名,并且可以携带适当的授权。在至少一个实施例中,虚拟仪器的API(本文中描述)或系统1700的其他实例可以被限制为已被审核或授权用于交互的一组公共IP。
在至少一个实施例中,系统1700的各个组件可以使用多种不同网络类型中的任何一种在彼此之间进行通信,所述不同网络类型包括但不限于经由有线和/或无线通信协议的局域网(LAN)和/或广域网(WAN)。在至少一个实施例中,系统1700的设施和组件之间的通信(例如,用于发送推理请求、用于接收推理请求的结果等)可以通过一个或更多个数据总线、无线数据协议(Wi-Fi)、有线数据协议(例如以太网)等进行传送。
在至少一个实施例中,类似于本文关于图16所描述的,训练系统1604可以执行训练管线1704。在至少一个实施例中,其中部署系统1606将在部署管线1710中使用一个或更多个机器学习模型,训练管线1704可用于训练或重新训练一个或更多个(例如,预训练的)模型,和/或实现一个或更多个预训练模型1706(例如,无需重新训练或更新)。在至少一个实施例中,作为训练管线1704的结果,可以生成输出模型1616。在至少一个实施例中,训练管线1704可以包括任意数量的处理步骤,诸如但不限于成像数据(或其他输入数据)的转换或适配。在至少一个实施例中,对于由部署系统1606使用的不同的机器学习模型,可以使用不同的训练管线1704。在至少一个实施例中,类似于关于图16描述的第一示例的训练管线1704可用于第一机器学习模型,类似于关于图16描述的第二示例的训练管线1704可用于第二机器学习模型,类似于关于图16描述的第三示例的训练管线1704可用于第三机器学习模型。在至少一个实施例中,可以根据每个相对应机器学习模型的要求来使用训练系统1604内任务的任何组合。在至少一个实施例中,一个或更多个机器学习模型可能已经被训练并准备好用于部署,因此训练系统1604可能不会对机器学习模型进行任何处理,并且一个或更多个机器学习模型可以由部署系统1606来实现。
在至少一个实施例中,根据实现方式或实施例,输出模型1616和/或预训练模型1706可包括任何类型的机器学习模型。在至少一个实施例中并且不限于此,系统1700使用的机器学习模型可以包括使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k-最近邻(Knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(LSTM)、Hopfield、Boltzmann、深度信念、反卷积、生成对抗、液体状态机等),和/或其他类型的机器学习模型。
在至少一个实施例中,训练管线1704可以包括AI辅助注释,如本文关于至少图16更详细描述的。在至少一个实施例中,可以通过任何数量的技术来生成标记的临床数据1612(例如,传统注释)。在至少一个实施例中,在一些示例中可以在绘图程序(例如,注释程序)、计算机辅助设计(CAD)程序、标记程序、适用于生成地面实况的注释或标签的另一类型的应用程序中、和/或可以手绘,生成标签或其他注释。在至少一个实施例中,地面实况数据可以被合成产生(例如,从计算机模型或渲染生成)、真实产生(例如,从真实世界数据设计和生成)、机器自动产生(例如,使用特征分析和学习从数据中提取特征,然后生成标签)、人工注释(例如,标记器或注释专家,定义标签的位置)和/或其组合。在至少一个实施例中,对于成像数据1608(或机器学习模型使用的其他数据类型)的每个实例,可以存在由训练系统1604生成的相对应的地面实况数据。在至少一个实施例中,可以作为部署管线1710的一部分执行AI辅助注释;补充或代替训练管线1704中包括的AI辅助注释。在至少一个实施例中,系统1700可以包括多层平台,所述多层平台可以包括诊断应用程序(或其他应用程序类型)的软件层(例如软件1618),其可以执行一个或更多个医学成像和诊断功能。在至少一个实施例中,系统1700可以通信地耦合到(例如,经由加密链路)一个或更多个设施的PACS服务器网络。在至少一个实施例中,系统1700可被配置为从PACS服务器访问和引用数据,以执行操作,例如训练机器学习模型、部署机器学习模型、图像处理、推理和/或其他操作。
在至少一个实施例中,软件层可以被实现为安全的、加密的和/或经认证的API,通过所述API可以从外部环境(例如,设施1602)援引(invoke)(例如,调用(call))应用程序或容器。在至少一个实施例中,应用程序随后可以调用或执行一个或更多个服务1620,以执行与各自的应用程序相关联的计算、AI或可视化任务,并且软件1618和/或服务1620可以利用硬件1622以有效和高效的方式执行处理任务。
在至少一个实施例中,部署系统1606可以执行部署管线1710。在至少一个实施例中,部署管线1710可以包括任意数量的应用程序,所述应用程序可以是顺序的、非顺序的,或者以其他方式应用于成像数据(和/或其他数据类型)-包括AI辅助注释,所述成像数据由成像设备、测序设备、基因组学设备等生成,如上所述。在至少一个实施例中,如本文所述,用于个体设备的部署管线1710可以被称为用于设备的虚拟仪器(例如,虚拟超声仪器、虚拟CT扫描仪器、虚拟测序仪器等)。在至少一个实施例中,对于单个设备,可以存在不止一个部署管线1710,这取决于从设备生成的数据所期望的信息。在至少一个实施例中,在期望从MRI机器检测到异常的情况下,可以存在第一部署管线1710,并且在期望从MRI机器的输出进行图像增强的情况下,可以存在第二部署管线1710。
在至少一个实施例中,图像生成应用程序可以包括包括使用机器学习模型的处理任务。在至少一个实施例中,用户可能希望使用他们自己的机器学习模型,或者从模型注册表1624中选择机器学习模型。在至少一个实施例中,用户可以实现他们自己的机器学习模型或选择机器学习模型,以包含在执行处理任务的应用程序中。在至少一个实施例中,应用程序可以是可选择的和可定制的,并且通过定义应用程序的构造,针对特定用户的应用程序的部署和实现被呈现为更加无缝的用户体验。在至少一个实施例中,通过利用系统1700的其他特征(例如服务1620和硬件1622),部署管线1710可以更加用户友好,提供更容易的集成,并且产生更准确、高效和及时的结果。
在至少一个实施例中,部署系统1606可以包括用户接口1714(例如,图形用户接口、Web接口等),所述用户接口可以被用于选择要包括在部署管线1710中的应用程序、布置应用程序、修改或改变应用程序或其参数或构造、在设置和/或部署期间使用部署管线1710以及与其交互,和/或以其他方式与部署系统1606交互。在至少一个实施例中,尽管没有关于训练系统1604示出,但是用户接口1714(或不同的用户接口)可用于选择在部署系统1606中使用的模型、用于选择用于在训练系统1604中训练或重新训练的模型,和/或用于以其他方式与训练系统1604交互。
在至少一个实施例中,除了应用程序协调系统1728之外,还可以使用管线管理器1712来管理部署管线1710的应用程序或容器与服务1620和/或硬件1622之间的交互。在至少一个实施例中,管线管理器1712可以被配置为促进从应用程序到应用程序、从应用程序到服务1620,和/或从应用程序或服务到硬件1622的交互。在至少一个实施例中,尽管示出为包括在软件1618中,这并不旨在进行限制,并且在一些示例中,管线管理器1712可以被包括在服务1620中。在至少一个实施例中,应用程序协调系统1728(例如,Kubernetes、DOCKER等)可以包括容器协调系统,其可以将应用程序分组到容器中,作为用于协调、管理、缩放和部署的逻辑单元。在至少一个实施例中,通过将来自部署管线1710的应用程序(例如,重建应用程序、分割应用程序等)与各个容器相关联,每个应用程序可以在自包含的环境(例如,在内核级)中执行,以提高速度和效率。
在至少一个实施例中,每个应用程序和/或容器(或其映像)可以被单独开发、修改和部署(例如,第一用户或开发者可以开发、修改和部署第一应用程序,第二用户或开发者可以开发、修改和部署与第一用户或开发者分开的第二应用程序),这可以允许专注并关注单个应用程序和/或容器的任务,而不受另一个应用程序或容器的任务的阻碍。在至少一个实施例中,管线管理器1712和应用程序协调系统1728可以辅助不同容器或应用程序之间的通信和协作。在至少一个实施例中,只要每个容器或应用程序的预期输入和/或输出是系统已知的(例如,基于应用程序或容器的构造),则应用程序协调系统1728和/或管线管理器1712可以促进每个应用程序或容器之间和之中的通信以及资源的共享。在至少一个实施例中,由于部署管线1710中的一个或更多个应用程序或容器可以共享相同的服务和资源,因此应用程序协调系统1728可以在各个应用程序或容器之间和之中进行协调、负载均衡,并确定服务或资源的共享。在至少一个实施例中,调度器可用于跟踪应用程序或容器的资源需求、这些资源的当前使用或计划使用,以及资源可用性。因此,在至少一个实施例中,考虑到系统的需求和可用性,调度器可以将资源分配给不同的应用程序,并在应用程序之间和之中分配资源。在一些示例中,调度器(和/或应用程序协调系统1728的其他组件)可以基于施加在系统上的约束(例如,用户约束)来确定资源可用性和分布,例如服务质量(QoS)、对数据输出的迫切需求(例如,以确定是执行实时处理还是延迟处理)等。
在至少一个实施例中,由部署系统1606中的应用程序或容器利用并由其共享的服务1620,可以包括计算服务1716、AI服务1718、可视化服务1720和/或其他服务类型。在至少一个实施例中,应用程序可以调用(例如,执行)一个或更多个服务1620,以执行针对应用程序的处理操作。在至少一个实施例中,应用程序可以利用计算服务1716来执行超级计算或其他高性能计算(HPC)任务。在至少一个实施例中,可以利用一个或更多个计算服务1716来执行并行处理(例如,使用并行计算平台1730),以通过一个或更多个应用程序和/或单个应用程序的一个或更多个任务基本上同时地处理数据。在至少一个实施例中,并行计算平台1730(例如,NVIDIA的CUDA)可以在GPU(GPGPU)(例如,GPU 1722)上实现通用计算。在至少一个实施例中,并行计算平台1730的软件层可以提供对GPU的虚拟指令集和并行计算元素的访问,以执行计算内核。在至少一个实施例中,并行计算平台1730可以包括存储器,并且在一些实施例中,可以在多个容器之间和之中,和/或在单个容器内的不同处理任务之间和之中共享存储器。在至少一个实施例中,可以为多个容器和/或容器内的多个进程生成进程间通信(IPC)调用,以使用于自并行计算平台1730的共享存储器段的相同数据(例如,其中一应用程序或多个应用程序的多个不同阶段正在处理相同的信息)。在至少一个实施例中,不是复制数据并将数据移动到存储器中的不同位置(例如,读/写操作),而是可以将存储器相同位置中的相同数据用于任何数量的处理任务(例如,在同一时间、不同时间等)。在至少一个实施例中,由于作为处理的结果数据被用于生成新数据,因此数据的新位置的该信息可以在各个应用程序之间存储和共享。在至少一个实施例中,数据的位置以及经更新或修改的数据的位置可以是如何理解容器中的有效负载的定义的一部分。
在至少一个实施例中,可以利用AI服务1718来执行推理服务,该推理服务用于执行与应用程序相关联的机器学习模型(例如,任务为执行应用程序的一个或更多个处理任务)。在至少一个实施例中,AI服务1718可以利用AI系统1724来执行机器学习模型(例如,诸如CNN之类的神经网络)以用于分割、重建、对象检测、特征检测、分类和/或其他推理任务。在至少一个实施例中,部署管线1710的应用程序可以使用于自训练系统1604的一个或更多个输出模型1616和/或应用程序的其他模型,来对成像数据执行推理。在至少一个实施例中,使用应用程序协调系统1728(例如,调度器)进行推理的两个或更多个示例可以是可用的。在至少一个实施例中,第一类别可以包括高优先级/低延时路径,其可以实现更高服务水平协议,例如用于在紧急情况下对紧急请求执行推理,或者在诊断过程中用于放射科医生。在至少一个实施例中,第二类别可以包括标准优先级路径,其可用于可能不紧急的请求或者可以在稍后的时间执行分析的情况。在至少一个实施例中,应用程序协调系统1728可以基于优先级路径来分配资源(例如,服务1620和/或硬件1622),以用于AI服务1718的不同推理任务。
在至少一个实施例中,共享存储器可以被安装到系统1700中的AI服务1718。在至少一个实施例中,共享存储器可以操作为高速缓存(或其他存储设备类型),并且可以用于处理来自应用程序的推理请求。在至少一个实施例中,当提交推理请求时,部署系统1606的一组API实例可以接收请求,并且可以选择一个或更多个实例(例如,为了最佳拟合、为了负载均衡等)来处理请求。在至少一个实施例中,为了处理请求,可以将请求输入到数据库中,如果尚未在高速缓存中,则可以从模型注册表1624定位机器学习模型,验证步骤可以确保将适当的机器学习模型加载到高速缓存中(例如,共享存储),和/或可以将模型的副本保存到高速缓存中。在至少一个实施例中,如果应用程序尚未运行或没有足够的应用程序的实例,则可使用调度器(例如,管线管理器1712的调度器)来启动在请求中引用的应用程序。在至少一个实施例中,如果尚未启动推理服务器来执行模型,则可以启动推理服务器。每个模型可以启动任意数量的推理服务器。在至少一个实施例中,在将推理服务器聚类的拉(pull)模型中,每当负载均衡有利时,就可以将模型高速缓存。在至少一个实施例中,推理服务器可以静态加载到相应的分布式服务器中。
在至少一个实施例中,可以使用在容器中运行的推理服务器来执行推理。在至少一个实施例中,推理服务器的实例可以与模型(并且可选地与模型的多个版本)相关联。在至少一个实施例中,如果在接收到对模型执行推理的请求时推理服务器的实例不存在,则可以加载新实例。在至少一个实施例中,当启动推理服务器时,可以将模型传递到推理服务器,使得可以使用相同的容器来服务不同的模型,只要推理服务器作为不同的实例运行即可。
在至少一个实施例中,在应用程序执行期间,可以接收对给定应用程序的推理请求,并且可以加载(如果尚未加载的话)容器(例如,托管推理服务器的实例),以及可以调用启动程序。在至少一个实施例中,容器中的预处理逻辑可以(例如,使用CPU和/或GPU)对传入的数据进行加载、解码和/或执行任何附加的预处理。在至少一个实施例中,一旦数据准备好进行推理,容器就可以根据需要对数据进行推理。在至少一个实施例中,这可以包括对一个图像(例如,手部X光线)的单个推理调用,或可要求对数百个图像(例如,胸部CT)进行推理。在至少一个实施例中,应用程序可在完成之前总结结果,其可以包括但不限于单个置信度得分、像素级分割、体素级分割、生成可视化或生成文本以总结结果。在至少一个实施例中,可以为不同的模型或应用程序分配不同的优先级。例如,一些模型可具有实时(TAT小于1分钟)优先级,而其他模型可具有较低的优先级(例如,TAT小于10分钟)。在至少一个实施例中,模型执行时间可以从请求机构或实体进行测量,并且可以包括合作网络遍历时间以及推理服务的执行时间。
在至少一个实施例中,请求在服务1620和推理应用程序之间的传送可以隐藏在软件开发工具包(SDK)后面,并且可以通过队列提供鲁棒的传输。在至少一个实施例中,将通过API将请求放置在队列中,以用于个体应用程序/租户ID组合,并且SDK将从队列中拉取请求并将请求提供给应用程序。在至少一个实施例中,在SDK将从中拾取队列的环境中,可以提供队列的名称。在至少一个实施例中,通过队列的异步通信可能有用,因为它可以允许应用程序的任何实例在其可用时拾取工作。可以通过队列将结果传送回去,以确保没有数据丢失。在至少一个实施例中,队列还可以提供对工作进行分割的能力,因为最高优先级的工作可以进入与应用程序的大多数实例连接的队列,而最低优先级的工作可以进入与单个实例连接的队列,所述实例按照接收到的顺序处理任务。在至少一个实施例中,应用程序可以在GPU加速的实例上运行,所述实例在云1726中生成,并且推理服务可以在GPU上执行推理。
在至少一个实施例中,可以利用可视化服务1720来生成用于查看应用程序和/或部署管线1710输出的可视化。在至少一个实施例中,可视化服务1720可以利用GPU 1722来生成可视化。在至少一个实施例中,可视化服务1720可以实现诸如光线追踪之类的渲染效果,以生成更高质量的可视化。在至少一个实施例中,可视化可以包括但不限于2D图像渲染、3D体渲染、3D体重建、2D层析切片、虚拟现实显示、增强现实显示等。在至少一个实施例中,可以使用虚拟化环境来生成虚拟交互显示或环境(例如,虚拟环境),以供系统用户(例如,医生、护士、放射科医生等)进行交互。在至少一个实施例中,可视化服务1720可以包括内部可视化器、电影和/或其他渲染或图像处理能力或功能(例如,光线追踪、光栅化、内部光学器件等)。
在至少一个实施例中,硬件1622可以包括GPU 1722、AI系统1724、云1726和/或用于执行训练系统1604和/或部署系统1606的任何其他硬件。在至少一个实施例中,GPU 1722(例如,NVIDIA的TESLA和/或QUADRO GPU)可包括可用于执行计算服务1716、AI服务1718、可视化服务1720、其他服务和/或软件1618的任何特征或功能的处理任务的任意数量的GPU。例如,对于AI服务1718,GPU 1722可用于对成像数据(或机器学习模型使用的其他数据类型)执行预处理,对机器学习模型的输出执行后处理和/或执行推理(例如以执行机器学习模型)。在至少一个实施例中,云1726、AI系统1724和/或系统1700的其他组件可以使用GPU1722。在至少一个实施例中,云1726可以包括用于深度学习任务的GPU优化的平台。在至少一个实施例中,AI系统1724可以使用GPU,并且可以使用一个或更多个AI系统1724来执行云1726(或者任务为深度学习或推理的至少部分)。同样,尽管硬件1622被示出为离散组件,但这并不意图是限制,并且硬件1622的任何组件可以与硬件1622的任何其他组件组合,或由硬件1622的任何其他组件利用。
在至少一个实施例中,AI系统1724可包括专门构建的计算系统(例如,超级计算机或HPC),该计算系统配置用于推理、深度学习、机器学习和/或其他人工智能任务。在至少一个实施例中,除了CPU、RAM、存储器和/或其他组件、特征或功能之外,AI系统1724(例如,NVIDIA的DGX)还可以包括可以使用多个GPU 1722来执行分GPU优化的软件(例如,软件栈)。在至少一个实施例中,可以在云1726中(例如,在数据中心中)实现一个或更多个AI系统1724,以执行系统1700的一些或全部基于AI的处理任务。
在至少一个实施例中,云1726可以包括GPU加速的基础设施(例如,NVIDIA的NGC),其可以提供用于执行系统1700的处理任务的GPU优化的平台。在至少一个实施例中,云1726可以包括AI系统1724,其用于执行系统1700的一个或更多个基于AI的任务(例如,作为硬件抽象和缩放平台)。在至少一个实施例中,云1726可以与利用多个GPU的应用程序协调系统1728集成,以实现应用程序和服务1620之间和之中的无缝缩放和负载均衡。在至少一个实施例中,如本文所述,云1726可以负责执行系统1700的至少一些服务1620,包括计算服务1716、AI服务1718和/或可视化服务1720。在至少一个实施例中,云1726可以执行大小批的推理(例如,执行NVIDIA的TENSORRT),提供加速的并行计算API和平台1730(例如,NVIDIA的CUDA),执行应用程序协调系统1728(例如,KUBERNETES),提供图形渲染API和平台(例如,用于光线跟踪,2D图形、3D图形和/或其他渲染技术以产生更高质量的电影效果),和/或可以为系统1700提供其他功能。
图18A示出了根据至少一个实施例的用于训练、重新训练或更新机器学习模型的过程1800的数据流图。在至少一个实施例中,可以使用作为非限制性示例的图17的系统1700来执行过程1800。在至少一个实施例中,过程1800可以利用系统1700的服务1620和/或硬件1622,如本文所述。在至少一个实施例中,由过程1800生成的精炼模型1812可以由部署系统1606针对部署管线1710中的一个或更多个容器化的应用程序执行。
在至少一个实施例中,模型训练1614可包括使用新的训练数据(例如,新的输入数据(诸如客户数据集1806),和/或与输入数据相关联的新的地面实况数据)重新训练或更新初始模型1804(例如,预训练模型)。在至少一个实施例中,为了重新训练或更新初始模型1804,可以重置或删除初始模型1804的输出或损失层,和/或用更新的或新的输出或损失层代替。在至少一个实施例中,初始模型1804可以具有从先前的训练中保留下来的先前精细调整的参数(例如,权重和/或偏差),因此训练或重新训练1614可能不需要花费与从头开始训练模型一样长的时间或不需要那么多的处理。在至少一个实施例中,在模型训练1614期间,通过重置或替换初始模型1804的输出或损失层,在新的客户数据集1806(例如图16的图像数据1608)上生成预测时,可以基于与输出或损失层的精度相关联的损失计算,更新和重新调整新数据集的参数。
在至少一个实施例中,可以将经预训练的模型1706存储在数据存储或注册表中(例如,图16的模型注册表1624)。在至少一个实施例中,经预训练的模型1706可能已经至少部分地在除了执行过程1800的设施之外的一个或更多个设施处被训练。在至少一个实施例中,为了保护患者、受试者或不同设施的客户的隐私和权利,经预训练的模型1706可能已经使用本地生成的客户或患者数据在本地进行了训练。在至少一个实施例中,可以使用云1726和/或其他硬件1622来训练经预训练的模型1706,但是机密的、受隐私保护的患者数据可以不被传送到云1726的任何组件(或其他非本地硬件)、由其使用或由其访问。在至少一个实施例中,如果使用于自不止一个设施的患者数据来训练经预训练的模型1706,则在来自另一设施的患者或客户数据上进行训练之前,经预训练的模型1706可能已经针对每个设施进行了单独训练。在至少一个实施例中,例如在客户或患者数据已发布隐私问题(例如,通过放弃,用于实验用途等),或者其中客户或患者数据包括在公共数据集中的情况下,来自任意数量的设施的客户或患者数据可以用于在本地和/或外部训练经预训练的模型1706,例如在数据中心中或其他云计算基础设施中。
在至少一个实施例中,在选择应用程序以在部署管线1710中使用时,用户还可以选择用于特定应用程序的机器学习模型。在至少一个实施例中,用户可能没有模型以使用,因此用户可以选择要与应用程序一起使用的经预训练的模型1706。在至少一个实施例中,经预训练的模型1706可能没有被优化用于在用户设施的客户数据集1806上生成准确的结果(例如,基于患者多样性、人口统计、所使用的医学成像设备的类型等)。在至少一个实施例中,在将经预训练的模型1706部署到部署管线1710中以与一个或更多个应用程序一起使用之前,经预训练的模型1706可以被更新、重新训练和/或微调,以用于在各个设施处使用。
在至少一个实施例中,用户可以选择要更新、重新训练和/或微调的经预训练的模型1706,并且经预训练的模型1706可以称为过程1800中训练系统1604的初始模型1804。在至少一个实施例中,客户数据集1806(例如,成像数据、基因组数据、测序数据或由设施处的设备生成的其他数据类型)可用于对初始模型1804执行模型训练1614(其可包括但不限于传递学习),以生成精炼模型1812。在至少一个实施例中,可以由训练系统1604生成与客户数据集1806相对应的地面实况数据。在至少一个实施例中,可以至少部分地由临床医生、科学家、医生、从业者在设施处生成地面实况数据(例如,如图16中的标记的临床数据1612)。
在至少一个实施例中,在一些示例中可以使用AI辅助注释1610来生成地面实况数据。在至少一个实施例中,AI辅助注释1610(例如,使用AI辅助注释SDK实现)可以利用机器学习模型(例如,神经网络)来生成用于客户数据集的建议或预测的地面实况数据。在至少一个实施例中,用户1810可以在计算设备1808上的用户界面(图形用户界面(GUI))内使用注释工具。
在至少一个实施例中,用户1810可以经由计算设备1808与GUI交互,以编辑或微调注释或自动注释。在至少一个实施例中,多边形编辑特征可以用于将多边形的顶点移动到更精确或微调的位置。
在至少一个实施例中,一旦客户数据集1806具有相关联的地面实况数据,则地面实况数据(例如,来自AI辅助注释、手动标记等)可以在模型训练1614期间用于生成精炼模型1812。在至少一个实施例中,客户数据集1806可以被应用到初始模型1804任意次数,并且地面实况数据可以用于更新初始模型1804的参数,直到对于精炼模型1812达到可接受的精度水平为止。在至少一个实施例中,一旦生成精炼模型1812,就可以在设施处的一个或更多个部署管线1710内部署精炼模型1812,以用于执行关于医学成像数据的一个或更多个处理任务。
在至少一个实施例中,可以将精炼模型1812上传到模型注册表1624中的经预训练的模型1706,以由另一个设施选择。在至少一个实施例中,他的过程可以在任意数量的设施处完成,使得可以在新数据集上对精炼模型1812进一步精炼任意次数,以生成更通用的模型。
图18B是根据至少一个实施例的用于利用经预训练的注释模型来增强注释工具的客户端-服务器架构1832的示例图示。在至少一个实施例中,可以基于客户端-服务器架构1832来实例化AI辅助注释工具1836。在至少一个实施例中,成像应用程序中的注释工具1836可以帮助放光线医生,例如识别器官和异常。在至少一个实施例中,成像应用程序可以包括软件工具,作为非限制性示例,所述软件工具帮助用户1810识别原始图像1834中(例如,在3D MRI或CT扫描中)的特定感兴趣器官上的几个极值点,并接收特定器官的所有2D切片的自动注释结果。在至少一个实施例中,结果可以作为训练数据1838存储在数据存储中,并且用作(例如但不限于)用于训练的地面实况数据。在至少一个实施例中,当计算设备1808发送用于AI辅助注释1610的极值点时,例如,深度学习模型可以接收该数据作为输入并返回分割器官或异常的推理结果。在至少一个实施例中,预实例化的注释工具(例如图18B中的AI辅助注释工具1836B)可以通过对服务器(诸如注释助手服务器1840)进行API调用(例如API调用1844)来增强,注释助手服务器1840可包括存储在例如注释模型注册表中的一组经预训练的模型1842。在至少一个实施例中,注释模型注册表可以存储经预训练的模型1842(例如,机器学习模型,诸如深度学习模型),其被预训练以对特定器官或异常执行AI辅助注释。在至少一个实施例中,可以通过使用训练管线1704来进一步更新这些模型。在至少一个实施例中,随着添加新标记的临床数据1612,可以随时间改进预安装的注释工具。
此类组件可以用于生成或获得针对输入图像数据中分类的对象的3D模型。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相对应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“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中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以通过多种方式来获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在一些实现方式中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在另一实现方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于讨论的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。
Claims (20)
1.一种计算机实现的方法,包括:
至少基于表示包括至少一个对象的环境的图像数据来生成所述环境的三维3D表示;
分析所述3D表示以确定与所述至少一个对象相对应的一个或更多个区段;
至少基于所述一个或更多个区段的数据和所述图像数据来确定所述至少一个对象的身份;
用与所述至少一个对象相对应的模型数据来替换数据的至少一部分,所述一部分与和所述至少一个对象相对应的所述一个或更多个区段相对应;以及
使用所述至少一个对象的所述3D表示的至少一部分提供对所述环境的呈现。
2.如权利要求1所述的计算机实现的方法,进一步包括:
将所述至少一个对象的所述3D表示提供给用于多维资产的云托管的协作内容创建平台。
3.如权利要求1所述的计算机实现的方法,其中与所述至少一个对象相对应的所述模型数据被包括在与多个对象相对应的模型数据的储存库中。
4.如权利要求3所述的计算机实现的方法,其中所述模型数据的储存库被包括在用于多维资产的云托管的协作内容创建平台的数据存储中。
5.如权利要求1所述的计算机实现的方法,其中所述3D表示包括定向点云。
6.如权利要求1所述的计算机实现的方法,进一步包括:
使用至少一个图像捕获设备捕获所述图像数据,其中所述图像数据包括从关于所述环境的不同视点捕获的至少两个图像。
7.如权利要求6所述的计算机实现的方法,进一步包括:
确定所述至少两个图像中的一组关键点;以及
至少基于所述一组关键点配准所述至少两个图像,以在生成所述环境的所述3D表示中使用。
8.如权利要求1所述的计算机实现的方法,进一步包括:
确定所述至少一个对象中的特定对象不能被识别或不具有可用的模型数据;以及
生成将被包括在所述环境的所述3D表示中的所述特定对象的网格表示。
9.如权利要求1所述的计算机实现的方法,进一步包括:
接收修改所述至少一个对象的一个或更多个方面的指令;以及
生成包括经修改的一个或更多个方面的所述环境的经更新的3D表示。
10.一种处理器,包括:
一个或更多个电路,所述一个或更多个电路用于使用一个或更多个神经网络以至少基于所捕获的环境的图像数据来生成所述环境的三维3D表示,所述3D表示包括一个或更多个所识别的对象的指定3D表示。
11.如权利要求10所述的处理器,其中所述一个或更多个电路进一步用于:分析所述环境的所述3D表示的区段以确定所述至少一个对象的身份,以及用所述一个或更多个所识别的对象的所述指定3D表示中的至少一个指定3D表示的至少一部分替换子集的至少一部分。
12.如权利要求10所述的处理器,其中所述一个或更多个电路进一步用于:使用所述指定3D表示中的至少一个指定3D表示的至少一部分提供对所述环境的呈现,其中所述指定3D表示的一个或更多个方面在所述呈现中是可修改的。
13.如权利要求10所述的处理器,其中所述一个或更多个电路进一步用于:将所述一个或更多个所识别的对象的所述指定3D表示中的至少一个指定3D表示提供给用于多维资产的云托管的协作内容创建平台。
14.如权利要求10所述的处理器,其中所述指定3D表示中的至少一个指定3D表示包括与所述一个或更多个所识别的对象相对应的并且包括在与多个对象相对应的模型数据的储存库中的模型数据。
15.如权利要求14所述的处理器,其中所述模型数据的储存库被包括在用于多维资产的云托管的协作内容创建平台的数据存储中。
16.一种系统,包括:
一个或更多个处理器;以及
存储器,所述存储器包括指令,所述指令在由所述一个或更多个处理器执行时使所述系统:
至少基于针对包括一个或更多个对象的空间捕获的视频数据来生成所述空间的三维3D表示;
从所述3D表示的部分识别所述空间中的所述一个或更多个对象;
提供对包括一个或更多个所识别的对象的相应3D表示的所述空间的所述3D表示的呈现;以及
响应于所接收的输入,在所述空间的所述3D表示内选择或放置在所述空间的所述3D表示内的至少一个中修改所述一个或更多个所识别的对象的所述相应3D表示。
17.如权利要求16所述的系统,其中所述指令在被执行时进一步使所述系统:
将所述一个或更多个对象的所述相应3D表示提供给用于多维资产的云托管的协作内容创建平台。
18.如权利要求16所述的系统,其中所述相应3D表示包括与所述一个或更多个对象相对应的并且被包括在与多个对象相对应的模型数据的储存库中的模型数据。
19.如权利要求18所述的系统,其中所述模型数据的储存库被包括在用于多维资产的云托管的协作内容创建平台的数据存储中。
20.如权利要求16所述的系统,其中所述系统包括以下中的至少一个:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行数字孪生操作的系统;
用于执行光传输模拟的系统;
用于执行3D资产的协作内容创建的系统;
用于执行深度学习操作的系统;
用于执行实时流传输的系统;
用于生成虚拟现实VR内容、增强现实AR内容或混合现实MR内容中的至少一个的系统;
用于呈现VR内容、AR内容或MR内容中的至少一个的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
用于执行对话AI操作的系统;
用于生成合成数据的系统;
包含一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或至少部分地使用云计算资源实现的系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/066,135 US20240203052A1 (en) | 2022-12-14 | 2022-12-14 | Replicating physical environments and generating 3d assets for synthetic scene generation |
US18/066,135 | 2022-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118196277A true CN118196277A (zh) | 2024-06-14 |
Family
ID=91278434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311701487.1A Pending CN118196277A (zh) | 2022-12-14 | 2023-12-11 | 复制物理环境并生成3d资产用于合成场景生成 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240203052A1 (zh) |
CN (1) | CN118196277A (zh) |
DE (1) | DE102023134987A1 (zh) |
-
2022
- 2022-12-14 US US18/066,135 patent/US20240203052A1/en active Pending
-
2023
- 2023-12-11 CN CN202311701487.1A patent/CN118196277A/zh active Pending
- 2023-12-13 DE DE102023134987.2A patent/DE102023134987A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240203052A1 (en) | 2024-06-20 |
DE102023134987A1 (de) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113361705B (zh) | 用于合成数据生成的场景结构的无监督学习 | |
US11494976B2 (en) | Neural rendering for inverse graphics generation | |
JP2021526253A (ja) | 深層学習システム | |
CN114365156A (zh) | 用于神经网络的迁移学习 | |
US11995883B2 (en) | Scene graph generation for unlabeled data | |
US11875449B2 (en) | Real-time rendering with implicit shapes | |
US12014460B2 (en) | Adaptive temporal image filtering for rendering realistic illumination | |
US20230385983A1 (en) | Identifying application buffers for post-processing and re-use in secondary applications | |
US20240185506A1 (en) | Hybrid differentiable rendering for light transport simulation systems and applications | |
CN116206042A (zh) | 空间哈希一致采样 | |
US11546568B1 (en) | View synthesis for dynamic scenes | |
US20230298243A1 (en) | 3d digital avatar generation from a single or few portrait images | |
US11922558B2 (en) | Hybrid differentiable rendering for light transport simulation systems and applications | |
CN116664807A (zh) | 在图像生成系统和应用中使用对齐贴图的纹理转移和合成 | |
US20240203052A1 (en) | Replicating physical environments and generating 3d assets for synthetic scene generation | |
US20240296623A1 (en) | Using machine learning for surface reconstruction in synthetic content generation systems and applications | |
US11783532B1 (en) | View synthesis using attribute correspondences and geometric relationship constraints | |
US20240320993A1 (en) | Scene graph generation for unlabeled data | |
US20240221288A1 (en) | Selecting representative image views for 3d object models in synthetic content creation systems and applications | |
US20240312122A1 (en) | Rendering and composition of neural 3d objects with non-neural assets in content generation systems and applications | |
US20240221242A1 (en) | Using stable diffusion to generate seamless content tile sets in content generation systems and applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |