CN111815642A - 使用神经网络识别图像分割质量 - Google Patents
使用神经网络识别图像分割质量 Download PDFInfo
- Publication number
- CN111815642A CN111815642A CN202010269284.XA CN202010269284A CN111815642A CN 111815642 A CN111815642 A CN 111815642A CN 202010269284 A CN202010269284 A CN 202010269284A CN 111815642 A CN111815642 A CN 111815642A
- Authority
- CN
- China
- Prior art keywords
- segmentation
- training
- image
- mask
- label mask
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
- G06T7/0012—Biomedical image inspection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/143—Segmentation; Edge detection involving probabilistic approaches, e.g. Markov random field [MRF] modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- 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/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
-
- 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/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10072—Tomographic images
- G06T2207/10081—Computed x-ray tomography [CT]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20076—Probabilistic image processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20092—Interactive image processing based on input by user
- G06T2207/20104—Interactive definition of region of interest [ROI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30004—Biomedical image processing
-
- 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/03—Recognition of patterns in medical or anatomical images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Geometry (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Radiology & Medical Imaging (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Biology (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Bioinformatics & Computational Biology (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了使用神经网络识别图像分割质量,具体地,比较逻辑至少部分地基于识别边界来比较一个或更多个图像的特征的边界,耦合到该比较逻辑的指示逻辑用于指示边界是否至少相差第一阈值。该边界可以包括表示图像中对象的边界(其是由分割过程确定的分割中的边界)的第一标签掩码以及来自应用于第一标签掩码的形状评估过程的第二标签掩码。该指示逻辑可以被配置为比较第一标签掩码和第二标签掩码以确定分割的质量。神经网络可以执行分割。使用第一标签掩码作为输入、第二标签掩码作为输出的形状评估可以由变分自动编码器执行。图形处理单元(GPU)可用于该分割和/或自动编码器。
Description
背景技术
在图像处理中,分割是指识别图像元素的边界,例如根据图像中描绘的对象的边界划分图像中的区域。分割过程可以使用经训练的神经网络进行自动边界检测。分割在医学图像处理和其他领域都是很有用的。当遇到不易分割的稀有图像时,自动分割过程可能会失败。有时,使用额外的训练数据对神经网络进行额外的训练可能有助于一些自动分割过程,但在训练数据中可能没有对应项的罕见情况下,它仍然可能失败。因此,很难完全防止分割过程失败。
一种解决方案是也有自动化的质量评估过程。应用贝叶斯神经网络可以捕获分割结果的不确定性,并基于不确定性进行质量评估。然而,这也会受到罕见事件的影响,因为分割过程可能会出错,但对某些罕见事件上的错误仍然要有信心。
附图说明
参照附图来描述各种技术,其中:
图1示出了根据实施例的分割的示例;
图2示出了根据实施例的用于训练神经网络以评估输入图像的分割的系统的图;
图3示出了根据实施例的用于验证待验证的神经网络的系统的图;
图4示出了根据实施例的要针对真值标签掩码训练的变分自动编码器(VAE)的图;
图5示出了在实施例中用于针对分割图像训练分割器以获得图像的标签掩码的过程,以及用于针对真值标签编码训练VAE以评估分割器输出的标签掩码的质量的过程;
图6示出了根据实施例的用于处理图像、生成图像的标签掩码、将标签掩码应用于自动编码器、将标签掩码与自动编码器的输出进行比较以及根据比较的结果采取动作的系统的图;
图7示出了根据实施例的将输入标签掩码编码为潜在表示并将潜在表示解码为输出标签掩码的自动编码器;
图8示出了根据实施例的并行处理单元(“PPU”)的示例;
图9示出了根据一个实施例的通用处理集群(“GPC”)的示例;
图10示出了根据一个实施例的存储器分区单元的示例;
图11示出了根据一个实施例的流式多处理器的示例;
图12示出了根据一个实施例的可以实现各种示例的计算机系统。
具体实施方式
分割是从图像中确定图像中描绘的元素的边界在何处,也可能标记这些对象的过程。人类通常可以很容易地识别图像中一个对象的开始位置和其他对象的结束位置,但是这对于计算机系统来说是一个很难执行的过程。此外,在某些类型的图像中,即使是未经训练的人类也很难辨别对象的边界或图像中对象的存在。例如,计算机断层(“CT”)扫描可以对人体的某些部分进行成像,而专业放射科医生可能会花费大量时间观察、识别和标记CT扫描数据中对象的边界,因此,拥有能够执行这些任务的自动化过程是有益的,尽管在自动分割过程失败的少数情况下会有一些标志、指示或警报。
图1示出了在实施例中的分割的示例,特别示出了分割数据集102,其包括图像104和标签掩码106。这些术语中的每个术语在存储器中表示为存储的计算机可读数据和/或在传输过程中表示为计算机可读数据。在一个实施例中,图像104被拍摄为针对患者腹部的人体三维CT扫描的二维切片,以及标签掩码106经由用户界面通过专业放射科医生手动输入确定的胰腺边界并添加标签以将边界识别为是胰腺而获得。在更复杂的图像中,在一个实施例中,存在CT扫描的多于一个有界元素和相应的标签,并且包括具有不完整边界和其他特征的多个对象。
在一个实施例中,“分割数据集”是指包含图像及其相关标签掩码的数据结构。在一个实施例中,分割系统的一个目标是能够以计算机生成的方式在图像中至少生成对象的边界,以便人类不必在图像中手动输入对象的边界。在一个实施例中,分割数据集的集合包括一个或更多个分割数据集,每个分割数据集包括图像和相关标签掩码。在特定实施例中,标签掩码包括对象的边界、唯一地标识标签掩码中的闭合边界的对象编号、对图像背景的引用以及对象的名称。
在一个实施例中,分割数据集的集合(X,Y)包括计算机可读数据形式的图像的集合X以及相应的标签掩码的集合Y,其中每个标签掩码指示其相应图像的部分或全部分割。在一些实施例中,集合包括标签掩码的分割的标签,而在其他实施例中,标签掩码包括没有分割标签的分割边界。如果图像的标签掩码是由检查图像的人或通过已知的良好过程创建的,则通常称为“真值”或“GT”标签掩码。在一个实施例中,集合(X,Y)包括训练子集合(XT,YT)和验证子集合(XV,YV)。训练子集合具有为真值标签掩码的标签掩码,其可以用来训练神经网络。在一个实施例中,使用验证子集合来测试神经网络,验证子集合还具有为真值标签掩码的标签掩码;验证子集合可用于验证神经网络的训练。
在一个实施例中,作为示例,如果F()指的是分割过程,则通过比较验证子集合的各个分割数据集的F(XV)和YV来测试分割过程的质量。在一个实施例中,经训练的神经网络的输入是图像X,输出可以是F(X)。如果不知道相应的真值标签掩码Y,则F(X)可用作图像X的标签掩码。
在一个实施例中,尽管经过训练,但神经网络仍然可能输出不是图像X的良好分割的标签掩码F(X),这可能是因为图像X的内容很少或出乎意料。在一个实施例中,通过使用用于确定Y的评估的不同过程,该确定可以与F(X)进行比较,以确定分割过程F()是否作用于图像X。如果正确识别出图像X中对象的边界,则单独的过程的输出将接近F(X),F(X)是作为经训练的分割器的一部分的神经网络的输出。在一个实施例中,当所识别出的边界之间存在显著差异(该差异大于经训练的分割器的输出的可接受阈值)时,则向系统的用户提供报警(例如,接口中的通知或改变)。
在一个实施例中,使用第一神经网络处理图像以确定图像的第一分割(例如,至少指示图像中一些对象的边界的标签掩码)。在一个实施例中,第一分割是神经网络以外的输出,但是在本文描述的许多示例中,第一分割是神经网络的输出。标签掩码通过第二神经网络传递,该第二神经网络将标签掩码有效地映射到特征空间。然后,在一个实施例中,该第二神经网络的输出被用于预测或估计该标签掩码中的分割的质量。
在一个实施例中,第二神经网络包括变分自动编码器(“VAE”),其将标签掩码作为其输入,并输出输出标签掩码。自动编码器是神经网络,其包括编码器,该编码器将其输入数据编码为输入数据的压缩形式的潜在表示,并且该神经网络还包括解码器,该解码器将潜在表示和原始输入数据尽可能接近地解码,其中训练该自动编码器包含减少编码器输入和解码器输出之间的差异。在VAE中,在学习过程中,VAE对潜在表示中变量的分布做出了强假设。在其他实施例中,更一般地,本文将VAE描述为正在使用的情况下,使用了全卷积神经网络类型。
在一个实施例中,将第一神经网络产生的第一分割与VAE产生的第二分割进行比较。在一个实施例中,这是使用损失函数来完成的。在另一实施例中,这是使用另一方法来完成的。在一个实施例中,使用已知良好的图像分割来训练第二神经网络。如果比较表明第一分割和第二分割很接近,则第一神经网络很可能工作得很好。如果它们明显不同,那很可能是有问题的。在这种情况下,如果分割是具有用户界面的系统的一部分,则可以输出标记、警告、警报等来警告用户该分割可疑。
关于潜在表示中变量分布的强假设,在一个实施例中,一种方法是将分割结果投影到低维特征空间,然后在该特征空间中使用VAE学习分类器和/或回归器来预测分割结果的质量。在一个实施例中,特征空间使用形状特征来预测给定不同数据集上的不同分割算法的情况下分割结果的质量,该形状特征具有在不同数据之间共享的强先验信息。
在一个实施例中,使用损失函数的值捕获分割结果的形状特征,并使用仅使用真值掩码(即为真值标签掩码的标签掩码)训练的VAE来测试分割结果。因此,坏的分割可能会导致坏的形状,这成为VAE的罕见事件,并将导致巨大的损失值。
在前面和后面的描述中描述了各种技术。为了便于解释,本文阐述了具体的配置和细节,以便全面了解实现这些技术的可能方法。然而,显而易见的是,下面描述的技术可以在没有具体细节的不同配置中实践。此外,可以省略或简化众所周知的特征以避免混淆所描述的技术。
图2示出了根据一个实施例的系统200的图,在其中一个或更多个算术逻辑电路至少部分地使得神经网络被训练以评估输入图像的分割。在一个实施例中,计算实体202(例如计算机系统或计算机服务器)处理图像和标签掩码的训练集合,并生成分割(例如以标签掩码的形式)。在一个实施例中,计算实体202是或包括计算机系统或处理单元,例如结合图8-图12所描述的一个或更多个计算机系统或处理单元。在一个实施例中,计算实体202是包含多个计算机服务器的分布式系统,这些计算机服务器作为生成分割的计算实体一起操作。在一个实施例中,计算实体202是服务器计算机系统、服务器集群、虚拟计算机系统、虚拟服务器、虚拟运行环境、容器环境、无服务器执行环境或服务宿主系统。在一个实施例中,计算实体202是或包括为特定用途或应用而设计的应用特定的集成电路(ASIC)微芯片。在一个实施例中,计算实体可以包括用于稀疏激活、低精度计算、低延迟操作(例如,在实时操作系统(RTOS)计算环境中)、低功耗硬件以及它们的组合的专用电路。在一个实施例中,计算实体202在存储器层次结构中具有相关联的存储器,使得存在更快存储器的区域(例如,寄存器和L1高速缓存)以及较慢存储器的区域(例如,主存储器)。
在一个实施例中,计算实体202用于训练分割系统的分割器,并且包括用于训练集合204的存储器和用于训练输出标签掩码集206的存储器。在一个实施例中,计算实体202实现分割器210,例如,通过执行具有程序指令的程序代码,所述程序代码在被执行时,执行可在训练集合204上训练的神经网络的角色。在计算实体202的操作的一个实施例中,训练集合204包括多个图像和每个图像相应的真值标签掩码,其中训练集合204中的图像的真值标签掩码表示该图像的已知良好的分割,并且可能还表示分割的某些或全部分割的标签。在一个实施例中,对分割器210进行训练,使得其用于训练图像的输出是近似于该图像的真值标签掩码的标签掩码。当输出的训练标签掩码与真值标签掩码匹配不好时,可以向分割器210提供训练反馈以改善输出。
在一个实施例中,图中的各种其它元件可以使用一个或更多个算术逻辑电路、计算机系统或计算机服务器或诸如结合图8-图12所描述的一个或更多个这样的处理单元来实现。例如,在一个实施例中,图3-图7的元件由具有存储器并且能够执行程序指令的计算实体来实现,例如包括多个计算机服务器的分布式系统,这些计算机服务器共同作为生成分割或执行训练的计算实体来操作,在实施例中,计算实体包括服务器计算机系统、服务器集群,虚拟计算机系统、虚拟服务器、虚拟运行环境、容器环境、无服务器执行环境、服务托管系统、为特定用途或应用而设计的应用特定集成电路(ASIC)微芯片和/或用于稀疏激活、低精度计算、低延迟操作(例如,在实时操作系统(RTOS)计算环境中)、低功耗硬件及其组合的专用电路。
图3示出了根据一个实施例的系统300的图,其中一个或更多个算术逻辑电路至少部分地使得经训练的神经网络被验证。在所示的实施例中,计算实体302实现分割数据集的验证集合304,其中验证集合304的图像被应用于经训练的分割器310的输入,经训练的分割器310输出验证集合304的图像的分割。在一个实施例中,比较器312将图像的输出分割与来自验证集合304的标签掩码进行比较,其中这些标签掩码是真值标签掩码,并且输出对输出分割的质量的评估314,这些评估314可用于微调经训练的分割器。
图4示出了实施例中的系统400的图,其中一个或更多个算术逻辑电路至少部分地使变分自动编码器(VAE)针对真值标签掩码404进行训练。在所示的实施例中,计算实体402包括VAE 408,该VAE 408将真值标签掩码404作为其输入并输出输出标签掩码406。在一个实施例中,比较器412比较真值标签掩码404和输出标签掩码406,以确定VAE 408所需的训练反馈。在一个实施例中,训练导致调整VAE 408的层之间的权重和连接,以优化或最小化损失函数。
图5示出了一个实施例中的过程502的说明性示例,该过程502用于针对分割图像训练分割器以得到图像的标签掩码,以及用于针对真值标签掩码训练VAE,以评估分割器输出的标签掩码的质量。在一个实施例中,该过程从应用训练标签掩码集开始(步骤504),所述训练标签掩码包括真值标签掩码或已知是分割的良好示例的其他标签掩码。在一个实施例中,该训练标签掩码集被应用于自动编码器(例如本文中引用的VAE 408),作为自动编码器的输入。如本文所解释的,在一个实施例中,自动编码器将其输入编码为潜在表示,然后将潜在表示解码为自动编码器的输出。接下来,在步骤506,在一个实施例中,训练中的分割器系统比较由自动编码器输出的输出标签掩码与输入到自动编码器的输入标签掩码。在步骤508,对自动编码器进行调节,以减小输入标签掩码和输出标签掩码之间的差异(可以通过损失函数来测量)。一旦完成,在实施例中,自动编码器接收输入标签掩码并输出输出标签掩码。
然后,在步骤510,在实施例中将分割数据集的训练集合(图像及其相应的标签掩码)应用于分割器。由于标签掩码可用于这些分割数据集,因此可以将图像的标签掩码与分割器的输出进行比较(步骤512)。在一个实施例中,训练中的分割器系统然后可以检查(步骤514)训练集合中的标签掩码与分割器的输出是否足够匹配。如果图像不是异常图像,则经过良好训练的分割器可以输出与分割数据集的标签掩码类似的分割数据集中的图像的标签掩码,因此该比较是对分割器是否经过训练的有效测试。
在一个实施例中,如果分割器没有充分调节,则可以提供反馈(步骤520),并且过程返回到步骤510以进行附加训练。在一个实施例中,如果对分割器进行了充分的调节,则该过程可以移动到步骤516,其中验证集合被应用于分割器,并且如果需要(步骤518),可以提供进一步的训练,并且训练过程完成(步骤522)。
图6示出了实施例中的系统600的图,在其中一个或更多个算术逻辑电路至少部分地处理输入图像,生成输入图像的标签掩码,将该标签掩码应用于自动编码器,将该标签掩码与自动编码器的输出进行比较,并根据比较的结果采取动作。在所示的实施例中,计算实体602,例如计算机系统或计算机服务器,包括经训练的分割器604、自动编码器606、比较器608、输入图像610的存储器、标签掩码612的存储器和质量指示符614的存储器。在一个实施例中,自动编码器606包括编码器620、用于潜在表示622的存储器和解码器624。在一个实施例中,自动编码器606是针对形状特征进行训练的变分自动编码器。在一个实施例中,计算实体602可用于多个图像,其中一些图像可以是三维图像,而一些图像可以是二维图像。在一个实施例中,计算实体602是或包括计算机系统或处理单元,例如结合图8-图12所描述的一个或更多个计算机系统或处理单元。
在实施例中,系统600按照图5中描述的用于训练的过程进行操作,然后在操作中,经训练的分割器604接收输入图像610,而不需要关于输入图像610中的对象的标签或分割的真值。在一个实施例中,训练分割器604输出标签掩码612,作为系统600的输出。在一个实施例中,标签掩码612通知用户输入图像610中存在的对象以及这些对象的边界。在一个实施例中,标签掩码612被应用于自动编码器的输入层,该输入层又输出标签掩码形式的自动编码器输出630。在一个实施例中,比较器608将自动编码器输出630与标签掩码612进行比较,并输出质量指示符614。在一个实施例中,质量指示符614可以是作为用户界面的一部分向用户显示的警报、标志、颜色和/或值,以指示标签掩码612是否可能是输入图像610的良好分割。对于不好的分割,自动编码器606的输入和输出不紧密匹配的可能性更大,但是对于良好的分割,它们更可能匹配。在一个实施例中,当自动编码器606在形状特征上被训练时,自动编码器606中的潜在表示很可能表示形状特征。
在一个实施例中,比较器608包括逻辑、通用ALU、固定功能硬件、FPGA等。虽然在图6中示出为单独的组件,但是在一个实施例中,比较器608可以与经训练的分割器604和自动编码器606一起组合实现。例如,专用硬件组件可以处理输入图像,以分割它们并形成标签掩码,通过自动编码器处理标签掩码,并将标签掩码与自动编码器输出进行比较。
图7示出了实施例中的自动编码器702的图,在其中一个或更多个算术逻辑电路至少部分地将输入标签掩码编码为潜在表示,并将潜在表示解码为输出标签掩码。在所示的实施例中,自动编码器702是包括若干层的神经网络,若干层包括与第一隐藏层706耦合的输入层704、第一隐藏层706耦合至潜在层708、潜在层708耦合至第二隐藏层710、第二隐藏层710又耦合至输出层712。在一个实施例中,自动编码器702是或包括计算机系统或处理单元,例如结合图8-图12所描述的一个或更多个计算机系统或处理单元。
具体示例实现
在本节描述的具体示例中,在各种实施例中描述了一种系统,其中,用一组已知良好的标签掩码(标签掩码)训练变分自动编码器,并且变分自动编码器被训练为将每个输入标签掩码编码为潜在表示,然后从该潜在表示解码输出标签掩码,其中训练旨在减少来自编码和解码的损失。潜在表示代表形状特征。
在分割对象的过程中使用形状特征通常在不同情况下提供稳定的形状,特别是在体图像(即与三维图像的体素值相对应的数据)中。形状特征可以为判断分割结果的质量提供强有力的先验(prior)信息,即标签掩码中的不良分割结果往往具有不良形状,反之亦然。如本文所使用的,诸如“形状先验”之类的“先验”是指表示所做的一些假设的数据,例如机器学习的似是而非的形状的先验概念或以其他方式确定的形状的先验概念。
对来自分割掩码空间的形状先验建模比在图像空间中这样做更快、计算更简单,并且可以在不同的数据集之间共享形状先验,而图像强度等特征受许多因素的影响。这意味着形状特征不仅可以处理罕见的事件,而且可以处理图像空间中不同的数据分布,在传递学习中可以提供很好的泛化和潜力。在一个实施例中,VAE用于捕获形状特征。在一个实施例中,针对真值标签掩码训练VAE,然后当使用VAE网络进行测试时,计算损失函数的值,作为分割结果的形状特征。在一个实施例中,在VAE被训练之后,具有不良形状的不良分割结果对于VAE来说是罕见的事件,因为它仅使用真值标签(已知的处于正态形状分布下的良好标签掩码)来训练。因此,它们将有更大的损失值。从这个意义上说,分割系统利用了这样一个事实,即学习过程会在罕见的事件上执行糟糕。形式上讲,在训练过程中,损失函数(称为变分下界)可以被优化以近似于函数logP(Y)。因此在训练后,给定分割结果的情况下损失函数的值接近因此是形状特征的良好定义。
在一个实施例中,基于VAE的质量检查系统输出到报警系统以发出不良分割的信号。在另一实施例中,响应于检测到不良分割而采取其它步骤。利用这些系统可以很好地预测分割结果的质量。在一个实施例中,为了验证报警系统的有效性,在多个分割过程上对其进行测试。这些分割过程可以在一个数据集上进行训练,并在其他若干数据集上进行测试,以模拟罕见事件发生时的情况。
要定义部分过程的逻辑,将数据集表示为(X,Y),其中X是图像集,Y是X的标签掩码,即X中图像的已知良好(真值)分割的标签掩码。数据集(X,Y)可分为训练集(XT,YT)和验证集合(XV,YV)。这里,F()是指针对X训练的分割过程。在一个实施例中,使用YV来评估F在XV上的性能,但是如本文所解释的,在一个实施例中,分割系统可以在不需要YV的情况下评估。形式上,训练系统试图找到函数L,从而满足方程1。
Λ(F(X),Y)=L(F,X;ω) (方程1)
在方程1中,Λ是函数,用于计算分割结果F(X)相对于真值Y的相似性,即F(X)的质量。当X是罕见的事件时,可能会发生失败。但是由于图像空间结构的复杂性,很难检测出图像X是否在训练数据的分布范围内,而这正是F被训练为所要学习的。F的性质可以通过采样F的参数并计算输出的不确定性来进行编码,这种不确定性确实有助于预测质量,但其性能强烈依赖于F。它要求F具有贝叶斯结构,但良好训练的F不需要如此约束。不确定性主要分布在分割预测的边界上。添加该约束会将方程1更改为方程2。
Λ(F(X),Y)=L(F(X);ω) (方程2)
在一个实施例中,通过添加该约束,使用来自F和X的信息,但不直接使用。特定的过程可以使用两步方法,其中第一步是将分割结果F(X)编码到特征空间,第二步是从特征空间学习以预测F(X)的质量。形状特征可以从F(X)捕获,这里表示为S(F(X);θ)。在这种情况下,方程2变成方程3。
Λ(F(X),Y)=L(S(F(X);θ);ω) (方程3)
采用变分自动编码器的形状特征
在一个实施例中,形状特征从用真值掩码Y∈YT训练的VAE捕获,分割掩码的形状作为掩码在体形式中的分布。假设正态标记Y服从某分布P(Y),对于预测掩码其质量应与有关。在一个实施例中,分割系统估计函数P(Y)。因为使用了VAE,所以发现了估计函数Q(z),它最小化了Q(z)和P(z|Y)之间的差,其中z是Y编码到的潜在空间的变量,如方程4所示进行优化。
KΛ[Q(z)||P(z|Y)]=Ez~Q[log Q(z)-log P(z|Y)] (方程4)
在方程4中,KΛ是Kullback-Leibler散度。用Q(z|Y)代替Q(z)并重新排列项,最后导出为VAE的核心方程,如方程5所示。
log P(Y)-KΛ[Q(z|Y)||P(z|Y)]=Ez~Q[log P(Y|z)]-KΛ[Q(z|Y)||P(z)] (方程5)
在方程5中,P(z)是为z选择的先验分布,通常是高斯分布,并且在实施例中,Q(z|Y)、P(Y|z)分别对应于编码器和解码器。一旦给定Y,log P(Y)就是常数。因此,通过优化方程5的右边logP(Y)的变分下界,这优化了KΛ[Q(z)||P(z|Y)]。在一个实施例中,关注量是P(Y)。通过将方程5左侧的第二项与方程(5)右侧的所有项进行交换,得到方程6,其显示了训练过程最小化了那里的数量。
在方程6中,为了简洁起见,Ez~Q[log P(Y|z)]+KΛ[Q(z|Y)||P(z)]被表示为S(Y;θ)。如方程6所示,在一个实施例中,训练过程实际上正在学习函数,以使log P(Y)在Y的分布上最佳拟合。在一个实施例中,在训练VAE之后,S(Y;θ)成为log P(Y)的自然近似。因此,在一个实施例中,S(Y;θ)可以用作形状特征的代表。
在一个实施例中,当训练VAE时使用Dice损失函数,该函数对于医学分割任务有用。在一个实施例中,S的最终形式如方程7所示。
在一个实施例中,方程7的编码器μ、∑和解码器g由θ控制,并且λ是平衡这两个项的系数。第一项是Dice在Y和g(z)之间的系数,范围从0到1,如果Y=g(z),则等于1。在一个实施例中,代表方程7的形状特征S(Y;θ)指示在使用仅具有正态形状的数据训练VAE之后,如果预测掩码能够获得较小的重建误差并且更接近潜在空间中的先验分布,则预测掩码倾向于在正态形状分布中的可能性更大,因为始终保持另一方面,对于高但低的情况,它会给目标函数带来很大的惩罚(见方程6),并且对于良好训练的VAE,发生这种情况的可能性较小。
利用形状特征预测质量
在一个实施例中,形状特征通常好到足以进行可靠的质量评估。一个原因是,对于分割结果F(X),log P(F(X))越高,形状F(X)越好,因此L(F(X),Y)越高。在一个实施例中,形式上,利用从VAE捕获的形状特征,分割系统可以通过根据方程8拟合函数L来预测分割的质量。
L(F(X),Y)=L(S(F(X);θ);ω) (方程8)
在一个实施例中,通过使用训练数据YT中的标签训练VAE,来学习方程8中的参数θ,然后在第二步中固定。在一个实施例中,选择函数L作为简单的线性模型,在这种情况下,分割系统优化的能量函数如方程9所示。
E(S(F(X);θ);a,b)=||aS(F(X);θ)+b-L(F(X),Y)||2 (方程9)
在一个实施例中,使用线性回归模型,并且在形状特征和分割结果的质量之间显示出强线性相关性。在方程8和9中,L是Dice的系数,如方程10所示。
训练过程
在一个实施例中,在训练过程的第一步中,仅使用训练数据中的标签来训练VAE。然后,在一个实施例中,在训练过程的第二步中,θ是固定的。在一个实施例中,为了学习a、b,一种方法是使用训练数据上的分割结果优化方程9的能量函数,如方程11所示。
在一个实施例中,分割系统用于学习a、b的分割过程F在此被称为“准备过程”。在一个实施例中,如果F在XT上训练,则F(X)的质量被期望总是很高,从而提供较少的信息来回归a、b。为了克服这一点,在一个实施例中,分割系统对XT上的F使用刀切(jackknifing)训练策略,其中并非所有的XT都在开始时使用。在一个实施例中,该过程包括首先将XT划分为XT 1和XT 2,然后分别在XT\XT 1和XT\XT 2上训练F的两个版本,例如F1和F2。在一个实施例中,然后将优化函数改为方程12的优化函数。
在一个实施例中,利用上述过程,分割系统可以通过在测试集上模拟F的性能来解决上述问题。在一个实施例中,准确的方法是对F进行“留一(leave-one-out)”训练,但是如果时间消耗不可接受,则两折(two-fold)分离(XT被分成两个大小相等的子样本,一个用于训练,一个用于验证)足够有效。在一个实施例中,当训练完成时,可以使用分割算法F和数据X来测试经训练的分割器,以使用方程13的质量度量来预测质量。
Q=aS(F(X);θ)+b (方程13)
如现在所描述的,在一个实施例中,分割系统获得对分割结果的质量的可靠预测。在一个实施例中,当在其他数据集上测试分割过程时,可以使用报警系统,与基于不确定性的方法、直接回归方法和其他方法相比,其具有良好的质量评估能力和可传递性。
对来自公共医疗数据集的图像进行测试,这些数据集包括门静脉期的三维腹部CT图像,每个图像中都完整注释了胰腺区域。CT扫描的分辨率为512×512×h体素,体素大小不一。在一个实施例中,替代使用其它图像或除此以外,并且本文中引用的过程还可用于医疗图像以外的其它图像。用于测试的公共医疗数据集包括NIH胰腺CT数据集(NIH)、医学分割十项全能(MSD)和多图谱标记挑战(MLC)。
NIH胰腺CT数据集(NIH)包括来自53名男性和27名女性受试者的82个腹部三维CT扫描(Roth等人,2015年)。受试者由放射科医生从没有重大腹部病理或胰腺癌灶的患者中选择。医学分割十项全能(MSD)收集了斯隆·凯特林癌症中心纪念馆(Memorial SloanKettering Cancer Center)的420个腹部三维CT扫描(281个训练扫描和139个测试扫描)。每个受试者都有胰腺区域内的癌灶。多图谱标记挑战(MLC)提供随机从正在进行的结直肠癌化疗试验和回顾性腹疝研究的组合中选择的50个腹部CT扫描(30个训练,20个测试)。
在一个实施例中,示例分割过程可以包括V-Net(Milletari等人,2016)、3DCoarse2Fine(Zhu等人,2018)、Deeplabv3(Chen等人,2018)和具有贝叶斯结构的3DCoarse2Fine(Kwon等人,2018)。前两个是基于3D网络的,而Deeplab是基于2D的。在一个实施例中,具有贝叶斯结构的3D Coarse2Fine被用于与基于不确定性的方法进行比较,然后将其表示为贝叶斯神经网络(BNN)。
对于数据预处理,由于每个病例的体素大小不同,这会影响胰腺的形状和分割的预测,因此测试包括将所有CT扫描和注释掩码(annotation mask)的体素大小重采样到1mm立方体体素的步骤。为了训练VAE,在注释掩码上应用简单的对齐。使用立方体包围盒(bounding box),其足够大以容纳整个胰腺区域,并以胰腺质心为中心。体和标签掩码被裁剪掉,并将其大小调整为128×128×128体素的固定大小。对于这些测试用例,简单的对齐方式是有效的,因为在进行CT扫描时,人体姿势通常是固定的,例如,这样器官就不会旋转或严重变形。对于分割预测,测试还裁剪预测前景并将其大小调整为128×128×128体素,并将其馈入VAE以捕获形状特征,类似于图6所示。如本文所使用的,“注释掩码”可以指代包含真值细节的标签掩码或代替其使用。在对图像进行检查后,可以从手动输入中获得真值细节。
在一个实施例中,在训练过程期间,沿着x、y和z轴分别旋转-10度、0度和10度以及在注释掩码上随机平移小于5个体素被用作数据增强。这种轻微的干扰可以增强数据分布,同时保持注释掩码的对齐性质。在一个实施例中,包含VAE中的潜在表示的潜在空间的合适维度可以是128。在质量评估方面,具有不同维度的潜在空间的VAE可能具有不同的能力。在一个实施例中,将VAE的目标函数中的超参数λ设置为λ=2-5,以平衡Dice损失的小值和大KL发散。在测试实施例中,网络由批大小为4的SGD优化器进行训练,用于训练VAE的学习率固定为0.1。在一个实施例中,可以使用TensorFlow构建框架和其他基线模型,并在nVidiaTesla V100 GPU上运行实验。在一个例子中,第一个训练步骤在20000次迭代中完成,大约在5小时内完成。
在一个实施例中,在训练之后,分割系统可用于分割,并且经训练的分割器的输出被提供给VAE用于质量评估。VAE可以预测分割结果的质量,而不需要使用真值掩码。形状特征有助于预测分割结果的质量。为了捕获形状特征,在一个实施例中,VAE仅使用真值掩码进行训练,并且依赖于稀有事件将获得更大的损失函数值,并且在测试时间内根据损失函数值成功地检测出分布不足(out-of-distribution)的形状。
如上所述,实施例中的分割系统包括经训练的分割器,该经训练的分割器接收图像并确定分割,该分割可作为标签掩码输出。在一个实施例中,在形状特征上训练的自动编码器将该标签掩码作为其输入,并输出在自动编码器将标签掩码编码为潜在表示然后解码该潜在表示时形成的结果标签掩码。在一个实施例中,当分割良好时,在自动编码过程中损失较少,当分割不良时损失较多,其中分割的质量表示图像中对象的边界被正确识别的良好程度。在一个实施例中,比较器检查图像中的对象之间的边界是否通过自动编码器对其输入的输出被正确识别。如果正确识别出图像中对象的边界,这些边界将接近自动编码器的输出。当从自动编码器的输出中识别出的边界之间的显著差异超过可接受的阈值时,可以向系统的用户提供警报(例如,接口中的通知或更改)。
在特定实施例中,图像使用第一神经网络进行处理以确定图像的第一分割(即,指示图像中对象的边界的输出),而在除神经网络之外的其他实施例中用于分割。在一个实施例中,分割通过变分自动编码器(VAE)来传递,以获得第二分割。在一个实施例中,比较第一分割和第二分割,这可以使用损失函数来完成。如果比较显示第一和第二分割很接近,那么分割器可能工作得很好。如果它们明显不同,那可能是有问题的。在一个实施例中,使用已知为良好分割的图像的分割来训练自动编码器。在阅读本文的描述时,其他实施例可以是显而易见的。
图8示出了根据一个实施例的并行处理单元(“PPU”)800。在一个实施例中,使用机器可读代码配置PPU 800,如果由PPU执行该代码,则使PPU执行贯穿本公开描述的部分或全部过程和技术。在一个实施例中,PPU 800是多线程处理器,它在一个或更多个集成电路设备上实现,并利用多线程作为延迟隐藏技术,其被设计为并行地处理多个线程上的计算机可读指令(也称为机器可读指令或简单地称为指令)。在一个实施例中,线程指执行的线程,且是被配置为由PPU 800执行的指令集的实例。在一个实施例中,PPU 800是图形处理单元(“GPU”),被配置成实现用于处理三维(“3D”)图形数据的图形渲染管线,以便生成二维(“2D”)图像数据,用于在显示设备上显示,诸如液晶显示(LCD)设备。在一个实施例中,PPU800用于执行诸如线性代数运算和机器学习运算的计算。图8示出了仅用于说明目的的示例性并行处理器,并且应被解释为本公开的范围内设想的处理器架构的非限制性示例,并且可以使用任何合适的处理器来补充和/或替代该处理器。
在一个实施例中,一个或更多个PPU被配置为加速高性能计算(HPC)、数据中心和机器学习应用程序。在一个实施例中,PPU 800被配置为加速深度学习系统和应用程序,包括以下非限制性示例:自主汽车平台、深度学习、高精度语音、图像、文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断,天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
在一个实施例中,PPU 800包括输入/输出(“I/O”)单元806、前端单元810、调度器单元812、工作分配单元814、集线器816、交叉开关(“Xbar”)820、一个或更多个通用处理集群(“GPC”)818和一个或更多个分区单元822。在一个实施例中,PPU 800通过一个或更多个高速GPU互连808连接到主机处理器或其他PPU 800。在一个实施例中,PPU 800通过互连802连接到主机处理器或其他外围设备。在一个实施例中,PPU 800连接到包括一个或更多个存储器设备804的本地存储器。在一个实施例中,本地存储器包括一个或更多个动态随机存取存储器(“DRAM”)设备。在一个实施例中,一个或更多个DRAM设备被配置为和/或可配置为高带宽存储器(“HBM”)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。
高速GPU互连808可以指基于线的多通道通信链路,其由系统使用以扩展并且包括与一个或更多个CPU结合的一个或更多个PPU800,支持PPU 800与CPU之间的高速缓存一致性,以及CPU主控。在一个实施例中,数据和/或命令由高速GPU互连808经由集线器816发送到PPU 800的其它单元/从PPU 800的其它单元发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元和其它在图8中可能未明确示出的组件。
在一个实施例中,I/O单元806被配置成通过系统总线802从主机处理器(图8中未示出)发送和接收通信(例如命令、数据)。在一个实施例中,I/O单元806经由系统总线802直接与主机处理器通信或通过一个或更多个中间设备(例如存储器桥)与主机处理器通信。在一个实施例中,I/O单元806可经由系统总线802与一个或更多个其它处理器(例如一个或更多个PPU 800)通信。在一个实施例中,I/O单元806实现外围组件互连快速(“PCIe”)接口以用于通过PCIe总线通信。在一个实施例中,I/O单元806实现用于与外部设备通信的接口。
在一个实施例中,I/O单元806对经由系统总线802接收的分组进行解码。在一个实施例中,至少一些分组表示被配置成使PPU 800执行各种操作的命令。在一个实施例中,I/O单元806将解码的命令发送到由命令指定的PPU 800的各种其它单元。在一个实施例中,命令被发送到前端单元810和/或发送到集线器816或PPU 800的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(图8中未明确示出)。在一个实施例中,I/O单元806被配置成在PPU 800的各个逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序编码缓冲区中的命令流,缓冲区将工作负载提供给PPU 800进行处理。在一个实施例中,工作负载包括由这些指令处理的指令和数据。在一个实施例中,缓冲区是存储器中可被主机处理器和PPU 800两者访问(例如,读/写)的区域,主机接口单元可被配置成经由I/O单元806通过系统总线802发送的存储器请求来访问连接到系统总线802的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后将指向命令流开始的指针发送到PPU 800,使得前端单元810接收指向一个或更多个命令流的指针并管理一个或更多个命令流,从流读取命令并将命令转发到PPU 800的各个单元。
在一个实施例中,前端单元810耦合到调度器单元812,调度器单元812配置各个GPC 818以处理由一个或更多个流定义的任务。在一个实施例中,调度器单元812被配置成跟踪与调度器单元812管理的各种任务相关的状态信息,其中状态信息可以指示任务被分配给哪个GPC 818、任务是活动的还是不活动的、与任务相关联的优先级等等。在一个实施例中,调度器单元812管理多个任务在一个或更多个GPC 818上的执行。
在一个实施例中,调度器单元812耦合到工作分配单元814,工作分配单元814被配置成分派任务以在GPC 818上执行。在一个实施例中,工作分配单元814跟踪从调度器单元812接收到的多个调度任务,并且工作分配单元814为每个GPC 818管理待处理(pending)任务池和活动任务池。在一个实施例中,待处理任务池可以包括若干时隙(例如,32个时隙),其包含分配给特定GPC 818处理的任务;活动任务池可以包括若干时隙(例如,4个时隙),用于正在由GPC818主动处理的任务,使得当GPC 818完成任务的执行时,该任务从GPC 818的活动任务池中被逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 818上执行。在一个实施例中,如果活动任务在GPC 818上空闲,例如在等待数据依赖性被解决时,则活动任务从GPC 818中被逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 818上执行。
在一个实施例中,工作分配单元814经由XBar 820与一个或更多个GPC 818通信。在一个实施例中,XBar 820是将PPU 800的许多单元耦合到PPU 800的其他单元的互连网络,并且可以被配置为将工作分配单元814耦合到特定GPC 818。尽管未明确示出,PPU 800的一个或更多个其它单元也可以经由集线器816连接到XBar 820。
这些任务由调度器单元812管理,并由工作分配单元814分派给GPC 818。GPC 818被配置为处理任务并生成结果。结果可被GPC818内的其它任务消耗、经由XBar 820路由到不同的GPC 818或存储在存储器804中。结果可以经由分区单元822写入存储器804,分区单元822实现用于从/向存储器804读写数据的存储器接口。结果可经由高速GPU互连808发送到另一PPU 804或CPU。在一个实施例中,PPU 800包括数量为U个分区单元822,其等于耦合到PPU 800的独立且不同的存储器设备804的数量。下面将结合图10更详细地描述分区单元822。
在一个实施例中,主机处理器执行实现应用程序编程接口(“API”)的驱动内核,该API使在主机处理器上执行的一个或更多个应用程序能够调度操作以在PPU 800上执行。在一个实施例中,PPU 800同时执行多个计算应用程序,以及PPU 800为多个计算应用程序提供隔离、服务质量(“QoS”)和独立的地址空间。在一个实施例中,应用程序生成指令(例如,以API调用的形式),其使得驱动内核生成一个或更多个任务以供PPU 800执行,并且驱动内核将任务输出到PPU 800正在处理的一个或更多个流。在一个实施例中,每个任务包括一个或更多个相关线程组,这些相关线程组可以称为线程束(warp)。在一个实施例中,线程束包括可并行执行的多个相关线程(例如,32个线程)。在一个实施例中,协作线程可以指多个线程,其包括执行任务的指令以及通过共享存储器交换数据的指令。根据一个实施例,结合图10更详细地描述了线程和协作线程。
图9示出了根据一个实施例的GPC 900,例如图8的PPU 800示出的GPC。在一个实施例中,每个GPC 900包括用于处理任务的多个硬件单元,并且每个GPC 900包括管线管理器902、预光栅操作单元(“PROP”)904、光栅引擎908、工作分配交叉单元(“WDX”)916、存储器管理单元(“MMU”)918、一个或更多个数据处理集群(“DPC”)906以及任何合适的部分的组合。应当理解,图9的GPC900可以包括代替或附加于图9所示的单元的其他硬件单元。
在一个实施例中,GPC 900的操作由管线管理器902控制。管线管理器902管理一个或更多个DPC 906的配置以用于处理分配给GPC 900的任务。在一个实施例中,管线管理器902配置一个或更多个DPC 906中的至少一个以实现图形渲染管线的至少一部分。在一个实施例中,DPC 906被配置成在可编程流式多处理器(“SM”)914上执行顶点着色程序。在一个实施例中,管线管理器902被配置成将从工作分配接收的分组路由到GPC 900内的适当逻辑单元,并且一些分组可以被路由到PROP 904和/或光栅引擎908中的固定功能硬件单元,而其他分组可以被路由到DPC 906以供图元引擎912或SM 914处理。在一个实施例中,管线管理器902配置一个更或多个DPC 906中的至少一个以实现神经网络模型和/或计算管线。
在一个实施例中,PROP单元904被配置成将由光栅引擎908和DPC 906生成的数据路由到存储器分区单元中的光栅操作(“ROP”)单元,如上文详细描述的。在一个实施例中,PROP单元904被配置成执行颜色混合的优化、组织像素数据、执行地址转换等。在一个实施例中,光栅引擎908包括被配置为执行各种光栅操作的若干固定功能硬件单元,并且光栅引擎908包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和图块聚合引擎及上述引擎的任意适当组合。在一个实施例中,设置引擎接收变换后的顶点并生成与由顶点定义的几何图元相关联的平面方程,该平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩码);粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。在一个实施例中,那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。在一个实施例中,光栅引擎908的输出包括由任何合适实体处理的片段,例如由在DPC 906中实现的片段着色器处理的片段。
在一个实施例中,包括在GPC 900中的每个DPC 906包括M管道控制器(“MPC”)910、图元引擎912、一个或更多个SM 914以及它们的任何适当组合。在一个实施例中,MPC 910控制DPC 906的操作,将从管线管理器902接收到的分组路由到DPC 906中的适当单元。在一个实施例中,与顶点相关联的分组被路由到图元引擎912,图元引擎912被配置为从存储器中获取与顶点相关联的顶点属性;相反,与着色器程序相关联的分组可以被发送到SM 914。
在一个实施例中,SM 914包括被配置为处理由多个线程表示的任务的可编程流式处理器。在一个实施例中,SM 914是多线程的,并且被配置为同时执行来自特定线程组的多个线程(例如32个线程)并且实现SIMD(单指令,多数据)体系结构,其中一组线程(线程束)中的每个线程配置为基于同一指令集处理不同的数据集。在一个实施例中,线程组中的所有线程执行相同的指令。在一个实施例中,SM 914实现了SIMT(单指令,多线程)体系结构,其中线程组中的每个线程被配置为基于同一指令集处理不同的数据集,但是在执行期间允许线程组中的各个线程发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个个体线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。在一个实施例中,为每个个体线程维护执行状态,并且执行相同指令的线程可以被收敛和并行执行以获得最大效率。在一个实施例中,下面更详细地描述SM 914。
在一个实施例中,MMU 918提供GPC 900和存储器分区单元之间的接口,MMU 918提供虚拟地址到物理地址的转换、存储器保护和存储器请求的仲裁。在一个实施例中,MMU918提供一个或更多个转换后备缓冲区(“TLB”),用于执行虚拟地址到存储器中的物理地址的转换。
图10示出了根据一个实施例的PPU的存储器分区单元。在一个实施例中,存储器分区单元1000包括光栅操作(“ROP”)单元1002、二级(“L2”)高速缓存1004、存储器接口1006以及它们的任何适当组合。存储器接口1006耦合到存储器。存储器接口1006可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU包括U个存储器接口1006,每对分区单元1000一个存储器接口1006,其中每对分区单元1000连接到相应的存储器设备。例如,PPU可以连接到多达Y个存储器设备,例如高带宽存储器堆叠或图形双数据速率、版本5、同步动态随机存取存储器(“GDDR5SDRAM”)。
在一个实施例中,存储器接口1006实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠与PPU位于同一物理封装上,与传统GDDR5 SDRAM系统相比提供了大量的功率和面积节省。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器支持单纠错、双检错(“SECDED”)纠错码(“ECC”)以保护数据。对于数据损坏敏感的计算应用程序,ECC提供了更高的可靠性。在大规模集群计算环境中,PPU处理非常大的数据集和/或长时间运行应用程序的情况下,可靠性尤其重要。
在一个实施例中,PPU实现了多级存储器层次。在一个实施例中,存储器分区单元1000支持统一存储器,以便为CPU和PPU存储器提供单个统一的虚拟地址空间,从而在虚拟存储器系统之间实现数据共享。在一个实施例中,跟踪PPU对位于其它处理器上的存储器的访问频率,以确保存储器页被移动到更频繁地访问页的PPU的物理存储器。在一个实施例中,高速GPU互连808支持地址转换服务,允许PPU直接访问CPU的页表,并提供由PPU对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU之间或PPU和CPU之间传输数据。在一个实施例中,复制引擎可以为未映射到页表中的地址生成页故障,然后存储器分区单元1000服务该页故障,将地址映射到页表中,然后复制引擎执行传输。在一个实施例中,针对多个处理器之间的多个复制引擎操作固定存储器(即,不可分页),实质上减少了可用存储器。在一个实施例中,随着硬件页出错,地址可以被传递到复制引擎,而不考虑存储器页是否驻留,并且复制过程是透明的。
根据一个实施例,来自图8的存储器或其他系统存储器的数据由存储器分区单元1000获取并存储在位于芯片上并且在各个GPC之间共享的L2高速缓存1004中。在一个实施例中,每个存储器分区单元1000包括与相应的存储器设备相关联的L2高速缓存960的至少一部分。在一个实施例中,在GPC内的各个单元中实现较低级缓存。在一个实施例中,SM1040中的每一个可以实现一级(“L1”)高速缓存,其中L1高速缓存是专用于特定SM 1040的专用存储器,并且来自L2高速缓存1004的数据被提取并存储在每个L1高速缓存中以在SM1040的功能单元中处理。在一个实施例中,L2高速缓存1004耦合到存储器接口1006和XBar820。
在一个实施例中,ROP单元1002执行与像素颜色相关的图形光栅操作,例如颜色压缩、像素混合等。在一个实施例中,ROP单元$$50与光栅引擎1025一起实现深度测试,从光栅引擎1025的剔除引擎接收与像素片段相关联的样本位置的深度。在一个实施例中,测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。在一个实施例中,如果片段通过了对样本位置的深度测试,则ROP单元1002更新深度缓冲区并将深度测试的结果发送到光栅引擎1025。应当理解,分区单元1000的数目可以不同于GPC的数目,因此,在一个实施例中,每个ROP单元1002可以耦合到每个GPC。在一个实施例中,ROP单元1002跟踪从不同GPC接收的分组,并确定由ROP单元1002生成的结果经由Xbar路由到哪个GPC。
图11示出了根据一个实施例的流式多处理器,例如图9的流式多处理器。在一个实施例中,SM 1100包括:指令高速缓存1102;一个或更多个调度器单元1104;寄存器文件1108;一个或更多个处理核心1110;一个或更多个特殊功能单元(“SFU”)1112;一个或更多个加载/存储单元(“LSU”)1114;互连网络1116;共享存储器/L1高速缓存1118以及其任何合适的组合。在一个实施例中,工作分配单元分派任务以在PPU的GPC上执行,并且每个任务被分配给GPC内的特定DPC,并且如果该任务与着色器程序相关联,则该任务被分配给SM1100。在一个实施例中,调度器单元1104从工作分配单元接收任务并管理针对指派给SM1100的一个或更多个线程块的指令调度。在一个实施例中,调度器单元1104将用于执行的线程块调度为并行线程的线程束,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行线程。在一个实施例中,调度器单元1104管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期中将来自多个不同协作组的指令分派给各个功能单元(例如,核心1110、SFU 1112和LSU 1114)。
协作组可以指用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。在一个实施例中,协作启动API支持线程块之间的同步性,以执行并行算法。在一个实施例中,常规的编程模型的应用程序为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide functioninterface)的形式使能更高的性能、设计灵活性和软件重用。协作组使程序员能够以子块(即,小到单个线程)和多块粒度明确地定义线程组,并对协作组中的线程执行集体操作(如同步)。该编程模型支持跨软件边界的干净组合,因此库和实用程序函数可以在其本地上下文中安全地同步,而无需对收敛性进行假设。协作组图元支持协作并行新的模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
在一个实施例中,分派单元1106被配置成向一个或更多个功能单元发送指令,并且调度器单元1104包括两个分派单元1106,使得在每个时钟周期期间能够分派来自同一线程束的两个不同指令。在一个实施例中,每个调度器单元1104包括单个分派单元1106或附加分派单元1106。
在一个实施例中,每个SM 1100包括寄存器文件1108,该寄存器文件为SM 1100的功能单元提供一组寄存器。在一个实施例中,在每个功能单元之间划分寄存器文件1108,使得每个功能单元被分配寄存器文件1108的专用部分。在一个实施例中,寄存器文件1108在SM 1100正在执行的不同线程束之间划分,并且寄存器文件1108为连接到功能单元的数据路径的操作数提供临时存储。在一个实施例中,每个SM 1100包括多个L个处理核心1110。在一个实施例中,SM 1100包括大量(例如,128个或更多)不同的处理核心1110。在一个实施例中,每个核心1110包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点算术逻辑单元和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的IEEE754-2008标准。在一个实施例中,核心1110包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心。
根据实施例,张量核心被配置成执行矩阵运算。在一个实施例中,一个或更多个张量核心被包括在核心1110中。在一个实施例中,张量核心被配置成执行深度学习矩阵算法,例如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心对4x4矩阵进行运算,并执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4x4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,累积矩阵C和D是16位浮点或32位浮点矩阵。在一个实施例中,张量核心对16位浮点输入数据和32位浮点累积进行运算。在一个实施例中,16位浮点乘法需要64次运算,并产生全精度乘积,然后使用32位浮点加法与用于4x4x4矩阵乘法的其他中间乘积进行累加。在一个实施例中,张量核心用于执行由这些较小元素构建的更大的二维或更高维矩阵运算。在一个实施例中,API(如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加运算以及矩阵存储操作,以有效地使用来自CUDA-C++程序的张量核心。在一个实施例中,在CUDA层面,线程束级接口假定跨越线程束的全部32个线程的16×16大小矩阵。
在一个实施例中,每个SM 1100包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 1112。在一个实施例中,SFU 1112包括被配置成遍历层次树数据结构的树遍历单元。在一个实施例中,SFU 1112包括被配置成执行纹理映射过滤操作的纹理单元。在一个实施例中,纹理单元被配置成从存储器中加载纹理贴图(例如,2D纹理像素数组),并对纹理贴图进行采样以产生经采样的纹理值,以用于SM 1100执行的着色器程序中。在一个实施例中,纹理映射被存储在共享存储器/L1高速缓存中。根据一个实施例,纹理单元实现纹理操作,例如使用mip映射(例如,不同细节水平的纹理映射)的过滤操作。在一个实施例中,每个SM 1100包括两个纹理单元。
在一个实施例中,每个SM 1100包括N个LSU 1054,其实现共享存储器/L1高速缓存1006和寄存器文件1108之间的加载操作和存储操作。在一个实施例中,每个SM 1100包括将每个功能单元连接到寄存器文件1108以及将LSU 1114连接到寄存器文件1108、共享存储器/L1高速缓存1118的互连网络1116。在一个实施例中,互连网络1116是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件1108中的任何寄存器,以及将LSU 1114连接到寄存器文件和共享存储器/L1高速缓存1118中的存储器位置。
在一个实施例中,共享存储器/L1高速缓存1118是片上存储器阵列,其允许SM1100与图元引擎之间以及SM 1100中的线程之间的数据存储和通信。在一个实施例中,共享存储器/L1高速缓存1118包括128KB的存储容量,并且位于从SM 1100到分区单元的路径中。在一个实施例中,共享存储器/L1高速缓存1118用于高速缓存读和写。共享存储器/L1高速缓存1118、L2高速缓存和存储器中的一个或更多个正在备份存储。
在一个实施例中,将数据高速缓存和共享存储器功能结合到单个存储器块中为两种类型的存储器访问提供了改进的性能。在一个实施例中,该容量可由不使用共享存储器的程序用作或可用作高速缓存,例如,如果共享存储器被配置为使用一半的容量,则纹理和加载/存储操作可以使用剩余的容量。根据实施例,在共享存储器/L1高速缓存1118内的集成使得共享存储器/L1高速缓存1118能够作为流数据的高吞吐量管线来工作,同时提供对频繁重复使用的数据的高带宽和低延迟访问。当配置为通用并行计算时,与图形处理相比,可以使用更简单的配置。在一个实施例中,绕过了固定功能的图形处理单元,创建了更简单的编程模型。在一个实施例中,在通用并行计算配置中,工作分配单元将线程块直接指派和分配给DPC。根据一个实施例,块中的线程执行相同的程序,在计算中使用唯一的线程ID以确保每个线程生成唯一的结果,使用SM 1100执行程序并执行计算,使用共享存储器/L1高速缓存1118以在线程之间通信,以及使用LSU 1114通过共享存储器/L1高速缓存1118和存储器分区单元读写全局存储器。在一个实施例中,当被配置用于通用并行计算时,SM 1100写入调度器单元可用于在DPC上启动新工作的命令。
在一个实施例中,PPU包括在台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(“PDA”)、数字相机、车辆、头戴式显示器、手持电子设备等中或与之耦合。在一个实施例中,PPU设置在单个半导体衬底上。在一个实施例中,PPU与一个或更多个其它设备(诸如附加PPU、存储器、精简指令集计算机(“RISC”)CPU、存储器管理单元(“MMU”)、数模转换器(“DAC”)等)一起包括在片上系统(“SoC”)中。
在一个实施例中,PPU可以包括在包括一个或更多个存储器设备的图形卡上。图形卡可以配置为与台式计算机的主板上的PCIe插槽接口。在又一实施例中,PPU可以是包括在主板的芯片集中的集成图形处理单元(“iGPU”)。
图12示出了根据一个实施例的可以在其上实现各种架构和/或功能的计算机系统1200。在一个实施例中,计算机系统1200被配置成实现贯穿本公开所描述的各种过程和方法。
在一个实施例中,计算机系统1200包括至少一个中央处理单元1202,所述中央处理单元1202连接到使用任何合适协议实现的通信总线1210,例如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输(HyperTransport)或任何其他总线或点对点通信协议。在一个实施例中,计算机系统1200包括主存储器1204,控制逻辑(例如,以硬件、软件或其组合实现)和存储在主存储器1204中的数据,主存储器1204可以采用随机存取存储器(“RAM”)的形式。在一个实施例中,网络接口子系统1222提供到其他计算设备和网络的接口,用于从计算机系统1200中的其他系统接收数据以及将数据发送到该其他系统。
在一个实施例中,计算机系统1200包括输入设备1208、并行处理系统1212和显示设备1206,其可以使用常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器或其他合适的显示技术来实现。在一个实施例中,从输入设备1208(诸如键盘、鼠标、触摸板、麦克风等)接收用户输入。在一个实施例中,上述模块中的每一个可以位于单个半导体平台上以形成处理系统。
在本说明书中,单个半导体平台可指基于单一半导体的集成电路或芯片。应当注意的是,术语单个半导体平台还可以指具有增加的连接性的模拟片上操作的多芯片模块,并且相对于使用传统的中央处理单元(“CPU”)和总线实现作出实质性改进。当然,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
在一个实施例中,以机器可读可执行代码或计算机控制逻辑算法的形式的计算机程序被存储在主存储器1204和/或辅助存储器中。根据一个实施例,如果由一个或更多个处理器执行计算机程序,则使得系统1200能够执行各种功能。存储器1204、存储器和/或任何其他存储器是计算机可读介质的可能性示例。辅助存储器可指任何合适的存储设备或系统,例如硬盘驱动器和/或可移除存储驱动器,表示软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(“DVD”)驱动器、记录设备、通用串行总线(“USB”)闪存。
在一个实施例中,各种在先附图的架构和/或功能可在中央处理器1202、并行处理系统1212、能够同时具有中央处理器1202和并行处理系统1212的能力的至少一部分的集成电路、芯片集(例如,集成电路组,设计成作为执行相关功能的单元工作并出售等)以及任何合适的集成电路组合的上下文中实现。
在一个实施例中,各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统等的上下文中实现。在一个实施例中,计算机系统1200可以采用如下的形式:台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(“PDA”)、数字相机、车辆、头戴式显示器、手持电子设备、移动电话设备、电视、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑。
在一个实施例中,并行处理系统1212包括多个PPU 1214和相关联的存储器1216。在一个实施例中,PPU通过互连1218和交换机1220或多路复用器连接到主机处理器或其他外围设备。在一个实施例中,并行处理系统1212将计算任务分布在可并行化的PPU 1214上,例如,作为计算任务分布在多个GPU线程块上的一部分。在一个实施例中,存储器在PPU1214的部分或全部上是共享和可访问的(例如,用于读取和/或写入访问),尽管这种共享存储器可能会因使用本地存储器和驻留在PPU上的寄存器而引起性能损失。在一个实施例中,PPU 1214的操作通过使用诸如__syncthreads()的命令来同步,该命令要求块中的所有线程(例如,跨多个PPU 1214执行)在继续之前达到代码的某个执行点。
因此,说明书和附图应被视为说明性的而不是限制性的。然而,显而易见的是,在不脱离权利要求中所述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。
其他变化在本公开的精神内。因此,虽然所公开的技术易受各种修改和替代构造的影响,但其某些示出的实施例在附图中示出并且已经在上文中详细描述。然而,应当理解的是,无意将本发明局限于所公开的一种或更多种特定形式,相反,其意图是涵盖如所附权利要求所定义的属于本发明的精神和范围的所有修改、替代结构和等同物。
在描述所公开的实施例的上下文中(特别是在以下权利要求的上下文中),术语“一”和“一个”以及“该”和类似的指代的使用应被解释为包括单数和复数,除非本文中另有说明或上下文明确矛盾。除非另有说明,否则术语“包括”、“具有”、“含有”和“包含”应解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”,在未经修改和指代物理连接时,即使有东西介入,也应被解释为部分或全部包含在、附着在或连接在一起。除非本文另有说明,否则本文中值的范围的列举仅仅是作为单独参考在范围内的每个单独值的简略表达,并且每个单独的值被并入说明书中,如同在本文中单独列举一样。除非上下文另有说明或反驳,否则术语“集”(如“项目集”)或“子集”的使用应解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或反驳,否则对应集合的术语“子集”不一定表示对应集合的适当子集,但该子集和对应的集可以相等。
连词(如“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执行一些指令,而图形处理器单元执行其他指令。在一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在一个实施例中,计算机系统被配置成实现一个或更多个服务,其单独或共同地执行本文描述的过程的操作,并且这些计算机系统被配置有能够执行操作的适用硬件和/或软件。此外,实现本公开的实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括操作不同的多个设备,使得分布式计算机系统执行本文描述的操作并且使得单个设备不执行所有操作。
使用本文提供的任何和所有示例或示例性语言(例如,“例如”)仅仅是为了更好地说明本发明的实施例,并且不会对本发明的范围造成限制,除非另有要求。说明书中的任何语言都不应被解释为表示对本发明的实施至关重要的任何未声明的元素。
在本文描述的本公开的实施例,包括发明人已知的用于实施本发明的最佳模式。在阅读上述描述时,这些实施例的变化对于本领域的普通技术人员来说是显而易见的。发明人期望熟练的技术人员适当地采用这种变化,并且发明人意在以不同于本文特别描述的方式来实施本公开的实施例。因此,本公开的范围包括所附权利要求中所述的适用法律允许的主题的所有修改和等同。此外,除非本文中另有说明或上下文另有明确反驳,否则上述元素在其所有可能变化中的任何组合都包含在本公开的范围内。
本文引用的所有参考文献(包括出版物、专利申请和专利)在此通过引用合并,合并程度与单独明确指出通过引用合并的每个参考文献在本文完整列出的程度相同。
在说明书和权利要求中,可以使用术语“耦合”和“连接”及其衍生语。应当理解的是,这些术语可能不是彼此的同义词。相反,在具体的例子中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接地物理或电接触。“耦合”也可能意味着两个或两个以上的元素彼此不直接接触,但仍然相互合作或交互。
除非另有特别说明,否则可以理解,在整个说明书中,例如“处理”、“计算”、“测算”、“确定”等,是指计算机或计算系统或类似电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中的物理量(如电子量)处理和/或转换成类似地表示为计算系统的存储器、寄存器或其它此类信息存储、传输或显示设备中的物理量的其它数据。
以类似的方式,术语“处理器”可指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是中央处理单元(CPU)或图形处理单元(GPU)。“计算平台”可以包括一个或更多个处理器。如本文中所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,例如任务、线程和智能代理。此外,每个过程可以指多个过程,用于顺序地或并行地、连续地或间歇地执行指令。这里互换地使用术语“系统”和“方法”,只要系统可以体现一个或更多个方法并且这些方法可以被认为是系统。
在本文件中,可参考获得、获取、接收或输入模拟或数字数据到子系统、计算机系统或计算机实现的机器。获得、获取、接收或输入模拟和数字数据的过程可以通过多种方式来完成,例如通过接收数据作为函数调用或对应用程序编程接口调用的参数。在一些实现方式中,通过串行或并行接口传输数据可以完成获得、获取、接收或输入模拟或数字数据的过程。在另一个实现方式中,可以通过经由计算机网络将数据从提供实体传送到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、发送、发出或呈现模拟或数字数据。在各种示例中,提供、输出、发送、发出或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数来实现。
尽管上述讨论阐述了所述技术的示例性实现方式,但是可以使用其他架构来实现所述功能,并且旨在本公开的范围内。此外,虽然为了讨论的目的在上文对责任的具体分配作了定义,但根据具体情况,各种功能和责任可能以不同的方式分配和划分。
此外,尽管主题已经用特定于结构特征和/或方法行为的语言描述,但是应当理解,所附权利要求中定义的主题不一定限于所描述的特定特征或行为。相反,所公开的具体特征和行为是实施权利要求的示例性形式。
Claims (21)
1.一种处理器,包括:
比较逻辑,用于至少部分地基于被训练为识别一个或更多个图像的一个或更多个特征的两个或更多个边界的一个或更多个神经网络来比较所述两个或更多个边界;以及
指示逻辑,耦合到所述比较逻辑,用于指示所述两个或更多个边界是否至少相差第一阈值。
2.根据权利要求1所述的处理器,其中所述两个或更多个边界包括:第一标签掩码,其表示图像中的对象的边界,所述边界是从第一分割过程确定的分割中的边界,以及第二标签掩码,其表示形状评估过程的输出,其中所述第一标签掩码是所述形状评估过程的输入,以及其中所述指示逻辑被配置为比较所述第一标签掩码和所述第二标签掩码,以确定所述分割的质量。
3.根据权利要求2所述的处理器,还包括第一经训练的神经网络,所述第一经训练的神经网络执行所述第一分割过程,以响应于获得所述图像的表示输出所述第一标签掩码。
4.根据权利要求3所述的处理器,还包括第二经训练的神经网络,所述第二经训练的神经网络使用所述第一标签掩码作为其输入来执行所述形状评估过程,并输出所述第二标签掩码。
5.根据权利要求4所述的处理器,其中所述第二经训练的神经网络是具有内部层的自动编码器,所述自动编码器将其输入映射到特征空间中的潜在表示,其中所述特征空间中的特征是形状特征。
6.根据权利要求5所述的处理器,其中所述自动编码器是变分自动编码器。
7.根据权利要求5所述的处理器,还包括用于使用分割数据集的训练子集合来训练所述第二经训练的神经网络的逻辑,其中所述分割数据集的所述训练子集合包括训练图像和相应的训练标签掩码。
8.根据权利要求7所述的处理器,其中用于训练所述第二经训练的神经网络的所述逻辑进一步使用分割数据集的验证子集合。
9.根据权利要求1所述的处理器,其中所述处理器包括图形处理单元(GPU)。
10.一种使用包含一个或更多个算术逻辑单元(ALU)的处理器处理图像的方法,包括:
至少部分地基于被训练为识别一个或更多个图像的一个或更多个特征的两个或更多个边界的一个或更多个神经网络,来比较所述两个或更多个边界;以及
指示所述两个或更多个边界是否至少相差第一阈值。
11.根据权利要求10所述的方法,还包括:
生成所述图像的分割,其中所述分割表示处理器确定的所述图像中描绘的对象的边界集;
将所述分割输入到先前在训练分割的集合上训练的神经网络;
将所述分割与所述神经网络的输出进行比较;以及
确定所述分割的分数,其中所述分数是所述分割和所述神经网络的输出之间的差的函数。
12.根据权利要求11所述的方法,其中所述神经网络是以所述分割作为其输入的变分自动编码器,其中所述变分自动编码器将其输入的特征映射到减少的特征空间,从中可以从所述减少的特征空间中的特征近似地再现所述分割。
13.根据权利要求12所述的方法,还包括:
用所述训练分割的集合训练所述变分自动编码器,其中所述训练分割的集合由标签掩码表示,所述标签掩码是图像的真值标签掩码,因为这些标签掩码的分割先前被确定为是对所述图像的良好分割。
14.根据权利要求12所述的方法,还包括:
通过将分割数据集的集合应用于分割器来训练所述分割器,以生成所述图像的分割,其中所述分割数据集的集合的每个分割数据集包括训练图像和相应的训练标签掩码,所述训练标签掩码是所述训练图像的真值标签掩码,因为所述相应的训练标签掩码中的分割先前已被确定为是对所述训练图像的良好分割。
15.根据权利要求11所述的方法,还包括:使用第一经训练的神经网络执行第一分割过程,以响应于获得所述图像的表示输出所述第一标签掩码。
16.根据权利要求11所述的方法,还包括:使用第二经训练的神经网络以第一标签掩码作为输入执行形状评估过程,并输出第二标签掩码。
17.根据权利要求16所述的方法,还包括:将所述第二经训练的神经网络的输入映射到特征空间中的潜在表示,其中所述特征空间中的特征是形状特征。
18.根据权利要求17所述的方法,其中所述第二经训练的神经网络是变分自动编码器。
19.一种系统,包括存储指令的存储器,所述指令由一个或更多个处理器执行时,使得所述系统:
至少部分地使用一个或更多个训练分割的集合训练一个或更多个神经网络作为变分自动编码器(VAE),所述一个或更多个训练分割是图像的真值标签掩码,因为所述一个或更多个训练分割的集合中的训练分割的分割是先前被确定为是描绘对象的图像的良好分割的分割;以及
训练分割器,以从图像生成表示处理器确定的图像的分割的标签掩码,其中所述训练包括将分割数据集的集合应用于所述分割器,其中所述分割数据集的集合的每个分割数据集包括训练图像和相应的训练标签掩码,所述训练标签掩码是所述训练图像的真值标签掩码,因为所述相应的训练标签掩码中的分割先前已被确定为是所述训练图像的良好分割。
20.根据权利要求19所述的系统,其中所述指令还使得所述系统:
生成输入图像的分割,其中所述分割表示所述处理器确定的所述输入图像中描绘的对象的边界集;
将所述分割作为VAE输入,输入到所述VAE;
将所述VAE输入与所述VAE的VAE输出进行比较;以及
确定用于所述分割的分数,其中所述分数是所述VAE输入和所述VAE输出之间的差的函数。
21.根据权利要求20所述的系统,还包括:
输出所述分数;
确定所述分数是否在预定范围内;以及
如果所述分数在所述预定范围内,则输出报警信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/380,759 | 2019-04-10 | ||
US16/380,759 US20200327674A1 (en) | 2019-04-10 | 2019-04-10 | Identifying Image Segmentation Quality Using Neural Networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111815642A true CN111815642A (zh) | 2020-10-23 |
Family
ID=70110131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010269284.XA Pending CN111815642A (zh) | 2019-04-10 | 2020-04-08 | 使用神经网络识别图像分割质量 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20200327674A1 (zh) |
EP (1) | EP3726465A1 (zh) |
CN (1) | CN111815642A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114638776A (zh) * | 2020-12-15 | 2022-06-17 | 通用电气精准医疗有限责任公司 | 脑卒中早期评估方法与系统及脑部区域分割方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113330485A (zh) * | 2019-01-08 | 2021-08-31 | 诺沃库勒有限责任公司 | 评估将图像分割成不同类型组织的质量,用于使用肿瘤治疗场(TTField)来计划治疗 |
US11164317B2 (en) * | 2019-06-28 | 2021-11-02 | Intel Corporation | Real-time mask quality predictor |
US11244203B2 (en) * | 2020-02-07 | 2022-02-08 | International Business Machines Corporation | Automated generation of structured training data from unstructured documents |
US11842530B2 (en) * | 2020-03-05 | 2023-12-12 | Uatc, Llc | Systems and methods for latent distribution modeling for scene-consistent motion forecasting |
US20210334975A1 (en) * | 2020-04-23 | 2021-10-28 | Nvidia Corporation | Image segmentation using one or more neural networks |
US11693919B2 (en) * | 2020-06-22 | 2023-07-04 | Shanghai United Imaging Intelligence Co., Ltd. | Anatomy-aware motion estimation |
CN112288763A (zh) * | 2020-10-28 | 2021-01-29 | 维沃移动通信有限公司 | 图像处理方法及装置 |
CN113313161B (zh) * | 2021-05-24 | 2023-09-26 | 北京大学 | 基于旋转不变的规范等变网络模型的物体形状分类方法 |
CN113538470B (zh) * | 2021-06-16 | 2024-02-23 | 唯智医疗科技(佛山)有限公司 | 一种基于神经网络的图像层间边界确定方法及装置 |
US11907336B2 (en) * | 2021-11-02 | 2024-02-20 | Sap Se | Visual labeling for machine learning training |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6404920B1 (en) * | 1996-09-09 | 2002-06-11 | Hsu Shin-Yi | System for generalizing objects and features in an image |
US7454045B2 (en) * | 2003-10-10 | 2008-11-18 | The United States Of America As Represented By The Department Of Health And Human Services | Determination of feature boundaries in a digital representation of an anatomical structure |
US9990712B2 (en) * | 2015-04-08 | 2018-06-05 | Algotec Systems Ltd. | Organ detection and segmentation |
US10176642B2 (en) * | 2015-07-17 | 2019-01-08 | Bao Tran | Systems and methods for computer assisted operation |
US10043280B2 (en) * | 2015-10-19 | 2018-08-07 | Shanghai United Imaging Healthcare Co., Ltd. | Method and system for image segmentation |
US10600185B2 (en) * | 2017-03-08 | 2020-03-24 | Siemens Healthcare Gmbh | Automatic liver segmentation using adversarial image-to-image network |
US11423249B2 (en) * | 2018-12-03 | 2022-08-23 | Bank Of America Corporation | Computer architecture for identifying data clusters using unsupervised machine learning in a correlithm object processing system |
-
2019
- 2019-04-10 US US16/380,759 patent/US20200327674A1/en not_active Abandoned
-
2020
- 2020-03-31 EP EP20167175.7A patent/EP3726465A1/en active Pending
- 2020-04-08 CN CN202010269284.XA patent/CN111815642A/zh active Pending
-
2021
- 2021-10-21 US US17/507,070 patent/US20220044412A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114638776A (zh) * | 2020-12-15 | 2022-06-17 | 通用电气精准医疗有限责任公司 | 脑卒中早期评估方法与系统及脑部区域分割方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3726465A1 (en) | 2020-10-21 |
US20220044412A1 (en) | 2022-02-10 |
US20200327674A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3726465A1 (en) | Identifying image segmentation quality using neural networks | |
US11037051B2 (en) | 3D plane detection and reconstruction using a monocular image | |
US11074717B2 (en) | Detecting and estimating the pose of an object using a neural network model | |
US11508076B2 (en) | Learning rigidity of dynamic scenes for three-dimensional scene flow estimation | |
EP3754611A1 (en) | Cell image synthesis using one or more neural networks | |
US10984545B2 (en) | Estimating depth for a video stream captured with a monocular rgb camera | |
US10922793B2 (en) | Guided hallucination for missing image content using a neural network | |
US11880927B2 (en) | Three-dimensional object reconstruction from a video | |
US10826786B2 (en) | Fast multi-scale point cloud registration with a hierarchical gaussian mixture | |
US20190147296A1 (en) | Creating an image utilizing a map representing different classes of pixels | |
EP3712808A1 (en) | Image identification using neural networks | |
EP3757899A1 (en) | Neural architecture for self supervised event learning and anomaly detection | |
US10762620B2 (en) | Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene | |
US11836597B2 (en) | Detecting visual artifacts in image sequences using a neural network model | |
US10614613B2 (en) | Reducing noise during rendering by performing parallel path space filtering utilizing hashing | |
US11748887B2 (en) | Segmentation using an unsupervised neural network training technique | |
US11496773B2 (en) | Using residual video data resulting from a compression of original video data to improve a decompression of the original video data | |
US11494879B2 (en) | Convolutional blind-spot architectures and bayesian image restoration | |
US20230368501A1 (en) | Few-shot training of a neural network | |
US20220012536A1 (en) | Creating an image utilizing a map representing different classes of pixels | |
US11790598B2 (en) | Three-dimensional tomography reconstruction pipeline | |
US20220189011A1 (en) | End-to-end training for a three-dimensional tomography reconstruction pipeline | |
US11055381B1 (en) | Estimating product integrals using a composition of warps | |
EP4280161A1 (en) | Apparatus and method for bounding volume hierarchy (bvh) construction with stochastic processing |
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 |