CN115797543A - 单个图像逆向渲染 - Google Patents
单个图像逆向渲染 Download PDFInfo
- Publication number
- CN115797543A CN115797543A CN202210947455.9A CN202210947455A CN115797543A CN 115797543 A CN115797543 A CN 115797543A CN 202210947455 A CN202210947455 A CN 202210947455A CN 115797543 A CN115797543 A CN 115797543A
- Authority
- CN
- China
- Prior art keywords
- image
- representation
- features
- input
- cnn
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/094—Adversarial learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- 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/0475—Generative 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本发明公开了单个图像逆向渲染。单个二维(2D)图像可用作输入以获得2D图像的三维(3D)表示。这是通过由编码器从2D图像提取特征,并利用经训练的2D卷积神经网络(CNN)确定2D图像的3D表示来完成的。然后在3D表示上运行体积渲染以组合一个或更多个观察方向内的特征,并且组合的特征作为输入被提供给针对3D表示内的每个点预测和输出颜色(或多维神经特征)和密度值的多层感知器(MLP)。因此,可以仅使用单个2D图像作为输入来执行单个图像逆向渲染,以创建单个2D图像中的场景的对应3D表示。
Description
技术领域
本发明涉及图像渲染,并且更具体地涉及从二维图像生成三维模型。
背景技术
逆向渲染是一个有价值的过程,其中利用二维(2D)图像生成三维(3D)场景。然而,当前执行逆向渲染的方法有很大的局限性。例如,当前学习体积3D表示的方法需要来自不同视点的多个2D图像,以及训练期间的地面真值3D几何结构。当前的方法还需要冗长的特定场景优化过程,并且不能实时运行。当前的方法还假设目标特定的先验,例如人头,需要特定类别的预训练模型,或者不生成完整的3D场景表示。
因此需要通过生成单个2D图像的三维(3D)表示来执行逆向渲染。
附图说明
图1示出了根据一个实施例的用于执行单个图像逆向渲染的方法的流程图。
图2示出了根据一个实施例的并行处理单元。
图3A示出了根据一个实施例的图2的并行处理单元内的通用处理集群。
图3B示出了根据一个实施例的图2的并行处理单元的存储器分区单元。
图4A示出了根据一个实施例的图3A的流式多处理器。
图4B是根据一个实施例的使用图2的PPU实现的处理系统的概念图。
图4C示出了可以在其中实现各种先前实施例的各种架构和/或功能的示例性系统。
图5示出了根据一个实施例的示例性单个图像逆向渲染环境。
图6示出了根据一个实施例的用于训练单个图像逆向渲染环境的方法的流程图。
具体实施方式
单个二维(2D)图像(例如从相机获得的图像)可以用作输入以获得2D图像的三维(3D)表示。这是通过由编码器从2D图像提取特征,并利用经训练的2D卷积神经网络(CNN)确定2D图像的3D表示来完成的。然后在3D表示上运行体积渲染以组合一个或更多个观察方向内的特征,并且组合的特征作为输入被提供给针对3D表示内的每个点预测和输出颜色(或多维神经特征)和密度值的多层感知器(MLP)。
结果,可以仅使用单个2D图像作为输入来执行单个图像逆向渲染以在单个2D图像中创建场景的对应3D表示。
图1示出了根据一个实施例的用于执行单个图像逆向渲染的方法100的流程图。尽管方法100是在处理单元的背景中描述的,但是方法100也可以由程序、定制电路或由定制电路和程序的组合来执行。例如,方法100可以由GPU(图形处理单元)、CPU(中央处理单元)或任何处理元件来执行。此外,本领域普通技术人员将理解执行方法100的任何系统都在本发明实施例的范围和精神内。
如操作102所示,识别单个二维(2D)图像。在一个实施例中,单个2D图像可以包括一个或更多个对象(例如,一个或更多个人、车辆、建筑物、动物、地形等)的图片。在另一个实施例中,可以利用相机(例如,移动设备相机、安装在车辆上的相机等)来创建单个2D图像。然而,当然,可以以任何方式识别单个2D图像。例如,单个2D图像可以从互联网下载、由相机捕获、由人类绘制、由另一个神经网创建等。
另外,如操作104所示,利用2D卷积神经网络(CNN)来生成单个2D图像的三维(3D)表示。在一个实施例中,可以将单个2D图像输入到编码器中,该编码器可以在单个2D图像内的每个点处提取一个或更多个特征。在另一个实施例中,可以将编码器提取的特征输入到2D CNN中。
例如,2D CNN可以包括解码器。在另一个示例中,2D CNN可以包括经训练的生成对抗网络(GAN)。在又一个示例中,2D CNN可以将提取的特征作为输入,并且可以输出在2D图像内发现的场景的3D表示。
此外,在一个实施例中,3D表示可以包括混合显式-隐式模型。例如,3D表示可以包括在3D空间中以轴对齐方式定向的多个稀疏2D神经平面(例如,3-平面表示)。
此外,在一个实施例中,3D表示可以包括树结构。在另一个实施例中,3D表示可以包括密集体素结构。例如,3D表示可以包括离散空间中的多个密集体素(voxel)。
此外,在一个实施例中,体积渲染可以在3D表示上运行以聚合一个或更多个观察方向内的神经特征。在另一个实施例中,可以将聚合的神经特征作为输入提供给多层感知器(MLP)。例如,MLP可以包括前馈人工神经网络(ANN)。在另一个示例中,MLP可以预测和输出3D表示内的每个点的颜色和密度值。在又一个实施例中,MLP解码器可以直接预测最终的RGB颜色,或者MLP解码器可以预测多维神经特征,并且这些神经特征可以被馈送到一个或更多个附加层(例如,2D CNN)以进一步细化,其中这些附加层可以使用预测的多维神经特征来预测最终的RGB颜色。
此外,在一个实施例中,可以实时生成单个2D图像的3D表示。在另一个实施例中,可以在MLP的输出上运行附加层以进一步细化输出。在又一实施例中,可以输入多个2D图像而不是单个2D图像,并且可以基于多个2D图像生成3D表示。
此外,在一个实施例中,符号距离函数(SDF)可用于确定聚合神经特征的3D表面,并且MLP可用于确定3D表示内的每个点的颜色值(或多维神经特征)。在另一个实施例中,在单个2D图像中示出的生成的场景的3D表示可用于执行一个或更多个导航动作(例如,自主车辆或对象导航等)。在又一实施例中,在单个2D图像中示出的生成的场景的3D表示可以在一个或更多个游戏环境中使用(例如,作为用户化身等)。
此外,可以利用一个或更多个本地计算设备、一个或更多个联网/分布式计算设备、一个或更多个云计算设备等来生成单个2D图像的3D表示。
以此方式,可以仅使用单个2D图像作为输入来执行单个图像逆向渲染以创建在单个2D图像中示出的场景的3D表示。这可以避免在训练2D CNN以生成3D表示时需要特定于数据集的先验信息,并且还可以允许访问各种2D图像阵列以进行3D转换。3D表示的创建可以以前馈方式执行(例如,不必执行每场景优化),这可以提高实现上述3D表示生成的计算硬件的性能。
在又一个实施例中,上述功能可以利用并行处理单元(PPU)来执行,诸如图2中所示的PPU 200。
现在将根据用户的需要,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应强烈注意,以下信息仅用于说明目的,不应解释为以任何方式进行限制。在排除或不排除所描述的其他特征的情况下,可以任选地结合以下任何特征。
并行处理架构
图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按照命令指定将解码的命令发送到PPU 200的各种其他单元。例如,一些命令可以被发送到前端单元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写入数据的存储器接口。结果可以通过NVLink 210发送到另一个PPU 200或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所示,每个GPC250包括用于处理任务的多个硬件单元。在一个实施例中,每个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(单指令、多数据)体系架构,其中线程组(即,线程束)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 340实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使能线程束之间的并发和线程束内的串行执行。在另一个实施例中,为每个个体线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个个体线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图4A更详细地描述SM 340。
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。尽管在图3B中ROP单元350被包括在存储器分区单元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(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 340还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 452。在一个实施例中,SFU 452可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 452可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器204加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由SM 340执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/L1高速缓存370中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个SM 340包括两个纹理单元。
每个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是根据一个实施例的使用图2的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之间接口。PPU200、存储器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在PPU 200和CPU 430之间通过交换机410提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连202在每个PPU 200之间直接地提供一个或更多个通信链路。可以使用与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,其包括连接到通信总线475的至少一个中央处理单元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)上开发的深度神经网络(DNN)已用于多种用例,从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用程序中的智能实时语言翻译。深度学习是一种模拟人脑神经学习过程的技术,不断学习,不断变得更聪明,并随着时间的推移更快地提供更准确的结果。孩子最初由成人教导正确地识别和分类各种形状,最终能够在没有任何指导的情况下识别形状。同样,深度学习或神经学习系统需要在对象识别和分类方面进行训练,因为它在识别基本对象、被遮挡对象等方面变得更智能、更高效,同时还为对象指派上下文。
在最简单的级别上,人脑中的神经元查看接收到的各种输入,将重要性级别指派给这些输入中的每一个,并且将输出传递给其他神经元以对其进行操作。人工神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,这些输入表示感知器正在被训练以识别和分类的对象的各种特征,并且这些特征中的每一个都基于该特征在定义对象的形状方面的重要性而被分配特定权重。
深度神经网络(DNN)模型包括许多连接的感知器(例如,节点)的多个层,这些感知器可以用大量输入数据进行训练,从而以高精度快速解决复杂问题。在一个示例中,DLL模型的第一层将汽车的输入图像分解为多个部分,并寻找基本模式,例如线条和角度。第二层组装线条以寻找更高级别的模式,例如车轮、挡风玻璃和镜子。下一层识别车辆类型,最后几层为输入图像生成标签,以识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在称为推理的过程中识别和分类对象或模式。推理示例(DNN从给定输入中提取有用信息的过程)包括识别存入ATM机的支票上的手写数字、识别照片中的朋友图像、向超过5000万用户提供电影推荐、识别和分类无人驾驶汽车中的不同类型的汽车、行人和道路危险,或实时翻译人类语音。
在训练期间,数据在前向传播阶段流经DNN,直到产生指示对应于输入的标签的预测。如果神经网络没有正确标记输入,则分析正确标记和预测标记之间的误差,并在反向传播阶段中调整每个特征的权重,直到DNN正确地标记训练数据集中的输入和其他输入。训练复杂的神经网络需要大量的并行计算性能,包括PPU 200支持的浮点乘法和加法。推理的计算密集度低于训练,这是一个对延迟敏感的过程,在该过程中将经过训练的神经网络应用于它以前从未见过的新输入来对图像进行分类、翻译语音并通常推理出新信息。
神经网络严重依赖矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽以实现效率和速度。PPU 200拥有数千个处理核心,针对矩阵数学运算进行了优化,并提供数十到数百TFLOPS的性能,是一个能够提供基于深度神经网络的人工智能和机器学习应用程序所需的性能的计算平台。
示例性单个图像逆向渲染环境
图5示出了根据一个示例性实施例的示例性单个图像逆向渲染环境500。如图所示,单个2D图像502被输入到编码器504,编码器504可以在单个2D图像502内的每个点处提取一个或更多个特征。另外,由编码器504提取的特征然后被输入到解码器506。在一个实施例中,解码器506可以包括经训练的2D CNN。
此外,解码器506可以将提取的特征作为输入,并且可以输出在单个2D图像502内发现的场景的3D表示。然后在3D表示上运行体积渲染508以聚合一个或更多个观察方向内的神经特征,并且聚合的神经特征作为输入提供给多层感知器(MLP)510,多层感知器(MLP)510预测并输出3D表示内每个点的颜色和密度值512。
以这种方式,可以仅使用单个2D图像502作为输入来执行单个图像逆向渲染,以创建单个2D图像502中的场景的对应3D表示。另外,一个或更多个以上组件可以在一个或更多个本地计算设备、一个或更多个联网/分布式计算设备、一个或更多个云计算设备等中实现。
训练单个图像逆向渲染环境
图6示出了根据一个实施例的用于训练单个图像逆向渲染环境的方法600的流程图。虽然方法600是在处理单元的背景中描述的,但是方法600也可以由程序、定制电路或由定制电路和程序的组合来执行。例如,方法600可以由GPU(图形处理单元)、CPU(中央处理单元)或任何处理元件来执行。此外,本领域普通技术人员将理解,执行方法600的任何系统都在本发明实施例的范围和精神内。
如操作602所示,利用2D卷积神经网络(CNN)来生成单个2D图像的三维(3D)表示。此外,如操作604中所示,最小化在由2D CNN从单个2D图像内所示的相同视点渲染3D表示期间的重建误差。此外,如操作606中所示,通过组合GAN损失来确保由2D CNN从单个2D图像内所示的一个或更多个不同视点渲染3D表示的真实性。
此外,在一个实施例中,一个或更多个不同角度可以包括3D表示的任意视点角度。在另一个实施例中,可以在训练期间联合优化同角度重建误差最小化和不同角度渲染真实感。这可能会导致产生2D图像的3D表示的收敛,当从与输入2D图像相同的视点渲染时,该2D图像与输入2D图像匹配,并且该2D图像从所有视点看起来也很逼真/一致。
以这种方式,可以训练2D CNN以使用单个2D图像作为输入来创建2D图像的逼真3D表示。
用于体积重建的条件生成模型
本文解决了单个图像逆向渲染的问题。在测试时给定输入图像(少至一张图像),可以恢复3D场景表示,从而实现逼真的新视图合成和3D几何提取。可以使用仅需要单个视图2D图像的非结构化集合的自我监督方法进行训练。
在一个实施例中,提供条件生成模型用于从2D图像的集合学习体积3D场景表示。在推理过程中,给定输入图像,示例性方法允许以输入图像为条件的逼真的新视图合成和3D几何结构提取,而无需目标特定的调整或训练。对于3D表示,可以从输入图像有条件地生成面向3D空间的稀疏2D神经平面。这些神经平面可以由大容量CNN网络生成,从而允许模型从2D图像中学习场景的广义3D表示。来自任意视图的最终RGB颜色可以由附加的解码器网络通过体积或基于表面的渲染来渲染。捕捉场景几何的网格可以通过从底层隐式3D表示中提取等值面来获得。
为了训练这样的模型,可以使用两部分训练目标。在训练期间,模型可能会接收输入图像并生成3D表示。首先,为了鼓励输入图像和3D表示之间的一致性,可以最小化输入图像和从与输入图像姿态相同的视点进行的渲染之间的重建误差。重建损失可以确保当从与输入相同的姿态渲染时,渲染匹配输入图像(例如,条件化的3D场景表示确实与输入图像一致)。
其次,可以在3D场景周围对随机的附加姿态进行采样,并且可以产生3D表示的渲染。可以利用对抗性训练目标来鼓励这些渲染与我们数据集中的真实图像的分布相匹配。与需要多视图监督的方法不同,任何特定图像的误差可能不会最小化,但这些附加渲染的真实性可能会最大化,确保模型渲染看起来与任何视点的真实图像一样逼真。
结果,给定输入图像,示例性模型产生3D场景表示。来自同一视图的渲染可能会受到限制以匹配输入,而来自其他视图的渲染可能会被优化为看起来像来自训练数据集的真实图像。在训练过程中,这个联合目标鼓励3D表示既与输入图像匹配,又在从新视图渲染时看起来很逼真。
另外,在一个实施例中,给定一个或更多个输入图像,可以生成场景的合理3D重建,从中可以提取新颖的视图和3D场景几何结构。这种单个视图逆向渲染可以作为条件生成的问题来处理。可以提供生成对抗网络(GAN),它以输入图像为条件,生成3D场景表示,可以从3D场景中提取新的视图和几何结构。
这种方法的一些优点包括以下:
·只需要单个视图真值,支持从诸如FFHQ等的图像数据集进行训练(无需多视图图像或3D扫描)。
·只需要在推理时进行前馈调用,即可实现快速、近乎实时的合成。没有按场景优化。
·不需要特定于数据集的先验(例如,可以对正面图像、360°角度的汽车和其他场景进行操作而无需进行重大修改)。
在一个实施例中,混合显式-隐式模型可以用于3D表示。在另一个实施例中,可以使用由CNN+基于紧凑型MLP的解码器生成的稀疏2D神经平面,该解码器沿观察方向体积地聚合神经特征以产生最终的RGB颜色或多维神经特征。在另一个实施例中,可以在RGB颜色或多维神经特征之上应用附加层(例如,2D CNN)以细化输出。混合显式-隐式模型可以在推理和训练期间提供更高的性能。
此外,在一个实施例中,可以利用基于对抗训练的训练方法。这种训练方法鼓励与输入图像匹配并从各个角度产生逼真渲染的场景表示,并且还鼓励合成能够合理反映输入的场景表示。
例如,以输入图像为条件,模型可以生成3D场景表示。当从与输入相机相同的姿态进行神经渲染时,渲染结果应该与输入图像完全匹配。通过最小化重建误差来鼓励图像匹配。
当从任何新颖的姿态渲染时,3D表示的渲染应该看起来很逼真。使用GAN损失来鼓励这种逼真。当从输入视图渲染时,联合训练收敛到与输入图像匹配的3D表示,并且从所有视图看起来都一致。
与诸如多视图监督的传统训练策略不同,上述方法允许从诸如FFHQ的单个视图图像集合进行训练。
在一个实施例中,可以提供条件训练目标以用于从单个视图2D图像的集合中学习体积3D表示。可以使用2D CNN使用稀疏神经平面来实现条件3D表示。实时体积视图合成可以通过输入图像或信号(例如,视频会议(发言人的头部特写)、地标、面部动作编码系统(FACS)信号、语音音频、文本等)来调节。通用3D表示可以包括体积表示(例如,汽车、复杂/多对象场景等)。
虽然以上已经描述了各种实施例,但应理解的是,这些实施例仅通过示例而非限制的方式呈现。由此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
可以在计算机代码或机器可用指令的一般上下文中描述本公开,包括由计算机或其他机器(例如个人数据助手或其他手持式设备)执行的计算机可执行指令(例如程序模块)。通常,程序模块(包括例程,程序,对象,组件,数据结构等)是指执行特定任务或实现特定抽象数据类型的代码。本公开可以在包括手持设备、消费电子产品、通用计算机、更多专用计算设备等的各种系统配置中实践。本公开还可以在其中由通过通信网络链接的远程处理设备执行任务的分布式计算环境中实践。
如本文所使用的,对于两个或更多个元件的“和/或”的叙述应被解释为仅意味着一个元件或元件的组合。例如,“元件A,元件B和/或元件C”可以包括仅元件A,仅元件B,仅元件C,元件A和元件B,元件A和元件C,元件B和元件C,或元件A、B和C。另外,“元件A或元件B中的至少一个”可以包括元件A中的至少一个,元件B中的至少一个,或元件A中的至少一个和元件B中的至少一个。
本文具体描述了本公开的主题,以满足法定要求。然而,描述本身并不旨在限制本公开的范围。相反,发明人已经预料到,所要求保护的主题还可以结合其他当前或未来技术以其他方式体现,以包括与本文档中所描述的步骤不同的步骤或步骤的组合。此外,尽管本文中可以使用术语“步骤”和/或“框”来表示所采用方法的不同元件,但是这些术语不应解释为暗示本文所公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各个步骤的顺序。
Claims (20)
1.一种方法,包括在设备处:
识别单个二维2D图像;以及
利用2D卷积神经网络CNN来生成所述单个2D图像的三维3D表示。
2.如权利要求1所述的方法,其中所述单个2D图像是:
利用相机创建,
从互联网下载,或
由算法或人类创建。
3.如权利要求1所述的方法,其中将所述单个2D图像输入到编码器中,所述编码器在所述单个2D图像内的每个点处提取一个或更多个特征。
4.如权利要求3所述的方法,其中由所述编码器提取的所述特征被输入到所述2D CNN中。
5.如权利要求4所述的方法,其中所述2D CNN将所提取的特征作为输入,并输出在所述单个2D图像内发现的场景的3D表示。
6.如权利要求1所述的方法,其中所述3D表示包括混合显式-隐式模型。
7.如权利要求1所述的方法,其中所述3D表示包括树结构。
8.如权利要求1所述的方法,其中所述3D表示包括密集体素结构。
9.如权利要求1所述的方法,其中所述2D CNN包括经训练的生成对抗网络GAN。
10.如权利要求1所述的方法,其中在所述3D表示上运行体积渲染以聚合一个或更多个观察方向内的神经特征。
11.如权利要求10所述的方法,其中所聚合的神经特征作为输入被提供给多层感知器MLP,所述多层感知器预测和输出所述3D表示内每个点的颜色或多维神经特征和密度值,并且所述颜色或所述神经特征通过所述2D CNN的附加层被进一步细化。
12.根据权利要求10所述的方法,其中符号距离函数SDF用于确定所聚合的神经特征的3D表面,并且MLP用于确定所述3D表示内每个点的颜色值或多维神经特征。
13.一种系统,包括:
设备的硬件处理器,其被配置为:
识别单个二维2D图像;以及
利用2D卷积神经网络CNN来生成所述单个2D图像的三维3D表示。
14.如权利要求13所述的系统,其中所述单个2D图像是:
利用相机创建,
从互联网下载,或
由如算法或人类的其他方式创建。
15.如权利要求13所述的系统,其中将所述单个2D图像输入到编码器中,所述编码器在所述单个2D图像内的每个点处提取一个或更多个特征。
16.如权利要求15所述的系统,其中由所述编码器提取的所述特征被输入到所述2DCNN中。
17.如权利要求16所述的系统,其中所述2D CNN将所提取的特征作为输入,并输出在所述单个2D图像内发现的场景的3D表示。
18.如权利要求13所述的系统,其中所述3D表示包括混合显式-隐式模型。
19.一种非暂时性计算机可读存储介质,其存储有指令,当由设备的处理器执行所述指令时,使所述处理器引起所述设备用于:
识别单个二维2D图像;以及
利用2D卷积神经网络CNN来生成所述单个2D图像的三维3D表示。
20.如权利要求19所述的计算机可读存储介质,其中所述2D CNN包括经训练的生成对抗网络GAN。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163242993P | 2021-09-10 | 2021-09-10 | |
US63/242,993 | 2021-09-10 | ||
US17/551,046 US20230081641A1 (en) | 2021-09-10 | 2021-12-14 | Single-image inverse rendering |
US17/551,046 | 2021-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115797543A true CN115797543A (zh) | 2023-03-14 |
Family
ID=85284703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210947455.9A Pending CN115797543A (zh) | 2021-09-10 | 2022-08-09 | 单个图像逆向渲染 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230081641A1 (zh) |
CN (1) | CN115797543A (zh) |
DE (1) | DE102022121509A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117496091B (zh) * | 2023-12-28 | 2024-03-15 | 西南石油大学 | 一种基于局部纹理的单视图三维重建方法 |
CN117669567B (zh) * | 2024-01-31 | 2024-04-23 | 青岛冠成软件有限公司 | 一种单据管理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11534136B2 (en) * | 2018-02-26 | 2022-12-27 | Siemens Medical Solutions Usa, Inc. | Three-dimensional segmentation from two-dimensional intracardiac echocardiography imaging |
US10297070B1 (en) * | 2018-10-16 | 2019-05-21 | Inception Institute of Artificial Intelligence, Ltd | 3D scene synthesis techniques using neural network architectures |
EP3881285A1 (en) * | 2018-11-16 | 2021-09-22 | Ariel Ai, Inc. | Three-dimensional object reconstruction |
US11361505B2 (en) * | 2019-06-06 | 2022-06-14 | Qualcomm Technologies, Inc. | Model retrieval for objects in images using field descriptors |
EP3983996A1 (en) * | 2019-06-17 | 2022-04-20 | Ariel Ai, Inc. | Scene reconstruction in three-dimensions from two-dimensional images |
CN113096234B (zh) * | 2019-12-23 | 2022-09-06 | 复旦大学 | 利用多张彩色图片生成三维网格模型的方法及装置 |
US11967015B2 (en) * | 2020-02-06 | 2024-04-23 | Apple Inc. | Neural rendering |
-
2021
- 2021-12-14 US US17/551,046 patent/US20230081641A1/en active Pending
-
2022
- 2022-08-09 CN CN202210947455.9A patent/CN115797543A/zh active Pending
- 2022-08-25 DE DE102022121509.1A patent/DE102022121509A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230081641A1 (en) | 2023-03-16 |
DE102022121509A1 (de) | 2023-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11508076B2 (en) | Learning rigidity of dynamic scenes for three-dimensional scene flow estimation | |
US11631239B2 (en) | Iterative spatio-temporal action detection in video | |
CN110176054B (zh) | 用于训练神经网络模型的合成图像的生成 | |
US10964061B2 (en) | Learning-based camera pose estimation from images of an environment | |
US10986325B2 (en) | Scene flow estimation using shared features | |
US20230410375A1 (en) | Temporally stable data reconstruction with an external recurrent neural network | |
US11263525B2 (en) | Progressive modification of neural networks | |
US20200204822A1 (en) | System and method for content and motion controlled action video generation | |
US10922793B2 (en) | Guided hallucination for missing image content using a neural network | |
US20190147296A1 (en) | Creating an image utilizing a map representing different classes of pixels | |
CN111783817A (zh) | 使用神经网络进行图像识别 | |
US11341369B2 (en) | Distributed batch normalization using partial populations | |
US11062471B1 (en) | Neural network system for stereo image matching | |
CN111191784A (zh) | 转置的稀疏矩阵乘以稠密矩阵用于神经网络训练 | |
CN110059793B (zh) | 生成式对抗神经网络的逐步修改 | |
CN115797543A (zh) | 单个图像逆向渲染 | |
CN114792331A (zh) | 应用于半监督环境中以在图像帧序列中执行实例跟踪的机器学习框架 | |
GB2609685A (en) | Multiresolution hash encoding for neural networks | |
US20230062503A1 (en) | Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity | |
US20220012536A1 (en) | Creating an image utilizing a map representing different classes of pixels | |
US11522565B2 (en) | Packed error correction code (ECC) for compressed data protection | |
CN115039076A (zh) | 无障碍和无围栏共享存储器同步 | |
US20230298243A1 (en) | 3d digital avatar generation from a single or few portrait images | |
US20220398283A1 (en) | Method for fast and better tree search for reinforcement learning | |
US11830145B2 (en) | Generation of differentiable, manifold meshes of arbitrary genus |
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 |