CN117953092A - 利用表示不同种类像素的映射创建图像 - Google Patents

利用表示不同种类像素的映射创建图像 Download PDF

Info

Publication number
CN117953092A
CN117953092A CN202410048693.5A CN202410048693A CN117953092A CN 117953092 A CN117953092 A CN 117953092A CN 202410048693 A CN202410048693 A CN 202410048693A CN 117953092 A CN117953092 A CN 117953092A
Authority
CN
China
Prior art keywords
image
digital representation
representation
resolution
neural networks
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
Application number
CN202410048693.5A
Other languages
English (en)
Inventor
王鼎鈞
刘洺堉
B·C·卡坦扎罗
J·考茨
A·J·陶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US16/188,920 external-priority patent/US20190147296A1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN117953092A publication Critical patent/CN117953092A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/70Labelling scene content, e.g. deriving syntactic or semantic representations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/24Character recognition characterised by the processing or recognition method
    • G06V30/248Character recognition characterised by the processing or recognition method involving plural approaches, e.g. verification by template match; Resolving confusion among similar patterns, e.g. "O" versus "Q"
    • G06V30/2504Coarse or fine approaches, e.g. resolution of ambiguities or multiscale approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/26Techniques for post-processing, e.g. correcting the recognition result
    • G06V30/262Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
    • G06V30/274Syntactic or semantic context, e.g. balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

公开了一种方法、计算机可读介质和系统,用于利用表示场景内不同种类的特定像素的映射来创建图像。一个或更多个计算系统使用该映射来创建初步图像。然后将该初步图像与用于创建映射的原始图像进行比较。确定初步图像是否与原始图像匹配,并且确定结果用于调整创建初步图像的计算系统,这改善了这种计算系统的性能。然后,调整后的计算系统用于基于表示场景内特定像素的各种对象种类的不同输入映射来创建图像。

Description

利用表示不同种类像素的映射创建图像
分案申请信息
本发明专利申请是申请日为2018年11月15日、申请号为2018113607364、发明名称为“利用表示不同种类像素的映射创建图像”的发明专利申请案的分案申请。
要求优先权
本申请要求2017年11月15日提交的标题为“利用条件GAN的高分辨率图像合成与语义操纵(High-Resolution Image Synthesis and Semantic Manipulation withConditional GANs)”的美国临时申请No.62/586,743(代理人案卷号NVIDP1197+/17-SC-0263-US01)的权益,其全部内容通过引用并入本文。
技术领域
本发明涉及图像渲染,并且更具体地,涉及利用语义表示来渲染图像。
背景技术
使用标准图形技术渲染照片般逼真的图像可能是一个复杂的过程,因为几何形状、材料和光传输是明确模拟的。此外,构建和编辑虚拟环境既昂贵又耗时,因为虚拟世界的每个部分都需要明确建模。结果,期望使用从数据学习的模型来渲染照片般逼真的图像,这可以将渲染图形的过程转换为模型学习和推理问题。因此需要解决与现有技术相关的这些问题和/或其他问题。
发明内容
本发明涉及一种处理器,包括:一个或更多个电路,其用于训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
本发明还涉及一种系统,包括:一个或更多个计算机,其具有一个或更多个处理器来训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
本发明还涉及一种机器可读介质,具有存储在其上的指令集,所述指令集在由一个或更多个处理器执行时,使所述一个或更多个处理器至少:训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
附图说明
图1示出了根据实施例的利用表示不同种类像素的映射来创建图像的方法的流程图。
图2示出了根据实施例的并行处理单元。
图3A示出了根据实施例的图2的并行处理单元内的通用处理集群。
图3B示出了根据实施例的图2的并行处理单元的存储器分区单元。
图4A示出了根据实施例的图3A的流式多处理器。
图4B是根据实施例的使用图2的PPU实现的处理系统的概念图。
图4C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5是根据实施例的由图2的PPU实现的图形处理管线的概念图。
图6示出了根据实施例的生成器的示例性网络架构。
图7示出了根据实施例的示例性训练编码器架构。
图8示出了根据实施例的用于训练粗到精生成器的方法的流程图。
图9示出了根据实施例的用于实现经训练的粗到精生成器的方法的流程图。
图10示出了根据实施例的用于利用实例特征映射来精化输出的方法的流程图。
图11示出了根据实施例的用于至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型的方法的流程图。
图12示出了根据实施例的用于至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型的方法的流程图。
图13示出了根据实施例的示例性机器学习模型。
图14示出了根据实施例的用于使用经训练的生成器架构的方法的流程图。
具体实施方式
图1示出了根据实施例的用于利用表示像素的对象种类的映射来创建图像的方法100的流程图。尽管在处理单元的上下文中描述了方法100,但是方法100还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法100可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法100的任何系统都在本发明的实施例的范围和精神内。
如操作102所示,利用语义表示,由生成器创建图像。在一个实施例中,语义表示可以包括语义标签映射、边缘映射、深度映射、关系映射(例如,图像内的对象对之间的关系映射)等。在一个实施例中,语义标签映射可以包括图像的表示,其中图像的每个像素表示像素所属的对象种类。在一个实施例中,对象种类可以各自包括图像内的元素,例如人、车辆、天空、道路等。
另外,在一个实施例中,生成器可包括粗到精生成器。在一个实施例中,粗到精生成器可以包括彼此分离的多个神经网络,其互相协作以创建图像。在一个实施例中,粗到精生成器内的第一神经网络可以包括粗略神经网络。在一个实施例中,粗略神经网络可以将语义表示作为输入,并且可以输出具有第一分辨率的第一图像。在一个实施例中,粗略神经网络可以包括在具有第一分辨率的图像上训练的残余网络。
此外,在一个实施例中,粗到精生成器内的第二神经网络可以包括精细神经网络。在一个实施例中,精细神经网络可以将语义表示和具有第一分辨率的第一图像作为输入,并且可以输出具有大于第一分辨率的第二分辨率的第二图像作为输出。在一个实施例中,精细神经网络中的残余块的输入可以包括精细神经网络的特征映射和来自粗略神经网络的输出特征映射的逐个元素之和。在一个实施例中,输入还可以包括从粗略神经网络输出的全局信息。在一个实施例中,精细神经网络可以包括在具有大于第一分辨率的第二分辨率的图像上训练的最终网络。
此外,在一个实施例中,粗到精生成器的输出可以包括由精细神经网络输出的图像。以这种方式,与单个神经网络方法相比,粗略神经网络可以与精细神经网络一起工作以创建具有更高分辨率的图像。
此外,在一个实施例中,可以在训练过程期间执行创建(例如,使用条件对抗网络对生成器进行训练等)。在一个实施例中,生成器还可以使用实例特征映射来创建图像。在一个实施例中,单独的神经网络(例如,特征编码器网络等)可以接收语义表示所基于的原始图像作为输入,并且可以基于原始图像创建实例特征映射。在一个实施例中,实例特征映射可以与语义表示一起用作生成器的输入。在一个实施例中,实例特征映射可以与语义表示连结作为生成器的输入。以这种方式,生成器可以利用实例特征映射来细化所创建的图像。
另外,在一个实施例中,实例特征映射可用于控制所创建图像的样式(例如,通过指定所创建图像的一个或更多个分量的颜色和/或纹理等)。在一个实施例中,特征编码器网络可以使用逐个实例的平均池化来确保在实例特征映射内的特征是统一的。以这种方式,所创建的图像中的所有类似特征可以是相同的(例如,相同颜色的草、相同类型的道路等)。
此外,如操作104所示,鉴别器分析图像以创建反馈。在一个实施例中,鉴别器可以通过将由生成器创建的图像与语义表示所基于的原始图像进行比较来分析图像。在一个实施例中,可以通过分析原始图像来创建语义表示。在一个实施例中,由鉴别器创建的反馈可以包括关于由生成器创建的图像是否与原始图像匹配的指示。在一个实施例中,反馈可以包括一个比特(例如,其中1可以指示匹配成功,0可以指示匹配失败等)。
此外,在一个实施例中,鉴别器可包括多个多尺度鉴别器。在一个实施例中,多个多尺度鉴别器中的每一个可以包括与其他多尺度鉴别器分开的神经网络。在一个实施例中,可以多次对图像进行下采样以创建多个下采样图像。在一个实施例中,可以通过第一因子第一次对图像进行下采样,以创建具有小于图像分辨率的第一分辨率的第一下采样图像。在一个实施例中,可以通过大于第一因子的第二因子第二次对图像进行下采样,以创建具有小于第一分辨率和图像分辨率的第二分辨率的第二下采样图像。
此外,在一个实施例中,多个多尺度鉴别器中的每一个可以以不同于其他鉴别器的图像尺度操作,并且可以分析多个下采样图像中的一个。在一个实施例中,第一鉴别器可以分析图像(例如,通过将其与原始图像进行比较)。在一个实施例中,以小于第一鉴别器的图像尺度操作的第二鉴别器可以分析第一下采样图像(例如,通过将其与具有比原始图像更低分辨率的原始图像的第一下采样版本进行比较等)。在一个实施例中,以小于第二鉴别器的图像尺度操作的第三鉴别器可以分析第二下采样图像(例如,通过将其与具有比第一下采样版本更低分辨率的原始图像的第二下采样版本进行比较等)。
另外,在一个实施例中,多个多尺度鉴别器中的每一个可以提供反馈(例如,关于所比较的图像是否匹配的指示等)。以这种方式,多个多尺度鉴别器可以一起工作以向生成器提供更准确的反馈。在一个实施例中,鉴别器可以从由生成器创建的图像以及语义表示所基于的原始图像中提取一个或更多个特征(例如,中间特征表示等)。在一个实施例中,鉴别器可以在从两个图像提取的特征之间执行匹配。
此外,在一个实施例中,鉴别器还可以使用实例特征映射。在一个实施例中,由特征编码器网络创建的实例特征映射可以与所创建的图像一起用作鉴别器的输入。
此外,如操作106所示,基于反馈调整生成器。在一个实施例中,生成器和鉴别器可以包括在通用对抗网络(GAN)中。在一个实施例中,调整生成器可以包括基于反馈在图像创建期间改变由生成器做出的一个或更多个决策。在一个实施例中,可以基于反馈在训练过程期间调整生成器。在一个实施例中,可以在训练生成器期间使用反馈,以在训练过程期间细化生成器的输出。
此外,在一个实施例中,调整后的生成器可用于基于输入语义映射创建图像。在一个实施例中,调整后的生成器可以识别语义表示,并且可以利用语义表示来创建高分辨率图像。在一个实施例中,自动驾驶车辆可以使用高分辨率图像来分析路径/道路图像。在一个实施例中,自动驾驶车辆可以使用高分辨率图像用于导航以及场景内的物体检测。
以这种方式,可以实现粗到精生成器,其包括彼此分离的多个神经网络,这些神经网络一起工作以利用语义映射生成图像。另外,实例特征映射可以由单独的神经网络创建,并且实例特征映射可以由生成器和鉴别器使用。此外,可以对生成的图像进行下采样,并且可以针对每个下采样图像使用不同的多尺度鉴别器。此外,鉴别器可以提取中间特征表示。而且,在一个实施例中,可以利用并行处理单元(PPU)200来实现粗到精生成器,如下面的图2所示。
现在将根据用户的期望阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以任选地并入或不排除所描述的其他特征。
并行处理架构
图2示出了根据实施例的并行处理单元(PPU)200。在一个实施例中,PPU 200是在一个或更多个集成电路器件上实现的多线程处理器。PPU 200是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 200执行的指令集的实例。在一个实施例中,PPU 200是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在其他实施例中,PPU 200可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 200可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。PPU 200可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
如图2所示,PPU 200包括输入/输出(I/O)单元205、前端单元215、调度器单元220、工作分配单元225、集线器230、交叉开关(Xbar)270、一个或更多个通用处理集群(GPC)250以及一个或更多个分区单元280。PPU 200可以经由一个或更多个高速NVLink 210互连连接到主机处理器或其他PPU 200。PPU 200可以经由互连202连接到主机处理器或其他外围设备。PPU 200还可以连接到包括多个存储器设备204的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。
NVLink 210互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU 200,支持PPU 200和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 210通过集线器230发送到PPU 200的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图4B更详细地描述NVLink 210。
I/O单元205被配置为通过互连202从主机处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元205可以经由互连202直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元205可以经由互连202与一个或更多个其他处理器(例如,一个或更多个PPU 200)通信。在一个实施例中,I/O单元205实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连202是PCIe总线。在替代的实施例中,I/O单元205可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元205对经由互连202接收的分组进行解码。在一个实施例中,分组表示被配置为使PPU 200执行各种操作的命令。I/O单元205按照命令指定将解码的命令发送到PPU200的各种其他单元。例如,一些命令可以被发送到前端单元215。其他命令可以被发送到集线器230或PPU 200的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元205被配置为在PPU 200的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 200提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 200两者访问(即,读/写)的区域。例如,I/O单元205可以被配置为经由通过互连202传输的存储器请求访问连接到互连202的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 200发送指向命令流开始的指针。前端单元215接收指向一个或更多个命令流的指针。前端单元215管理一个或更多个流,从流读取命令并将命令转发到PPU 200的各个单元。
前端单元215耦合到调度器单元220,其配置各种GPC 250以处理由一个或更多个流定义的任务。调度器单元220被配置为跟踪与由调度器单元220管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个GPC 250,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元220管理一个或更多个GPC 250上的多个任务的执行。
调度器单元220耦合到工作分配单元225,其被配置为分派任务以在GPC 250上执行。工作分配单元225可以跟踪从调度器单元220接收到的多个调度任务。在一个实施例中,工作分配单元225为每个GPC 250管理待处理(pending)任务池和活动任务池。待处理任务池可以包括多个时隙(例如,32个时隙),其包含被指派为由特定GPC 250处理的任务。活动任务池可以包括多个时隙(例如,4个时隙),用于正在由GPC 250主动处理的任务。当GPC250完成任务的执行时,该任务从GPC 250的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 250上执行。如果GPC 250上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 250中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 250上执行。
工作分配单元225经由XBar(交叉开关)270与一个或更多个GPC 250通信。XBar270是将PPU 200的许多单元耦合到PPU 200的其他单元的互连网络。例如,XBar 270可以被配置为将工作分配单元225耦合到特定的GPC 250。虽然没有明确示出,但PPU 200的一个或更多个其他单元也可以经由集线器230连接到XBar 270。
任务由调度器单元220管理并由工作分配单元225分派给GPC 250。GPC 250被配置为处理任务并生成结果。结果可以由GPC 250内的其他任务消耗,经由XBar 270路由到不同的GPC 250,或者存储在存储器204中。结果可以经由分区单元280写入存储器204,分区单元280实现用于从存储器204读取数据和向存储器204写入数据的存储器接口。结果可以通过NVLink210发送到另一个PPU 204或CPU。在一个实施例中,PPU 200包括数目为U的分区单元280,其等于耦合到PPU 200的独立且不同的存储器设备204的数目。下面将结合图3B更详细地描述分区单元280。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 200上执行。在一个实施例中,多个计算机应用程序由PPU 200同时执行,并且PPU 200为多个计算机应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(即API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 200执行。驱动程序内核将任务输出到正在由PPU 200处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图4A更详细地描述线程和协作线程。
图3A示出了根据实施例的图2的PPU 200的GPC 250。如图3A所示,每个GPC 250包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 250包括管线管理器310、预光栅操作单元(PROP)315、光栅引擎325、工作分配交叉开关(WDX)380、存储器管理单元(MMU)390以及一个或更多个数据处理集群(DPC)320。应当理解,图3A的GPC 250可以包括代替图3A中所示单元的其他硬件单元或除图3A中所示单元之外的其他硬件单元。
在一个实施例中,GPC 250的操作由管线管理器310控制。管线管理器310管理用于处理分配给GPC 250的任务的一个或更多个DPC 320的配置。在一个实施例中,管线管理器310可以配置一个或更多个DPC 320中的至少一个来实现图形渲染管线的至少一部分。例如,DPC 320可以被配置为在可编程流式多处理器(SM)340上执行顶点着色程序。管线管理器310还可以被配置为将从工作分配单元225接收的分组路由到GPC 250中适当的逻辑单元。例如,一些分组可以被路由到PROP 315和/或光栅引擎325中的固定功能硬件单元,而其他分组可以被路由到DPC 320以供图元引擎335或SM 340处理。在一个实施例中,管线管理器310可以配置一个或更多个DPC 320中的至少一个以实现神经网络模型和/或计算管线。
PROP单元315被配置为将由光栅引擎325和DPC 320生成的数据路由到光栅操作(ROP)单元,结合图3B更详细地描述。PROP单元315还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎325包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎325包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎325的输出包括例如要由在DPC 320内实现的片段着色器处理的片段。
包括在GPC 250中的每个DPC 320包括M管线控制器(MPC)330、图元引擎335和一个或更多个SM 340。MPC 330控制DPC 320的操作,将从管线管理器310接收到的分组路由到DPC 320中的适当单元。例如,与顶点相关联的分组可以被路由到图元引擎335,图元引擎335被配置为从存储器204提取与顶点相关联的顶点属性。相反,与着色程序相关联的分组可以被发送到SM 340。
SM 340包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM340是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 340实现SIMD(单指令、多数据)体系架构,其中线程组(即,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 340实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图4A更详细地描述SM340。
MMU 390提供GPC 250和分区单元280之间的接口。MMU 390可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 390提供用于执行从虚拟地址到存储器204中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图3B示出了根据实施例的图2的PPU 200的存储器分区单元280。如图3B所示,存储器分区单元280包括光栅操作(ROP)单元350、二级(L2)高速缓存360和存储器接口370。存储器接口370耦合到存储器204。存储器接口370可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU 200合并了U个存储器接口370,每对分区单元280有一个存储器接口370,其中每对分区单元280连接到对应的存储器设备204。例如,PPU 200可以连接到多达Y个存储器设备204,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口370实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 200相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器204支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算机应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,可靠性尤其重要,其中PPU 200处理非常大的数据集和/或长时间运行应用程序。
在一个实施例中,PPU 200实现多级存储器分层结构。在一个实施例中,存储器分区单元280支持统一存储器以为CPU和PPU 200存储器提供单个统一的虚拟地址空间,使能虚拟存储器系统之间的数据共享。在一个实施例中,由PPU 200对位于其他处理器上的存储器的访问频率被跟踪,以确保存储器页面被移动到更频繁地访问页面的PPU 200的物理存储器。在一个实施例中,NVLink 210支持地址转换服务,其允许PPU 200直接访问CPU的页表并且提供由PPU 200对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 200之间或在PPU 200与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元280可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(即,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器204或其他系统存储器的数据可以由存储器分区单元280取回并存储在L2高速缓存360中,L2高速缓存360位于芯片上并且在各个GPC 250之间共享。如图所示,每个存储器分区单元280包括与对应的存储器设备204相关联的L2高速缓存360的一部分。然后可以在GPC 250内的多个单元中实现较低级高速缓存。例如,每个SM 340可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 340的专用存储器。来自L2高速缓存360的数据可以被获取并存储在每个L1高速缓存中,以在SM 340的功能单元中进行处理。L2高速缓存360被耦合到存储器接口370和XBar 270。
ROP单元350执行与像素颜色相关的图形光栅操作,诸如颜色压缩、像素混合等。ROP单元350还与光栅引擎325一起实现深度测试,从光栅引擎325的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。如果片段通过样本位置的深度测试,则ROP单元350更新深度缓冲区并将深度测试的结果发送给光栅引擎325。将理解的是,分区单元280的数量可以不同于GPC 250的数量,并且因此每个ROP单元350可以耦合到每个GPC 250。ROP单元350跟踪从不同GPC 250接收到的分组并且确定由ROP单元350生成的结果通过Xbar 270被路由到哪个GPC 250。尽管ROP单元350包括在图3B中的存储器分区单元280内,但是在其他实施例中,ROP单元350可以在存储器分区单元280之外。例如,ROP单元350可以驻留在GPC 250或另一个单元中。
图4A示出了根据实施例的图3A的流式多处理器340。如图4A所示,SM 340包括指令高速缓存405、一个或更多个调度器单元410(K)、寄存器文件420、一个或更多个处理核心450、一个或更多个特殊功能单元(SFU)452、一个或更多个加载/存储单元(LSU)454、互连网络480、共享存储器/L1高速缓存470。
如上所述,工作分配单元225调度任务以在PPU 200的GPC 250上执行。任务被分配给GPC 250内的特定DPC 320,并且如果任务与着色器程序相关联,则该任务可以被分配给SM 340。调度器单元410(K)接收来自工作分配单元225的任务并且管理指派给SM 340的一个或更多个线程块的指令调度。调度器单元410(K)调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元410(K)可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心450、SFU452和LSU 454)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(即,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(即,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作伙伴并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元415被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元410(K)包括两个分派单元415,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元410(K)可以包括单个分派单元415或附加分派单元415。
每个SM 340包括寄存器文件420,其提供用于SM 340的功能单元的一组寄存器。在一个实施例中,寄存器文件420在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件420的专用部分。在另一个实施例中,寄存器文件420在由SM 340执行的不同线程束之间被划分。寄存器文件420为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 340包括L个处理核心450。在一个实施例中,SM 340包括大量(例如128个等)不同的处理核心450。每个核心450可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心450包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心450中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 340还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 452。在一个实施例中,SFU 452可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 452可以包括被配置为执行纹理贴图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器204加载纹理贴图(例如,纹理像素的2D阵列)并且对纹理贴图进行采样以产生经采样的纹理值,用于在由SM 340执行的着色器程序中使用。在一个实施例中,纹理贴图被存储在共享存储器/L1高速缓存370中。纹理单元实现纹理操作,诸如使用mip贴图(即,不同细节层次的纹理贴图)的过滤操作。在一个实施例中,每个SM 240包括两个纹理单元。
每个SM 340还包括N个LSU 454,其实现共享存储器/L1高速缓存470和寄存器文件420之间的加载和存储操作。每个SM 340包括将每个功能单元连接到寄存器文件420以及将LSU 454连接到寄存器文件420、共享存储器/L1高速缓存470的互连网络480。在一个实施例中,互连网络480是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件420中的任何寄存器,以及将LSU 454连接到寄存器文件和共享存储器/L1高速缓存470中的存储器位置。
共享存储器/L1高速缓存470是片上存储器阵列,其允许数据存储和SM 340与图元引擎335之间以及SM 340中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存470包括128KB的存储容量并且在从SM 340到分区单元280的路径中。共享存储器/L1高速缓存470可以用于高速缓存读取和写入。共享存储器/L1高速缓存470、L2高速缓存360和存储器204中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存470内的集成使共享存储器/L1高速缓存470起到用于流式传输数据的高吞吐量管道的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图2所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元225将线程块直接指派并分配给DPC 320。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 340执行程序并执行计算,使用共享存储器/L1高速缓存470以在线程之间通信,以及使用LSU 454通过共享存储器/L1高速缓存470和存储器分区单元280读取和写入全局存储器。当被配置用于通用并行计算时,SM 340还可以写入调度器单元220可用来在DPC 320上启动新工作的命令。
PPU 200可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 200包含在单个半导体衬底上。在另一个实施例中,PPU 200与一个或更多个其他器件(诸如附加PPU 200、存储器204、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 200可以被包括在图形卡上,图形卡包括一个或更多个存储器设备204。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 200可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图4B是根据实施例的使用图3的PPU 200实现的处理系统400的概念图。处理系统400可以被配置为实现图1中所示的方法100。处理系统400包括CPU 430、交换机410和多个PPU 200中的每一个以及相应的存储器204。NVLink 210提供每个PPU 200之间的高速通信链路。尽管图4B中示出了特定数量的NVLink 210和互连202连接,但是连接到每个PPU 200和CPU 430的连接的数量可以改变。交换机410在互连202和CPU 430之间接口。PPU 200、存储器204和NVLink 210可以位于单个半导体平台上以形成并行处理模块425。在一个实施例中,交换机410支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 210在每个PPU 200和CPU 430之间提供一个或更多个高速通信链路,并且交换机410在互连202和每个PPU 200之间进行接口。PPU 200、存储器204和互连202可以位于单个半导体平台上以形成并行处理模块425。在又一个实施例(未示出)中,互连202在每个PPU 200和CPU 430之间提供一个或更多个通信链路,并且交换机410使用NVLink 210在每个PPU 200之间进行接口,以在PPU 200之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink 210在PPU300和CPU 430之间通过交换机410提供一个或更多个高速通信链路。在另一个实施例(未示出)中,互连202在每个PPU200之间直接地提供一个或更多个通信链路。可以使用与NVLink 210相同的协议将一个或更多个NVLink 210高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块425可以被实现为电路板衬底,并且PPU 200和/或存储器204中的每一个可以是封装器件。在一个实施例中,CPU 430、交换机410和并行处理模块425位于单个半导体平台上。
在一个实施例中,每个NVLink 210的信令速率是20到25千兆位/秒,并且每个PPU200包括六个NVLink 210接口(如图4B所示,每个PPU 200包括五个NVLink 210接口)。每个NVLink 210在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 430还包括一个或更多个NVLink 210接口时,NVLink 210可专门用于如图4B所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 210允许从CPU 430到每个PPU 200的存储器204的直接加载/存储/原子访问。在一个实施例中,NVLink 210支持一致性操作,允许从存储器204读取的数据被存储在CPU 430的高速缓存分层结构中,减少了CPU 430的高速缓存访问延迟。在一个实施例中,NVLink 210包括对地址转换服务(ATS)的支持,允许PPU 200直接访问CPU430内的页表。一个或更多个NVLink 210还可以被配置为以低功率模式操作。
图4C示出了示例性系统465,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统465可以被配置为实现图1中所示的方法100。
如图所示,提供系统465,其包括连接到通信总线575的至少一个中央处理单元430。通信总线475可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。系统465还包括主存储器440。控制逻辑(软件)和数据被存储在主存储器440中,主存储器440可以采取随机存取存储器(RAM)的形式。
系统465还包括输入设备460、并行处理系统425和显示设备445,即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备460(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统465。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,系统465可以出于通信目的通过网络接口435耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如互联网)、对等网络、电缆网络等)。
系统465还可以包括辅助存储(未示出)。辅助存储包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器440和/或辅助存储中。这些计算机程序在被执行时使得系统465能够执行各种功能。存储器440、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,系统465可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上文已经描述了各种实施例,但应该理解的是,它们仅作为示例呈现,而不是限制。因此,本申请的广度和范围不应被任何上述示例性实施例限制,而应仅根据以下和随后提交的权利要求及其等同物来限定。
图形处理管线
在一个实施例中,PPU 200包括图形处理单元(GPU)。PPU 200被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形带等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)的数据以及与图元的每个顶点相关联的属性。PPU 200可以被配置为处理图元以生成帧缓冲区(即,用于显示器的像素中的每一个的像素数据)。
应用程序将场景的模型数据(即,顶点和属性的集合)写入存储器(诸如系统存储器或存储器204)。模型数据定义可能在显示器上可见的对象中的每一个。然后应用程序对驱动程序内核进行API调用,其请求要被渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以参考要在PPU200的SM 340上实现的不同着色程序,包括顶点着色、外壳着色、域着色、几何着色和像素着色中的一个或更多个。例如,SM 340中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 340可以被配置为同时执行不同的着色程序。例如,SM 340的第一子集可以被配置为执行顶点着色程序,而SM 340的第二子集可以被配置为执行像素着色程序。SM 340的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存360和/或存储器204。在经处理的顶点数据被光栅化(即,从三维数据转换成屏幕空间中的二维数据)以产生片段数据之后,SM 340的第二子集执行像素着色以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并被写入存储器204中的帧缓冲区。顶点着色程序和像素着色程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲区。然后,帧缓冲区的内容被传送到显示控制器以在显示设备上显示。
图5是根据实施例的由图2的PPU 200实现的图形处理管线500的概念图。图形处理管线500是被实现以从3D几何数据生成2D计算机生成图像的处理步骤的抽象流程图。众所周知,管线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理管线500接收从图形处理管线500的一个阶段传送到下一阶段的输入数据501,以生成输出数据502。在一个实施例中,图形处理管线500可表示由API定义的图形处理管线。作为选择,图形处理管线500可以在先前附图和/或一个或更多个任何后续附图的功能和架构的上下文中实现。
如图5所示,图形处理管线500包括包含多个阶段的管线架构。这些阶段包括但不限于数据组装阶段510、顶点着色阶段520、图元组装阶段530、几何着色阶段540、视口缩放、剔除和裁剪(viewport scale,cull,and clip,VSCC)阶段550、光栅化阶段560、片段着色阶段570和光栅操作阶段580。在一个实施例中,输入数据501包括命令,其配置处理单元以实现图形处理管线500的阶段,并配置几何图元(例如,点、线、三角形、四边形、三角形带或扇形等)以由这些阶段处理。输出数据502可以包括像素数据(即,颜色数据),其被复制到存储器中的帧缓冲区或其他类型的表面数据结构中。
数据组装阶段510接收输入数据501,其指定用于高阶表面、图元等的顶点数据。数据组装阶段510收集临时存储或队列中的顶点数据,诸如通过从主机处理器接收包括指向存储器中的缓冲区的指针的命令并从该缓冲区读取顶点数据。顶点数据然后被传送到顶点着色阶段520以进行处理。
顶点着色阶段520通过对顶点中的每一个执行一次一组操作(即,顶点着色器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(即,<x,y,z,w>)。顶点着色阶段520可以操纵各个顶点属性,诸如位置、颜色、纹理坐标等。换句话说,顶点着色阶段520对与顶点相关联的顶点坐标或其他顶点属性执行操作。这些操作通常包括光照操作(即,修改顶点的颜色属性)和变换操作(即,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,其通过将坐标乘以矩阵进行变换,该矩阵将坐标从对象坐标空间转换到世界空间或归一化设备坐标(normalized-device-coordinate,NCD)空间。顶点着色阶段520生成被传送到图元组装阶段530的经变换的顶点数据。
图元组装阶段530收集由顶点着色阶段520输出的顶点并且将顶点分组成几何图元以由几何着色阶段540处理。例如,图元组装阶段530可以被配置为将每三个连续顶点分组为用于传送到几何着色阶段540的几何图元(即,三角形)。在一些实施例中,特定顶点可以被重新用于连续几何图元(例如,三角形带中的两个连续三角形可以共享两个顶点)。图元组装阶段530将几何图元(即,相关联的顶点的集合)传送到几何着色阶段540。
几何着色阶段540通过对几何图元执行一组操作(即,几何着色器或程序)来处理几何图元。曲面细分(tessellation)操作可以从每个几何图元生成一个或更多个几何图元。换言之,几何着色阶段540可以将每个几何图元细分为两个或更多个几何图元的更精细的网格,以由图形处理管线500的其余部分进行处理。几何着色阶段540将几何图元传送到视口SCC阶段550。
在一个实施例中,图形处理管线500可以在流式多处理器和顶点着色阶段520、图元组装阶段530、几何着色阶段540、片段着色阶段570和/或与其相关联的硬件/软件内操作,可顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC阶段550可以利用数据。在一个实施例中,由图形处理管线500中的阶段的一个或更多个处理的图元数据可以被写入高速缓存(例如,L1高速缓存、顶点高速缓存等)中。在这种情况下,在一个实施例中,视口SCC阶段550可以访问高速缓存中的数据。在一个实施例中,视口SCC阶段550和光栅化阶段560被实现为固定功能电路。
视口SCC阶段550执行几何图元的视口缩放、剔除和裁剪。正被渲染的每个表面都与抽象相机位置相关联。相机位置表示正观看该场景的观看者的位置并定义了包围该场景的对象的视锥体。视锥体可以包括观看平面、后平面和四个裁剪平面。完全位于视锥体之外的任何几何图元都可被剔除(即丢弃),因为这些几何图元将不会对最终渲染的场景做出贡献。部分位于视锥体内并且部分位于视锥体外的任何几何图元可以被裁剪(即,转换为被包围在视锥体内的新的几何图元)。此外,可以基于视锥体的深度来对每个几何图元进行缩放。然后将所有可能可见的几何图元传送到光栅化阶段560。
光栅化阶段560将3D几何图元转换成2D片段(例如,能够用于显示等)。光栅化阶段560可以被配置为利用几何图元的顶点来设置一组平面方程,从中可以内插各种属性。光栅化阶段560还可以计算多个像素的覆盖掩码,其指示像素的一个或更多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化阶段560生成片段数据(即,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),其被传送到片段着色阶段570。
片段着色阶段570通过对片段中的每一个执行一组操作(即,片段着色器或程序)来处理片段数据。片段着色阶段570可以生成片段的像素数据(即,颜色值),诸如通过使用片段的内插纹理坐标执行光照操作或采样纹理贴图。片段着色阶段570生成像素数据,其被发送到光栅操作阶段580。
光栅操作阶段580可对像素数据执行各种操作,诸如执行阿尔法测试、模板测试(stencil test)以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作阶段580已经完成对像素数据(即,输出数据502)的处理时,可以将像素数据写入渲染目标,诸如帧缓冲区、颜色缓冲区等。
应当领会,除上述阶段中的一个或更多个以外或代替上述阶段中的一个或更多个,一个或更多个额外的阶段可以被包括在图形处理管线500中。抽象图形处理管线的各种实现方式可以实现不同的阶段。此外,在一些实施例中,上述阶段中的一个或更多个可以从图形处理管线中排除(诸如几何着色阶段540)。其他类型的图形处理管线被认为是在本公开的范围内所构想的。此外,图形处理管线500的任何阶段可以由图形处理器(诸如PPU200)内的一个或更多个专用硬件单元来实现。图形处理管线500的其他阶段可以由可编程硬件单元(诸如PPU 200的SM 340)来实现。
图形处理管线500可以经由由主机处理器(诸如CPU)执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口(API),其定义可以被应用程序利用以生成用于显示的图形数据的各种功能。设备驱动程序是软件程序,其包括控制PPU 200的操作的多个指令。API为程序员提供抽象,其允许程序员利用专用图形硬件(诸如PPU 200)来生成图形数据而不要求程序员利用PPU 200的特定指令集。应用程序可以包括被路由到PPU 200的设备驱动程序的API调用。设备驱动程序解释API调用并执行各种操作以响应API调用。在一些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU和PPU 200之间的输入/输出接口在PPU 200上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用PPU 200的硬件来实现图形处理管线500。
可以在PPU 200内执行各种程序以便实现图形处理管线500的各个阶段。例如,设备驱动程序可以启动PPU 200上的内核以在一个SM 340(或多个SM 340)上执行顶点着色阶段520。设备驱动程序(或由PPU 300执行的初始内核)还可启动PPU 300上的其他内核以执行图形处理管线500的其他阶段,诸如几何着色阶段540和片段着色阶段570。另外,图形处理管线500的阶段中的一些可以在固定单元硬件(诸如在PPU 300内实现的光栅器或数据组装器)上实现。应当领会,在被SM 340上的后续内核处理之前,来自一个内核的结果可以由一个或更多个中间固定功能硬件单元处理。
机器学习
在处理器(诸如PPU 200)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性级别分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接的节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高级别的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 200支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 200是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
利用条件GAN的高分辨率图像合成与语义操纵
在一个实施例中,可以使用条件对抗网络(条件GAN)从语义标签映射合成高分辨率照片般逼真图像。条件GAN已经启用了各种应用程序,但结果通常仅限于低分辨率并且仍然远不够逼真。在一个实施例中,可以利用新颖的对抗性目标以及新的多尺度生成器和鉴别器架构来生成高分辨率、视觉上吸引人的结果。在一个实施例中,图像合成管线可以扩展到具有两个附加特征的交互式视觉操纵,包括(1)实例级片段信息的结合,其使能对象操纵,例如移除/添加对象和改变对象种类,以及(2)在给定相同输入标签映射的情况下生成不同结果的方法,允许用户以交互方式编辑每个对象的外观。该实现明显优于现有方法,提高了深度图像合成的质量和分辨率。
介绍
由于必须明确地模拟几何形状、材料和光传输,因此涉及使用标准图形技术渲染照片般逼真的图像。尽管现有的图形算法在任务方面表现优异,但构建和编辑虚拟环境既昂贵又耗时。那是因为我们必须明确地建模世界的每个部分。如果我们能够使用从数据中学习的模型渲染照片般逼真的图像,则我们可以将渲染图形的过程转变为模型学习和推理问题。然后,我们可以通过在新数据集上训练模型来简化创建新虚拟世界的过程。通过允许用户简单地指定语义信息而不是建模几何形状、材料或照明,我们甚至可以更容易地定制环境。
在一个实施例中,新方法可以从语义标签映射产生高分辨率图像。该方法具有广泛的应用。在一个实施例中,它可以用于创建用于训练视觉识别网络的合成训练数据,因为针对所需场景创建语义标签比生成训练图像容易得多。使用语义片段,可以将图像转换为语义标签域,可以在标签域中编辑对象,然后可以将对象变换回图像域。因此,可以提供新工具用于更高级别的图像编辑,例如,将对象添加到图像或改变现有对象的外观。
在一个实施例中,可以解决两个问题:(1)利用条件GAN生成高分辨率图像的难度和(2)先前高分辨率结果中缺少细节和逼真的纹理。凭借新的强大对抗性学习目标以及新的多尺度生成器和鉴别器架构,我们可以以高分辨率(例如,2048×1024分辨率等)合成照片般逼真的图像,并且实现比先前的方法更具视觉吸引力的结果。我们首先仅利用对抗性训练获得我们的结果,而不依赖于任何手工制作的损失或预先训练的网络。然后我们表明,如果预先训练好的网络可用,则添加来自预先训练的网络的感知损失可以在某些情况下略微改善结果。两种结果在图像质量方面都大大优于先前的工作。
此外,在一个实施例中,为了支持交互式语义操纵,我们利用两个扩展来增强我们的方法:首先,我们利用实例级片段信息来提高生成的图像的质量以及实现灵活的对象操纵,例如移除/添加对象和更改对象类型。其次,我们提出了一种方法,在给定相同的输入标签的情况下生成不同的结果,允许用户以交互方式编辑同一对象的外观。我们与最先进的视觉合成系统进行比较,并表明我们的方法在量化评估和人类感知研究方面都优于这些方法。我们还对我们网络的设计和实例级片段信息的重要性进行了消融(ablation)研究。
生成性对抗网络
在一个实施例中,生成性对抗网络(GAN)旨在通过迫使所生成的样本与自然图像无法区分来对自然图像副本(manifold)进行建模。GAN支持各种应用程序,如图像生成、表示学习和图像操纵。已经提出了各种粗到精的方案以在无条件设置中合成较大的图像(例如256×256)。在一个实施例中,我们提出了粗到精目标函数以及适用于以更高分辨率生成条件图像的新的多尺度生成器和鉴别器架构。
实例级图像合成
在一个实施例中,我们提出了一种条件对抗框架,用于从语义标签映射创建高分辨率照片般逼真的图像。我们首先简要回顾一下我们的基线模型pix2pix。然后,我们描述了我们如何利用改进的目标函数和网络设计来增加合成结果的照片般逼真感和分辨率。接下来,我们将展示我们如何使用额外的实例级语义信息来进一步提高图像质量。最后,我们将介绍一个实例级特征嵌入方案,以更好地处理图像合成的多模式性质,从而实现交互式对象编辑。
pix2pix基线
在一个实施例中,pix2pix框架包括用于图像到图像转换的条件GAN框架。它由生成器和鉴别器组成。在一个实施例中,生成器的目的是将语义标签映射转换为逼真的图像,而鉴别器的目的是将真实图像与转换的图像区分开。在一个实施例中,框架在监督设置中操作。换句话说,训练数据集被给定为一组对应的图像对{(si,xi)},其中si是语义标签映射,xi是对应的自然照片。在一个实施例中,条件GAN旨在在给定输入语义标签映射Pr(S|X)的情况下通过求解下式对真实图像的条件分布进行建模,其中S是语义标签映射的空间,X是真实图像的空间:
其中目标函数由下式给出:/>
在一个实施例中,在pix2pix中,生成器被实现为U-Net自动编码器,并且鉴别器被实现为基于补丁的鉴别器。鉴别器的输入是语义标签映射和对应图像的逐个通道的连结。生成的图像的分辨率高达256×256。在一个实施例中,可以改进pix2pix框架,如下所述。
改善照片般逼真感和分辨率
在一个实施例中,可以通过使用新的生成器架构、新的鉴别器架构和新的学习目标函数来改进pix2pix框架。
粗到精生成器
在一个实施例中,我们将生成器分解为两个子网:G0和G1。我们将G0称为全局生成器网络,将G1称为本地增强器网络。然后由元组给出生成器G={G0;G1}。
图6示出了根据一个实施例的生成器600的示例性网络架构。在一个实施例中,我们首先在较低分辨率图像上训练残余网络(G0)602。然后该网络用于初始化我们在高分辨率图像(G1)604A-B上训练的最终网络。具体地,G1 604A-B中的残余块的输入是来自G1604A-B的特征映射和来自(G0)602的最后特征映射的逐个元素之和。
在一个实施例中,全局生成器网络以1024×512的分辨率操作,并且本地增强器网络输出分辨率比前一个的输出的分辨率大四倍的图像(每个图像维度大两倍)。在一个实施例中,为了合成具有更高分辨率的图像,可以使用附加的局部增强器网络。在一个实施例中,生成器G={G1;G0}的输出图像分辨率为2048×1024,G={G2;G1;G0}的输出图像分辨率为4096×2048。
在一个实施例中,全局生成器网络可以基于利用残余块的网络架构。在一个实施例中,该架构由三个组件组成:卷积前端G0 (F),一组残余块G0 (R)和转置卷积后端G0 (B)。在一个实施例中,分辨率1024×512的语义标签映射顺序地通过三个组件以输出分辨率为1024×512的图像。
在一个实施例中,局部增强器网络还包括三个组件:卷积前端G1 (F),一组残余块G1 (R)和转置卷积后端G1 (B)。在一个实施例中,到G1的输入语义标签映射的分辨率是2048×1024。与全局生成器网络不同,残余块G1 (R)的输入是两个特征映射的逐个元素之和:G1 (F)的输出特征映射,以及全局生成器网络的后端G0 (B)的最后特征映射。这有助于将全局信息从G0整合到G1。在一个实施例中,当采用另一局部增强器网络G2来合成具有更高分辨率的图像时,残余块G2 (R)的输入是G2 (F)的输出特征映射和G1 (B)的最后特征映射的逐个元素之和。
在一个实施例中,在训练期间,我们首先训练全局生成器,然后按照其分辨率的顺序训练本地增强器。然后我们联合微调所有网络。我们使用此生成器设计有效地聚合用于图像合成任务的全局信息和本地信息。
多尺度鉴别器
高分辨率图像合成对GAN鉴别器设计提出了挑战。在一个实施例中,为了区分高分辨率真实图像和合成图像,鉴别器需要具有大的感受野。这将需要深度网络或大型卷积内核。由于这两种选择都会导致网络容量增加,因此过度拟合将成为一个问题。此外,两种选择都需要用于训练的更大内存占用,这对于高分辨率图像生成来说已经是稀缺资源。
在一个实施例中,为了解决该问题,我们提出使用多尺度鉴别器。在一个实施例中,我们使用具有相同网络结构(三层卷积网络)但在不同图像尺度下操作的三个鉴别器。我们将鉴别器称为D1、D2和D3。在一个实施例中,我们通过两个和四个因子将真实图像和合成的高分辨率图像下采样,以创建三个尺度的图像金字塔。然后训练鉴别器D1、D2和D3以分别在三个不同的尺度上区分真实图像和合成图像。在一个实施例中,尽管鉴别器具有相同的架构,但以最粗略尺度操作的鉴别器具有最大的感受野。它具有更全局的图像视图,并且可以指导生成器生成全局一致的图像。另一方面,以最精细尺度操作的鉴别器专门用于引导生成器生成更精细的细节。这也使得粗到精生成器的训练更容易,因为将其扩展到更高的分辨率只需要在最精细的级别添加额外的鉴别器,而不是从头开始重新训练。使用鉴别器,(1)中的学习问题然后成为一个多任务学习问题:
在一个实施例中,该设计可以扩展到不同图像尺度的多个鉴别器,用于对高分辨率图像进行建模。
改善的对抗性损失
在一个实施例中,我们通过结合GAN-鉴别器特征匹配损失来改进(2)中高分辨率图像合成任务的GAN损失。在一个实施例中,我们使用GAN鉴别器作为特征提取器,并学习匹配从真实图像和合成图像提取的中间特征表示。为了便于呈现,我们将鉴别器Dk的第i层特征提取器表示为Dk (i)(从输入到Dk的第i层)。然后通过以下方式给出特征匹配损失
其中T是鉴别器中的层数。在一个实施例中,我们的GAN鉴别器特征匹配损失与感知损失(或VGG特征匹配损失)有关,其被示出对图像超分辨率和样式转移有用。
结合GAN损失和GAN鉴别器特征匹配损失,学习问题由下式给出
其中λ是加权参数。在一个实施例中,λ>1可以改善性能。在一个实施例中,我们在所有实验中将其设定为10。
使用实例映射
在一个实施例中,语义标签映射是其中像素值表示像素所属的对象种类的图像。在一个实施例中,该映射不区分同一类的对象。另一方面,实例级语义标签映射包含每个单独对象的唯一对象ID。现有的图像合成方法仅利用语义标签映射。在下文中,当其可用时,我们提出了两种方法来利用实例映射。
实例边界映射
在一个实施例中,我们认为实例映射提供的最重要的信息是对象边界,该信息在语义标签映射中不可用。在一个实施例中,当许多相同类对象彼此相邻时,单独查看语义标签映射不能区分它们。这对于街道场景尤其如此,因为许多停放的汽车或步行的行人经常彼此相邻。但是,在给定实例映射时,将这些对象分开会成为更容易的任务。
因此,为了提取该信息,在一个实施例中,我们首先计算实例边界映射。在一个实施例中,如果其对象ID与其四个邻居中的任何一个不同,则该实例边界映射中的像素是1,否则为0。在一个实施例中,然后将实例边界映射与输入语义标签映射(编码为单热向量)连结并馈送到生成器网络中。类似地,鉴别器的输入是实例边界映射、语义标签映射和真实/合成图像的逐个通道的连结。
实例级鉴别器
在一个实施例中,利用实例映射,我们能够将专用GAN鉴别器应用于图像中的各个实例,以进一步改善图像合成性能。具体地,我们基于实例映射在真实图像和合成图像中裁剪图像区域。然后,基于它们的语义种类将实例的经裁剪图像分成不同的组。然后使用特定于种类的GAN鉴别器来区分同一组中的真实图像区域和合成图像区域。在一个实施例中,我们将特定于种类的鉴别器应用于汽车实例,并且仅当汽车实例的边界框大于128×128时。该技术帮助生成器合成具有更多语义上统一外观的汽车。
使用实例特征映射
在一个实施例中,来自语义标签映射的图像合成是多模式映射问题。图像合成算法应该能够使用相同的语义标签映射生成不同的真实图像。
在一个实施例中,为了实现生成不同图像并允许实例级控制的能力,我们建议将附加特征通道添加到生成器网络的输入。我们表明,通过操纵这些特征,我们可以对图像合成过程有更多的控制。我们注意到,由于这些特征是连续的数量,它们能够产生无限多的图像。
在一个实施例中,为了生成所需特征,我们训练编码器网络以嵌入输入图像。我们使用与我们的生成器类似的编码器架构。为确保每个实例中的特征统一,我们将逐个实例的平均池化层添加到编码器的输出中,以计算实例的平均特征。然后将平均特征广播到实例的所有像素位置。
图7示出了根据一个示例性实施例的示例性训练编码器架构700。在一个实施例中,除了用于生成图像的标签映射704之外,使用逐个实例的特征映射702,我们首先在原始图像708上运行编码器网络706,然后执行逐个实例的平均池化708,使得每个实例共享相同的特征。然后将该特征映射与标签映射连结并馈送到图像生成网络712。在一个实施例中,图像生成网络712和编码器网络706被端对端地一起训练以输出最终图像。
在一个实施例中,编码器用端对端的生成器和鉴别器进行训练以求解(5)。在一个实施例中,在训练编码器之后,我们在训练图像中的所有实例上运行它并记录所获得的特征。在一个实施例中,然后我们针对每个语义标签类型在这些特征上执行K均值群集。因此,每个群集对特定样式的特征进行编码。在一个实施例中,用于道路的柏油或鹅卵石。在一个实施例中,在推理时,我们随机选择一个群集中心并将其用作编码特征。这些特征与标签映射连结在一起,并用作生成器的输入。
交互式对象编辑
在一个实施例中,给定我们的特征辅助网络,我们还能够在结果图像上执行交互式实例编辑。在一个实施例中,我们可以改变单个汽车的颜色或道路的风格。我们还可以更改图像中的标签以生成不同的结果,例如用建筑物替换树木。这使得能够非常用户友好地操纵图像。此外,我们还在面部数据集上实现我们的实例编辑特征,其中可以使用不同面部部分的标签。这使得易于操纵面部图像(例如,通过改变面部颜色来模仿不同的化妆效果,或者将胡须添加到面部等)。
讨论
在一个实施例中,条件GAN可以合成高分辨率照片般逼真图像而没有任何手工制作的损失或无需预训练的网络。在一个实施例中,结合感知损失可以用额外的计算成本稍微改善结果。我们的方法将允许许多应用程序,特别是对于需要高分辨率结果但是没有预训练网络的域(例如医学成像、生物学等)有用。此外,可以扩展图像到图像合成管线以产生不同的输出,并且在给定适当的训练输入-输出对(例如,在我们的情况下为实例映射)的情况下实现交互式图像操纵。
图8示出了根据实施例的用于训练粗到精生成器的方法800的流程图。尽管在处理单元的上下文中描述了方法800,但是方法800还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法800可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法800的任何系统都在本发明的实施例的范围和精神内。
如操作802所示,接收语义表示作为粗到精生成器的输入。另外,如操作804所示,粗到精生成器使用语义表示来创建图像。此外,如操作806所示,图像被发送到鉴别器。
此外,如操作808所示,鉴别器将图像与语义表示所基于的原始图像进行比较,以创建指示图像是否与原始图像匹配的反馈。在一个实施例中,鉴别器可以包括多个多尺度鉴别器,每个多尺度鉴别器包括与其他多尺度鉴别器分开的神经网络。
在一个实施例中,图像可被下采样多次以创建多个下采样图像,并且多个多尺度鉴别器的每一个可以在不同于其它多尺度鉴别器的图像尺度操作,并且可分析多个下采样图像中的一个。在一个实施例中,鉴别器可以从图像中提取第一组中间特征表示,并且还可以从语义表示所基于的原始图像中提取第二组中间特征表示。
在一个实施例中,鉴别器可以将第一组中间特征表示与第二组中间特征表示进行比较以创建反馈,其中反馈包括关于中间特征表示是否匹配的指示。
此外,如操作810所示,鉴别器将反馈发送到粗到精生成器。另外,如操作812所示,利用反馈更新粗到精生成器。在一个实施例中,更新粗到精生成器可以包括基于反馈在图像创建期间改变由粗到精生成器做出的一个或更多个决策。
图9示出了根据实施例的用于实现经训练的粗到精生成器的方法900的流程图。尽管在处理单元的上下文中描述了方法900,但是方法900还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法900可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法900的任何系统都在本发明的实施例的范围和精神内。
如操作902所示,接收语义表示作为粗到精生成器的输入。另外,如操作904所示,粗到精生成器的粗略神经网络利用语义表示创建具有第一分辨率的第一图像。
此外,如操作906所示,粗到精生成器的精细神经网络利用用于生成第一图像的语义表示和特征来创建具有大于第一分辨率的第二分辨率的第二图像。在一个实施例中,用于生成第一图像的特征可以包括粗略网络的一个或更多个中间特征层。此外,如操作908所示,粗到精生成器输出第二图像。
图10示出了根据实施例的用于利用实例特征映射来细化输出的方法1000的流程图。尽管在处理单元的上下文中描述了方法1000,但是方法1000还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法1000可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法1000的任何系统都在本发明的实施例的范围和精神内。
如操作1002所示,特征编码器网络创建图像的实例特征映射。在一个实施例中,特征编码器网络可以使用逐个实例的平均池化来确保特征在实例特征映射内是统一的。另外,如操作1004所示,粗到精生成器的粗略神经网络利用图像的语义表示和实例特征映射创建具有第一分辨率的第一图像。
此外,如操作1006所示,粗到精生成器的精细神经网络利用语义表示、实例特征映射和用于生成第一图像的特征来创建具有大于第一分辨率的第二分辨率的第二图像。此外,如操作1008所示,粗到精生成器输出第二图像。以这种方式,实例特征映射可以在细化输出以外允许输出图像的实例级操纵(例如,通过改变对象(诸如汽车)的样式或对象(诸如道路)的纹理)。
图11示出了根据实施例的用于至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型的方法1100的流程图。尽管在处理单元的上下文中描述了方法1100,但是方法1100还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法1100可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法1100的任何系统都在本发明的实施例的范围和精神内。
如操作1102所示,仅使用图像的第一数字表示的语义表示来训练粗略神经网络,以生成图像的粗略数字表示,该粗略数字表示的分辨率小于图像的第一数字表示的分辨率。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的语义标签映射。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的边缘映射。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的关系映射。
另外,如操作1104所示,使用图像的第一数字表示的语义表示和图像的粗略数字表示来训练精细神经网络,以生成图像的精细数字表示,该精细数字表示的分辨率大于图像的粗略数字表示的分辨率。
此外,如操作1106所示,将图像的精细数字表示与图像的第一数字表示进行比较。此外,如操作1108所示,调整与粗略神经网络和精细神经网络中的一个或两个的一个或更多个节点相关联的权重值,以最小化图像的第一数字表示与图像的精细数字表示之间的差异。
此外,在一个实施例中,可以利用图像的精细数字表示来生成图像的下采样精细数字表示,其中图像的下采样精细数字表示的分辨率小于图像的精细数字表示的分辨率。在一个实施例中,可以利用图像的第一数字表示来生成图像的下采样第一数字表示,该下采样第一数字表示的分辨率小于图像的第一数字表示的分辨率。
此外,在一个实施例中,可以将图像的下采样精细数字表示与图像的下采样第一数字表示进行比较,并且调整与粗略神经网络和精细神经网络中的一个或两个的一个或更多个节点相关联的权重值,以最小化图像的下采样精细数字表示与图像的下采样第一数字表示之间的差异。
另外,在一个实施例中,可以利用图像的精细数字表示来提取图像的精细数字表示的一组中间特征表示。在一个实施例中,可以利用图像的第一数字表示来提取图像的第一数字表示的一组中间特征表示。在一个实施例中,可以将图像的精细数字表示的一组中间特征表示与图像的第一数字表示的一组中间特征表示进行比较,并且可以调整与粗略神经网络和精细神经网络中的一个或两个的一个或更多个节点相关联的权重值,以最小化图像的精细数字表示的该组中间特征表示与图像的第一数字表示的该组中间特征表示之间的差异。
此外,在一个实施例中,还可以至少部分地基于图像的第一数字表示的实例特征映射来训练机器学习模型。在一个实施例中,可以将图像的第一数字表示的实例特征映射添加到图像的第一数字表示的语义表示,作为机器学习模型的输入。
在一个实施例中,可以利用图像的精细数字表示来生成图像的多个下采样精细数字表示,该下采样精细数字表示的分辨率小于图像的精细数字表示的分辨率。在一个实施例中,还可以利用图像的第一数字表示来生成图像的多个下采样第一数字表示,该下采样第一数字表示的分辨率小于图像的第一数字表示的分辨率。在一个实施例中,图像的精细数字表示和图像的下采样精细数字表示可以通过多个神经网络与图像的第一数字表示和图像的下采样第一数字表示进行比较,其中多个神经网络中的每一个以不同于其他神经网络的分辨率操作。在一个实施例中,可以调整与粗略神经网络和精细神经网络中的一个或两个的一个或更多个节点相关联的权重值,以最小化图像的精细数字表示和图像的下采样精细数字表示与图像的第一数字表示和图像的下采样第一数字表示之间的差异。
图12示出了根据实施例的用于至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型的方法1200的流程图。尽管在处理单元的上下文中描述了方法1200,但是方法1200还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法1200可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法1200的任何系统都在本发明的实施例的范围和精神内。
如操作1202所示,仅使用图像的第一数字表示的语义表示来训练粗略神经网络,以生成图像的粗略数字表示,该粗略数字表示的分辨率小于图像的第一数字表示的分辨率。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的语义标签映射。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的边缘映射。在一个实施例中,图像的第一数字表示的语义表示包括图像的第一数字表示的关系映射。
另外,如操作1204所示,使用图像的第一数字表示的语义表示和图像的粗略数字表示来训练精细神经网络,以生成图像的精细数字表示,该精细数字表示的分辨率大于图像的粗略数字表示的分辨率。
图13示出了根据实施例的示例性机器学习模型1300。如图所示,示例性机器学习模型1300包括粗略神经网络1302和精细神经网络1304。在一个实施例中,粗略神经网络1302可以仅使用图像的第一数字表示的语义表示来生成图像的粗略数字表示,该粗略数字表示的分辨率小于图像的第一数字表示的分辨率。
另外,在一个实施例中,精细神经网络1304可以使用图像的第一数字表示的语义表示和图像的粗略数字表示来生成图像的精细数字表示,该精细数字表示的分辨率大于图像的粗略数字表示的分辨率。
图14示出了根据实施例的用于使用经训练的生成器架构的方法1400的流程图。尽管在处理单元的上下文中描述了方法1400,但是方法1400还可以由程序、定制电路或定制电路和程序的组合来执行。在一个实施例中,方法1400可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法1400的任何系统都在本发明的实施例的范围和精神内。
如操作1402所示,粗略神经网络仅使用图像的第一数字表示的语义表示来生成图像的粗略数字表示,该粗略数字表示的分辨率小于图像的第一数字表示的分辨率。另外,如操作1404所示,精细神经网络使用图像的第一数字表示的语义表示以及图像的粗略数字表示生成图像的精细数字表示,该精细数字表示的分辨率大于图像的粗略数字表示的分辨率。
虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

Claims (34)

1.一种处理器,包括:
一个或更多个电路,其用于训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
2.如权利要求1所述的处理器,其中,所述一个或更多个电路进一步用于:
使用所述一个或更多个神经网络中的第一神经网络来生成第一图像;
使用所述一个或更多个神经网络中的第二神经网络至少部分地基于所述第一图像来生成第二图像;以及
基于所述图像与所述第二图像之间的差异来训练所述一个或更多个神经网络。
3.如权利要求2所述的处理器,其中,所述一个或更多个电路进一步用于:通过至少部分地基于所述图像与所述第二图像之间的差异来至少调整所述第一神经网络和所述第二神经网络中的一个或更多个节点的一个或更多个值来训练所述一个或更多个神经网络。
4.如权利要求1所述的处理器,其中,所述一个或更多个标签指示所述一个或更多个像素对应的一个或更多个对象的种类。
5.如权利要求1所述的处理器,其中,所述一个或更多个神经网络包括一个或更多个生成器神经网络。
6.如权利要求1所述的处理器,其中,所述一个或更多个电路进一步用于使用至少一个或更多个特征匹配损失函数来训练所述一个或更多个神经网络。
7.如权利要求1所述的处理器,其中,通过语义标签映射表示所述一个或更多个像素的所述一个或更多个标签。
8.一种系统,包括:
一个或更多个计算机,其具有一个或更多个处理器来训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
9.如权利要求8所述的系统,其中,所述一个或更多个处理器进一步用于:
使用所述一个或更多个神经网络来生成所述图像的第一表示;
至少部分地基于所述图像的所述第一表示和所述一个或更多个标签来生成所述图像的第二表示;以及
基于所述图像和所述图像的第二表示来训练所述一个或更多个神经网络。
10.如权利要求9所述的系统,其中,所述图像的第二表示的分辨率大于所述图像的第一表示的分辨率。
11.如权利要求9所述的系统,其中,所述一个或更多个处理器进一步用于通过至少使用鉴别器神经网络处理所述图像和所述图像的第二表示来训练所述一个或更多个神经网络。
12.如权利要求8所述的系统,其中,所述一个或更多个处理器进一步用于使用一个或更多个特征来生成所述图像。
13.如权利要求12所述的系统,其中,所述一个或更多个特征指示所生成的图像的一个或更多个属性。
14.一种处理器,包括:
一个或更多个电路,用于使用一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
15.如权利要求14所述的处理器,其中,所述一个或更多个电路进一步用于:
使用第一生成器以至少部分地基于所述一个或更多个像素的所述一个或更多个标签来生成第一图像;以及
使用第二生成器以至少部分地基于所述第一图像来生成所述图像,其中所述图像描绘与所述一个或更多个像素的所述一个或更多个标签相对应的一个或更多个对象。
16.如权利要求14所述的处理器,其中,所述一个或更多个电路进一步用于:
获得特征集,其中所述特征集指示所述图像的一个或更多个特性;以及
使所述一个或更多个神经网络处理所述特征集以生成所述图像。
17.如权利要求16所述的处理器,其中,所述一个或更多个电路进一步用于使用一个或更多个编码器来生成所述特征集。
18.如权利要求14所述的处理器,其中,通过一个或更多个语义表示指示所述一个或更多个像素的所述一个或更多个标签。
19.如权利要求14所述的处理器,其中,所述一个或更多个电路进一步用于将所述图像输入至自动驾驶车辆的一个或更多个系统以用于物体检测。
20.一种系统,包括:
一个或更多个计算机,其具有一个或更多个处理器,所述一个或更多个处理器使用一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
21.如权利要求20所述的系统,其中,所述一个或更多个处理器进一步用于:
使所述一个或更多个神经网络中的第一神经网络生成所述图像的第一表示;以及
使所述一个或更多个神经网络中的第二神经网络至少部分地基于所述图像的第一表示和所述一个或更多个像素的所述一个或更多个标签来生成所述图像。
22.如权利要求20所述的系统,其中,所述一个或更多个处理器进一步用于:
获得与一个或更多个对象相对应的一个或更多个特征;以及
至少部分地基于所述一个或更多个特征来生成描绘所述一个或更多个对象的所述图像。
23.如权利要求22所述的系统,其中,所述一个或更多个处理器进一步用于使用一个或更多个池化操作来获得所述一个或更多个特征。
24.如权利要求20所述的系统,其中,所述一个或更多个处理器进一步用于将所述图像输入至自动驾驶车辆的一个或更多个系统以用于一个或更多个导航任务。
25.如权利要求21所述的系统,其中,所述第一神经网络和所述第二神经网络是一个或更多个生成性对抗网络的部分。
26.一种机器可读介质,具有存储在其上的指令集,所述指令集在由一个或更多个处理器执行时,使所述一个或更多个处理器至少:
训练一个或更多个神经网络以至少部分地基于一个或更多个像素的一个或更多个标签来生成图像。
27.如权利要求26所述的机器可读介质,其中,所述指令集进一步包括指令,所述指令如果由所述一个或更多个处理器执行时,使所述一个或更多个处理器:
基于所述一个或更多个像素的所述一个或更多个标签来生成所述图像的第一数字表示;
基于所述图像的第一数字表示来生成所述图像的第二数字表示;以及
通过至少将所述图像的所述第二数字表示与所述图像进行比较来训练所述一个或更多个神经网络。
28.如权利要求27所述的机器可读介质,其中,所述指令集进一步包括指令,所述指令如果由所述一个或更多个处理器执行时,使所述一个或更多个处理器:
处理所述图像以生成下采样图像;
处理所述图像的所述第二数字表示以生成所述图像的下采样的第二数字表示;以及
通过至少将所述图像的所述下采样的第二数字表示与所述下采样图像进行比较来训练所述一个或更多个神经网络。
29.如权利要求26所述的机器可读介质,其中,所述指令集进一步包括指令,所述指令如果由所述一个或更多个处理器执行时,使所述一个或更多个处理器使用一个或更多个生成性对抗网络的一个或更多个鉴别器部分来训练所述一个或更多个神经网络。
30.如权利要求29所述的机器可读介质,其中,所述一个或更多个鉴别器包括一个或更多个基于补丁的鉴别器。
31.如权利要求26所述的机器可读介质,其中,所述指令集进一步包括指令,所述指令如果由所述一个或更多个处理器执行时,使所述一个或更多个处理器通过至少部分地基于所生成的图像至少调整与所述一个或更多个神经网络相关联的一个或更多个权重值来训练所述一个或更多个神经网络。
32.一种方法,包括:
至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型,其中训练所述机器学习模型包括:
仅使用所述图像的所述第一数字表示的所述语义表示来训练粗略神经网络,以生成所述图像的粗略数字表示,所述粗略数字表示的分辨率小于所述图像的所述第一数字表示的分辨率;
使用所述图像的所述第一数字表示的所述语义表示和所述图像的所述粗略数字表示来训练精细神经网络,以生成所述图像的精细数字表示,所述精细数字表示的分辨率大于所述图像的所述粗略数字表示的分辨率;
将所述图像的所述精细数字表示与所述图像的所述第一数字表示进行比较;以及
调整与所述粗略神经网络和所述精细神经网络中的一个或两个的一个或更多个节点相关联的权重值,以最小化所述图像的所述第一数字表示与所述图像的所述精细数字表示之间的差异。
33.一种方法,包括:
至少部分地基于图像的第一数字表示的语义表示来训练机器学习模型,其中训练所述机器学习模型包括:
仅使用所述图像的所述第一数字表示的所述语义表示来训练粗略神经网络,以生成所述图像的粗略数字表示,所述粗略数字表示的分辨率小于所述图像的所述第一数字表示的分辨率;以及
使用所述图像的所述第一数字表示的所述语义表示和所述图像的所述粗略数字表示来训练精细神经网络,以生成所述图像的精细数字表示,所述精细数字表示的分辨率大于所述图像的所述粗略数字表示的分辨率。
34.一种机器学习模型,包括:
粗略神经网络,其仅使用图像的第一数字表示的语义表示生成所述图像的粗略数字表示,所述粗略数字表示的分辨率小于所述图像的所述第一数字表示的分辨率;以及
精细神经网络,其利用所述图像的所述第一数字表示的所述语义表示和所述图像的所述粗略数字表示生成所述图像的精细数字表示,所述精细数字表示的分辨率大于所述图像的所述粗略数字表示的分辨率。
CN202410048693.5A 2017-11-15 2018-11-15 利用表示不同种类像素的映射创建图像 Pending CN117953092A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762586743P 2017-11-15 2017-11-15
US62/586,743 2017-11-15
US16/188,920 2018-11-13
US16/188,920 US20190147296A1 (en) 2017-11-15 2018-11-13 Creating an image utilizing a map representing different classes of pixels
CN201811360736.4A CN110009705A (zh) 2017-11-15 2018-11-15 利用表示不同种类像素的映射创建图像

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201811360736.4A Division CN110009705A (zh) 2017-11-15 2018-11-15 利用表示不同种类像素的映射创建图像

Publications (1)

Publication Number Publication Date
CN117953092A true CN117953092A (zh) 2024-04-30

Family

ID=66335842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410048693.5A Pending CN117953092A (zh) 2017-11-15 2018-11-15 利用表示不同种类像素的映射创建图像

Country Status (3)

Country Link
US (1) US20220012536A1 (zh)
CN (1) CN117953092A (zh)
DE (1) DE102018128592A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11299169B2 (en) * 2020-01-24 2022-04-12 Ford Global Technologies, Llc Vehicle neural network training
WO2023205726A1 (en) * 2022-04-20 2023-10-26 The General Hospital Corporation Deep learning based image reconstruction

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10643320B2 (en) * 2017-11-15 2020-05-05 Toyota Research Institute, Inc. Adversarial learning of photorealistic post-processing of simulation with privileged information
US20190147296A1 (en) * 2017-11-15 2019-05-16 Nvidia Corporation Creating an image utilizing a map representing different classes of pixels
US10984286B2 (en) * 2018-02-02 2021-04-20 Nvidia Corporation Domain stylization using a neural network model
US10922793B2 (en) * 2018-05-16 2021-02-16 Nvidia Corporation Guided hallucination for missing image content using a neural network
DE102019123455A1 (de) * 2018-09-04 2020-03-05 Nvidia Corporation Gemeinsame synthese und platzierung von objekten in szenen
US20200074707A1 (en) * 2018-09-04 2020-03-05 Nvidia Corporation Joint synthesis and placement of objects in scenes
US11934959B2 (en) * 2020-06-01 2024-03-19 Nvidia Corporation Video synthesis using one or more neural networks
US20230252692A1 (en) * 2022-02-04 2023-08-10 Nvidia Corporation Learning dense correspondences for images

Also Published As

Publication number Publication date
DE102018128592A1 (de) 2019-05-16
US20220012536A1 (en) 2022-01-13

Similar Documents

Publication Publication Date Title
CN110176054B (zh) 用于训练神经网络模型的合成图像的生成
US20190147296A1 (en) Creating an image utilizing a map representing different classes of pixels
US10922793B2 (en) Guided hallucination for missing image content using a neural network
US11631239B2 (en) Iterative spatio-temporal action detection in video
US10872399B2 (en) Photorealistic image stylization using a neural network model
CN109472858B (zh) 用于逆向图形的可微分渲染管线
US10970816B2 (en) Motion blur and depth of field reconstruction through temporally stable neural networks
US20190295228A1 (en) Image in-painting for irregular holes using partial convolutions
CN111210498B (zh) 降低多边形网格的细节水平以减少被渲染几何的复杂度
CN110766778B (zh) 使用散列执行并行路径空间滤波的方法和系统
US11106261B2 (en) Optimal operating point estimator for hardware operating under a shared power/thermal constraint
US20190158884A1 (en) Using residual video data resulting from a compression of original video data to improve a decompression of the original video data
EP3678037A1 (en) Neural network generator
CN113392968A (zh) 针对神经网络的迭代式小样本精细化的微训练
US11847733B2 (en) Performance of ray-traced shadow creation within a scene
US20220012536A1 (en) Creating an image utilizing a map representing different classes of pixels
CN115797543A (zh) 单个图像逆向渲染
US11069095B1 (en) Techniques for efficiently sampling an image
US20200177798A1 (en) Machine Learning of Environmental Conditions to Control Positioning of Visual Sensors
CN113822975B (zh) 用于对图像进行有效采样的技术

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