CN117011440A - 程序性媒体生成 - Google Patents

程序性媒体生成 Download PDF

Info

Publication number
CN117011440A
CN117011440A CN202310124660.XA CN202310124660A CN117011440A CN 117011440 A CN117011440 A CN 117011440A CN 202310124660 A CN202310124660 A CN 202310124660A CN 117011440 A CN117011440 A CN 117011440A
Authority
CN
China
Prior art keywords
sequence
operator
media
node
programmatic
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
CN202310124660.XA
Other languages
English (en)
Inventor
P·A·古雷罗
M·哈森
K·K·萨恩卡瓦利
R·麦克
T·鲍贝克尔
N·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.)
Adobe Inc
Original Assignee
Adobe Systems Inc
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
Application filed by Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of CN117011440A publication Critical patent/CN117011440A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • 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/42Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation
    • G06V10/422Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation for representing the structure of the pattern or shape of an object therefor
    • G06V10/426Graphical representations
    • 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
    • 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/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06V10/7747Organisation of the process, e.g. bagging or boosting
    • 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/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/776Validation; Performance evaluation
    • 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

Landscapes

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

Abstract

本公开的实施例涉及程序性媒体生成。一种用于程序性媒体生成的系统和方法的各方面包括:使用节点生成网络生成算子类型序列;使用参数生成网络针对算子类型序列中的每个算子类型生成算子参数序列;使用边生成网络基于算子类型序列生成有向边序列;对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到程序性媒体生成器的另一节点的输入连接或输出连接;以及使用程序性媒体生成器生成媒体资产。

Description

程序性媒体生成
背景技术
以下内容总体上涉及程序性生成,更具体地涉及程序性媒体生成(proceduralmedia generation)。程序性生成是指使用算法以及作为输入提供给算法的随机变量和定义变量的组合来生成信息。
例如,媒体资产(诸如纹理)可以使用被构造为有向图形(directed graph)的操作集合来生成。有向图形是包括节点和有向边的图形。节点可以表示程序(procedure)中的操作。边可以表示输入和输出。在3D渲染上下文中,可以创建有向图形来提供由3D模型以视觉形式描绘的信息。然而,手动创建足够大的程序性图形以在最终输出中达到期望的质量级别是困难且耗时的。因此,在本领域中需要能够自动创建各种各样且高质量媒体资产的系统和方法。
发明内容
本公开的实施例提供了程序性媒体生成系统,其生成参数化节点和有向边并获得包括参数化节点和有向边的程序性媒体生成器。参数化节点是包括用户可编辑参数的有向图形顶点,以允许用户在运行中实时定制程序性媒体生成器。程序性媒体生成系统然后使用程序性媒体生成器生成媒体资产。通过使用程序性媒体生成器生成媒体资产,程序性媒体生成系统向用户提供了包括质量有向图形所提供的信息量的媒体资产,但是不要求手动创作质量有向图形所需要的用户的时间、精力和专业知识。
描述了一种用于程序性媒体生成的方法、装置、非暂态计算机可读介质和系统。该方法、装置、非暂态计算机可读介质和系统的一个或多个方面包括:使用节点生成网络生成算子类型序列;使用参数生成网络针对算子类型序列中的每个算子类型生成算子参数序列;使用边生成网络基于算子类型序列来生成有向边序列;对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的输入连接或输出连接;以及使用程序性媒体生成器生成媒体资产。
描述了一种用于程序性媒体生成的方法、装置、非暂态计算机可读介质和系统。该方法、装置、非暂态计算机可读介质和系统的一个或多个方面包括:标识包括基准真值(ground truth)程序性媒体生成器的训练数据;从基准真值程序性媒体生成器中标识算子子集;基于算子子集使用节点生成网络来预测下一算子类型;基于预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型来计算算子类型损失;以及基于算子类型损失更新节点生成网络的参数。
描述了一种用于程序性媒体生成的装置和系统。该装置和系统的一个或多个方面包括:节点生成网络,被配置为生成算子类型序列;参数生成网络,被配置为针对算子类型序列中的每个算子类型生成算子参数序列;边生成网络,被配置为基于算子类型序列生成有向边序列;图形组件,其被配置为对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的输入连接或输出连接;以及资产生成器,被配置为使用程序性媒体生成器生成媒体资产。
附图说明
图1示出了根据本公开各方面的程序性媒体生成系统的示例。
图2示出了根据本公开各方面的程序性媒体生成装置的示例。
图3示出了根据本公开各方面的参数生成网络的示例。
图4示出了根据本公开各方面的边生成网络的示例。
图5示出了根据本公开各方面的程序性媒体生成的示例。
图6示出了根据本公开各方面的生成媒体资产的示例。
图7示出了根据本公开各方面的生成多个纹理图像的示例。
图8示出了根据本公开各方面的媒体资产的示例。
图9示出了根据本公开各方面的修改算子参数资产的示例。
图10示出了根据本公开各方面的经修改的媒体资产的示例。
图11示出了根据本公开各方面的受指导的媒体资产创作的示例。
图12示出了根据本公开各方面的生成后续媒体资产的示例。
图13示出了根据本公开各方面的训练机器学习模型的示例。
图14示出了根据本公开各方面的基于参数损失训练机器学习模型的示例。
图15示出了根据本公开各方面的基于有向边损失训练机器学习模型的示例。
具体实施方式
本公开涉及程序性图形的生成。例如,本公开的实施例涉及生成用于在3D建模环境中生成纹理的程序性图形。
程序性图形是有向图形,其中图形的节点对应于程序的各个操作。边对应于操作的输入和输出。例如,诸如图像、材质(material)(纹理图像)、3D模型、声音等媒体资产可以作为操作的有向图形的输出来产生。用于生成纹理的操作可以包括能够生成多个相关纹理的图像处理步骤。这可以在为3D模型生成多个纹理时节省时间。
然而,手动设计针对媒体资产的有向图形可能是耗时且技术要求高的过程。例如,包含充分描述媒体资产的信息的有向图形可以包括超过50个节点和更多的边。这种复杂性可能会阻碍非专业用户尝试使用有向图形来生成媒体资产。
本公开的实施例应用基于机器学习的程序性生成技术来自动获得程序性图形,诸如程序性媒体生成器。这些程序性媒体生成器可以用于生成媒体资产。在一个方面,程序性媒体生成装置包括机器学习模型,机器学习模型包括节点生成网络、参数生成网络和边生成网络。节点生成网络使用节点生成网络生成算子类型序列,参数生成网络为算子类型序列中的每个算子类型生成算子参数序列,并且边生成网络基于算子类型序列生成有向边序列。
在一个方面,程序性媒体生成装置包括图形组件,该图形组件对算子类型序列、算子参数序列和有向边序列进行组合,以获得程序性媒体生成器。程序性媒体生成器包括有向图形。有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该算子连接到有向图形的另一算子的一个或多个输入连接和输出连接。在一个方面,程序性媒体生成装置包括使用程序性媒体生成器生成媒体资产的资产生成器。
通过使用数据驱动的生成模型来生成算子类型、算子参数和有向边,并且对算子类型、算子参数和有向边进行组合以获得程序性媒体生成器,程序性媒体生成装置向用户提供不要求来自用户的手动专业编程的有向图形。此外,通过使用参数生成网络来参数化程序性媒体生成装置的算子,程序性媒体生成装置提供了可以经由图形用户界面容易地被定制的有向图形,从而很大程度地扩展了用户可以基于程序性媒体生成器生成的媒体资产的种类和数量。
根据一些方面,程序性媒体生成器的有向图形是材质图形,并且基于材质图形生成的媒体资产是纹理图像。高质量材质(例如,纹理图像)可以是为一系列计算机图形应用(包括游戏、电影和AR/VR)创建虚拟媒体资产的重要组成部分,并且材质图形作为可控的、与分辨率无关的材质表示而广受欢迎。通过将几何模型与纹理图像进行组合,艺术家可以创建逼真且引人注目的虚拟资产。
传统的材质设计通常涉及创建材质图形。这种图形可以定义将空间位置映射到像素值的函数,并且包括表示噪声和图案(pattern)生成器或对纹理的操作(例如,滤波器内核、变换等)的节点集合以及表示从节点的输出到后续节点的输入的信息流的边,以最终产生用于分析模型的图像贴图(image map)(例如,粗糙度贴图、法线贴图、漫射贴图等)。在一些情况下,可以通过编辑各个节点的参数来控制输出贴图。在一些情况下,传统的材质创作平台允许用户手动组合表示简单图像处理操作的材质图形的滤波器节点来构建新材质图形,该新材质图形处理噪声和图案以生成复杂的、空间变化的材质。
然而,复杂的材质定义通常要求在材质图形中包含超过50个节点,并且对如此广泛的材质图形进行手动编程的困难可能会给任何非专业程序员带来不可逾越的障碍。由于这种困难的材质图形创建过程,最大的开源纹理数据集之一仅包括几千个这样的材质定义,并且非专业用户可能仅能够使用这些有限选项的子集。
缓解这一困难过程的传统方法包括将程序性函数的参数拟合到样本纹理图像的程序性材质设计方法、使用直接输出纹理/材质图像的材质生成器的神经版本的技术、使用MCMC采样来优化程序性材质模型的参数以使用相对简单的和手动编码的程序来拟合目标照片的技术、涉及训练深度神经网络以预测给定捕获图像的程序性节点图形的参数的技术、以及涉及将程序性节点图形转换成可区分的程序并使用随机梯度下降来将图形参数拟合到捕获图像的技术。
然而,这些方法或者假设材质图形的参数随后所拟合到的目标输出,或者假设程序性图形(或函数)被给定。与这些传统方法相比,根据一些方面,程序性媒体生成装置从零开始创建新的、程序性地生成的材质图形,不要求来自用户的任何编程技能,并且不假设材质图形所拟合到的预先存在的媒体资产。
近年来,深度学习生成技术已经被应用于为图像、动画、视频、几何形状乃至低分辨率、非参数化的图像贴图生成模型。然而,由于多重挑战,传统的生成方法可能不能直接应用于生成材质图形。首先,与图像/视频不同,材质图形可能不具有规则的结构,并且可能包括任意数量的深度和宽度不同的节点。第二,材质图形通常可以包括异构节点,异构节点包括不同数量和类型的参数以及不同数量的边槽(edge slot)。第三,基于可能需要考虑的节点的算子类型,材质图形的每个节点中的输入槽和输出槽可能具有不同的功能规范。最后,材质图形可能包含操作长链,该操作长链在通常对材质外观至关重要的遥远节点之间具有长距离连接。
因此,根据一些方面,程序性媒体生成装置的机器学习模型被实现为自回归模型,以用于通过对程序性材质的空间上的概率分布进行建模并随后允许从该分布进行采样来程序性地生成材质图形。根据一些方面,机器学习模型包括有效处理图形节点之间的稀疏、长距离连接的变换器网络(transformer network)。
此外,为了对复杂地构造的有向图形(诸如材质图形)进行建模,机器学习模型在三个顺序的处理阶段中而不是在一个阶段中生成针对有向图形的值,其中每个处理阶段由专用的变换器网络执行以捕获依赖性。在一些实施例中,在第一阶段中生成节点序列,在第二阶段中生成针对每个节点的参数序列,并且在第三阶段生成连接所生成节点的输入槽和输出槽的有向边序列。
根据一些方面,机器学习模型被训练来执行无条件生成过程,其中模型输出针对有向图形的值,而不需要来自用户的初始图形输入。无条件生成过程可以根据需要重复多次,并且所生成的程序性媒体生成器中的期望特性可以被用户选择来被保留在后续程序性媒体生成器中。
根据一些方面,程序性媒体生成装置向用户提供受指导的媒体资产创作功能,其中程序性媒体生成装置接收输入图形并通过预测输入图形中包括的值序列中的下一值来自动完成输入图形。用户可以迭代地探索和提炼由装置基于输入图形生成的一个或多个完成的图形,以协助用户创建在初始概念上迭代的媒体资产。
如本文所使用的,程序性媒体生成器是指用于生成媒体资产的数据集合。在一些实施例中,程序性媒体生成器包括有向图形。
如本文所使用的,有向图形是指节点图形。节点图形是包括参数化节点和有向边的非循环参数图形,其可以用于经由节点图形的输出节点中包括的信息来生成资产。图形节点是包括定义命名输入槽、命名输出槽和异构参数集合的算子类型和算子参数的操作实例。算子类型描述图形节点所执行的操作,并且图形节点的操作参数量化操作的值。有向边从图形节点的输出槽前进到后续节点的输入槽,以描述节点图形中的信息流。
在一些方面,有向图形是材质图形。材质图形提供材质(例如,纹理图像)的特性或属性,诸如粗糙度、风化、反照率、颜色、图案等。
如本文所使用的,媒体资产是指可以使用有向图形生成的资产。媒体资产的示例包括但不限于材质(例如,纹理图像)、其他种类的图像、声音、3D模型、视频、形状和文本。
参考图1和图5提供了本公开在程序性生成环境中的示例应用。参考图1-图4提供了关于程序性媒体生成系统的架构的细节。参考图5-图12提供了用于程序性媒体生成的过程的示例。参考图13-图15提供了用于训练机器学习模型的过程的示例。
程序性媒体生成系统
参考图1-图4描述了用于程序性媒体生成的系统和装置。该系统和装置的一个或多个方面包括:节点生成网络,被配置为生成算子类型序列;参数生成网络,被配置为针对算子类型序列中的每个算子类型生成算子参数序列;边生成网络,被配置为基于算子类型序列生成有向边序列;图形组件,被配置为对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的输入连接或输出连接;以及资产生成器,被配置为使用程序性媒体生成器生成媒体资产。
在一些方面,节点生成网络包括第一变换器网络。在一些方面,参数生成网络包括第二变换器网络。在一些方面,边生成网络包括指针网络(pointer network)。在一些方面,边生成网络包括位置编码器。在一些方面,资产生成器包括图像渲染应用。
该系统和装置的一些示例还包括训练组件,训练组件被配置为更新节点生成网络、参数生成网络和边生成网络中的每一者的参数。
图1示出了根据本公开各方面的程序性媒体生成系统的示例。所示的示例包括用户100、用户设备105、程序性媒体生成装置110、云115和数据库120。
参考图1,用户100经由用户设备105和云115向程序性媒体生成装置110提供输入图形。在一个示例中,输入图形是材质图形、材质的程序表示(纹理图像)。材质图形在艺术家当中很受欢迎,但是可能很难设计。例如,材质图形可以不包括规则结构,而是可以包括任意数量的、在操作长链中被连接的异构节点,该异构节点包括不同类型的参数和具有不同功能规范的不同数量的边槽,该操作长链包括节点之间的长距离连接,该节点通常对基于材质图形生成的材质外观至关重要。因此,对于没有材质图形编程经验的用户来说,拥有部分材质图形可能是常见的,并且用户将受益于可以用最少的用户输入完成材质图形的系统。因此,程序性媒体生成装置110在受指导的媒体资产创作过程中自动完成输入图形,并且基于完成的图形来生成媒体资产并将其提供给用户100,从而帮助在创作有向图形方面没有丰富经验的新手用户完成项目,或者允许更高级的用户探索各种各样的媒体资产,而无需对多个有向图形进行手动编程。
根据一些方面,用户设备105是个人计算机、膝上型计算机、大型计算机、掌上型计算机、个人助理、移动设备或任何其他合适的处理装置。在一些示例中,用户设备105包括显示由程序性媒体生成装置110提供的图形用户界面的软件。在一些方面,图形用户界面提供交互式视觉元素,交互式视觉元素允许用户100向程序性媒体生成装置110提供指令,诸如用于从零开始生成程序性媒体生成器和对应的媒体资产的指令、用于基于输入图形生成程序性媒体生成器和对应的媒体资产的指令、以及用于选择和编辑程序性媒体生成器的节点参数的指令。在一些方面,图形用户界面允许用户100向程序性媒体生成装置110上传或以其他方式传送包括输入图形的文件,以供程序性媒体生成装置110在受指导的媒体资产创作过程中完成。在一些方面,图形用户界面向用户显示程序性媒体生成器和媒体资产。
根据一些方面,用户接口使用户100能够与用户设备105进行交互。在一些实施例中,用户接口可以包括音频设备(诸如外部扬声器系统)、外部显示设备(诸如显示屏)或输入设备(例如,直接或通过IO控制器模块与用户接口对接的远程控制设备)。在一些情况下,用户接口可以是图形用户界面(graphical user interface,GUI)。
根据一些方面,程序性媒体生成装置110获得用于生成媒体资产的程序性媒体生成器。在一些实施例中,程序性媒体生成器包括有向图形。在一些情况下,有向图形是包括描述材质表面属性(诸如反照率、粗糙度、金属度、表面法线、高度等)的标量或向量图像通道的集合的材质图形。
与更传统的基于像素的域中的生成模型相比,为真实材质生成节点图形提出了一系列独特的挑战。首先,材质图形可能不具有像图像网格那样的简单规则表示,并且它们的节点参数可能是异构的,使得材质图形中的每个节点类型都包括不同的参数集合,这些参数可能包括标量、向量和可变长度数组。第二,材质图形可能形成操作长链,操作长链导致节点之间强烈的长距离依赖性,使序列和图形生成的传统方法不适合该任务,因为信息流随着距离而降低。第三,材质图形通常需要大量的节点和节点参数。最后,材质图形可能包括多个功能上和语义上不同的输入槽和输出槽,并且将不正确的槽连接到节点可能使所得的材质图形不仅次优、而且无效。
相应地,在一些方面,程序性媒体生成装置使用基于变换器的机器学习模型来获得程序性媒体生成器的信息,使得信息对于有向图形的所有部分都是以同等的保真度可用的。在一些实施例中,机器学习模型包括用于形成有向图形的不同区域之间的信息流的注意力机制。使用注意力机制在一个阶段中将针对有向图形的信息生成为单个序列在计算上可能是昂贵的,因为注意力机制可能是序列长度的平方。相应地,为了避免这种代价,机器学习模型在三个分开的处理阶段中分别生成算子类型、算子参数和有向边。在一些实施例中,每个处理阶段由分开的变换器网络来执行。在一些实施例中,算子参数和有向边的生成以所生成的算子类型为条件。
根据一些方面,程序性媒体生成装置110包括计算机实现的网络。在一些实施例中,计算机实现的网络包括机器学习模型。在一些实施例中,程序性媒体生成装置110还包括一个或多个处理器、存储器子系统、通信接口、I/O接口、一个或多个用户接口组件和总线。另外,在一些实施例中,程序性媒体生成装置110经由云115与用户设备105和数据库120进行通信。
在一些情况下,程序性媒体生成装置110在服务器上实现。服务器向通过一个或多个各种网络(诸如云115)而链接的用户提供一个或多个功能。在一些情况下,服务器包括单个微处理器板,该微处理器板包括负责控制服务器的所有方面的微处理器。在一些情况下,服务器使用微处理器和协议经由超文本传输协议(hypertext transfer protocol,HTTP)和简单邮件传输协议(simple mail transfer protocol,SMTP)还有其他协议(诸如文件传输协议(file transfer protocol,FTP)和简单网络管理协议(simple networkmanagement protocol,SNMP))与一个或多个网络上的其他设备或用户交换数据,。在一些情况下,服务器被配置为发送和接收超文本标记语言(hypertext markup language,HTML)格式的文件(例如,用于显示网页)。在各种实施例中,服务器包括通用计算设备、个人计算机、膝上型计算机、大型计算机、超级计算机或任何其他合适的处理装置。
参考图2-图4提供了关于程序性媒体生成装置110的架构的进一步细节。参考图5-图12提供了关于用于程序性媒体生成的过程的进一步细节。参考图13-图15提供了关于用于训练机器学习模型的过程的进一步细节。程序性媒体生成装置110是参考图2描述的相应元件的示例,或者包括其各方面。
云(诸如云115)是被配置为提供计算机系统资源(诸如数据存储和计算能力)的按需可用性的计算机网络。在一些示例中,云115在没有用户100主动管理的情况下提供资源。术语“云”有时用于描述许多用户通过互联网使用的数据中心。一些大型云网络的功能分布在来自中央服务器的多个位置上。如果服务器与用户有直接或紧密的连接,则该服务器被指定为边服务器。在一些情况下,云115限于单个组织。在其他示例中,云115可用于许多组织。在一个示例中,云115包括多层通信网络,该多层通信网络包括多个边路由器和核心路由器。在另一示例中,云115基于单个物理位置中的交换机的本地集合。根据一些方面,云115提供用户设备105、程序性媒体生成装置110与数据库120之间的通信。
数据库(诸如数据库120)是有组织的数据集合。在一个示例中,数据库120以称为纲要(schema)的指定格式存储数据。根据一些方面,数据库120被构造为单个数据库、分布式数据库、多个分布式数据库或紧急备份数据库。在一些情况下,数据库控制器管理数据库120中的数据存储和处理。在一些情况下,用户100与数据库控制器进行交互。在其他情况下,数据库控制器在没有用户交互的情况下自动运行。根据一些方面,数据库120存储由程序性媒体生成装置110的组件生成的各种输出。在一些实施例中,数据库120在程序性媒体生成装置110的外部,并且经由云115与程序性媒体生成装置110进行通信。在一些实施例中,数据库120被包括在程序性媒体生成装置110中。
图2示出了根据本公开各方面的程序性媒体生成装置的示例。程序性媒体生成装置200是参考图1描述的相应元件的示例,或者包括其各方面。在一个方面,程序性媒体生成装置200包括处理器单元205、存储器单元210、机器学习模型215、图形组件235、资产生成器240和训练组件245。
处理器单元205包括一个或多个处理器。处理器是智能硬件设备,诸如通用处理组件、数字信号处理器(digital signal processor,DSP)、中央处理单元(centralprocessing unit,CPU)、图形处理单元(graphics processing unit,GPU)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、可编程逻辑设备、分立门或晶体管逻辑组件、分立硬件组件或其任何组合。在一些情况下,处理器单元205被配置为使用存储器控制器来操作存储器阵列。在其他情况下,存储器控制器被集成到处理器单元205中。在一些情况下,处理器单元205被配置为执行存储在存储器单元210中的计算机可读指令,以执行各种功能。在一些实施例中,处理器单元205包括用于调制解调器处理、基带处理、数字信号处理或传输处理的专用组件。
存储器单元210包括一个或多个存储器设备。存储器设备的示例包括随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)或硬盘。存储器设备的示例包括固态存储器和硬盘驱动器。在一些示例中,存储器用于存储包括指令的计算机可读的、计算机可执行的软件,当该指令被执行时,使得处理器单元205的处理器执行本文描述的各种功能。在一些情况下,存储器单元210包括控制基本硬件或软件操作(诸如与外围组件或设备的交互)的基本输入/输出系统(basic input/output system,BIOS)。在一些情况下,存储器单元210包括操作存储器单元210的存储器晶胞的存储器控制器。例如,存储器控制器可以包括行解码器、列解码器或两者。在一些情况下,存储器单元210内的存储器晶胞以逻辑状态的形式存储信息。
根据一些方面,机器学习模型215被实现为硬件电路、固件或软件。在一个方面,机器学习模型215包括一个或多个人工神经网络(artificial neural network,ANN)。ANN是包括许多连接的ANN节点(即人工神经元)的硬件或软件组件,ANN节点大致对应于人脑中的神经元。每个连接或边将信号从一个ANN节点传输到另一ANN节点(像大脑中的物理突触一样)。当ANN节点接收到信号时,它处理该信号,然后将处理后的信号传输到其他连接节点。在一些情况下,ANN节点之间的信号包括实数,并且每个ANN节点的输出通过其输入之和的函数来计算。在一些示例中,ANN节点可以使用其他数学算法(例如,从输入中选择最大值作为输出)或用于激活ANN节点的任何其他合适的算法来确定它们的输出。每个ANN节点和边与一个或多个节点权重相关联,节点权重确定如何处理和传输信号。
在ANN中,隐藏(或中间)层包括隐藏节点,并且位于输入层与输出层之间。隐藏层对输入到网络中的输入执行非线性变换。每个隐藏层被训练成产生有助于神经网络的输出层的联合输出的定义输出。隐藏表示是从神经网络的隐藏层学习到的输入的机器可读数据表示,并且由输出层产生。因为神经网络对输入的理解随着其被训练而提高,所以隐藏表示逐渐与较早的迭代区分开。在ANN的训练过程期间,调整节点权重以提高结果的准确性(即,通过最小化以某种方式对应于当前结果与目标结果之间的差异的损失)。边的权重增加或减少连接节点之间传输的信号强度。在一些情况下,ANN节点具有阈值,低于该阈值的信号根本不会被传输。在一些示例中,ANN节点被聚集成层。不同的层对它们的输入执行不同的变换。初始层称为输入层,并且最后一层称为输出层。在一些情况下,信号多次穿越某些层。
在一个方面,机器学习模型215包括节点生成网络220、参数生成网络225和边生成网络230。在一个方面,节点生成网络220、参数生成网络225和边生成网络230中的每一者都包括一个或多个ANN。
根据一些方面,节点生成网络220生成算子类型序列。在一些示例中,节点生成网络220为算子类型序列生成节点深度值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的节点深度值集合而被生成的。在一些示例中,节点生成网络220为算子类型序列生成全局位置值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的全局位置值集合而被生成的。根据一些方面,节点生成网络220基于算子子集来预测下一算子类型。
根据一些方面,节点生成网络220被配置为生成算子类型序列。在一些示例中,节点生成网络220被实现为硬件电路、固件或软件。
在一些方面,节点生成网络220包括第一变换器网络。在一些实施例中,变换器网络(诸如参数生成网络225的第一变换器网络、第二变换器网络以及边生成网络230的指针网络)是序列生成器。与较早的序列发生器(如GRU和LSTM)不同,变换器网络使用允许变换器网络更准确地捕获序列中的长距离关系的注意力机制。在机器学习领域,注意力机制实现了一种对输入的不同元素赋予不同重要性级别的技术。在一些方面,计算注意力机制的注意力分数涉及三个基本步骤。首先,注意力机制计算查询与从输入获得的关键向量之间的相似度,以生成注意力权重。用于该过程的相似度函数可以包括点积、拼接、检测器等。接下来,注意力机制使用softmax函数来归一化注意力权重。最后,注意力机制将注意力权重与其对应的值一起加权,以获得注意力分数。
根据一些方面,变换器网络被实现为序列生成器fθ,序列生成器fθ将序列S上的概率分布建模为各个令牌s上的条件概率的乘积:
p(S|θ):=Πip(si|s<i,θ) (1)
其中s<i:=s1,...,si-1表示直到令牌si-1的部分令牌序列。序列生成器fθ以部分令牌序列为条件来估计令牌si的可能值分配的概率分布:p(si|s<i,θ)=fθ(s<i)。在序列生成器fθ被训练之后,序列生成器fθ对预测分布进行采样以获得令牌si。根据一些方面,然后可以通过重复评估序列生成器fθ来生成完整的令牌序列,从特殊的起始令牌α开始,并且在每个步骤中将部分序列增长一个令牌,直到生成特殊的停止令牌ω或者达到最大序列长度。根据一些方面,序列生成器被应用于多个并行序列,表示为其中的缩写。
根据一些方面,如参考图6所述,节点、节点参数和边各自被生成为离散令牌的序列S=(s1,...,sm),一次一个令牌si。根据一些方面,针对给定令牌的一些值选择可能在语义上无效。例如,描述一条边的端点的令牌不应指代已经被另一条边占用的输入槽。因此,在一些实施例中,为无效选择生成的概率p(si|s<i,θ)被设置为零,并且剩余的概率被重新归一化。在一些示例中,第一变换器网络被实现为硬件电路、固件或软件。
根据一些方面,第一变换器网络被实现为GPT-2模型,GPT-2模型是使用自然语言处理技术来合成任意序列中的下一项的机器学习模型。根据一些方面,第一变换器网络被实现为各种其他合适的变换器模型。
在一些方面,节点生成网络220包括第一位置编码器。位置编码器提供包括附加序列的位置编码,该附加序列被用作后续网络的输入,但是不需要被生成,因为它们可以从其他序列中导出。位置编码是专用的,并且为序列中的每个令牌提供附加的上下文,诸如令牌的序列索引。在一些实施例中,第一位置编码器被实现为硬件电路、固件或软件。
根据一些方面,参数生成网络225为算子类型序列中的每个算子类型生成算子参数序列。在一些方面,算子参数序列中的每个值对应于不同的参数类型。在一些方面,算子参数序列中的一个或多个值对应于相同的参数类型。根据一些方面,参数生成网络225基于算子类型序列预测针对算子类型的算子参数序列。
根据一些方面,参数生成网络225被配置为针对算子类型序列中的每个算子类型生成算子参数序列。在一些方面,参数生成网络225包括第二变换器网络。在一些实施例中,第二变换器网络包括与节点生成网络220的第一变换器网络类似的架构。
根据一些方面,参数生成网络225包括第一序列编码器。在一些实施例中,第一序列编码器是具有与第二变换器网络类似的架构的基于变换器的编码器,但是在每个处理步骤接收整个令牌序列和令牌索引作为输入,并且输出包括与整个序列相对应的信息的令牌嵌入:其中是令牌si的序列感知嵌入(sequence-awareembedding)。
在一些方面,参数生成网络225包括第二位置编码器,第二位置编码器包括与节点生成网络220的第一位置编码器类似的架构。在一些示例中,参数生成网络225、第二变换器网络、第一序列编码器和第二位置编码器被实现为一个或多个硬件电路、固件或软件。根据一些方面,第二变换器网络和第一序列编码器中的每一个都被实现为GPT-2模型或各种其他合适的变换器模型。参数生成网络225是参考图3描述的相应元件的示例,或者包括其方面。
根据一些方面,边生成网络230基于算子类型序列生成有向边序列。在一些示例中,边生成网络230标识与算子类型序列的输入槽和输出槽相对应的槽集合。在一些示例中,边生成网络230为槽集合中的每个槽计算槽嵌入(slot embedding)。在一些示例中,边生成网络230基于槽嵌入生成槽索引序列,其中每对连续索引对应于有向边序列中的有向边。根据一些方面,边生成网络230基于算子子集预测一条或多条有向边。
根据一些方面,边生成网络230被配置为基于算子类型序列生成有向边序列。在一些方面,边生成网络230包括指针网络。在一些方面,指针网络是包括与节点生成网络220的第一变换器网络类似的架构的基于变换器的网络,但是在每个处理步骤中输出特征向量而不是概率分布。
在一些方面,边生成网络230包括第二序列编码器。在一些实施例中,第二序列编码器包括与参数生成网络225的第一序列编码器类似的架构。在一些方面,边生成网络230包括第三位置编码器。在一些实施例中,第三位置编码器包括与节点生成网络220的第一位置编码器类似的架构。
在一些示例中,边生成网络230、指针网络、第二序列编码器和第三位置编码器被实现为一个或多个硬件电路、固件或软件。根据一些方面,指针网络和第二序列编码器中的每一者都被实现为GPT-2模型或各种其他合适的变换器模型。边生成网络230是参考图4描述的相应元件的示例,或者包括其各方面。
根据一些方面,图形组件235对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的一个或多个输入连接和输出连接。在一些示例中,一些节点具有多个输入连接、多个输出连接或两者。
在一些示例中,图形组件235标识输入图形。在一些示例中,图形组件235将输入图形与有向图形组合以获得程序性媒体生成器。在一些示例中,图形组件235选择有向图形的节点的子集。在一些示例中,图形组件235基于节点的子集生成附加节点。在一些示例中,图形组件235基于节点的子集生成包括节点子集和附加节点的后续程序性媒体生成器。在一些示例中,图形组件235生成材质图形集合。
根据一些方面,图形组件235被配置为对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的输入连接或输出连接。在一些示例中,图形组件235被实现为硬件电路、固件或软件。
根据一些方面,资产生成器240使用程序性媒体生成器生成媒体资产。在一些示例中,资产生成器240基于后续程序性媒体生成器生成后续媒体资产。在一些示例中,资产生成器240使用程序性媒体生成器生成纹理图像,其中有向图形包括材质图形,并且媒体资产包括包含纹理图像的图像。在一些示例中,资产生成器240基于材质图形集合生成纹理图像集合,其中媒体资产包括纹理图像集合。在一些示例中,资产生成器240使用程序性媒体生成器生成几何模型,其中媒体资产包括基于几何模型来描绘形状的图像。
根据一些方面,资产生成器240被配置为使用程序性媒体生成器生成媒体资产。在一些示例中,资产生成器240被实现为硬件电路、固件或软件。在一些方面,资产生成器240包括图像渲染软件应用。
根据一些方面,训练组件245标识包括基准真值程序性媒体生成器的训练数据。在一些示例中,训练组件245从基准真值程序性媒体生成器标识算子子集。在一些示例中,训练组件245基于预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型来计算算子类型损失。在一些示例中,训练组件245基于算子类型损失更新节点生成网络220的参数。
在一些示例中,训练组件245标识基准真值程序性媒体生成器的拓扑节点排序。在一些示例中,训练组件245基于拓扑节点排序来比较预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型,其中算子类型损失是基于该比较的。在一些方面,拓扑节点排序包括对基准真值程序性媒体生成器的从后到前的广度优先遍历。
在一些示例中,训练组件245基于预测的算子参数序列和来自基准真值程序性媒体生成器的算子参数序列来计算参数损失。在一些示例中,训练组件245基于参数损失更新参数生成网络225的参数。
在一些示例中,训练组件245基于预测的有向边和来自基准真值程序性媒体生成器的有向边序列来计算有向边损失。在一些示例中,训练组件245基于有向边损失更新边生成网络230的参数。
根据一些方面,训练组件245被配置为更新节点生成网络220、参数生成网络225和边生成网络230中的每一者的参数。在一些示例中,训练组件245被实现为硬件电路、固件或软件。根据一些方面,训练组件245从程序性媒体生成装置200中省略,并且被包括在被配置为经由训练组件245训练程序性媒体生成装置的外部设备中。在这种情况下,训练组件245经由参考图1描述的云和/或其他合适的通信网络、技术和协议与程序性媒体生成装置200传送信息。
图3示出了根据本公开各方面的参数生成网络300的示例。参数生成网络300是参考图2描述的相应元件的示例,或者包括其各方面。
参考图3,参数生成网络300以参考图2描述的节点生成网络所提供的序列为条件,以生成用于程序性媒体生成器的展平的(flattened)算子参数序列的集合。
根据一些方面,参数生成网络300包括参考图2描述的第一序列编码器gp和第二变换器网络fp。在一些情况下,第一序列编码器gp基于第一序列305(包括由参考图2描述的节点生成网络生成的序列Sn和序列Snd)执行节点嵌入,以获得序列感知嵌入在一些情况下,第二变换器网络fp将节点向量参数310展平成序列集合315,其中具有非默认值的参数被添加到序列集合315中的序列。在一些实施例中,一次一个令牌地生成序列集合310的序列。在一些情况下,第二变换器网络fp以由第一序列编码器gp计算的序列感知嵌入为条件。在一些情况下,参数生成网络通过将第二序列Spk=(0,k1,k2,...,0)的索引k定义到完全的节点参数列表中来标识给定值vi指代哪个节点参数,使得值vi对应于索引为ki的节点参数。参考图6进一步详细描述参数生成网络300的操作。
图4示出了根据本公开各方面的边生成网络400的示例。边生成网络400是参考图2描述的相应元件的示例,或者包括其各方面。
参考图4,边生成网络400包括基于变换器的模型,以基于在程序性媒体生成器中使用的算子类型序列来生成有向边序列。
根据一些方面,边生成网络400包括参考图2描述的第三序列编码器ge和指针网络fe。在一些情况下,第三序列编码器ge基于序列集合410来计算槽嵌入405,槽嵌入405唯一地标识每个槽并引用输入/输出槽415。在一些情况下,指针网络fe基于包括引用输入/输出槽415的序列的索引元组的序列420来计算槽索引li。在一些情况下,边生成网络400通过计算每个槽嵌入315与特征向量之间的点积来计算特征向量与槽嵌入315之间的匹配度(affinity)。在一些情况下,边生成网络随机地对基于点积而计算的分布进行采样,以获得槽索引li。参考图6更详细地描述边生成网络400的操作。
程序性媒体生成
参考图5-图12描述了用于程序性媒体生成的方法。该方法的一个或多个方面包括:使用节点生成网络生成算子类型序列;使用参数生成网络为算子类型序列中的每个算子类型生成算子参数序列;使用边生成网络基于算子类型序列生成有向边序列;对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的输入连接或输出连接;以及使用程序性媒体生成器生成媒体资产。
该方法的一些示例还包括为算子类型序列生成节点深度值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的节点深度值集合而生成的。该方法的一些示例还包括为算子类型序列生成全局位置值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的全局位置值集合而生成的。在一些方面,算子参数序列中的每个值对应于不同的参数类型。在一些方面,算子参数序列中的一个或多个值对应于相同的参数类型。
该方法的一些示例还包括标识与算子类型序列的输入槽和输出槽相对应的多个槽。一些示例还包括为多个槽中的每个槽计算槽嵌入。一些示例还包括基于槽嵌入生成槽索引序列,其中每对连续索引对应于有向边序列中的有向边。
该方法的一些示例还包括标识输入图形。一些示例还包括将输入图形与有向图形组合以获得程序性媒体生成器。该方法的一些示例还包括选择有向图形的节点的子集。一些示例还包括基于节点的子集生成附加节点。一些示例还包括基于节点的子集生成包括节点的子集和附加节点的后续程序性媒体生成器。一些示例还包括基于后续程序性媒体生成器生成后续媒体资产。
该方法的一些示例还包括使用程序性媒体生成器生成纹理图像,其中有向图形包括材质图形,并且媒体资产包括包含纹理图像的图像。该方法的一些示例还包括生成多个材质图形。一些示例还包括基于多个材质图形生成多个纹理图像,其中媒体资产包括多个纹理图像。该方法的一些示例还包括使用程序性媒体生成器生成几何模型,其中媒体资产包括描绘基于几何模型的形状的图像。
图5示出了根据本公开各方面的程序性媒体生成的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
参考图5,系统在受指导的媒体资产创作过程中自动完成用户提供的输入图形,并且基于完成的图形向用户提供媒体资产,从而帮助新手用户完成项目,或者允许更高级的用户探索各种各样的媒体资产。在一个示例中,输入图形是材质图形、材质(纹理图像)的程序表示。材质图形在艺术家当中很受欢迎,但是可能很难设计。例如,材质图形可以不包括规则结构,而是可以包括连接成操作长链的任意数量的异构节点,该异构节点包括不同类型的参数和具有不同功能规范的不同数量的边槽,该操作长链在通常对基于材质图形生成的材质外观至关重要的节点之间包括长距离连接。
因此,对于没有材质图形编程经验的用户来说,拥有部分材质图形可能是常见的,并且用户将受益于可以用最少的用户输入完成材质图形的系统。因此,系统在受指导的媒体资产创作过程中自动完成输入图形,并且基于完成的图形生成媒体资产并将其提供给用户,从而帮助在创作有向图形方面没有丰富经验的新手用户完成项目,或者允许更高级的用户探索各种各样的媒体资产,而无需对多个有向图形进行手动编程。
在操作505,系统接收输入图形。在一些情况下,该步骤的操作涉及参考图1和图2描述的程序性媒体生成装置,或者可以由其执行。在一个示例中,输入图形是参考图6描述的有向图形。在一些情况下,程序性媒体生成装置经由程序性媒体生成装置的显示器或用户设备的显示器提供图形用户界面,该图形用户界面使用户能够与程序性媒体生成装置的功能进行交互并且将包括输入图形的文件上传或以其他方式传送到程序性媒体生成装置。在这种情况下,输入图形是与包括纹理图像的媒体资产相对应的材质图形。
在操作510,系统基于输入图形生成参数化节点(例如,包括算子类型和与该算子类型相对应的算子参数的节点)和有向边。在一些情况下,该步骤的操作涉及参考图1和图2描述的程序性媒体生成装置,或者可以由其执行。例如,程序性媒体生成装置使用输入图形中包括的值作为参考图6描述的初始序列值,生成参考图6描述的参数化节点和有向边。
在操作515,系统通过对参数化节点和有向边进行组合来获得程序性媒体生成器。在一些情况下,该步骤的操作涉及参考图1和图2描述的程序性媒体生成装置,或者可以由其执行。例如,如参考图6所述,程序性媒体生成装置对参数化节点和有向边进行组合,以获得程序性媒体生成器,其中程序性媒体生成器包括包含由有向边连接的参数化节点的有向图形。在这种情况下,有向图形是提供材质(例如,纹理图像)的特性或属性(诸如粗糙度、风化、反照率、颜色、图案等)的材质图形。
在操作520,系统使用程序性媒体生成器生成媒体资产。在一些情况下,该步骤的操作涉及参考图1和图2描述的程序性媒体生成装置,或者可以由其执行。例如,程序性媒体生成装置生成描绘由程序性媒体生成器中包括的有向图形提供的特性的媒体资产。在这种情况下,媒体资产是包括由生成的材质图形提供的属性的纹理图像。
在操作525,系统向用户提供媒体资产。在一些情况下,该步骤的操作涉及参考图1和图2描述的程序性媒体生成装置,或者可以由其执行。例如,程序性媒体生成装置在图形用户界面中向用户显示媒体资产,并且向用户提供用于将媒体资产保存为本地下载或云存储的选项。
图6示出了根据本公开各方面的生成媒体资产的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
参考图6,系统生成表示程序性媒体生成器的节点图形的多个令牌序列,对多个令牌序列进行组合以获得程序性媒体生成器,并且使用程序性媒体生成器生成媒体资产。
在一些情况下,节点图形是艺术家表示用于表征媒体资产(诸如纹理图像)的信息的优选技术。在一个示例中,艺术家可以向渲染应用提供节点图形,并且渲染应用可以基于节点图形中包括的信息来输出媒体资产。然而,包括足够信息量来表征优质媒体资产的节点图形的编程和设计可能是困难且耗时的。因此,根据一些方面,系统从零开始生成任意数量的不同的高质量节点图形,使用户能够用几乎无限数量的媒体资产进行实验,并且还能够对依赖于节点图形的训练任务进行数据集扩充。此外,根据一些方面,系统向用户提供受指导的媒体资产创作过程,其中系统自动完成用户向系统提供的输入图形,从而允许用户以最少的用户输入完成项目。
根据一些方面,程序性媒体生成器包括节点图形g。如本文所使用的,节点图形是包括节点和有向边的有向图形,并且是在给定每个节点的参数的情况下生成输出的参数模型。节点是定义命名输入槽、命名输出槽和异构参数集合的操作实例。从输出槽到输入槽的有向边描述了节点图形中的信息流,使得给定节点的输出被另一节点用作输入。节点图形是函数式程序的表示,其中具有多个输入和输出变元的函数由节点表示。输出变元对应于节点的输出槽,而输入变元被分成参数(其可以是常数)和输入槽,输入槽可以是作为其他在前函数的输出的变元。在一些实施例中,从节点图形中省略了环路。
在一些实施例中,节点图形g=(N,E)是包括节点N={n1,n2,...}和边E={e1,e2,...}的集合的媒体资产算子的有向非循环多重图形。给定节点参数集合,程序性媒体生成器输出数值地描述媒体资产的一个或多个特性的媒体资产通道集合。媒体资产的示例是纹理图像。示例媒体资产通道包括针对纹理图像的材质通道,诸如反照率和粗糙度。
在一些实施例中,节点n=(τ,P)是图像算子的实例,并且由算子类型τ和算子参数集合P来定义。在一些实施例中,算子类型τ是索引整数图像算子库O=(o1,o2,...),每个图像算子接受参数集合和图像集合并输出图像集合。在一些实施例中,第k个算子因此是将输入图像映射到输出图像的函数:
其中每个I是灰度或RGB图像,并且Pj是可以是标量、向量或可变长度向量数组的参数。在一些实施例中,多个输入图像、多个输出图像以及多个参数和参数类型因此由节点(算子)提供。
根据一些方面,类型τi的节点ni具有输入槽和输出槽其中程序性媒体生成器的边可以附接到输入槽和输出槽,以分别提供输入媒体资产和接收输出媒体资产。不定义输入媒体资产的节点被称为生成器节点。
根据一些方面,有向边数值地描述节点图形中从输出槽到输入槽的信息流。例如,节点ni的输出图像可以用作节点nj的输入在一些实施例中,输入槽仅接受单个输入图像,因此每个输入槽对应于一个或零个传入边。在一些实施例中,输出槽对应于任意数量的传出边。
在操作605,系统使用节点生成网络生成算子类型序列。在一些情况下,该步骤的操作涉及参考图2描述的节点生成网络,或者可以由其执行。
在一个示例中,节点生成网络使用基于变换器的模型fn(例如,参考图2描述的第一变换器网络)在图形中生成所有节点n=(τ,P)的算子类型τ作为序列Sn=(α,τ1,τ2,...,ω),其中α和ω是序列开始令牌和序列停止令牌。
根据一些方面,节点生成网络为算子类型序列生成节点深度值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的节点深度值集合而生成的。在一些实施例中,节点生成网络使用在数据样本之间提供更多一致性的规范排序来生成节点深度值序列。然而,规范序列可能相对不灵活,因为它可能限制训练机器学习模型所基于的部分序列S<i的多样性。
在一些实施例中,节点生成网络使用替代排序为算子类型序列生成节点深度值序列。在一些实施例中,替代排序是从后到前的广度优先遍历排序:从输出节点开始,沿与边方向相反的方向从子节点移动到父节点,并且按照节点的输入槽的次序遍历父节点。在一些实施例中,在无条件生成过程中使用从后到前的广度优先遍历排序,其中从零开始生成程序性媒体生成器的信息。在一些实施例中,替代排序是反向的从后到前的广度优先遍历排序,其中序列根据从后到前的广度优先遍历的最后一个节点到第一个节点而被排序。在一些实施例中,在受指导的媒体资产创作过程期间使用反向的从后到前的广度优先遍历排序,其中用户提供部分输入图形以供程序性媒体生成装置完成。
在一些实施例中,替代排序是从前到后的广度优先遍历排序,其中按照父节点的输出槽的次序来访问父节点的子节点,并且将连接到同一输出槽的子节点的次序随机化。在一些实施例中,替代方案是随机拓扑排序。
根据一些方面,节点生成网络为算子类型序列生成全局位置值序列,其中算子类型序列中的每个算子类型是基于先前的算子类型集合和先前的全局位置值集合而生成的。在一个示例中,节点生成网络的第一位置编码器生成提供令牌在序列Sn中的全局位置的序列Sni=(1,2,3,...),并且生成描述有向图形中的每个节点的深度的序列Snd=(0,d1,d2,...,0),其中di是从节点ni到在从后到前的广度优先遍历排序中的最近输出节点的图形距离,或者对于所有其他排序来说到最近生成器节点的距离。在一些实施例中,由于节点的深度不是单独从序列Sn中获得的,因此节点生成网络在生成期间将深度估计为附加输出序列。在一些实施例中,第一变换器网络fn使用Sn、Sni和Snd作为部分输入序列,并且输出下一算子类型和深度的概率:
在操作610,系统使用参数生成网络为算子类型序列中的每个算子类型生成算子参数序列。在一些情况下,该步骤的操作涉及参考图2和图3描述的参数生成网络,或者可以由其执行。
在一个示例中,参数生成网络使用基于变换器的模型fp(例如,参考图2描述的第二变换器网络)生成节点n=(τ,P)的参数P作为标量值v的序列Sp=(α,v1,v2,...,ω),其中α和ω是序列开始令牌和序列停止令牌。根据一些方面,算子参数是异构的,并且是标量、向量或可变长度向量数组。在一些实施例中,参数生成网络将与节点相对应的所有算子参数展平成单个标量序列。在一些实施例中,参数生成网络为图形中的每个节点生成一个参数序列。在一些实施例中,算子参数序列中的每个值对应于不同的参数类型。在一些实施例中,算子参数序列中的一个或多个值对应于相同的参数类型。在一些实施例中,参数生成网络按照名称的字母顺序对参数进行排序。在一些实施例中,参数生成网络均匀地量化最小观测值与最大观测值之间的连续算子参数,使得量化值对应于离散令牌值。根据一些实施例,参数生成网络使用32个量化级别。
根据一些方面,算子参数序列中的每个值对应于不同的参数类型。在一个示例中,参数值Pi对应于节点ni的算子类型τi,并且在较小程度上对应于序列Sn中的其他节点。在一些实施例中,参数生成网络以算子类型τj的序列感知嵌入为条件生成每个序列SP,其还包括关于场景中的其他节点的信息。
在一些实施例中,为了使第二变换器网络fp以特征向量为条件(诸如序列感知嵌入),第二变换器网络fp包括添加到每个前馈块的三层。在一些实施例中,原始前馈块执行以下操作:
FFBlock(x):=x+MLP(LN(x)) (4)
其中x是输入特征向量,MLP是多层感知器,并且LN是层归一化。在一些实施例中,原始前馈块被修改以接收作为附加特征向量c的条件:
CFFBlock(x,c):=FFBlock(x)+MLP(LN(c)) (5)
在一些实施例中,基于变换器的编码器(例如,参考图2描述的第一序列编码器)与第二变换器网络fp联合训练,并且计算序列感知嵌入
根据一些方面,参数生成网络的第二位置编码器生成位置编码。在一些实施例中,位置编码包括全局令牌位置序列Spi和分别描述向量元素的索引、数组元素的索引和与令牌相关联的参数的索引的序列Spv、Spa、Spp。参数生成网络生成参数值和指数上的概率:
根据一些方面,参数生成网络被训练成仅生成不处于其默认值的节点参数。在这些情况下,参数生成组件将未编辑的算子参数保留为默认值,通过仅在序列SP中包括已编辑的算子参数来缩短序列SP,并且将索引k的第二序列Spk=(0,k1,k2,...,0)生成到完全的节点参数列表中,使得值vi对应于索引为ki的节点参数。
根据一些方面,为了执行算子参数生成的语义有效性检查,离散参数的值被约束在其有效范围内,并且序列SpK中的参数索引被约束为不超过相应算子oτ中的参数数量。
在操作615,系统使用边生成网络基于算子类型序列生成有向边序列。在一些情况下,该步骤的操作涉及参考图2和图4描述的边生成网络,或者可以由其执行。在一个示例中,边生成网络使用基于变换器的模型fe(例如,参考图2描述的指针网络)将图形中的所有边e=(out,in)生成为槽索引序列Se=(α,l1,l2,l3,l4,...,ω),其中每对连续索引形成一条边。
根据一些方面,边生成网络标识与算子类型序列的输入槽和输出槽相对应的槽集合。在一个示例中,边生成网络标识图形中所有输入槽和输出槽的序列,并且将边标识为序列中的一对输入索引和输出索引。
根据一些方面,边生成网络为槽集合中的每个槽计算槽嵌入。在比较性示例中,边生成的直接方法是直接使用标准变换器生成器生成槽索引序列。然而,这可能不会给予变换器生成器任何关于图形中的槽的信息,并且变换器生成器很难推断槽连通性。
相反,根据一些方面,基于变换器的模型fe在学习到的槽嵌入的空间中运行。在一些实施例中,使用边生成网络的基于变换器的编码器ge(例如,参考图2描述的第三序列编码器),边生成网络根据一起唯一地描述节点图形中每个槽的多个输入序列来计算每个槽的嵌入其中算子类型序列节点索引序列和节点深度序列提供对应于与每个槽相关联的节点的信息,序列提供节点内部的槽的索引,并且全局令牌位置序列提供附加位置编码。边生成网络然后计算槽嵌入
根据一些方面,边生成网络基于槽嵌入生成槽索引序列,其中每对连续索引对应于有向边序列中的有向边。例如,在一些实施例中,边生成网络包括在每个处理步骤中输出特征向量而不是概率分布的指针网络fe,其中特征向量是对槽嵌入的列表的查询。边生成网络将查询与嵌入之间的匹配度计算为点积,并且将点积归一化为概率分布:
其中“·”表示点积,并且Softmaxj表示所有索引j上的softmax。边生成网络对槽上的这种分布进行采样,以获得槽索引li。在一些情况下,在先前处理步骤中选择的部分槽嵌入序列用作fe的输入,从而提供关于现有边的边生成网络信息。例如,在一些情况下,fe一次一个槽地生成槽对(slot pair)(例如,有向边)。在这些情况下,是先前生成的槽对的序列,或者更准确地,是与先前生成的槽对相对应的嵌入序列。例如,当在序列中的位置i处生成槽索引li时,中位置1、......、i-1处的槽用作fe的输入。与序列的不同之处在于,列出了形成有向边的槽对的嵌入对,而列出了所有槽的嵌入,其中每个槽恰好出现一次。
根据一些方面,边生成网络包括第三位置编码器。第三位置编码器生成针对边序列的位置编码,其中位置编码包括全局令牌位置序列Sei和边内部的令牌的元组索引Set=(0,1,2,1,2,...,0)。然后,边生成网络将槽索引上的概率生成为:
根据一些方面,为了执行边生成的语义有效性检查,边被约束以使得边总是从输出槽前进到输入槽,使得边元组的第一元素必须指代输出槽,并且边元组的第二元素必须指代输入槽。此外,在一些实施例中,通过将边的端点约束到并非边的起点处的节点的祖先的节点,减轻了有向图形中可能形成的循环。
在操作620,系统对算子类型序列、算子参数序列和有向边序列进行组合以获得程序性媒体生成器,其中程序性媒体生成器包括有向图形,并且其中有向图形的每个节点包括算子,该算子包括来自算子类型序列的算子类型、对应的算子参数序列、以及来自有向边序列的将该节点连接到有向图形的另一节点的一个或多个输入连接和输出连接。在一些情况下,该步骤的操作涉及参考图2描述的图形组件,或者可以由其执行。
根据一些方面,图形组件从节点生成网络接收算子类型序列Sn,从参数生成网络接收算子参数序列Sp,从边生成网络接收有向边序列Se,并且通过按照索引次序相互评估每个序列并将序列中包括的数字信息转换成视觉信息来组合这些序列,以获得包括有向图形的程序性媒体生成器。在一些实施例中,程序性媒体生成器的有向图形是节点和有向边的视觉表示,其中节点是描绘对应于与节点相关联的算子类型和算子参数的特性的图像,并且有向边被描绘为根据有向边序列Se连接有向图形中的节点的输入槽和输出槽的线条。参考图8描述了程序性媒体生成器的示例。
根据一些方面,图形组件评估以任何拓扑次序定义节点图形中的节点之间的偏序(partial ordering)的节点图形(例如,有向图形)。包括循环的节点图形将会在评估期间导致无限环路,并且在程序性媒体生成器中限制循环的形成。此外,在一些实施例中,并非节点的所有输入槽都连接到有向边。如果没有边连接到节点,则图形组件使用对应的算子输入(诸如与所有零值相对应的图像)的默认值。在一些实施例中,通过将一个或多个特殊输出节点连接到节点的对应的输出槽来标记作为最终媒体资产通道的节点。特殊输出节点不执行操作,而是注释有向图形。
根据一些方面,图形组件根据展平的算子参数向量(例如,算子参数序列Sp)来重构算子参数。在一个示例中,给定算子类型τk和对应的展平的算子参数序列Spk,图形组件能够重构算子参数,因为参数的类型和向量维数完全由节点类型和节点的参数索引来定义。在一个示例中,图形组件通过将为参数生成的多个值除以该参数的向量维数而从展平的算子参数向量中重构可变长度向量数组。如果数字不能被整除,则图形组件将丢弃最后的值,以使数字可除。
根据一些方面,图形组件标识输入图形并且将输入图形与有向图形进行组合以获得程序性媒体生成器。例如,在一些实施例中,用户向程序性媒体生成装置输入有向图形。参考图2描述的机器学习模型通过使用输入图形中现有节点和边的集合作为部分输入序列s<i而以输入图形为条件。在一些实施例中,机器学习模型向图形组件提供输入图形的一个或多个不同完成,并且图形组件输出输入图形和输入图形的完成的组合作为程序性媒体生成器。根据一些方面,输入图形由图形组件基于用户选择的噪声生成器集合来生成。
完成输入图形的能力向本公开的一些实施例的用户提供了与文本编辑器中的自动完成功能类似的功能,并且向用户提供了使用机器学习来提炼部分完成的有向图形的能力。在一些实施例中,程序性媒体生成装置在图形用户界面中显示基于输入图形生成的一个或多个完成的程序性媒体生成器。在这些情况下,用户可以选择优选的程序性媒体生成器,或者可以选择程序性媒体生成器中包括的节点子集。如果用户选择节点子集,则程序性媒体生成装置可以使用所选节点作为输入图形,并且基于输入图形生成后续程序性媒体生成器。用户可以重复选择后续程序性媒体生成器的节点来充当后续输入图形,从而指示程序性媒体生成装置获得包括用户优选特性的程序性媒体生成器。参考图11提供了这种受指导的创作过程的示例。
在操作625,系统使用程序性媒体生成器生成媒体资产。在一些情况下,该步骤的操作涉及参考图2描述的资产生成器,或者可以由其执行。根据一些方面,资产生成器接收程序性媒体生成器作为输入,并且使用程序性媒体生成器渲染媒体资产,使得媒体资产是由程序性媒体生成器中包括的有向图形的输出节点所确定的最终特性的视觉描绘。在一些实施例中,资产生成器提供显示程序性媒体生成器和/或媒体资产的图形用户界面(例如,经由程序性媒体生成装置或用户设备中包括的显示器)。参考图8描述了媒体资产的示例。参考图9描述了图形用户界面的示例。
图7示出了根据本公开各方面的生成多个纹理图像的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
参考图7,在一些方面,参考图2描述的资产生成器包括图像渲染应用。在这些情况下,图像渲染应用通过使用程序性媒体生成器渲染图像来生成包括图像的媒体资产。
在操作705,系统使用程序性媒体生成器生成纹理图像,其中有向图形包括材质图形,并且媒体资产包括纹理图像。在一些情况下,该步骤的操作涉及参考图2描述的资产生成器,或者可以由其执行。例如,材质图形是描述“材质”或视觉特性(诸如颜色、反照率、粗糙度、图案等)的有向图形,图像渲染应用可以将该视觉特性应用于渲染的纹理图像的至少一部分。
在操作710,系统生成材质图形集合。在一些情况下,该步骤的操作涉及参考图2描述的图形组件,或者可以由其执行。例如,在一些实施例中,与图形用户界面的用户交互促使参考图2描述的机器学习模型为用户选择的多个程序性媒体生成器生成值,每个程序性媒体生成器包括材质图形,并且图形组件根据对应的生成值来生成程序性媒体生成器。在一些情况下,如参考图9所述,用户修改程序性媒体生成器的算子参数值,并且图形组件输出与经修改的算子参数值相对应的经修改的程序性媒体生成器。
在操作715,系统基于材质图形集合生成纹理图像集合,其中媒体资产包括纹理图像集合。在一些情况下,该步骤的操作涉及参考图2描述的资产生成器,或者可以由其执行。根据一些方面,一个材质图形对应于一个纹理图像,并且媒体资产是指包括纹理图像集合的资产。在这些情况下,可以使用资产生成器将纹理图像映射到媒体资产中包括的模型,使得媒体资产包括纹理图像。参考图8描述了包括纹理图像集合的媒体资产的示例。
图8示出了根据本公开各方面的媒体资产的示例。所示的示例包括程序性媒体生成器800、第一媒体资产805、多个纹理图像810和第二媒体资产815。
参考图8,程序性媒体生成器800包括作为对节点和描述节点之间关系的有向边的描绘的有向图形。程序性媒体生成器800的每个节点是描绘由节点的算子类型和算子参数所确定的特性的图像,并且每条有向边被描绘为连接两个或更多个节点的线条。参考图2描述的资产生成器接收程序性媒体生成器800,并且基于由程序性媒体生成器800中的输出节点描述的最终特性来输出第一资产805。在这种情况下,第一媒体资产805是包括在多个纹理图像810中的纹理图像。多个纹理图像810中的每个纹理图像对应于多个程序性媒体生成器中的不同程序性媒体生成器。第二媒体资产815包括多个纹理图像810。在这种情况下,由多个程序性媒体生成器数值地描述并由多个纹理图像810描绘的各种特性被应用于第二媒体资产815中包括的模型。
图9示出了根据本公开各方面的修改算子参数的示例。所示的示例包括算子类型UI元素905、算子参数UI元素910、算子参数滑块915和边UI元素920。
参考图9,在一些实施例中,参考图2描述的资产生成器提供图形用户界面,该图形用户界面显示与资产生成器已经被接收作为输入的程序性媒体生成器相关联的用户界面(user interface,UI)元素。例如,图形用户界面显示算子类型UI元素905、算子参数UI元素910、算子参数滑块915和边UI元素920。在一些实施例中,当文本描述可用时,在图形用户界面中显示的每个UI元素包括对应的值的文本描述(诸如“剑桥图案”、“输出高度”、“较大木质纤维量”等)。在这种情况下,算子类型UI元素905包括程序性媒体生成器的一些节点中包括的算子类型的视觉描绘,算子参数UI元素910包括所选节点和与所选节点的算子参数相对应的算子参数滑块915的视觉描绘,并且边UI元素920包括程序性媒体生成器的一些节点(包括输入槽和输出槽)和有向边的视觉描绘。
算子参数滑块915允许用户修改程序性媒体生成器的算子参数。因为程序性媒体生成器中的每个节点包括一个或多个算子参数(例如,描述节点特性的数值),所以程序性媒体生成器是参数化的,并且用户可方便地编辑。例如,用户可以从图形用户界面中显示的有向图形中选择节点进行编辑,然后使用算子参数滑块915调整节点的算子参数。
当算子参数滑块915被调整时,资产生成器调整程序性媒体生成器以获得更新后的程序性媒体生成器。在资产生成器调整对应的值之后,资产生成器使用更新后的程序性媒体生成器来生成描绘调整后的值的媒体资产。
图10示出了根据本公开各方面的经修改的媒体资产的示例。所示的示例包括第一原始媒体资产1005、第一经修改媒体资产1015、第二经修改媒体资产1025、第二原始媒体资产1010、第三经修改媒体资产1020和第四经修改媒体资产1030。
参考图10,第一原始媒体资产1005是由参考图2描述的资产生成器使用参考图6描述获得的程序性媒体生成器来生成的媒体资产。在这种情况下,第一原始媒体资产1005包括纹理图像。第一经修改媒体资产1015和第二经修改媒体资产1025是由资产生成器响应于参考图9描述的用户对程序性媒体生成器的算子参数的修改而生成的媒体资产的示例。第二原始媒体资产1010是使用第二程序性媒体生成器生成的媒体资产的示例,并且第三经修改媒体资产1020和第四经修改媒体资产1030是响应于第二程序性媒体生成器的算子参数的用户调整而生成的媒体资产的示例。
如图10所示,用户对与第一原始媒体资产1005和第二原始媒体资产1010相关联的算子参数的修改向第一至第四经修改媒体资产1015、1020、1025和1030中描绘的材质添加了各种变化,诸如风化效果、颜色变化或包括不同图块(brick)尺寸的结构变化。因为程序性媒体生成器是参数化的(例如,包括算子参数),所以用户可以通过修改算子参数来快速生成多个程序性媒体生成器和多个对应的媒体资产。
图11示出了根据本公开各方面的受指导的媒体资产创作的示例。所示的示例包括输入图形1100、第一纹理图像1105、第一程序性媒体生成器1110、第二纹理图像1115、第二程序性媒体生成器1120和第三纹理图像1125。
参考图11,输入图形1100是由用户提供给程序性媒体生成装置的有向图形。第一纹理图像1105是由资产生成器响应于接收到输入图形1100而生成的媒体资产。在该示例中,除了生成第一纹理图像1105之外,程序性媒体生成装置还基于输入图形1100获得三个程序性媒体生成器(包括第一程序性媒体生成器1110),并且基于程序性媒体生成器生成一个或多个媒体资产(包括第二纹理图像1115),如参考图6所述。在这种情况下,第一程序性媒体生成器1110中的中等灰色节点是从输入图形1100继承的节点。
在该示例中,用户选择第一程序性媒体生成器1110的节点子集(由浅灰色指示)以保留在后续程序性媒体生成器中。响应于该选择,程序性媒体生成装置获得包括用户保留的节点和剩余节点的重新生成版本的三个后续程序性媒体生成器(包括第二程序性媒体生成器1120)。与后续程序性媒体生成器相对应的纹理图像(包括第三纹理图像1125)之间的外观差异程度由重新生成的节点数量来确定。
通过执行输入图形的自动完成,由本公开的一些实施例提供的受指导的媒体资产创作方法可以帮助新手用户完成项目,并且允许更高级的用户探索各种各样的媒体资产空间。
图12示出了根据本公开各方面的生成后续媒体资产的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
在操作1205,系统选择有向图形的节点的子集。在一些情况下,该步骤的操作涉及参考图2描述的图形组件,或者可以由其执行。在一个示例中,有向图形被显示在图形用户界面中,并且图形组件响应于对图形用户界面的用户输入来选择有向图形中的节点的子集。
在操作1210,系统基于节点的子集生成附加节点。在一些情况下,该步骤的操作涉及参考图2描述的机器学习模型,或者可以由其执行。例如,机器学习模型使用参考图6描述的算子类型生成和算子参数生成的过程来生成附加节点。在一些实施例中,附加节点的算子参数是节点的子集中包括的算子参数的变型。在一些实施例中,机器学习模型生成附加有向边,其中使用参考图6描述的生成有向边的过程来生成附加有向边。
在操作1215,系统基于节点的子集生成包括节点的子集和附加节点的后续程序性媒体生成器。在一些情况下,该步骤的操作涉及参考图2描述的图形组件,或者可以由其执行。例如,图形组件对节点的子集、附加节点和连接附加节点的附加有向边进行组合以获得后续程序性媒体生成器。
在操作1220,系统基于后续程序性媒体生成器生成后续媒体资产。在一些情况下,该步骤的操作涉及参考图2描述的资产生成器,或者可以由其执行。例如,如参考图6所述,资产生成器基于后续媒体生成器的输出节点来输出媒体资产。
训练
参考图13-图15描述了用于程序性媒体生成的方法。该方法的一个或多个方面包括:标识包括基准真值程序性媒体生成器的训练数据;从基准真值程序性媒体生成器中标识算子子集;基于算子子集使用节点生成网络预测下一算子类型;基于预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型来计算算子类型损失;以及基于算子类型损失更新节点生成网络的参数。
该方法的一些示例还包括标识基准真值程序性媒体生成器的拓扑节点排序。一些示例还包括基于拓扑节点排序来比较预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型,其中算子类型损失基于该比较。在一些方面,拓扑节点排序包括对基准真值程序性媒体生成器的从后到前的广度优先遍历。
该方法的一些示例还包括使用参数生成网络基于算子子集预测算子类型的算子参数序列。一些示例还包括基于预测的算子参数序列和来自基准真值程序性媒体生成器的算子参数序列来计算参数损失。一些示例还包括基于参数损失更新参数生成网络的参数。
该方法的一些示例还包括使用边生成网络基于算子子集预测一条或多条有向边。一些示例还包括基于预测的有向边和来自基准真值程序性媒体生成器的有向边序列来计算有向边损失。一些示例还包括基于有向边损失更新边生成网络的参数。
图13示出了根据本公开各方面的训练机器学习模型的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
参考图13,训练组件基于节点生成网络对令牌序列中下一值的预测与基准真值程序性媒体生成器中包括的实际值的比较来更新节点生成网络的参数。
在操作1305,系统标识包括基准真值程序性媒体生成器的训练数据。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。在一个示例中,训练组件从数据库(诸如参考图1描述的数据库)中检索训练数据。在一些情况下,用户向训练组件提供训练数据。根据一些方面,基准真值程序性媒体生成器包括算子类型集合、与算子类型相对应的算子参数集合、以及与算子类型和算子参数相对应的有向边集合。
在操作1310,系统从基准真值程序性媒体生成器中标识算子子集。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。在一个示例中,算子(例如,节点)包括算子类型和与该算子类型相对应的算子参数集合。在一些实施例中,训练组件对基准真值程序性媒体生成器的算子子集进行采样,以提供给节点生成网络。
在操作1315,系统基于算子子集使用节点生成网络预测下一算子类型。在一些情况下,该步骤的操作涉及参考图2描述的节点生成网络,或者可以由其执行。例如,如参考图6所述,节点生成网络预测算子类型序列中的下一算子类型。
在操作1320,系统基于预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型来计算算子类型损失。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。
根据一些方面,训练组件标识基准真值程序性媒体生成器的拓扑节点排序,并且基于拓扑节点排序来比较预测的下一算子类型和基准真值程序性媒体生成器的下一算子类型,其中算子类型损失基于该比较。在一些情况下,拓扑节点排序包括对基准真值程序性媒体生成器的从后到前的广度优先遍历。根据一些实施例,训练组件在参考图2描述的第一序列生成器估计的概率上使用二元交叉熵损失函数来获得算子类型损失。术语“损失函数”是指影响如何在监督学习模型中训练机器学习模型的函数。具体地,在每次训练迭代期间,将模型的输出与训练数据中的已知注释信息进行比较。损失函数提供了预测注释数据与实际注释数据接近程度的值(例如,损失)。
在操作1325,系统基于算子类型损失更新节点生成网络的参数。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。例如,在计算算子类型损失之后,训练组件基于该损失更新节点生成网络的参数,并且在下一迭代期间由节点生成网络做出新的预测集合。根据一些方面,训练组件在训练时使用教师强制(teacherforcing),使得基准真值令牌用于部分序列s<i
图14示出了根据本公开各方面的基于参数损失训练机器学习模型的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
在操作1405,系统使用参数生成网络基于算子子集来预测针对算子类型的算子参数序列。在一些情况下,该步骤的操作涉及参考图2和图3描述的参数生成网络,或者可以由其执行。例如,训练组件标识参考图13描述的算子子集中包括的算子参数,并且将所标识的算子参数提供给参数生成网络。参数生成网络接收所标识的算子参数,并且如参考图6所述预测算子参数序列Sp中的后续值,其中所标识的算子参数是初始值。
在操作1410,系统基于预测的算子参数序列和来自基准真值程序性媒体生成器的算子参数序列来计算参数损失。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。根据一些方面,训练组件接收预测的算子参数序列Sp,并且通过使用二元交叉熵损失函数将预测的算子参数序列Sp与基准真值的算子参数序列Sp进行比较来计算参数损失。
在操作1415,系统基于参数损失更新参数生成网络的参数。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。根据一些方面,训练组件在训练时使用教师强制,使得基准真值令牌用于部分序列s<i,并且使用基准真值节点作为参数生成网络的输入来分开地训练参数生成网络的每个处理步骤。根据一些方面,一旦达到参数损失的最小值就停止训练,以避免过度拟合。在一些实施例中,第一序列编码器与第二变换器网络联合训练。
图15示出了根据本公开各方面的基于有向边损失训练机器学习模型的示例。在一些示例中,这些操作由包括处理器的系统来执行,该处理器执行代码集合来控制装置的功能元件。附加地或备选地,使用专用硬件来执行某些过程。通常,这些操作按照根据本公开各方面描述的方法和过程来执行。在一些情况下,本文描述的操作由各种子步骤组成,或者结合其他操作来执行。
在操作1505,系统使用边生成网络基于算子子集来预测一条或多条有向边。在一些情况下,该步骤的操作涉及参考图2和图4描述的边生成网络,或者可以由其执行。例如,训练组件标识连接到参考图13描述的算子子集的有向边,并且将所标识的有向边提供给参数生成网络。参数生成网络接收所标识的有向边,并且如参考图6所描述的,预测有向边序列Se中的后续值,其中所标识的有向边是初始值。
在操作1510,系统基于预测的有向边和来自基准真值程序性媒体生成器的有向边序列来计算有向边损失。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。根据一些方面,训练组件接收预测的有向边序列Se,并且通过使用二元交叉熵损失函数将预测的有向边序列Se与基准真值的算子参数序列Se进行比较来计算有向边损失。
在操作1515,系统基于有向边损失更新边生成网络的参数。在一些情况下,该步骤的操作涉及参考图2描述的训练组件,或者可以由其执行。根据一些方面,训练组件在训练时使用教师强制,使得基准真值令牌用于部分序列s<i,并且使用基准真值节点作为边生成网络的输入来分开地训练边生成网络的每个处理步骤。根据一些方面,一旦达到边生成损失的最小值就停止训练,以避免过拟合。在一些实施例中,第二序列编码器与指针网络联合训练。
本文描述的说明和附图表示示例配置,并不表示权利要求范围内的所有实现。例如,操作和步骤可以被重新布置、组合或修改。此外,结构和设备可以以框图的形式表示,以表示组件之间的关系并避免模糊所描述的概念。相似的组件或特征可以具有相同的名称,但是对应于不同的附图可以具有不同的附图标记。
对本公开的一些修改对于本领域技术人员来说可能是显而易见的,并且在不脱离本公开的范围的情况下,本文定义的原理可以应用于其他变型。因此,本公开不限于本文描述的示例和设计,而是符合与本文公开的原理和新颖特征一致的最广泛的范围。
所描述的方法可以由包括通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合的设备来实现或执行。通用处理器可以是微处理器、传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或者任何其他这样的配置)。因此,本文描述的功能可以用硬件或软件来实现,并且可以由处理器、固件或其任何组合来执行。如果在由处理器执行的软件中实现,则这些功能可以以指令或代码的形式存储在计算机可读介质上。
计算机可读介质包括非暂态计算机存储介质和通信介质两者,包括促进代码或数据的传送的任何介质。非暂态存储介质可以是可由计算机访问的任何可用介质。例如,非暂态计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、光盘(compact disk,CD)或其他光盘存储、磁盘存储或用于携带或存储数据或代码的任何其他非暂态介质。
此外,连接组件可以被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线路(digital subscriber line,DSL)或无线技术(诸如红外、无线电或微波信号)从网站、服务器或其他远程源传输代码或数据,则同轴电缆、光纤电缆、双绞线、DSL或无线技术被包括在介质的定义中。介质的组合也被包括在计算机可读介质的范围内。
在本公开和以下权利要求中,词语“或”指示包含性列表,例如,X、Y或Z的列表意味着X或Y或Z或XY或XZ或YZ或XYZ。短语“基于”也不是用来表示封闭条件集合的。例如,被描述为“基于条件A”的步骤可以基于条件A和条件B。换句话说,短语“基于”应当被解释为意味着“至少部分基于”。此外,单词“一”或“一个”指示“至少一个”。

Claims (20)

1.一种用于程序性媒体生成的方法,包括:
由节点生成网络生成算子类型序列;
由参数生成网络针对所述算子类型序列中的每个算子类型生成算子参数序列;
由边检测网络基于所述算子类型序列来生成有向边序列;
由图形组件对所述算子类型序列、所述算子参数序列和所述有向边序列进行组合以获得程序性媒体生成器,其中所述程序性媒体生成器包括有向图形,并且其中所述有向图形的每个节点包括算子,所述算子包括来自所述算子类型序列的算子类型、对应的算子参数序列、以及来自所述有向边序列的将所述节点连接到所述有向图形的另一节点的输入连接或输出连接;以及
由资产生成器使用所述程序性媒体生成器来生成媒体资产。
2.根据权利要求1所述的方法,还包括:
由所述节点生成网络针对所述算子类型序列生成节点深度值序列,其中所述算子类型序列中的每个算子类型基于先前的算子类型集合和先前的节点深度值集合而被生成。
3.根据权利要求1所述的方法,还包括:
由所述节点生成网络针对所述算子类型序列生成全局位置值序列,其中所述算子类型序列中的每个算子类型基于先前的算子类型集合和先前的全局位置值集合而被生成。
4.根据权利要求1所述的方法,其中:
所述算子参数序列中的每个值与不同的参数类型相对应。
5.根据权利要求1所述的方法,还包括:
由所述图形组件标识与所述算子类型序列的输入槽和输出槽相对应的多个槽;
由所述图形组件针对所述多个槽中的每个槽计算槽嵌入;以及
由所述图形组件基于所述槽嵌入来生成槽索引序列,其中每对连续索引与所述有向边序列中的有向边相对应。
6.根据权利要求1所述的方法,还包括:
由所述图形组件标识输入图形;以及
由所述图形组件将所述输入图形与所述有向图形进行组合,以获得所述程序性媒体生成器。
7.根据权利要求1所述的方法,还包括:
由所述图形组件选择所述有向图形的节点的子集;
由机器学习模型基于所述节点的所述子集来生成附加节点;
由所述图形组件基于所述节点的所述子集来生成后续程序性媒体生成器,所述后续程序性媒体生成器包括所述节点的所述子集和所述附加节点;
由所述资产生成器基于所述后续程序性媒体来生成器生成后续媒体资产。
8.根据权利要求1所述的方法,还包括:
由所述资产生成器使用所述程序性媒体生成器来生成纹理图像,其中所述有向图形包括材质图形,并且所述媒体资产包括包含所述纹理图像的图像。
9.根据权利要求8所述的方法,还包括:
由所述图形组件生成多个材质图形;
由所述资产生成器基于所述多个材质图形来生成多个纹理图像,其中所述媒体资产包括所述多个纹理图像。
10.根据权利要求1所述的方法,还包括:
由所述资产生成器使用所述程序性媒体生成器来生成几何模型,其中所述媒体资产包括基于所述几何模型来描绘形状的图像。
11.一种用于程序性媒体生成的方法,包括:
由训练组件标识包括基准真值程序性媒体生成器的训练数据;
由所述训练组件从所述基准真值程序性媒体生成器标识算子子集;
由节点生成网络基于所述算子子集来预测下一算子类型;
由所述训练组件基于所预测的所述下一算子类型和所述基准真值程序性媒体生成器的下一算子类型来计算算子类型损失;以及
由所述训练组件基于所述算子类型损失来更新所述节点生成网络的参数。
12.根据权利要求11所述的方法,还包括:
标识针对所述基准真值程序性媒体生成器的拓扑节点排序;
基于所述拓扑节点排序将所预测的所述下一算子类型与所述基准真值程序性媒体生成器的所述下一算子类型进行比较,其中所述算子类型损失基于所述比较。
13.根据权利要求12所述的方法,其中:
所述拓扑节点排序包括所述基准真值程序性媒体生成器的从后到前的广度优先遍历。
14.根据权利要求11所述的方法,还包括:
由参数生成网络基于所述算子子集来预测针对算子类型的算子参数序列;
由所述训练组件基于所预测的所述算子参数序列和来自所述基准真值程序性媒体生成器的算子参数序列来计算参数损失;以及
由所述训练组件基于所述参数损失来更新所述参数生成网络的参数。
15.根据权利要求11所述的方法,还包括:
由边生成网络基于所述算子子集来预测一条或多条有向边;
由所述训练组件基于所预测的所述有向边和来自所述基准真值程序性媒体生成器的有向边序列来计算有向边损失;以及
由所述训练组件基于所述有向边损失来更新所述边生成网络的参数。
16.一种用于程序性媒体生成的装置,包括:
节点生成网络,被配置为生成算子类型序列;
参数生成网络,被配置为针对所述算子类型序列中的每个算子类型生成算子参数序列;
边生成网络,被配置为基于所述算子类型序列来生成有向边序列;
图形组件,被配置为对所述算子类型序列、所述算子参数序列和所述有向边序列进行组合以获得程序性媒体生成器,其中所述程序性媒体生成器包括有向图形,并且其中所述有向图形的每个节点包括算子,所述算子包括来自所述算子类型序列的算子类型、对应的算子参数序列、以及来自所述有向边序列的将所述节点连接到所述有向图形的另一节点的输入连接或输出连接;以及
资产生成器,被配置为使用所述程序性媒体生成器来生成媒体资产。
17.根据权利要求16所述的装置,其中:
所述节点生成网络包括第一变换器网络;
所述参数生成网络包括第二变换器网络;以及
所述边生成网络包括指针网络。
18.根据权利要求17所述的装置,其中:
所述边生成网络包括位置编码器。
19.根据权利要求16所述的装置,其中:
所述资产生成器包括图像渲染应用。
20.根据权利要求16所述的装置,还包括:
训练组件,被配置为更新所述节点生成网络、所述参数生成网络和所述边生成网络中的每一者的参数。
CN202310124660.XA 2022-05-06 2023-02-16 程序性媒体生成 Pending CN117011440A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/662,287 2022-05-06
US17/662,287 US11875446B2 (en) 2022-05-06 2022-05-06 Procedural media generation

Publications (1)

Publication Number Publication Date
CN117011440A true CN117011440A (zh) 2023-11-07

Family

ID=88414275

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310124660.XA Pending CN117011440A (zh) 2022-05-06 2023-02-16 程序性媒体生成

Country Status (3)

Country Link
US (1) US11875446B2 (zh)
CN (1) CN117011440A (zh)
DE (1) DE102023105151A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013295864B2 (en) * 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
US10325035B2 (en) * 2015-03-17 2019-06-18 Environmental Systems Research Institute (ESRI) Interactive dimensioning of parametric models
US20200302250A1 (en) * 2019-03-22 2020-09-24 Nvidia Corporation Iterative spatial graph generation

Also Published As

Publication number Publication date
US11875446B2 (en) 2024-01-16
US20230360310A1 (en) 2023-11-09
DE102023105151A1 (de) 2023-11-09

Similar Documents

Publication Publication Date Title
Chaudhuri et al. Learning generative models of 3d structures
US11354792B2 (en) System and methods for modeling creation workflows
CN112800893B (zh) 一种基于强化学习的人脸属性编辑方法
US20240161462A1 (en) Embedding an input image to a diffusion model
CN115797606B (zh) 基于深度学习的3d虚拟数字人交互动作生成方法及系统
CN116051388A (zh) 经由语言请求的自动照片编辑
Ardhianto et al. Generative deep learning for visual animation in landscapes design
Jo et al. Generative artificial intelligence and building design: early photorealistic render visualization of façades using local identity-trained models
CN113065321B (zh) 基于lstm模型和超图的用户行为预测方法及系统
GB2624282A (en) Single image concept encoder for personalization using a pretrained diffusion model
GB2624754A (en) Image and object inpainting with diffusion models
Guo Design and development of an intelligent rendering system for new year's paintings color based on b/s architecture
US20230360294A1 (en) Unsupervised style and color cues for transformer-based image generation
CN116484868A (zh) 一种基于生成扩散模型的跨域命名实体识别方法及装置
US11875446B2 (en) Procedural media generation
Zeng et al. Residential floor plans: Multi-conditional automatic generation using diffusion models
WO2021203076A1 (en) Method for understanding and synthesizing differentiable scenes from input images
US20240135611A1 (en) Neural compositing by embedding generative technologies into non-destructive document editing workflows
US20230274478A1 (en) Neural image compositing with layout transformers
US20240169604A1 (en) Text and color-guided layout control with a diffusion model
US20240354895A1 (en) Preset style transfer
US20240265505A1 (en) Multimodal diffusion models
US20240338870A1 (en) Generative ai based text effects with consistent styling
CN118334180B (zh) 基于机器学习的psd文件自动还原与处理方法及系统
US20240346234A1 (en) Structured document generation from text prompts

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