CN116018617A - 用于生成基于喷溅的可微分二维渲染的系统和方法 - Google Patents
用于生成基于喷溅的可微分二维渲染的系统和方法 Download PDFInfo
- Publication number
- CN116018617A CN116018617A CN202080104438.8A CN202080104438A CN116018617A CN 116018617 A CN116018617 A CN 116018617A CN 202080104438 A CN202080104438 A CN 202080104438A CN 116018617 A CN116018617 A CN 116018617A
- Authority
- CN
- China
- Prior art keywords
- pixel
- dimensional
- pixels
- subset
- coordinates
- 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
- 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
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/56—Particle system, point based geometry or rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本公开的系统和方法涉及一种方法,该方法可以包括获得包括多边形和纹理/着色数据的3D网格。该方法可以包括光栅化3D网格以获得包括像素和相应地与像素子集相关联的坐标的2D光栅。该方法可以包括基于像素的坐标和相关联的着色/纹理数据来确定像素子集的初始颜色值。该方法可以包括在相应像素的坐标处构造喷溅。该方法可以包括基于喷溅的子集的加权来确定相应像素的更新的颜色值,以基于像素和喷溅的坐标来生成3D网格的2D渲染。
Description
技术领域
本公开总体上涉及可微分渲染。更具体地,本公开涉及用于在遮挡边界处的准确导数的基于喷溅的可微分渲染。
背景技术
在许多行业中,三维多边形网格是用于三维建模(例如,图形、计算机视觉、机器学习等)的主要形状表示。因此,对相对于基础场景参数计算这些网格的准确导数的能力越来越感兴趣。然而,计算这些导数的一个关键难点是由遮挡边界引入的不连续性。这个问题的现代解决方案(例如,网格处理、自定义导数计算等)总体上已经被发现在计算上昂贵和/或难以实现。
发明内容
本公开的实施例的方面和优点将在以下描述中部分地阐述,或可以从描述中习得,或可以通过实践实施例而习得。
本公开的一个示例方面涉及一种用于高效地生成三维模型的可微分二维渲染的计算机实现的方法。该方法可以包括由包括一个或多个计算设备的计算系统获得三维网格,该三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个。该方法可以包括由计算系统光栅化三维网格以获得三维网格的二维光栅,其中二维光栅包括多个像素和相应地与多个像素的至少像素子集相关联的多个坐标,其中像素子集中的每个像素的坐标描述相应像素相对于多个多边形中的该像素位于其中的相应多边形的顶点的位置。该方法可以包括由计算系统至少部分地基于像素的坐标和相关联的着色数据或相关联的纹理数据中的至少一个来确定像素子集中的每个像素的相应初始颜色值。该方法可以包括由计算系统对于像素子集中的每个像素在相应像素的坐标处构造喷溅。该方法可以包括由计算系统对于像素子集中的每个像素基于喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成三维网格的二维可微分渲染,其中,对于喷溅的子集中的每个喷溅,相应喷溅的加权是至少部分地基于相应像素的坐标和相应喷溅的坐标。
本公开的另一示例方面涉及一种用于高效地生成三维模型的可微分二维渲染的计算系统。该计算系统可以包括一个或多个处理器。该计算系统可以包括一个或多个有形的非暂时性计算机可读介质,该一个或多个有形的非暂时性计算机可读介质存储计算机可读指令,该计算机可读指令在由一个或多个处理器执行时使一个或多个处理器执行操作。操作可以包括获得三维网格,该三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个。操作可以包括光栅化三维网格以获得三维网格的二维光栅,其中二维光栅包括多个像素和相应地与多个像素的至少像素子集相关联的多个坐标,其中像素子集中的每个像素的坐标描述相应像素相对于多个多边形中的该像素位于其中的相应多边形的顶点的位置。操作可以包括至少部分地基于像素的坐标和相关联的着色数据或相关联的纹理数据中的至少一个来确定像素子集中的每个像素的相应初始颜色值。操作可以包括:对于像素子集中的每个像素,在相应像素的坐标处构造喷溅。操作可以包括:对于像素子集中的每个像素,基于喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成三维网格的二维可微分渲染,其中,对于喷溅的子集中的每个喷溅,相应喷溅的加权是至少部分地基于相应像素的坐标和相应喷溅的坐标。
本公开的另一示例实施例涉及一种或多种有形的非暂时性计算机可读介质,该一种或多种有形的非暂时性计算机可读介质存储计算机可读指令,该计算机可读指令在由一个或多个处理器执行时使一个或多个处理器执行操作。操作可以包括获得三维网格,该三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个。操作可以包括光栅化三维网格以获得三维网格的二维光栅,其中二维光栅包括多个像素和相应地与多个像素的至少像素子集相关联的多个坐标,其中像素子集中的每个像素的坐标描述相应像素相对于多个多边形中的该像素位于其中的相应多边形的顶点的位置。操作可以包括至少部分地基于像素的坐标和相关联的着色数据或相关联的纹理数据中的至少一个来确定像素子集中的每个像素的相应初始颜色值。操作可以包括:对于像素子集中的每个像素,在相应像素的坐标处构造喷溅。操作可以包括:对于像素子集中的每个像素,基于喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成三维网格的二维可微分渲染,其中,对于喷溅的子集中的每个喷溅,相应喷溅的加权是至少部分地基于相应像素的坐标和相应喷溅的坐标。
本公开的其它方面涉及各种系统、装置、非暂时性计算机可读介质、用户接口和电子设备。
参考以下描述和所附权利要求书将更好地理解本公开的各个实施例的这些和其它特征、方面和优点。并入本说明书中并且构成本说明书的一部分的附图说明本公开的示例实施例,并且与描述一起用于解释相关原理。
附图说明
在参考附图的说明书中阐述针对本领域普通技术人员的实施例的详细讨论,在附图中:
图1A描绘根据本公开的示例实施例的执行二维可微分渲染的示例计算系统的框图。
图1B描绘根据本公开的示例实施例的基于二维可微分渲染来执行机器学习模型的训练的示例计算设备的框图。
图1C描绘根据本公开的示例实施例的执行二维可微分渲染的示例计算设备的框图。
图2描绘根据本公开的示例实施例的用于一维线段的喷溅构造的说明性示例。
图3A描绘根据本公开的示例实施例的用于生成二维可微分渲染的示例方法的数据流程图。
图3B描绘根据本公开的示例实施例的用于从二维可微分渲染生成导数以训练机器学习模型的示例方法的数据流程图。
图4描绘根据本公开的示例实施例的用于生成二维可微分渲染的示例方法的流程图。
图5描绘根据本公开的示例实施例的用于在二维可微分渲染的遮挡边界处生成导数以训练机器学习模型的示例方法的流程图。
跨多个图重复的附图标记旨在识别不同实施方式中的相同特征。
具体实施方式
概述
总体上,本公开涉及可微分渲染。更具体地,本公开涉及用于三维网格的基于喷溅的正向渲染,其在网格的遮挡边界附近生成平滑导数。作为示例,可以获得三维网格,该三维网格包括多个多边形以及相关联的纹理数据和/或着色数据。此三维网格可以被光栅化以生成三维网格(例如,表示为多个像素等)的二维光栅。对于二维光栅的像素子集,可以生成描述每个像素相对于该像素位于其中的相应多边形的顶点的位置的坐标(例如,重心坐标等)。基于像素的坐标,可以基于每个像素的坐标和相关联的着色和/或纹理数据来为该像素确定初始颜色值(例如,位于与黄色着色相对应的多边形内的像素可以具有黄色的初始颜色值等)。一旦为像素子集确定了颜色,就可以在每个像素的相应坐标处为该像素构造喷溅(例如,具有平滑衰减的小颜色区域等)。可以基于先前构造的喷溅的子集的加权来为像素中的每个像素确定更新的颜色值。例如,为黄色像素构造的喷溅可以基于喷溅的位置(例如,在黄色像素处)和相邻像素来将黄色像素的颜色“扩散”到与黄色像素相邻的像素(例如,喷溅将更强烈地扩散到距离黄色像素一个像素的像素,而不是距离黄色像素五个像素的像素)。通过确定像素子集中的每个像素的更新的颜色,可以生成三维网格的二维可微分渲染。基于二维可微分渲染,可以为喷溅生成导数(例如,基于喷溅相对于像素的加权等)。因此,以这种方式,可以构造喷溅并将其应用于二维光栅以生成三维网格的二维可微分渲染,从而提供针对在二维渲染的任何点处(例如,在遮挡边界处等)的平滑导数的来源。
更具体地,计算系统可以获得三维网格。三维网格可以是或另外包括多个多边形以及相关联的纹理数据和/或相关联的着色数据。作为示例,三维网格可以是对象的网格表示,并且相关联的着色和/或纹理数据可以指示三维网格的多边形的一个或多个颜色(例如,视频游戏中的角色模型网格的纹理数据等)。在一些实施方式中,可以使用一个或多个机器学习技术来生成三维网格。作为示例,可以由机器学习模型基于二维输入来生成三维网格。例如,机器学习模型可以处理杯子的二维图像,并且可以输出杯子的三维网格表示。
作为另一示例,三维网格可以表示对第一三维网格的姿势和/或取向调整。例如,机器学习模型可以处理以第一姿势和/或取向的第一三维网格,并且获得以与第一姿势和/或取向不同的第二姿势和/或取向的第二三维网格。因此,在一些实施方式中,三维网格和相关联的纹理/着色数据可以是机器学习模型的输出,并且因此为三维网格的渲染生成平滑导数(例如,在遮挡边界处等)的能力对于优化用于生成三维网格的机器学习模型是必要的。
计算系统可以光栅化三维网格以获得三维网格的二维光栅。二维光栅可以是或另外包括多个像素以及相应地与多个像素的子集相关联的多个坐标(例如,通过对三维网格的表面进行采样等)。这些坐标可以描述像素相对于像素位于其中的多边形的顶点的位置。作为示例,第一坐标可以描述第一像素相对于第一像素位于其中的第一多边形的顶点的位置。第二坐标可以描述第二像素相对于第二像素位于其中的第二多边形的顶点的位置。在一些实施方式中,多个坐标中的每个坐标可以是或另外包括重心坐标。
在一些实施方式中,二维光栅还可以包括像素子集中的每个像素的多个多边形标识符。多边形标识符可以被配置成对于每个像素识别相应像素位于其内的一个或多个多边形。作为示例,像素可以位于多个多边形中的两个或更多个重叠多边形内(例如,因为三维网格的多边形以二维表示等)。像素的多边形标识符将识别到像素位于两个多边形内。另外,在一些实施方式中,当像素位于两个或更多个重叠多边形内时,多边形标识符可以识别正面多边形。作为示例,三维网格可以表示立方体。三维网格的二维光栅的像素可以位于立方体的第一侧的多边形和立方体的相反侧上的(例如,从二维)不可见的多边形的内部。多边形标识符可以指示在立方体的第一侧上的多边形是正面多边形。以这种方式,多边形标识符可以用于确保应用于像素的颜色与面向二维光栅的视点的多边形相关联。
应注意,计算系统可以使用任何类型的光栅化方案光栅化三维网格以获得二维光栅。作为示例,可以使用传统的z缓冲图形处理(例如,深度缓冲等)来获得二维光栅(例如,多个坐标、多边形标识符等)。作为另一示例,可以使用三维光线投射过程来获得二维光栅(例如,多个坐标、多边形标识符等)。因此,本公开的实施例可以在渲染和/或光栅化流水线中使用,而不需要使用非标准或独特的光栅化方案。
计算系统可以确定像素子集中的每个像素的初始颜色值。初始颜色值可以是基于像素的坐标和相关联的着色数据和/或相关联的纹理数据。作为示例,第一像素的多边形坐标可以指示第一像素位于第一多边形中。基于着色和/或纹理数据,可以确定多边形在像素(例如,相对于多边形的顶点等)所位于的地方具有橙色。第一像素可以基于像素坐标和着色和/或纹理数据而被着色为橙色。
更具体地,在一些实施方式中,每个像素的多边形标识符和坐标可以允许(例如,三维网格的多边形等的)顶点属性的透视校正插值以确定像素的颜色。在一些实施方式中,确定每个像素的颜色可以包括使用着色和/或纹理化方案将着色数据和/或纹理数据应用于二维光栅。对于任一应用,可以使用任何种类的应用方案。作为示例,可以使用延迟着色、图像空间应用方案来应用着色数据和/或纹理数据以确定像素子集中的每个像素的颜色。
计算系统可以对于像素子集中的每个像素在相应像素中的每个像素的坐标处构造喷溅。更具体地,二维光栅的每个光栅化表面点可以被转换为以相应像素的坐标为中心的喷溅,并且通过为该像素确定的对应着色颜色C进行着色。在一些实施方式中,可以将喷溅构造为具有从喷溅的原点扩散开的平滑颜色衰减的小颜色区域。作为示例,具有亮红色中心位置的喷溅的颜色可以随着距喷溅的中心的距离(例如,从喷溅的边缘到喷溅的中心的梯度等)进一步增长而平滑地衰减。
为了保留三维网格的多边形的顶点的导数,可以通过至少部分地基于与像素相关联的坐标(例如,x,y,z,w齐次坐标、重心坐标等)对相应像素位于其中的多边形的裁剪空间顶点位置进行插值来计算在其处构造喷溅的坐标(如,喷溅中心点等)。作为示例,可以为每个像素形成每像素裁剪空间位置V的h×w×4缓冲区。透视除法和视口变换可以应用于缓冲区以产生h×w×2屏幕空间喷溅位置缓冲区S。例如,如果S是单个喷溅的位置,则在图像中的像素p处的喷溅的权重是:
其中W通过喷溅的所有权重之和归一化(见下文)。然后,在像素p处的最终颜色rp可以表示相邻像素q∈Np的着色颜色cq的加权和。
计算系统可以确定像素子集中的每个像素的更新的颜色值以生成三维网格的二维可微分渲染。更新的颜色值可以是基于构造的喷溅的子集的加权。像素的喷溅的子集中的相应喷溅的加权可以是至少部分地基于相应像素的坐标和相应喷溅的坐标。作为示例,第一像素可以具有确定的黄色。第二像素的坐标可以远离第一像素特定距离定位,并且第三像素可以与第一像素相距甚至更远的距离定位。由于第二像素比第三像素更靠近第一像素定位,因此第一像素喷溅(例如,在第一像素的坐标处构造等)对第二像素的应用可以比第一像素喷溅对第三像素的应用更重地加权。因此,在确定像素的更新的颜色值时喷溅的子集的加权可以是基于每个喷溅与像素的接近度。通过确定喷溅的子集中的每个喷溅的更新的颜色值,可以生成三维网格的可微分二维渲染。因此,可微分二维渲染(例如,通过应用喷溅等生成)可以用于在渲染的遮挡边界处找到平滑导数。
应注意,在一些实施方式中,喷溅的子集可以包括比构造的喷溅的数量更少的喷溅。另外,在一些实施方式中,可以为像素子集中的每个像素独特地选择喷溅的子集。作为示例,像素的喷溅的子集可以仅包括为与该像素相邻的像素构造的喷溅。作为另一示例,像素的喷溅的子集可以仅包括为在该像素的特定距离或区域内的像素构造的喷溅(例如,像素周围的5x5像素区域、如由像素坐标定义的特定距离等)。替代地,在一些实施方式中,喷溅的子集可以包括为像素子集构造的喷溅中的每个喷溅。作为示例,为了确定单个像素的更新的颜色值,可以对所构造的喷溅中的每个喷溅进行加权(例如,从0.0到1.0的归一化权重等)。例如,可以基于喷溅与像素的距离对像素的每个喷溅进行加权,并且最接近该像素的喷溅可以被最重地加权,而最远离像素的喷溅可以被最少地加权。
作为示例,S可以是单个喷溅的位置。P可以是二维光栅中的像素。在二维光栅中的像素p处的喷溅的权重可以被定义为:
其中W可以通过喷溅的所有权重之和归一化(见下文)。像素p的更新的颜色值rp可以是相邻像素q∈Np的着色的初始颜色值cq的加权和:
如先前所描述,在一些实施方式中,可以使用相邻(例如,邻近、相距特定距离等)的子集。例如,3x3像素邻域可以与σ=0.5一起使用,其可以产生归一化因子:
应注意,与基于点的渲染不同,其中喷溅本身是三维网格的表面的表示,本公开的喷溅以精确的像素速率从底层网格采样。因此,可以在屏幕空间中固定喷溅半径,并且每个喷溅的归一化因子可以是恒定的,因此避免创建对每像素权重归一化稳健的人工梯度的需要。
在一些实施方式中,计算系统可以基于二维可微分渲染来生成二维渲染的一个或多个相应喷溅的一个或多个导数(例如,在遮挡边界处等)。更具体地,可以为二维可微分渲染的一个或多个喷溅相对于顶点位置的权重生成一个或多个导数(例如,使用自动微分函数等)。将关于图2更详细地讨论喷溅的导数的生成。
在一些实施方式中,三维网格的二维可微分渲染可以用机器学习模型处理以生成机器学习输出(例如,以第二姿势/取向的网格、第二三维网格、网格拟合、姿势估计等的描绘)。
在一些实施方式中,可以评估损失函数,该损失函数至少部分地基于一个或多个导数来评估机器学习输出和与三维网格相关联的训练数据之间的差异。作为示例,使用梯度下降算法,可以评估一个或多个导数以确定机器学习输出和与三维网格相关联的训练数据(例如,与三维网格相关联的真实值等)之间的差异。基于损失函数,可以调整机器学习模型的一个或多个参数。
作为示例,机器学习模型可以是或另外包括机器学习姿势估计模型,并且机器学习输出可以包括描绘由三维网格表示的实体(例如,对象、人体的至少一部分、表面等)的图像数据。机器学习输出可以是图像数据(例如,三维网格、二维可微分渲染等),该图像数据描绘具有与实体的第一姿势和/或取向不同的第二姿势或第二取向中的至少一个的实体(例如,如由三维网格等表示)。
作为另一示例,机器学习模型可以是机器学习的三维网格生成模型(例如,被配置成将网格拟合到所描绘的实体、从二维图像数据生成网格等的模型)。机器学习模型可以处理二维可微分渲染以生成第二三维网格。以此方式,二维可微分渲染可以允许通过模型的机器学习输出的微分来训练任何类型或配置的机器学习模型。
应注意,虽然由喷溅的构造生成的二维差分渲染可以类似于二维光栅的模糊或抗锯齿版本,但简单地光栅化并且然后模糊(即使利用任意超级采样)不足以生成非零导数更具体地,单单光栅化通常在任何采样率下产生相对于顶点的零导数,并且因此模糊结果将缺乏生成非零导数(例如,能够微分等)的能力。
本公开提供许多技术效果和益处。作为一个示例技术效果和益处,本公开的系统和方法使得能够生成在遮挡边界处提供平滑导数的三维网格的可微分二维渲染。作为示例,现代可微分渲染技术通常在计算上昂贵和/或无法在渲染的遮挡边界处产生准确的导数。因此,本公开提供在二维可微分渲染的像素的位置处构造喷溅的方法。由于喷溅的构造在计算上高效,因此本公开提供显著地减少生成可微分渲染所需的计算资源(例如,电力、存储器、指令循环、存储空间等)的量的系统和方法。另外,喷溅的构造在二维渲染的遮挡边界处提供准确且简单的导数,因此显著地优化需要可微分渲染的操作(例如,机器学习模型训练、模型对齐、姿态估计、网格拟合等)的性能。以这种方式,本公开的系统和方法可以用于生成三维网格的二维可微分渲染,该二维可微分渲染比传统方法计算效率更高且更准确。
现在参考附图,将进一步详细讨论本公开的示例实施例。
示例设备和系统
图1A描绘根据本公开的示例实施例的执行二维可微分渲染的示例计算系统100的框图。系统100包括通过网络180通信地耦合的用户计算设备102、服务器计算系统130和训练计算系统150。
用户计算设备102可以是任何类型的计算设备,诸如,例如个人计算设备(例如,膝上型或台式)、移动计算设备(例如,智能电话或平板计算机)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备、或任何其它类型的计算设备。
用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核心、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器114可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、快闪存储器设备、磁盘等、以及它们的组合。存储器114可以存储数据116和由处理器112执行以使用户计算设备102执行操作的指令118。
作为示例,可以执行指令118以执行生成二维可微分渲染124的操作。更具体地,用户计算设备102可以获得三维网格,该三维网格包括多个多边形以及相关联的纹理数据和/或着色数据(例如,来自一个或多个机器学习模型120、经由网络180、来自计算系统130和/或150等)。用户计算设备102可以光栅化三维网格以生成三维网格的二维光栅。对于二维光栅的像素子集,用户计算设备102可以生成描述每个像素相对于该像素位于其中的相应多边形的顶点的位置的坐标。基于像素的坐标,用户计算设备102可以基于像素的坐标和相关联的着色和/或纹理数据来确定每个像素的初始颜色值。用户计算设备102可以在每个像素的相应坐标处(例如,至少部分地基于该像素的初始颜色值等)为该像素构造喷溅。用户计算设备102可以基于先前构造的喷溅的子集的加权来确定像素中的每个像素的更新的颜色值。通过确定像素子集中的每个像素的更新的颜色,用户计算设备102可以生成三维网格的二维可微分渲染124。基于二维可微分渲染,用户计算设备102可以为喷溅生成导数(例如,基于喷溅相对于像素的加权等)。以这种方式,用户计算设备102可以执行指令118以执行配置成从三维网格生成二维可微分渲染124的操作。将关于图3A和3B更详细地讨论二维可微分渲染124的生成。
应注意,在一些实施方式中,先前关于指令118描述的操作也可以被包括在服务器计算系统130的指令138和在训练计算系统150处的指令158中。因此,根据本公开的示例实施例,任何计算设备和/或系统可以被配置成执行指令,以执行配置成从三维网格生成二维可微分渲染的操作。
在一些实施方式中,用户计算设备102可以存储或包括一个或多个机器学习模型120。例如,机器学习模型120可以是或可以另外包括各种机器学习模型,诸如神经网络(例如,深度神经网络)或其它类型的机器学习模型,包括非线性模型和/或线性模型。神经网络可以包括前馈神经网络、递归神经网络(例如,长-短期记忆递归神经网络)、卷积神经网络或其它形式的神经网络。
在一些实施方式中,一个或多个机器学习模型120可以通过网络180从服务器计算系统130接收,存储在用户计算设备存储器114中,并且随后由一个或多个处理器112使用或以其它方式实现。在一些实施方式中,用户计算设备102可以实现单个机器学习模型120的多个并行实例(例如,以跨机器学习模型120的多个实例执行并行操作)。
更具体地,机器学习模型120可以是或另外包括一个或多个机器学习模型120,该机器学习模型基于使用本公开的示例实施例生成的三维网格的二维可微分渲染的处理来训练。作为示例,机器学习模型120可以是至少部分地基于处理二维可微分渲染以获得机器学习输出并且然后评估损失函数而训练的机器学习模型(例如,姿势估计模型、网格拟合模型、网格对齐模型等),该损失函数使用梯度下降算法(例如,在用户计算设备102处、在服务器计算系统130处、在训练计算系统150处等)评估机器学习输出和真实值。作为另一示例,机器学习模型120可以是至少部分地通过评估损失函数而训练的机器学习模型,该损失函数评估在二维可微分渲染的遮挡边界处生成的导数和与三维网格相关联的训练数据之间的差异。应注意,机器学习模型120可以执行可以至少部分地基于二维可微分渲染的微分来评估的任何函数。
另外或替代地,一个或多个机器学习模型140可以被包括在服务器计算系统130中或以其它方式由服务器计算系统130存储和实现,该服务器计算系统根据客户端-服务器关系与用户计算设备102通信。例如,机器学习模型140可以由服务器计算系统140实现为web服务(例如,姿势估计服务、三维网格生成服务、姿势估计服务等)的一部分。因此,一个或多个机器学习模型120可以在用户计算设备102处存储和实现,和/或一个或多个机器学习模型140可以在服务器计算系统130处存储和实现。
用户计算设备102还可以包括接收用户输入的一个或多个用户输入组件122。例如,用户输入组件122可以是对用户输入对象(例如,手指或触控笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用于实现虚拟键盘。其它示例用户输入组件包括麦克风、传统键盘\或用户可以通过其提供用户输入的其它设备。
服务器计算系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核心、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器134可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、快闪存储器设备、磁盘等、以及它们的组合。存储器134可以存储数据136和由处理器132执行以使服务器计算系统130执行操作的指令138。
在一些实施方式中,服务器计算系统130包括一个或多个服务器计算设备,或以其它方式由一个或多个服务器计算设备实现。在服务器计算系统130包括多个服务器计算设备的情况下,此类服务器计算设备可以根据顺序计算架构、并行计算架构或它们的某种组合来操作。
如上所述,服务器计算系统130可以存储或另外包括一个或多个机器学习模型140。例如,模型140可以是或可以另外包括各种机器学习模型。示例机器学习模型包括神经网络或其它多层非线性模型。示例神经网络包括前馈神经网络、深度神经网络、递归神经网络和卷积神经网络。机器学习模型可以是与机器学习模型120相同的机器学习模型,并且可以以相同的方式(例如,基于二维可微分渲染124等)来训练。
用户计算设备102和/或服务器计算系统130可以经由与通过网络180通信耦合的训练计算系统150的交互来训练模型120和/或140。训练计算系统150可以与服务器计算系统130分离,或者可以是服务器计算系统130的一部分。
训练计算系统150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器核心、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器154可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、快闪存储器设备、磁盘等、以及它们的组合。存储器154可以存储数据156和由处理器152执行以使训练计算系统150执行操作的指令158。在一些实施方式中,训练计算系统150包括一个或多个服务器计算设备,或以其它方式由一个或多个服务器计算设备实现。
训练计算系统150可以包括模型训练器160,该模型训练器使用各种训练或学习技术(诸如,例如,反向误差传播)来训练存储在用户计算设备102和/或服务器计算系统130处的机器学习模型120和/或140。例如,可以通过模型反向传播损失函数以更新模型的一个或多个参数(例如,基于损失函数的梯度)。可以使用各种损失函数,诸如均方误差、似然损失、交叉熵损失、铰链损失和/或各种其它损失函数。梯度下降技术可以用于通过多次训练迭代来迭代地更新参数。
在一些实施方式中,执行反向误差传播可以包括执行通过时间的截断反向传播。模型训练器160可以执行多个泛化技术(例如,权重衰减、退出等)以提高正在训练的模型的泛化能力。
具体地,模型训练器160可以基于训练数据162集合来训练模型120和/或140。训练数据162可以包括例如与三维网格相关联的真实值数据。作为示例,训练数据162可以包括由三维网格(例如,对象、人体的至少一部分、表面等)表示的实体(例如,实体的估计姿态和/或实体的估计取向等)的真实值数据。作为示例,机器学习模型(例如,机器学习模型120和140)可以是或另外包括机器学习姿势估计模型。机器学习姿势估计模型120/140可以接收训练数据162,该训练数据包括由三维网格表示的实体的第一姿势和/或第一取向,并且可以输出描绘以第二姿态和/或第二取向的实体的图像数据(例如,第二三维网格、二维渲染等)。损失函数可以由训练计算系统150评估,该训练计算系统评估图像数据与描述包括在训练数据162中的第一姿势和/或取向的真实值数据之间的差异。
在一些实施方式中,如果用户已经同意,则可以由用户计算设备102提供训练示例。因此,在此类实施方式中,提供给用户计算设备102的模型120可以由训练计算系统150在从用户计算设备102接收到的用户特定数据上进行训练。在一些情况下,此过程可以被称为使模型个性化。
模型训练器160包括用于提供所需功能的计算机逻辑。模型训练器160可以在控制通用处理器的硬件、固件和/或软件中实现。例如,在一些实施方式中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其它实施方式中,模型训练器160包括存储在诸如RAM硬盘或光学或磁性介质的有形计算机可读存储介质中的一个或多个计算机可执行指令集合。
网络180可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,因特网)、或它们的某种组合,并且可以包括任何数目的有线或无线链路。一般来说,可以使用各种通信协议(例如,TCP/IP、HTTP、SMTP、FTP)、编码或格式(例如,HTML、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)经由任何类型的有线和/或无线连接承载通过网络180的通信。
图1A图示可以用于实现本公开的一个示例计算系统。也可以使用其它计算系统。例如,在一些实施方式中,用户计算设备102可以包括模型训练器160和训练数据集162。在此类实施方式中,模型120可以在用户计算设备102处本地训练和使用。在此类实施方式中的一些实施方式中,用户计算设备102可以实现模型训练器160以基于用户特定数据来使模型120个性化。
图1B描绘根据本公开的示例实施例的基于二维可微分渲染来执行机器学习模型的训练的示例计算设备10的框图。计算设备10可以是用户计算设备或服务器计算设备。
计算设备10包括多个应用(例如,应用1到N)。每个应用包含它自己的机器学习库和机器学习模型。例如,每个应用可以包括机器学习模型。示例应用包括文本消息收发应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。
如图1B中所图示,每个应用可以与计算设备的多个其它组件通信,诸如,例如,一个或多个传感器、场境管理器、设备状态组件、和/或额外组件。在一些实施方式中,每个应用可以使用API(例如,公共API)与每个设备组件通信。在一些实施方式中,由每个应用使用的API是特定于该应用的。
图1C描绘根据本公开的示例实施例的执行二维可微分渲染的示例计算设备50的框图。计算设备50可以是用户计算设备或服务器计算设备。
计算设备50包括多个应用(例如,应用1到N)。每个应用与中央智能层通信。示例应用包括文本消息收发应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。在一些实施方式中,每个应用可以使用API(例如,跨所有应用的公共API)与中央智能层(以及存储在其中的模型)通信。
中央智能层包括多个机器学习模型。例如,如图1C中所图示,可以为每个应用提供相应的机器学习模型(例如,模型),并且相应的机器学习模型由中央智能层管理。在其它实施方式中,两个或更多个应用可以共享单个机器学习模型。例如,在一些实施方式中,中央智能层可以为所有应用提供单个模型(例如,单个模型)。在一些实施方式中,中央智能层被包括在计算设备50的操作系统内或以其它方式由计算设备50的操作系统实现。
中央智能层可以与中央设备数据层通信。中央设备数据层可以是计算设备50的数据的集中式存储库。如图1C中所图示,中央设备数据层可以与计算设备的多个其它组件通信,诸如,例如,一个或多个传感器、场境管理器、设备状态组件、和/或额外组件。在一些实施方式中,中央设备数据层可以使用API(例如,私有API)与每个设备组件通信。
示例模型布置
图2描绘根据本公开的示例实施例的用于一维线段201的喷溅构造的说明性示例200。应注意,图2描绘一维线段201上的像素208的喷溅204的示例构造,以更容易地图示二维光栅的喷溅的构造。因此,一维线段201可以类似于(例如,三维网格等的)二维多边形,并且一维线段201的喷溅204的构造可以与二维多边形的喷溅的构造相同或基本相似。
作为示例,线段201可以包括第一顶点202和第二顶点206。对于位于像素位置208处的像素,可以在喷溅位置204处构造喷溅。更具体地,重心坐标α212和重心坐标β210可以是沿着线段201的喷溅位置s204的一维重心坐标。因此,喷溅位置s204可以被定义为:
s=αv1+βv2
其中α可以表示重心坐标212,v1可以表示顶点202,v2可以表示点206,并且β可以表示重心坐标210。如先前所描述,可以至少部分地基于在喷溅位置204处的喷溅的权重w(p)来更新在像素位置208处的像素(例如,更新的颜色值等)。更具体地,权重w(p)可以表示如应用到像素位置208处的像素的喷溅的权重,并且可以至少部分地基于喷溅位置204的位置与像素位置208之间的差异来加权。因此,当计算权重w(p)时,用上述公式代替s204(并且为了简单起见省略归一化和σ因子)可以得到:
w(p)=exp(-(p-αv1-βv2)2)。
在构造喷溅之后,可以至少部分地基于喷溅相对于线段和/或像素的坐标(例如,210和/或212)来从喷溅生成导数。由于重心坐标α212和β210通常是不可微的并且可以被认为是恒定的,因此对像素的喷溅的权重w(p)相对于v1的导数可以被定义为:
指数项和重心坐标α212可以是正的,因此导数的符号可以由p-αv1-βv2或p-s的符号确定。因此,在特定方向上沿着线段201增大顶点v1202的距离将增大如应用到像素208的喷溅的权重w(p)。
作为示例,如果像素位置208在线段201上被定位到喷溅204的右侧(例如,p>s等),则喷溅204相对于在位置208处的像素的权重w(p)可以增大。类似地,如果像素位置208在线段201上被定位到喷溅204的右侧(例如,p<s等),则喷溅204相对于像素的权重w(p)可以减小。可以以类似方式相对于v2生成导数。以这种方式,可以为像素208构造喷溅204,并且该喷溅可以用于至少部分地基于该喷溅的位置来生成导数。
图3A描绘根据本公开的示例实施例的用于生成二维可微分渲染的示例方法300A的数据流程图。更具体地,可以获得三维网格302。三维网格302可以是或另外包括多个多边形302A以及相关联的纹理数据和/或相关联的着色数据302B。作为示例,三维网格302可以是对象的网格表示,并且相关联的着色和/或纹理数据302B可以指示三维网格302的多边形的一个或多个颜色(例如,视频游戏中的角色模型网格的纹理数据等)。在一些实施方式中,可以使用一个或多个机器学习技术来生成三维网格302。作为示例,可以基于输入通过机器学习模型(例如,图3B的机器学习模型326等)来生成三维网格302。
三维网格302可以由光栅化器304(例如,计算系统的组件、由计算系统执行的一个或多个操作等)光栅化以获得三维网格302的二维光栅306。二维光栅306可以是或另外包括多个像素以及相应地与多个像素306的子集相关联的多个坐标。这些坐标可以描述像素相对于像素306位于其中的多边形302A的顶点的位置。作为示例,像素/坐标306A的第一坐标可以描述第一像素相对于多边形302A中的第一像素位于其中的第一多边形的顶点的位置。像素/坐标306A的第二坐标可以描述第二像素相对于多边形302A中的第二像素位于其中的第二多边形的顶点的位置。在一些实施方式中,像素/坐标306A的多个坐标中的每个坐标可以是或另外包括重心坐标。
二维光栅306还可以包括像素/坐标306A的像素子集中的每个像素的多个多边形标识符306B。多边形标识符306B可以被配置成对于每个像素306A识别相应像素位于其内的一个或多个多边形302A。作为示例,像素306A中的像素可以位于多个多边形302A中的两个或更多个重叠多边形内(例如,因为三维网格的多边形以二维表示等)。像素306A的多边形标识符306B将识别到像素306A位于两个多边形302A内。另外,在一些实施方式中,当像素306A中的像素位于多边形302A的两个或更多个重叠多边形内时,多边形标识符306B可以识别正面多边形302A。作为示例,三维网格302可以表示立方体。三维网格302的二维光栅306的像素302A可以位于立方体的第一侧的多边形302A和立方体的相反侧上的(例如,从二维)不可见的多边形302A的内部。多边形标识符306B可以指示在立方体的第一侧上的多边形302A是正面多边形。以这种方式,多边形标识符306B可以用于确保应用于像素的颜色与面向二维光栅306的视点的多边形302A相关联。
应注意,光栅化器304可以利用任何类型的光栅化方案来光栅化三维网格以获得二维光栅。作为示例,可以由光栅化器304使用传统的z缓冲图形处理(例如,深度缓冲等)来获得二维光栅306(例如,多个像素/坐标306A、多边形标识符306B等)。作为另一示例,可以由光栅化器304使用三维光线投射过程来获得二维光栅306。因此,本公开的实施例可以在渲染和/或光栅化流水线中使用,而不需要使用非标准或独特的光栅化方案。
颜色确定器308(例如,计算系统的组件、由计算系统执行的一个或多个操作等)可以确定像素306A的子集中的每个像素的初始颜色值310。初始颜色值310可以是基于像素的坐标和相关联的着色数据和/或相关联的纹理数据302B。作为示例,第一像素的多边形坐标306A可以指示第一像素位于多边形302A的第一多边形中。基于着色和/或纹理数据302B,颜色确定器308可以确定多边形将在像素(例如,相对于多边形的顶点等)所位于的地方具有橙色。第一像素可以基于像素坐标306A和相关联的着色和/或纹理数据302B而被着色为橙色。
更具体地,在一些实施方式中,每个像素306A的多边形标识符306B和坐标可以允许由(例如,三维网格302的多边形302A等的)颜色确定器308进行顶点属性的透视校正插值以确定像素的颜色。在一些实施方式中,由颜色确定器308确定每个像素的颜色可以包括使用着色和/或纹理化方案将着色数据和/或纹理数据302B应用于二维光栅306。对于任一应用,颜色确定器308可以使用任何种类的应用方案。作为示例,颜色确定器308可以使用延迟着色、图像空间应用方案来应用着色数据和/或纹理数据302B,并且因此确定像素306A的初始颜色值310。
喷溅(splat)构造器312(例如,计算系统的组件、由计算系统执行的一个或多个操作等)可以对于像素306A的子集中的每个像素在相应像素中的每个像素的坐标处构造喷溅。更具体地,二维光栅306的每个光栅化表面点可以由喷溅构造器312转换为以相应像素的坐标为中心的喷溅,并且由初始颜色值310的对应着色颜色C着色。为了保留三维网格302的多边形302A的顶点的导数,可以通过至少部分地基于与像素306A相关联的坐标(例如,x,y,z,w齐次坐标、重心坐标等)对相应像素位于其中的多边形的裁剪空间顶点位置进行插值来计算在其处构造喷溅的坐标(如,喷溅中心点等)。作为示例,可以为像素/坐标306A的每个像素形成每像素裁剪空间位置V的h×w×4缓冲区。喷溅构造器312可以将透视除法和视口变换应用于缓冲区以产生h×w×2屏幕空间喷溅位置缓冲区S。例如,如果s是单个喷溅的位置,则在图像中的像素p处的喷溅的权重是:
其中W通过喷溅的所有权重之和归一化(见下文)。然后,在像素p处的最终颜色rp是相邻像素q∈Np的着色颜色cq的加权和。
基于构造的喷溅,可以为像素/坐标306A的像素子集中的每个像素确定更新的颜色值以生成三维网格302的二维可微分渲染314。更新的颜色值可以是基于由喷溅构造器312构造的喷溅的子集(例如,位于像素附近的喷溅的子集等)的加权。像素的喷溅的子集中的相应喷溅的加权可以是至少部分地基于相应像素的坐标和相应喷溅的坐标。作为示例,像素/坐标306A的第一像素可以具有确定的黄色。像素/坐标306A的第二像素的坐标可以远离第一像素特定距离定位,并且像素/坐标306A的第三像素可以与第一像素相距甚至更远的距离定位。由于第二像素比第三像素更靠近第一像素定位,因此第一像素喷溅(例如,由喷溅构造器312在第一像素的坐标处构造等)对第二像素的应用可以比第一像素喷溅对第三像素的应用更重地加权。因此,在确定像素的更新的颜色值时喷溅的子集的加权可以是基于喷溅中的每个喷溅与像素的接近度。通过确定喷溅的子集中的每个喷溅的更新的颜色值,可以生成三维网格302的可微分二维渲染314。因此,可微分二维渲染314(例如,通过应用喷溅等生成)可以用于在渲染的遮挡边界处找到平滑导数。
由在喷溅构造器312处对喷溅的构造生成的二维差分渲染314可以类似于二维光栅306的模糊或抗锯齿版本,但简单地光栅化并且然后模糊(例如,利用任意超级采样)二维光栅306不足以生成非零导数更具体地,单单光栅化通常在任何采样率下产生相对于顶点的零导数,并且因此模糊结果将缺乏生成非零导数(例如,能够微分等)的能力。
图3B描绘根据本公开的示例实施例的用于使用二维可微分渲染来训练机器学习模型的示例方法300B的数据流程图。二维可微分渲染314可以与3D网格训练数据303一起获得。3D网格训练数据303可以是或另外包括与三维网格302的某个方面相关联的真实值数据。作为示例,可以由机器学习模型基于二维输入数据(例如,模型生成网络等)来生成三维网格302。3D网格训练数据303可以包括描述由三维网格302描绘的实体的第一姿势和/或取向的真实值数据。因此,训练数据可以描述三维网格302的任何方面、由三维网格302表示的一个或多个实体、和/或三维网格302的任何其它方面。
可以为二维渲染314的一个或多个相应喷溅(例如,在遮挡边界处等)生成一个或多个导数318。更具体地,可以使用自动微分函数316至少部分地基于二维可微分渲染314的一个或多个相应喷溅相对于顶点位置的权重来生成一个或多个导数318。
三维网格302的二维可微分渲染314可以用机器学习模型316处理以生成机器学习输出318(例如,以第二姿势/取向的网格302、第二三维网格、网格拟合、姿势估计等的描绘)。
可以评估损失函数320,该损失函数评估机器学习输出318和与三维网格302相关联的训练数据303之间的差异。作为示例,可以至少部分地使用梯度下降算法(例如,利用损失函数320等)来评估机器学习输出318,以确定机器学习输出318和与三维网格302相关联的训练数据303(例如,与三维网格302相关联的真实值等)之间的差异。基于损失函数320,可以经由参数调整322来调整机器学习模型316的一个或多个参数。作为示例,机器学习输出318可以由机器学习模型326生成,并且损失函数320可以用于评估机器学习输出318和与生成的三维网格302相关联的真实值(例如,训练数据303)之间的差异,并且生成参数调整322以优化机器学习模型316。
作为示例,机器学习模型316可以是或另外包括机器学习姿势估计模型316,并且机器学习输出318可以包括描绘由三维网格302表示的实体(例如,对象、人体的至少一部分、表面等)的图像数据。机器学习输出318可以是图像数据(例如,三维网格、二维可微分渲染等),该图像数据描绘具有与实体的第一姿势和/或取向不同的第二姿势或第二取向中的至少一个的实体(例如,如由三维网格等表示)。
示例方法
图4描绘根据本公开的示例实施例的用于生成二维可微分渲染的示例方法400的流程图。尽管为了说明和讨论的目的,图4描绘以特定顺序执行的步骤,但本公开的方法不限于特别图示的顺序或布置。在不偏离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调适方法400的各个步骤。
在402处,计算系统可以获得三维网格,该三维网格包括多个多边形和相关联的纹理和/或着色数据。作为示例,三维网格可以是对象的网格表示,并且相关联的着色和/或纹理数据可以指示三维网格的多边形的一个或多个颜色(例如,视频游戏中的角色模型网格的纹理数据等)。在一些实施方式中,可以使用一个或多个机器学习技术来生成三维网格。作为示例,可以由机器学习模型基于二维输入来生成三维网格。例如,机器学习模型可以处理杯子的二维图像,并且可以输出杯子的三维网格表示。
作为另一示例,三维网格可以表示对第一三维网格的姿势和/或取向调整。例如,机器学习模型可以处理以第一姿势和/或取向的第一三维网格,并且获得以与第一姿势和/或取向不同的第二姿势和/或取向的第二三维网格。因此,在一些实施方式中,三维网格和相关联的纹理/着色数据可以是机器学习模型的输出,并且因此为三维网格的渲染生成平滑导数(例如,在遮挡边界处等)的能力对于优化用于生成三维网格的机器学习模型是必要的。
在404处,计算系统可以光栅化三维网格以获得三维网格的二维光栅。二维光栅可以是或另外包括多个像素以及相应地与多个像素的子集相关联的多个坐标(例如,通过对三维网格的表面进行采样等)。这些坐标可以描述像素相对于像素位于其中的多边形的顶点的位置。作为示例,第一坐标可以描述第一像素相对于第一像素位于其中的第一多边形的顶点的位置。第二坐标可以描述第二像素相对于第二像素位于其中的第二多边形的顶点的位置。在一些实施方式中,多个坐标中的每个坐标可以是或另外包括重心坐标。
在一些实施方式中,二维光栅还可以包括像素子集中的每个像素的多个多边形标识符。多边形标识符可以被配置成对于每个像素识别相应像素位于其内的一个或多个多边形。作为示例,像素可以位于多个多边形中的两个或更多个重叠多边形内(例如,因为三维网格的多边形以二维表示等)。像素的多边形标识符将识别到像素位于两个多边形内。另外,在一些实施方式中,当像素位于两个或更多个重叠多边形内时,多边形标识符可以识别正面多边形。作为示例,三维网格可以表示立方体。三维网格的二维光栅的像素可以位于立方体的第一侧的多边形和立方体的相反侧上的(例如,从二维)不可见的多边形的内部。多边形标识符可以指示在立方体的第一侧上的多边形是正面多边形。以这种方式,多边形标识符可以用于确保应用于像素的颜色与面向二维光栅的视点的多边形相关联。
应注意,计算系统可以使用任何类型的光栅化方案光栅化三维网格以获得二维光栅。作为示例,可以使用传统的z缓冲图形处理(例如,深度缓冲等)来获得二维光栅(例如,多个坐标、多边形标识符等)。作为另一示例,可以使用三维光线投射过程来获得二维光栅(例如,多个坐标、多边形标识符等)。因此,本公开的实施例可以在渲染和/或光栅化流水线中使用,而不需要使用非标准或独特的光栅化方案。
在406处,计算系统可以确定像素子集中的每个像素的初始颜色值。初始颜色值可以是基于像素的坐标和相关联的着色数据和/或相关联的纹理数据。作为示例,第一像素的多边形坐标可以指示第一像素位于第一多边形中。基于着色和/或纹理数据,可以确定多边形在像素(例如,相对于多边形的顶点等)所位于的地方具有橙色。第一像素可以基于像素坐标和着色和/或纹理数据而被着色为橙色。
更具体地,在一些实施方式中,每个像素的多边形标识符和坐标可以允许(例如,三维网格的多边形等的)顶点属性的透视校正插值以确定像素的颜色。在一些实施方式中,确定每个像素的颜色可以包括使用着色和/或纹理化方案将着色数据和/或纹理数据应用于二维光栅。对于任一应用,可以使用任何种类的应用方案。作为示例,可以使用延迟着色、图像空间应用方案来应用着色数据和/或纹理数据以确定像素子集中的每个像素的颜色。
在408处,计算系统可以对于像素子集中的每个像素在相应像素中的每个像素的坐标处构造喷溅。更具体地,二维光栅的每个光栅化表面点可以被转换为以相应像素的坐标为中心的喷溅,并且通过为该像素确定的对应着色颜色C进行着色。为了保留三维网格的多边形的顶点的导数,可以通过至少部分地基于与像素相关联的坐标(例如,x,y,z,w齐次坐标、重心坐标等)对相应像素位于其中的多边形的裁剪空间顶点位置进行插值来计算在其处构造喷溅的坐标(如,喷溅中心点等)。作为示例,可以为每个像素形成每像素裁剪空间位置V的h×w×4缓冲区。透视除法和视口变换可以应用于缓冲区以产生h×w×2屏幕空间喷溅位置缓冲区S。例如,如果S是单个喷溅的位置,则在图像中的像素p处的喷溅的权重是:
其中W通过喷溅的所有权重之和归一化(见下文)。然后,在像素p处的最终颜色rp可以表示相邻像素q∈Np的着色颜色cq的加权和。
在410处,计算系统可以确定像素子集中的每个像素的更新的颜色值以生成三维网格的二维可微分渲染。更新的颜色值可以是基于构造的喷溅的子集的加权。像素的喷溅的子集中的相应喷溅的加权可以是至少部分地基于相应像素的坐标和相应喷溅的坐标。作为示例,第一像素可以具有确定的黄色。第二像素的坐标可以远离第一像素特定距离定位,并且第三像素可以与第一像素相距甚至更远的距离定位。由于第二像素比第三像素更靠近第一像素定位,因此第一像素喷溅(例如,在第一像素的坐标处构造等)对第二像素的应用可以比第一像素喷溅对第三像素的应用更重地加权。因此,在确定像素的更新的颜色值时喷溅的子集的加权可以是基于喷溅中的每个喷溅与像素的接近度。通过确定喷溅的子集中的每个喷溅的更新的颜色值,可以生成三维网格的可微分二维渲染。因此,可微分二维渲染(例如,通过应用喷溅等生成)可以用于在渲染的遮挡边界处找到平滑导数。
应注意,在一些实施方式中,喷溅的子集可以包括比构造的喷溅的数量更少的喷溅。另外,在一些实施方式中,可以为像素子集中的每个像素独特地选择喷溅的子集。作为示例,像素的喷溅的子集可以仅包括为与该像素相邻的像素构造的喷溅。作为另一示例,像素的喷溅的子集可以仅包括为在该像素的特定距离或区域内的像素构造的喷溅(例如,像素周围的5x5像素区域、如由像素坐标定义的特定距离等)。替代地,在一些实施方式中,喷溅的子集可以包括为像素子集构造的喷溅中的每个喷溅。作为示例,为了确定单个像素的更新的颜色值,可以对所构造的喷溅中的每个喷溅进行加权(例如,从0.0到1.0的归一化权重等)。例如,可以基于喷溅与像素的距离对像素的每个喷溅进行加权,并且最接近该像素的喷溅可以被最重地加权,而最远离像素的喷溅可以被最少地加权。
作为示例,s可以是单个喷溅的位置。P可以是二维光栅中的像素。在二维光栅中的像素p处的喷溅的权重可以被定义为:
其中W可以通过喷溅的所有权重之和归一化(见下文)。像素P的更新的颜色值rp可以是相邻像素q∈Np的着色初始颜色值cq的加权和:
如先前所描述,在一些实施方式中,可以使用相邻(例如,邻近、相距特定距离等)的子集。例如,3x3像素邻域可以与σ=0.5一起使用,其可以产生归一化因子:
图5描绘根据本公开的示例实施例的用于在二维可微分渲染的遮挡边界处生成导数以训练机器学习模型的示例方法500的流程图。尽管为了说明和讨论的目的,图5描绘以特定顺序执行的步骤,但本公开的方法不限于特别图示的顺序或布置。在不偏离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调适方法500的各个步骤。
在502处,计算系统可以基于二维可微分渲染来生成二维渲染的一个或多个相应喷溅的一个或多个导数(例如,在遮挡边界处等)。更具体地,可以为二维可微分渲染的一个或多个喷溅相对于顶点位置的权重生成一个或多个导数(例如,使用自动微分函数等)。可以如先前关于图4所描述的生成二维可微分渲染。
在504处,计算系统可以用机器学习模型处理三维网格的二维可微分渲染以生成机器学习输出(例如,以第二姿势/取向的网格、第二三维网格、网格拟合、姿势估计等的描绘)。
在506处,计算系统可以评估损失函数,该损失函数至少部分地基于一个或多个导数来评估机器学习输出和与三维网格相关联的训练数据之间的差异。作为示例,使用梯度下降算法,可以评估一个或多个导数以确定机器学习输出和与三维网格相关联的训练数据(例如,与三维网格关联的真实值等)之间的差异。基于损失函数,可以调整机器学习模型的一个或多个参数。
作为示例,机器学习模型可以是或另外包括机器学习姿势估计模型,并且机器学习输出可以包括描绘由三维网格表示的实体(例如,对象、人体的至少一部分、表面等)的图像数据。机器学习输出可以是图像数据(例如,三维网格、二维可微分渲染等),该图像数据描绘具有与实体的第一姿势和/或取向不同的第二姿势或第二取向中的至少一个的实体(例如,如由三维网格等表示)。
作为另一示例,机器学习模型可以是机器学习的三维网格生成模型(例如,被配置成将网格拟合到所描绘的实体、从二维图像数据生成网格等的模型)。机器学习模型可以处理二维可微分渲染以生成第二三维网格。以这种方式,二维可微分渲染可以允许通过模型的机器学习输出的微分来训练任何类型或配置的机器学习模型。
在508处,计算系统可以至少部分地基于损失函数(例如,损失函数的评估等)来调整机器学习模型的一个或多个参数。
额外公开内容
本文讨论的技术参考服务器、数据库、软件应用和其它基于计算机的系统,以及所采取的动作和发送到此类系统和从此类系统发送的信息。基于计算机的系统的固有灵活性允许组件之间和之中的任务和功能的各种可能配置、组合和划分。例如,本文讨论的过程可以使用单个设备或组件或组合工作的多个设备或组件来实现。数据库和应用可以在单个系统上实现或跨多个系统分布。分布式组件可以顺序地或并行地操作。
虽然已经关于本主题的各种具体示例实施例详细描述了本主题,但每个示例都通过解释而非限制本公开的方式提供。本领域技术人员在获得和理解上述内容后可以容易地产生对此类实施例的更改、变化和等效物。因此,本公开内容不排除包括对本主题的此类修改、变化和/或添加,如对于本领域普通技术人员来说将是显而易见的。例如,说明或描述为一个实施例的一部分的特征可以与另一实施例一起使用以产生又一实施例。因此,预期本公开涵盖此类更改、变化和等效物。
Claims (20)
1.一种用于生成三维模型的可微分二维渲染的计算机实现的方法,所述方法包括:
由包括一个或多个计算设备的计算系统获得三维网格,所述三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个;
由所述计算系统将所述三维网格光栅化以获得所述三维网格的二维光栅,其中所述二维光栅包括多个像素和与所述多个像素的至少像素子集相应地相关联的多个坐标,其中所述像素子集中的每个像素的坐标描述相应像素相对于所述像素位于其中的所述多个多边形中的相应多边形的顶点的位置;
由所述计算系统至少部分地基于所述像素的坐标和所述相关联的着色数据或所述相关联的纹理数据中的所述至少一个来确定所述像素子集中的每个像素的相应初始颜色值;
对于所述像素子集中的每个像素,由所述计算系统在相应像素的坐标处构造喷溅;以及
对于所述像素子集中的每个像素,由所述计算系统基于所述喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成所述三维网格的二维可微分渲染,其中,对于所述喷溅的所述子集中的每个喷溅,相应喷溅的所述加权是至少部分地基于相应像素的坐标和相应喷溅的坐标。
2.根据权利要求1所述的计算机实现的方法,其中所述方法进一步包括:由所述计算系统基于所述二维可微分渲染来生成所述二维可微分渲染的一个或多个相应喷溅的一个或多个导数。
3.根据权利要求2所述的计算机实现的方法,其中使用自动微分函数来生成所述一个或多个导数。
4.根据权利要求2至3中任一项所述的计算机实现的方法,其中:
基于被构造了一个或多个喷溅的一个或多个像素的相应坐标来生成所述一个或多个导数中的每个导数;以及
所述像素子集中的每个像素的坐标包括一个或多个重心坐标。
5.根据权利要求2至4所述的计算机实现的方法,其中所述方法进一步包括:
由所述计算系统使用机器学习模型来处理所述二维渲染以生成机器学习输出;
由所述计算系统评估损失函数,所述损失函数至少部分地基于所述一个或多个导数来评估在所述输出和与所述三维网格相关联的训练数据之间的差异;以及
由所述计算系统至少部分地基于所述损失函数来调整所述机器学习模型的一个或多个参数。
6.根据权利要求5所述的计算机实现的方法,其中:
所述二维渲染描绘由所述三维网格表示的实体;
所述训练数据包括描述所述实体的第一姿势或第一取向中的至少一个的真实值数据;
所述机器学习输出包括图像数据,所述图像数据描绘具有与所述第一姿势或所述第一取向不同的第二姿势或第二取向中的至少一个的所述实体;以及
所述机器学习模型包括机器学习姿势估计模型。
7.根据权利要求5所述的计算机实现的方法,其中:
所述机器学习模型包括机器学习的三维网格生成模型;
所述机器学习输出包括至少部分地基于所述二维渲染的第二三维网格;以及
所述训练数据包括与所述三维网格相关联的真实值数据。
8.根据权利要求6至7中任一项所述的计算机实现的方法,其中所述三维网格包括以下项的网格表示:
对象;
人体的至少一部分;或
表面。
9.根据权利要求5至8中任一项所述的计算机实现的方法,其中,由所述损失函数至少部分地基于梯度下降算法来评估所述机器学习输出。
10.根据任一前述权利要求所述的计算机实现的方法,其中:
所述二维光栅进一步包括多边形标识符的相应子集,其中所述多边形标识符的相应子集中的每个多边形标识符被配置成对于所述像素子集中的每个像素识别相应像素位于其内的一个或多个多边形;以及
所述像素子集中的每个像素的所述初始颜色值是至少部分地基于相应像素的所述多边形标识符。
11.根据权利要求10所述的计算机实现的方法,其中:
所述像素位于所述多个多边形的两个或更多个重叠多边形内;以及
所述多边形标识符被配置成识别所述两个或更多个重叠多边形的正面多边形。
12.根据任一前述权利要求所述的计算机实现的方法,其中,对于所述喷溅的所述子集中的每个喷溅,相应喷溅的坐标与相应像素的坐标相邻。
13.一种用于生成三维模型的可微分二维渲染的计算系统,包括:
一个或多个处理器;以及
存储计算机可读指令的一个或多个有形的非暂时性计算机可读介质,所述计算机可读指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行操作,所述操作包括:
获得三维网格,所述三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个;
将所述三维网格光栅化以获得所述三维网格的二维光栅,其中所述二维光栅包括多个像素和与所述多个像素的至少像素子集相应地相关联的多个坐标,其中所述像素子集中的每个像素的坐标描述相应像素相对于所述像素位于其中的所述多个多边形中的相应多边形的顶点的位置;
至少部分地基于所述像素的坐标和所述相关联的着色数据或所述相关联的纹理数据中的所述至少一个来确定所述像素子集中的每个像素的相应初始颜色值;
对于所述像素子集中的每个像素,在相应像素的坐标处构造喷溅;以及
对于所述像素子集中的每个像素,基于所述喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成所述三维网格的二维可微分渲染,其中,对于所述喷溅的所述子集中的每个喷溅,相应喷溅的所述加权是至少部分地基于相应像素的坐标和所述相应喷溅的坐标。
14.根据权利要求13所述的计算系统,其中:
所述操作进一步包括:基于所述二维可微分渲染来生成所述二维可微分渲染的一个或多个相应喷溅的一个或多个导数;
基于被构造了一个或多个喷溅的一个或多个像素的相应坐标来生成所述一个或多个导数中的每个导数;以及
所述像素子集中的每个像素的坐标包括一个或多个重心坐标。
15.根据权利要求13至14中任一项所述的计算系统,其中所述操作进一步包括:
使用机器学习模型来处理所述二维渲染以生成机器学习输出;
评估损失函数,所述损失函数至少部分地基于所述一个或多个导数来评估在所述输出和与所述三维网格相关联的训练数据之间的差异;以及
至少部分地基于所述损失函数来调整所述机器学习模型的一个或多个参数。
16.根据权利要求13至15中任一项所述的计算系统,其中:
所述二维渲染描绘由所述三维网格表示的实体;
所述训练数据包括描述所述实体的第一姿势或第一取向中的至少一个的真实值数据;
所述机器学习输出包括图像数据,所述图像数据描绘具有与所述第一姿势或所述第一取向不同的第二姿势或第二取向中的至少一个的所述实体;以及
所述机器学习模型包括机器学习姿势估计模型。
17.根据权利要求13至15中任一项所述的计算系统,其中:
所述机器学习模型包括机器学习的三维网格生成模型;
所述机器学习输出包括至少部分地基于所述二维渲染的第二三维网格;以及
所述训练数据包括与所述三维网格相关联的真实值数据。
18.根据权利要求16至17中任一项所述的计算系统,其中所述三维网格包括以下项的网格表示:
对象;
人体的至少一部分;或
表面。
19.根据权利要求13至18中任一项所述的计算系统,其中:
所述二维光栅进一步包括多边形标识符的相应子集,其中所述多边形标识符的相应子集中的每个多边形标识符被配置成对于所述像素子集中的每个像素识别相应像素位于其内的一个或多个多边形;以及
所述像素子集中的每个像素的所述初始颜色值是至少部分地基于相应像素的所述多边形标识符。
20.存储计算机可读指令的一个或多个有形的非暂时性计算机可读介质,所述计算机可读指令在由一个或多个处理器执行时使所述一个或多个处理器执行操作,所述操作包括:
获得三维网格,所述三维网格包括多个多边形和相关联的纹理数据或相关联的着色数据中的至少一个;
将所述三维网格光栅化以获得所述三维网格的二维光栅,其中所述二维光栅包括多个像素和与所述多个像素的至少像素子集相应地相关联的多个坐标,其中所述像素子集中的每个像素的坐标描述相应像素相对于所述像素位于其中的所述多个多边形中的相应多边形的顶点的位置;
至少部分地基于所述像素的坐标和所述相关联的着色数据或所述相关联的纹理数据中的所述至少一个来确定所述像素子集中的每个像素的相应初始颜色值;
对于所述像素子集中的每个像素,在相应像素的坐标处构造喷溅;以及
对于所述像素子集中的每个像素,基于所述喷溅的子集中的每个喷溅的加权来确定相应像素的更新的颜色值以生成所述三维网格的二维可微分渲染,其中,对于所述喷溅的所述子集中的每个喷溅,相应喷溅的所述加权是至少部分地基于相应像素的坐标和所述相应喷溅的坐标。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/048784 WO2022046113A1 (en) | 2020-08-31 | 2020-08-31 | Systems and methods for generating splat-based differentiable two-dimensional renderings |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116018617A true CN116018617A (zh) | 2023-04-25 |
Family
ID=72474009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080104438.8A Pending CN116018617A (zh) | 2020-08-31 | 2020-08-31 | 用于生成基于喷溅的可微分二维渲染的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230298269A1 (zh) |
EP (1) | EP4162450A1 (zh) |
CN (1) | CN116018617A (zh) |
WO (1) | WO2022046113A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115830091B (zh) * | 2023-02-20 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 纹理图像的生成方法、装置、设备、存储介质及产品 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001063561A1 (en) * | 2000-02-25 | 2001-08-30 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US9418478B2 (en) * | 2012-06-05 | 2016-08-16 | Apple Inc. | Methods and apparatus for building a three-dimensional model from multiple data sets |
US9582932B2 (en) * | 2012-06-05 | 2017-02-28 | Apple Inc. | Identifying and parameterizing roof types in map data |
US10504274B2 (en) * | 2018-01-05 | 2019-12-10 | Microsoft Technology Licensing, Llc | Fusing, texturing, and rendering views of dynamic three-dimensional models |
US11109065B2 (en) * | 2018-09-26 | 2021-08-31 | Google Llc | Video encoding by providing geometric proxies |
US20240096018A1 (en) * | 2022-09-15 | 2024-03-21 | Lemon Inc. | Methods for a rasterization-based differentiable renderer for translucent objects |
US20240161406A1 (en) * | 2022-11-15 | 2024-05-16 | Adobe Inc. | Modifying two-dimensional images utilizing iterative three-dimensional meshes of the two-dimensional images |
-
2020
- 2020-08-31 US US18/014,307 patent/US20230298269A1/en active Pending
- 2020-08-31 WO PCT/US2020/048784 patent/WO2022046113A1/en unknown
- 2020-08-31 CN CN202080104438.8A patent/CN116018617A/zh active Pending
- 2020-08-31 EP EP20771719.0A patent/EP4162450A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230298269A1 (en) | 2023-09-21 |
WO2022046113A1 (en) | 2022-03-03 |
EP4162450A1 (en) | 2023-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110084874B (zh) | 对于三维模型的图像风格迁移 | |
CN108351864B (zh) | 成凹几何密铺 | |
EP3166078B1 (en) | 3d graphic rendering method and apparatus | |
US20230394750A1 (en) | Graphics processing using directional representations of lighting at probe positions within a scene | |
CN111369655B (zh) | 渲染方法、装置和终端设备 | |
US11657560B2 (en) | VRS rate feedback | |
US8154544B1 (en) | User specified contact deformations for computer graphics | |
CN108230435B (zh) | 采用立方图纹理的图形处理 | |
US10740955B2 (en) | Systems and methods for real-time large-scale point cloud surface reconstruction | |
US10249077B2 (en) | Rendering the global illumination of a 3D scene | |
US20210065434A1 (en) | Techniques for performing point-based inverse rendering | |
EP3422709A1 (en) | Stereo rendering | |
CN114424239A (zh) | 用于光线追踪应用中的循环模糊的去噪技术 | |
CN116363288A (zh) | 目标物的渲染方法、装置、存储介质及计算机设备 | |
CN116018617A (zh) | 用于生成基于喷溅的可微分二维渲染的系统和方法 | |
KR102558739B1 (ko) | 3d 렌더링 방법 및 장치 | |
US9665955B1 (en) | Pose-space shape fitting | |
US6762759B1 (en) | Rendering a two-dimensional image | |
US20200202605A1 (en) | Centroid selection for variable rate shading | |
US10922872B2 (en) | Noise reduction on G-buffers for Monte Carlo filtering | |
US10636210B2 (en) | Dynamic contour volume deformation | |
Krösl et al. | LiteMaker: Interactive Luminaire Development using Progressive Photon Tracing and Multi-Resolution Upsampling. | |
US10388061B2 (en) | Generation of lighting data for a three-dimensional entity | |
KR20190013146A (ko) | 모바일 환경에서 3d 객체의 실시간 대량 처리를 위한 랜더링 최적화 방법 | |
Steiner | Post processing effects |
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 |