掌桥专利:专业的专利平台
掌桥专利
首页

用于提供嵌入在媒体项中的包括神经网络描述的渲染引擎模型的方法和装置

文献发布时间:2023-06-19 12:02:28


用于提供嵌入在媒体项中的包括神经网络描述的渲染引擎模型的方法和装置

相关申请的交叉引用

本专利申请要求于2018年12月17日提交的、标题为“用于媒体数据的嵌入式渲染引擎”的非临时申请第16/222,885号的优先权,该非临时申请被转让给本申请的受让人,并且通过引用明确并入本文。

技术领域

本公开大体上涉及媒体渲染,更具体地涉及将渲染引擎模型嵌入媒体项以用于渲染媒体项中的原始媒体数据。

背景技术

诸如数码相机和麦克风的媒体数据捕获产品的多功能性的增强,使得媒体捕获能力可以被集成到各种设备中。用户可以从任何配备有这种媒体捕获能力的设备捕获视频、图像和/或音频。视频、图像和音频可以被捕获用于娱乐用途、专业用途、监控和自动化等应用。媒体捕获设备可以捕获原始媒体数据,例如原始图像或音频数据,并且生成包含该原始媒体数据的文件或流。为了渲染文件或流中的原始媒体数据,适合于该特定文件或流的单独的渲染引擎(例如解码器)是必要的。例如,视频解码器对于渲染和观看视频文件中的内容是必要的,而图像解码器对于渲染和观看图像文件中的内容是必要的。这种渲染引擎能够理解、处理和渲染文件或流中的原始媒体数据。

存在用于媒体数据的各种各样的格式和类型,以及用于渲染不同的类型文件的软件工具。不同的文件具有不同的要求、规范和行为,并且只与一些媒体软件工具兼容。如果用户想要在设备上渲染特定的媒体文件,则用户需要在设备上安装适合该媒体文件的媒体软件。不幸的是,在许多情况下,用户的设备可能没有用于特定媒体文件的必要媒体软件。结果,用户经常不能在他们的设备上渲染媒体文件,除非他们能够为他们想要渲染的每个媒体文件找到并且安装必要的媒体软件。该过程可能令人沮丧,经常阻止用户访问媒体内容,阻碍用户的媒体内容体验,或者迫使用户在每次他们希望渲染与他们的设备上的软件不兼容的媒体文件时寻找并且安装合适的媒体软件。由不同类型的可用媒体文件引起的兼容性问题促使各种努力以通过标准化来提高互操作性。然而,标准化可能是繁重的,当添加新的媒体功能和特征时,会导致漫长而复杂的过程。

发明内容

本文所描述的技术可以被实现为创建媒体项(例如媒体文件或流),该媒体项包含原始或捕获的媒体数据(例如,图像数据、视频数据、音频数据等)和用于原始媒体数据的渲染引擎的完整规范。渲染引擎模型可以与原始媒体数据一起嵌入媒体项中。媒体项中的渲染引擎模型允许设备在没有单独的媒体渲染工具(例如,解码器、编码器、图像处理器、神经网络处理器和/或其他媒体渲染工具)的情况下处理和渲染原始媒体数据。因此,媒体项预先配备有用于渲染原始媒体数据的工具,而不管媒体项的类型或格式如何,从而避免了在试图渲染不同类型的媒体项时通常出现的令人沮丧的兼容性问题。基于媒体项中的渲染引擎模型,用户可以运行为媒体数据定义的渲染引擎,并从用户的设备渲染媒体数据,而无需首先确保设备具有与要被渲染的媒体项兼容的单独的媒体渲染工具。

通过在媒体项中包括渲染引擎模型或规范,设备上的任何合适的处理器可以使用媒体项中的原始媒体数据和渲染引擎模型来生成渲染输出。这样,该设备不需要用于特定媒体项的单独且兼容的媒体渲染工具。因此,本文的媒体项和方法可以消除或显著减少对媒体项标准化的需求,支持用于处理媒体数据的新解决方案,并且为不同类型的媒体数据提供定制处理。本文的媒体项中的渲染引擎模型可以针对媒体项中的原始媒体数据来设计,并且可以针对特定的渲染意图和成果来定制。

根据至少一个示例,提供了用于创建包含媒体数据(例如,原始或捕获的媒体数据)和用于渲染媒体数据的嵌入式渲染引擎模型的媒体项的方法。方法可以包括获得由数据捕获设备捕获的媒体数据,将渲染引擎模型嵌入包含媒体数据的媒体项中,以及向一个或多个设备提供(例如,发送、存储、输出等)具有嵌入在媒体项中的渲染引擎模型的媒体项。该一个或多个设备可以获得媒体项并且存储媒体项,或者使用媒体项中的渲染引擎模型来执行神经网络以处理和渲染媒体项中的媒体数据。神经网络可以使用媒体数据作为输入以生成渲染的媒体数据输出。

媒体数据可以包括图像数据、视频数据、音频数据等。媒体项可以包括文件、流、或者可以包含或封装媒体数据和渲染引擎模型的任何其他类型的数据容器或对象。渲染引擎模型可以包括被配置为处理媒体数据并且生成特定媒体数据输出的神经网络的描述。媒体项中的渲染引擎模型可以指示如何基于神经网络的描述来执行神经网络以处理媒体数据并且生成特定的媒体数据输出。例如,媒体项中的渲染引擎模型可以向一个或多个设备和/或具有媒体项副本的任何其他设备通知如何执行神经网络来处理媒体数据并且生成特定媒体数据输出。

神经网络的描述可以定义神经网络的神经网络架构。神经网络架构可以包括例如神经网络结构(例如,层数、每层中的节点数、层互连等)、神经网络滤波器或操作、激活函数、参数(例如,权重、偏差等)等等。该描述还可以定义神经网络中的层如何互连、如何形成神经网络的输入以及如何从神经网络形成输出。此外,该描述可以定义神经网络的一个或多个任务,例如用于编码媒体数据、解码媒体数据、压缩或解压缩媒体数据、执行图像处理操作(例如,图像恢复、图像增强、去马赛克、滤波、缩放、颜色校正、颜色转换、降噪、空间滤波、图像渲染等)、执行帧速率转换(例如,上转换、下转换)、执行音频信号修改操作(例如,从窄带音频输入文件产生宽带音频信号)等的一个或多个定制任务。

在另一个示例中,提供了用于创建包含媒体数据(例如,原始或捕获的媒体数据)和用于渲染媒体数据的嵌入式渲染引擎模型的媒体项的装置。该示例装置可以包括存储器以及一个或多个处理器,该一个或多个处理器被配置为获得由数据捕获设备捕获的媒体数据,将渲染引擎模型嵌入包含媒体数据的媒体项中,以及向一个或多个设备提供(例如,存储、发送、输出等)具有嵌入在媒体项中的渲染引擎模型的媒体项。该一个或多个设备可以获得媒体项并且将其存储,或者使用媒体项中的渲染引擎模型来执行神经网络以处理和渲染媒体项中的媒体数据。神经网络可以使用媒体数据作为输入来生成渲染的媒体数据输出。

媒体数据可以包括图像数据、视频数据、音频数据等。媒体项可以包括文件、流、或者可以包含或封装媒体数据和渲染引擎模型的任何其他类型的数据容器或对象。渲染引擎模型可以包括被配置为处理媒体数据并且生成特定媒体数据输出的神经网络的描述。媒体项中的渲染引擎模型可以指示如何基于神经网络的描述来执行神经网络以处理媒体数据并且生成特定的媒体数据输出。例如,媒体项中的渲染引擎模型可以向一个或多个设备和/或具有媒体项副本的任何其他设备通知如何执行神经网络来处理媒体数据并且生成特定的媒体数据输出。

神经网络的描述可以定义神经网络的神经网络架构。神经网络架构可以包括例如神经网络结构(例如,层数、每层中的节点数、层互连等)、神经网络滤波器或操作、激活函数、参数(例如,权重、偏差等)等等。该描述还可以定义神经网络中的层如何互连、如何形成神经网络的输入以及如何从神经网络形成输出。此外,该描述可以定义神经网络的一个或多个任务,例如用于编码媒体数据、解码媒体数据、压缩或解压缩媒体数据、执行图像处理操作(例如,图像恢复、图像增强、去马赛克、滤波、缩放、颜色校正、颜色转换、降噪、空间滤波、图像渲染等)、执行帧速率转换(例如,上转换、下转换)、执行音频信号修改操作(例如,从窄带音频输入文件产生宽带音频信号)等的一个或多个定制任务。

在另一个示例中,提供了非暂时性计算机可读介质,用于创建包含媒体数据(例如,原始或捕获的媒体数据)和用于渲染媒体数据的嵌入式渲染引擎模型的媒体项。该非暂时性计算机可读介质可以存储指令,当由一个或多个处理器执行时,该指令使得该一个或多个处理器获得由数据捕获设备捕获的媒体数据,将渲染引擎模型嵌入包含媒体数据的媒体项中,以及向一个或多个设备提供(例如,存储、发送、输出等)具有嵌入在媒体项中的渲染引擎模型的媒体项。该一个或多个设备可以获得媒体项并且将其存储,或者使用媒体项中的渲染引擎模型来执行神经网络以处理和渲染媒体项中的媒体数据。神经网络可以使用媒体数据作为输入来生成渲染的媒体数据输出。

在另一个示例中,提供了一种装置,用于创建包含媒体数据(例如,原始或捕获的媒体数据)和用于渲染媒体数据的嵌入式渲染引擎模型的媒体项。该示例装置可以包括用于获得由数据捕获设备捕获的媒体数据的部件,用于将渲染引擎模型嵌入包含媒体数据的媒体项中的部件,以及用于向一个或多个设备提供(例如,存储、发送、输出等)具有嵌入在媒体项中的渲染引擎模型的媒体项的部件。该一个或多个设备可以获得媒体项并且将其存储,或者使用媒体项中的渲染引擎模型来执行神经网络以处理和渲染媒体项中的媒体数据。神经网络可以使用媒体数据作为输入来生成渲染的媒体数据输出。

媒体数据可以包括图像数据、视频数据、音频数据等。媒体项可以包括文件、流、或者可以包含或封装媒体数据和渲染引擎模型的任何其他类型的数据容器或对象。渲染引擎模型可以包括被配置为处理媒体数据并且生成特定媒体数据输出的神经网络的描述。媒体项中的渲染引擎模型可以指示如何基于神经网络的描述来执行神经网络以处理媒体数据并且生成特定的媒体数据输出。例如,媒体项中的渲染引擎模型可以向一个或多个设备和/或具有媒体项副本的任何其他设备通知如何执行神经网络来处理媒体数据并且生成特定的媒体数据输出。

神经网络的描述可以定义神经网络的神经网络架构。神经网络架构可以包括例如神经网络结构(例如,层数、每层中的节点数、层互连等)、神经网络滤波器或操作、激活函数、参数(例如,权重、偏差等)等等。该描述还可以定义神经网络中的层如何互连、如何形成神经网络的输入以及如何从神经网络形成输出。此外,该描述可以定义神经网络的一个或多个任务,例如用于编码媒体数据、解码媒体数据、压缩或解压缩媒体数据、执行图像处理操作(例如,图像恢复、图像增强、去马赛克、滤波、缩放、颜色校正、颜色转换、降噪、空间滤波、图像渲染等)、执行帧速率转换(例如,上转换、下转换)、执行音频信号修改操作(例如,从窄带音频输入文件产生宽带音频信号)等的一个或多个定制任务。

在一些方面,上述方法、装置和计算机可读介质还可以包括在媒体项中嵌入多个渲染引擎模型。例如,方法、装置和计算机可读介质可以包括在媒体项中嵌入附加渲染引擎模型。附加渲染引擎模型可以包括被配置为处理媒体数据并且生成不同的媒体数据输出的附加神经网络的附加描述。附加描述可以定义附加神经网络的不同的神经网络架构。基于不同的神经网络层、滤波器或操作、激活函数、参数等,可以针对不同的操作成果或渲染意图定制不同的神经网络架构。

具有渲染引擎模型和附加渲染引擎模型的媒体项可以被提供给一个或多个设备,用于存储媒体项、处理媒体项和/或渲染媒体项中的媒体数据。在一些示例中,媒体项可以被提供给一个或多个设备以供存储。在其他示例中,媒体项可以被提供给一个或多个设备,用于处理和/或渲染媒体项中的媒体数据。例如,一个或多个设备可以接收媒体项并且选择多个渲染引擎模型(例如,渲染引擎模型或附加渲染引擎模型)中的一个,并且基于所选择的渲染引擎模型,运行与所选择的渲染引擎模型相关联的相应神经网络。然后该一个或多个设备可以使用该相应神经网络来处理媒体项中的媒体数据,以从该相应神经网络获得或生成媒体数据输出。

在一些方面,上述方法、装置和计算机可读介质还可以包括生成被配置为处理和渲染原始媒体数据的测试神经网络,以及基于媒体数据样本训练测试神经网络。测试神经网络可以包括测试神经网络架构,其可以包括特定的神经网络结构(例如,层、节点、互连等)、测试滤波器或操作、测试激活函数、测试参数(例如,权重、偏差等)等等。测试神经网络的训练可以包括使用测试神经网络处理媒体数据样本,基于与媒体数据样本相关联的一个或多个输出来确定测试神经网络的性能,基于测试神经网络的性能来确定对测试神经网络(和/或测试神经网络架构)的一个或多个调整,以及基于测试神经网络的性能来调整测试神经网络(例如,测试神经架构、测试参数、测试滤波器或操作、测试激活函数、测试神经网络中的层等)。

在一些情况下,确定测试神经网络的性能可以包括确定测试神经网络的准确度和/或测试来自神经网络的一个或多个输出中的损失或误差。例如,确定测试神经网络的性能可以包括对一个或多个输出应用损失函数(例如均方误差(MSE)函数),以生成反馈,该反馈可以包括损失或误差计算或结果。反馈可用于识别和做出调整以调谐测试神经网络。

在一些情况下,训练以及一个或多个调整可以用于确定与媒体项中的渲染引擎模型相关联的神经网络架构。例如,测试神经网络架构和通过训练确定的对测试神经网络架构的一个或多个调整可以用于确定特定的神经网络架构和配置,该特定的神经网络架构和配置可以用作嵌入在媒体项中的渲染引擎模型的基础。

在一些示例中,上述方法、装置和计算机可读介质可以包括在媒体项中将地址(例如,统一资源标识符(URI);路径;网络;存储装置或目的地址;链路;资源定位器;等等)嵌入到远程渲染引擎模型或远程渲染引擎模型的远程位置。远程渲染引擎模型可以包括被配置为处理媒体数据并且生成相应媒体数据输出的神经网络的相应描述。具有该地址的媒体项可以被提供给一个或多个设备,该一个或多个设备可以使用该地址以从远程位置检索远程渲染引擎模型,并且基于远程渲染引擎模型中的相应描述,生成与远程渲染引擎模型相关联的神经网络,并且使用神经网络来处理媒体项中的媒体数据以生成相应媒体数据输出(例如,媒体数据的渲染)。

本发明内容并不旨在标识所要求保护的主题的关键或必要特征,也不是详尽的或旨在单独用于确定所要求保护的主题的范围。应该通过参考本公开的整个说明书、附图和权利要求的适当部分来理解主题。

参考以下说明书、权利要求书和附图,前述内容以及其他特征和实施例将变得更加显而易见。

附图说明

下面参考以下附图详细描述本申请的说明性实施例:

图1是示出根据一些示例的包括媒体处理系统的示例环境的框图;

图2A和图2B示出了根据一些示例的用于生成具有嵌入式渲染引擎模型的媒体项的示例流程;

图3A和图3B示出了根据一些示例的用于处理具有嵌入式渲染引擎模型的媒体项并且生成渲染输出的示例流程;

图4示出了根据一些示例的示例渲染引擎模型和由渲染引擎模型定义的示例神经网络架构;

图5示出了根据一些示例的由渲染引擎模型定义的、用于处理媒体项中图像数据的神经网络的示例用途;

图6示出了根据一些示例的媒体项的示例实现,该媒体项具有到用于媒体项中媒体数据的远程渲染引擎模型的嵌入式地址;

图7示出了根据一些示例的用于训练神经网络以识别用于描述神经网络的渲染引擎模型的神经网络的优化配置的示例过程;

图8示出了根据一些示例的用于与媒体项一起提供渲染引擎模型的示例方法;以及

图9示出了根据一些示例的示例计算设备架构。

具体实施方式

下面提供了本公开的某些方面和实施例。这些方面和实施例中的一些可以独立应用,一些可以组合地应用,这对本领域技术人员来说是显而易见的。在以下描述中,出于解释的目的,阐述了具体细节,以便提供对本申请的实施例的透彻理解。然而,将显而易见的是,没有这些具体细节也可以实施各种实施例。附图和描述不是限制性的。

随后的描述仅提供示例性实施例和特征,并不旨在限制本公开的范围、适用性或配置。相反,随后对示例实施例的描述将为本领域技术人员提供用于实现示例实施例的使能描述。应当理解,在不脱离所附权利要求中阐述的本申请的精神和范围的情况下,可以对要素的功能和布置进行各种改变。

在以下描述中给出了具体细节,以提供对实施例的透彻理解。然而,本领域普通技术人员将理解,实施例可以在没有这些具体细节的情况下实施。例如,电路、装置、网络、过程和其他组件可以以框图形式示出为组件,以便不会以不必要的细节模糊实施例。在其他情况下,已知的电路、过程、算法、结构和技术可以在没有不必要的细节的情况下示出,以避免模糊实施例。

此外,注意,实施例可以被描述为被描绘为流程图表、流程图、数据流图、结构图或框图的过程。尽管流程图表可以将操作描述为顺序过程,但是许多操作可以并行或并发地执行。此外,可以重新安排操作的顺序。当过程的操作完成时,该过程被终止,但是可以有图中没有包括的附加步骤。过程可以对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,它的终止可以对应于该函数返回到调用函数或主函数。

术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带(多个)指令和/或数据的各种其他介质。计算机可读介质可以包括其中可以存储数据的非暂时性介质,并且该非暂时性介质不包括以无线方式或通过有线连接传播的载波和/或暂时性电子信号。非暂时性介质的示例可以包括但不限于磁盘或磁带、诸如压缩光盘(CD)或数字多功能盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以具有在其上存储的代码和/或机器可执行指令,该代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者,指令、数据结构或程序语句的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由包括存储器共享、消息传递、令牌传递、网络传输等任何合适的方式来传递、转发或发送。

此外,特征和实施例可以通过硬件、软件、固件、中间件、微码、硬件描述语言或其任意组合来实现。当以软件、固件、中间件或微码来实现时,执行特定任务(例如,计算机程序产品)的程序代码或代码段可以存储在计算机可读或机器可读介质中。(多个)处理器可以执行特定的任务。

所公开的技术提供了用于生成包含原始媒体数据和渲染引擎模型的媒体项的系统、方法和计算机可读存储介质,用于在没有单独的媒体渲染工具(例如,解码器、编码器、图像处理器、神经网络处理器和/或其他媒体渲染工具)的情况下处理原始媒体数据。原始媒体数据可以包括由数据捕获设备或传感器(例如,图像或视频传感器、音频传感器等)捕获的媒体数据,例如,由数据捕获设备或传感器捕获和/或输出的原始的、普通的、未压缩的和/或未处理的数据(例如,视频数据、图像数据、音频数据等)。

在一些方面,(例如,在由图像信号处理器的一个或多个组件处理之前或之后)原始媒体数据可以包括来自数据捕获设备或传感器的图像数据。图像数据可以由滤色器阵列过滤。在一些示例中,滤色器阵列包括拜耳(Bayer)滤色器阵列。在一些方面,原始媒体数据可以包括原始图像数据的补丁(patch)。原始图像数据的补丁可以包括由数据捕获设备或传感器捕获的原始图像数据帧的子集。在一些方面,原始媒体数据可以包括原始音频数据。原始音频数据可以包括在原始音频文件中,原始音频文件可以包含例如未压缩的单声道脉冲编解码调制数据。

在一些情况下,包含原始视频和/或图像数据的原始媒体数据可以包括多个像素。例如,原始媒体数据可以包括多维数字阵列,该多维数字阵列表示与原始媒体数据相关联的图像的原始图像像素。在一个示例中,该阵列可以包括128×128×11的数字阵列,其具有128行和128列像素位置以及每个像素位置11个输入值。在另一个说明性示例中,原始媒体数据可以包括包含128×128的原始图像像素阵列的原始图像补丁。

此外,包含原始图像或视频数据的原始媒体数据可以包括一个或多个颜色分量,或者每个像素的颜色分量值。例如,在一些情况下,原始媒体数据可以包括每个像素位置的颜色或灰度值。滤色器阵列可以与数据捕获设备或传感器集成,或者可以与数据捕获设备或传感器结合使用(例如,放置在相关联的光电二极管上)以将单色信息转换成颜色值。例如,具有滤色器阵列(例如拜耳模式滤色器阵列,其在每个像素位置具有红、绿或蓝滤色器)的传感器可以用于捕获每个像素位置具有颜色的原始图像数据。

在一些示例中,描述了一个或多个装置、方法和计算机可读介质,用于生成具有嵌入式渲染引擎模型的媒体项。该设备、方法和计算机可读介质可以被实现为创建诸如媒体文件或流的媒体项,该媒体项包含原始或捕获的媒体数据(例如,图像数据、视频数据、音频数据等)和用于原始媒体数据的渲染引擎的完整规范。渲染引擎模型可以与原始媒体数据一起嵌入媒体项中。无论媒体项的类型或格式、或者媒体项中原始媒体数据的要求如何,渲染引擎模型都可以用于处理和渲染原始媒体数据,而无需单独的媒体渲染工具。

计算设备可以使用媒体项中的渲染引擎模型来运行为媒体数据定义的渲染引擎,并且渲染媒体数据,而不需要与要渲染的媒体项兼容的单独的媒体渲染工具。通过在媒体项中包括渲染引擎模型或规范,设备上的任何合适的处理器都可以使用媒体项中的渲染引擎模型来渲染原始媒体数据。因此,本文的媒体项和方法可以消除或显著减少对媒体项标准化的需求,支持对媒体数据的新的解决方案,并为不同类型的媒体数据提供定制处理。本文的渲染引擎模型可以被定制为根据特定的渲染意图和成果来处理媒体项中的原始媒体数据。

例如,压缩的音频文件可以包括定义如何处理或恢复音频文件中的音频流的渲染引擎模型,而视频文件可以包含定义如何从视频文件解压缩视频流的渲染引擎模型。在其他示例中,图像文件可以包含用于以8x缩放将原始图像数据渲染成RGB(红、绿和蓝)可视图像的渲染引擎模型,窄带音频文件可以包括用于产生宽带信号的渲染引擎模型,而视频文件可以包括用于2x帧速率上转换的渲染引擎模型。

在一些实现方式中,媒体项可以包括多个渲染引擎模型。不同的渲染引擎模型可以针对不同的渲染意图和处理成果进行专门定做(tailor)。例如,媒体项可以包括原始媒体数据、用于特定成果的第一渲染引擎模型(例如具有质量折衷的快速服务)以及用于不同成果的第二渲染引擎模型(例如具有速度折衷的较高质量)。多个渲染引擎模型可以方便地提供不同的渲染和处理能力,并且为用户提供对渲染和处理成果的额外控制。

在一些情况下,渲染引擎模型可以包括被配置为处理媒体项并且生成特定媒体数据输出的神经网络的描述。神经网络可以起媒体项的渲染引擎的作用。神经网络的描述可以定义神经网络架构和特定的调谐,以及为特定的渲染意图或期望的结果专门定做的其他参数。例如,该描述可以定义:神经网络的构建块,例如操作(例如,2d卷积、1d卷积、池化、归一化、全连接等)和激活函数(例如,整流线性单元、指数线性单元等);神经网络操作的参数(例如权重或偏差);这些构件如何互联;如何从媒体数据形成对神经网络的输入(例如,来自输入图像的像素数据的128×128的像素数据补丁);以及如何从神经网络形成输出(例如,输出64x 64x 3的补丁并将该输出补丁平铺(tile)在一起以产生最终输出)。

可以为各种操作或渲染意图定制神经网络,例如数据编码和/或解码、图像/视频处理、数据压缩和/或解压缩、缩放、滤波、图像恢复(例如,降噪等)、图像增强或改变等等。神经网络还可以针对特定的渲染或处理成果来定制,例如速度、质量、输出精度、输出大小(例如,图像大小等)、增强的用户体验等等。神经网络的描述可以全面地指定如何使用神经网络处理一段数据。例如,原始图像文件可以包括神经网络的描述,该神经网络用原始图像数据对照相机ISP(图像信号处理器)进行建模,使得神经网络可以完全按照意图来渲染结果。

神经网络描述可以用诸如数据的文件或流的媒体项来实现。例如,照相机传感器可以将原始数据流传输到处理器。数据的渲染引擎模型可以与流一起由照相机传感器发送到处理器。渲染引擎模型可以包括具有用于从原始传感器数据渲染可视图像的参数的神经网络架构的描述。处理器可以使用渲染引擎模型来执行神经网络并且相应地渲染原始数据。作为另一个示例,包括渲染引擎模型的压缩音频流可以被发送到处理器。渲染引擎模型可以被定制用于解压缩音频和/或任何其他处理成果。渲染引擎模型可以包括神经网络架构的描述以及用于解压缩音频的参数,处理器可以使用该参数来执行神经网络并解压缩音频。

在下面的公开内容中将更详细地描述所公开的技术。讨论开始于对示例系统、架构和方法的描述,如图1至图7所示,这些示例系统、架构和方法用于创建具有嵌入式渲染引擎模型的媒体项,针对特定的渲染意图和处理成果定制媒体项中的渲染引擎模型,以及利用渲染引擎模型实现神经网络。然后将跟着对用于创建具有嵌入式渲染引擎模型的媒体项的示例方法的描述(如图8所示)。讨论以示例计算设备架构的描述(如图9所示)结束,该架构包括适用于创建具有嵌入式渲染引擎模型的媒体项、运行包括神经网络的渲染引擎以及执行其他计算操作的示例硬件组件。本公开现在转向图1。

图1是示出包括媒体处理系统102和远程系统120、130、140的示例计算环境100的图。媒体处理系统102可以获得、存储和/或生成渲染引擎模型和/或创建具有如本文所述的嵌入式渲染引擎模型的媒体项。如本文所使用的,术语“媒体项”可以包括文件、流或比特流,或者能够存储、包含或封装媒体数据、渲染引擎模型和任何其他数据的任何其他数据对象或容器。

在该说明性示例中,媒体处理系统102包括计算组件104、存储装置108、计算引擎110和数据捕获设备112、114。媒体处理系统102可以是计算设备或多个计算设备的一部分。在一些示例中,媒体处理系统102可以是电子设备(设备)的一部分,该电子设备诸如照相机系统(例如,数码相机、IP相机、摄像机、安全相机等)、电话系统(例如,智能手机、蜂窝电话、会议系统等)、台式计算机、膝上型或笔记本计算机、平板计算机、机顶盒、电视机、显示设备、数字媒体播放器、游戏控制台、流媒体设备、无人机、车载计算机、物联网(IoT)设备、服务器、分布式系统或任何其他合适的(多个)电子设备。

在一些实施方式中,计算组件104、存储装置108、计算引擎110和数据捕获设备112、114可以是同一计算设备的一部分。例如,在一些情况下,计算组件104、存储装置108、计算引擎110和数据捕获设备112、114可以集成到智能手机、膝上型计算机、平板计算机、智能可穿戴设备、游戏系统和/或任何其他计算设备中。在其他实施方式中,计算组件104、存储装置108、计算引擎110和数据捕获设备112、114可以是两个或更多个独立计算设备的一部分。例如,计算组件104、存储装置108和计算引擎110可以是一个计算设备的一部分(例如智能手机或膝上型计算机),并且数据捕获设备112、114可以是一个或多个独立计算设备(例如一个或多个独立照相机或计算机)的一部分或表示一个或多个独立计算设备。

存储装置108可以包括(多个)用于存储数据的任何物理和/或逻辑存储设备。此外,存储装置108可以存储来自媒体处理系统102的任何组件的数据。例如,存储装置108可以存储来自数据捕获设备112、114的数据(例如,图像、视频和/或音频数据)、来自计算组件104的数据(例如,处理参数、计算、处理输出、与计算引擎110相关联的数据等)、一个或多个渲染引擎模型等。存储装置108还可以存储由媒体处理系统102从诸如远程系统120、130、140的其他设备接收的数据。例如,存储装置108可以存储由远程系统120、130上的数据捕获设备152、154捕获的媒体数据、来自远程系统140的渲染引擎模型或参数等。

数据捕获设备112、114可以包括用于捕获或记录媒体数据(例如,音频、图像和/或视频数据)的任何传感器或设备,例如数字照相机传感器、摄像机传感器、智能手机照相机传感器、电子装置(例如电视或计算机)上的图像/视频捕获设备、照相机、麦克风等)。在一些示例中,数据捕获设备112可以是图像/视频捕获设备(例如,照相机、视频和/或图像传感器等)并且数据捕获设备114可以是音频捕获设备(例如,麦克风)。

此外,数据捕获设备112、114可以是独立式设备,或者是一个或多个独立计算设备(诸如数码照相机、摄像机、IP相机、智能手机、智能电视、游戏系统、IoT设备、膝上型计算机等)的一部分。在一些示例中,数据捕获设备112、114可以包括计算引擎116、118,该计算引擎116、118用于处理捕获的数据,为捕获的数据生成渲染引擎模型,创建包含捕获的数据和渲染引擎模型的媒体项,和/或执行任何其他媒体处理操作。在一些情况下,数据捕获设备112、114可以捕获媒体数据,并且使用计算引擎116、118来本地地创建媒体项,该媒体项包含所捕获的媒体数据以及用于如本文所述处理和渲染所捕获的数据的渲染引擎模型。在其他情况下,数据捕获设备112、114可以捕获媒体数据,并且将所捕获的媒体数据发送到其他设备或计算引擎,例如计算组件104和计算引擎110,用于将捕获的媒体数据打包在媒体项中,该媒体项包含针对所捕获的媒体数据的至少一个渲染引擎模型。

计算机组件104可以包括一个或多个处理器106A-N(以下统称为“106”),例如中央处理单元(CPU)、图形处理单元(GPU)114、数字信号处理器(DSP)、图像信号处理器(ISP)等。处理器106可以执行各种操作,例如图像增强、图形渲染、增强现实、图像/视频处理、传感器数据处理、识别(例如,文本识别、对象识别、特征识别、跟踪或模式识别、场景识别等)、图像稳定、机器学习、滤波、数据处理以及本文描述的各种操作中的任何一种。在一些情况下,计算组件104还可以包括其他电子电路或硬件、计算机软件、固件或其任意组合,以执行本文描述的各种操作中的任何一种。

计算组件104可以实现计算引擎110。计算引擎110可以由来自计算组件104的一个或多个处理器106来实现。计算引擎110可以处理媒体数据、渲染媒体数据、创建用于处理和渲染如本文所述的原始或捕获的媒体数据的渲染引擎模型、创建包含原始或捕获的媒体数据以及用于原始或捕获的媒体数据的渲染引擎模型的媒体项、执行机器学习操作(例如,创建、配置、执行和/或训练神经网络或其他机器学习系统),和/或执行任何其他媒体处理和计算操作。

计算引擎110可以包括一个或多个媒体处理引擎,例如渲染引擎、前端处理引擎、图像处理引擎、数字信号处理引擎等。一个或多个媒体处理引擎可以执行各种媒体处理操作,例如滤波、去马赛克、缩放、颜色校正、颜色转换、降噪、空间滤波、缩放、帧速率转换、音频信号处理、噪声控制或消除、图像增强、数据压缩和/或解压缩、数据编码和/或解码等。在一些示例中,计算引擎110可以包括多个处理引擎,这些处理引擎可以被配置为执行相同或不同的计算操作。

在一些情况下,计算引擎110可以接收由计算环境100中的数据捕获设备102、104、152、154中的任何一个捕获的媒体数据(例如,图像数据、视频数据、音频数据等),并且接收、生成和/或从存储装置中检索用于媒体数据的一个或多个渲染引擎模型。计算引擎110可以将一个或多个渲染引擎模型嵌入到包含媒体数据的媒体项中,和/或将地址(例如,统一资源标识符(URI);链路;路径;网络、存储装置或目的地址;资源定位器;等等)嵌入到包含媒体数据的媒体项中的一个或多个渲染引擎模型。

远程系统120、130、140可以表示客户端设备,例如智能手机或便携式计算机、云计算环境或服务、服务器、IoT设备、智能设备,或者任何其他网络、设备或基础设施。在图1所示的示例中,远程系统120、130表示客户端设备,远程系统140表示服务器或云计算环境。在该示例中,远程系统120、130可以包括用于捕获或记录诸如视频、图像和/或音频的媒体数据的数据捕获设备152、154,并且远程系统140可以包括存储装置156,存储装置156可以用作媒体数据、渲染引擎模型、参数和/或其他数据的仓库。存储装置156可以包括一个或多个物理和/或逻辑存储设备。例如,存储装置156可以表示分布式存储系统。

远程系统120、130、140还可以包括计算引擎150。计算引擎150可以包括,例如但不限于图像处理引擎、数字信号处理引擎、渲染引擎、前端处理引擎和/或任何其他处理或媒体引擎。计算引擎150可以执行各种操作,例如滤波、去马赛克、缩放、颜色校正、颜色转换、降噪、空间滤波、缩放、帧速率转换、音频信号处理、噪声控制或消除、图像增强、数据压缩和/或解压缩、数据编码和/或解码、机器学习等。此外,计算引擎150可以运行或生成由与特定媒体项相关联的渲染引擎模型指定的渲染引擎,使用渲染引擎来处理和渲染媒体项中的媒体数据,生成渲染引擎模型等。

媒体处理系统102可以通过一个或多个网络(例如私有网络(例如,局域网、虚拟私有网、虚拟私有云等)、公共网络(例如,互联网)等)与远程系统120、130、140通信。媒体处理系统102可以与远程系统120、130、140通信以发送或接收媒体数据(例如,原始或捕获的媒体数据,例如视频、图像和/或音频数据),发送或接收渲染引擎模型,发送或接收具有嵌入式渲染引擎模型的媒体项,存储或检索媒体项的渲染引擎模型,等等。

虽然媒体处理系统102、数据捕获设备112、114和远程系统120、130、140被示出为包括某些组件,但是普通技术人员将理解,媒体处理系统102、数据捕获设备112、114和/或远程系统120、130、140可以包括比图1所示更多或更少的组件。例如,在一些情况下,媒体处理系统102、数据捕获设备112、114和远程系统120、130、140还可以包括一个或多个存储器设备(例如,RAM、ROM、高速缓存等)、一个或多个网络接口(例如,有线和/或无线通信接口等)、一个或多个显示设备和/或图1中未示出的其他硬件或处理设备。下面参考图9描述可以用媒体处理系统102、数据捕获设备112、114和远程系统120、130、140来实现的计算设备和硬件组件的说明性示例。

图2A示出了用于生成具有一个或多个嵌入式渲染引擎模型230、240的媒体项220的示例流程200。在该示例中,媒体处理系统102上的计算引擎110可以接收媒体数据210并且生成包括媒体数据210以及一个或多个渲染引擎模型230、240的媒体项220。媒体数据210可以包括由媒体捕获设备捕获的原始媒体数据,例如由数据捕获设备112、114、152或154捕获的音频、图像和/或视频数据。

计算引擎110可以生成或获得被配置为处理和渲染媒体数据210的一个或多个渲染引擎模型230、240。每个渲染引擎模型230、240可以包括被配置为处理媒体数据210并且生成特定媒体数据输出的渲染引擎的描述或规范。渲染引擎可以为特定的处理成果(例如,速度、质量、性能等)和/或渲染意图(例如,尺寸、格式、回放或渲染质量和特征、输出配置等)来定制。由渲染引擎生成的特定媒体数据输出可以因此根据这样的处理成果和/或渲染意图。

在一些示例中,渲染引擎可以由神经网络实现。这里,用于神经网络的渲染引擎模型(230或240)可以包括神经网络的描述或规范,其可以描述如何生成、配置和执行神经网络。例如,神经网络的描述或规范可以定义神经网络的架构,例如输入节点的数量、隐藏层的数量和类型、每个隐藏层中的节点数量、输出节点的数量、由神经网络实现的滤波器或操作、神经网络中的激活函数、神经网络的参数(例如权重和偏差等)。神经网络的描述或规范可以进一步定义神经网络中的层如何被连接以形成互连层的路径,如何基于媒体数据210形成神经网络的输入,以及如何从神经网络形成输出。

神经网络的描述或规范还可以包括任何其他信息或指令,其用于配置和/或执行神经网络以针对特定处理成果或渲染意图来处理媒体数据210的。例如,神经网络的描述或规范可以定义神经网络的一个或多个定制任务,诸如编码媒体数据210、解码媒体数据210、对媒体数据210执行一个或多个压缩或解压缩操作、对媒体数据210执行一个或多个图像处理操作(例如,图像恢复、图像增强、滤波、缩放、图像渲染、去马赛克、颜色校正、尺寸调整等)、对媒体数据210执行帧速率转换操作、对媒体数据210执行音频信号修改操作等。

在生成或获得一个或多个渲染引擎模型230、240之后,计算引擎110可以使用媒体数据210以及一个或多个渲染引擎模型230、240来生成媒体项220。例如,计算引擎110可以创建文件、流或数据容器,并且在文件、流或数据容器中包括或嵌入媒体数据210以及一个或多个渲染引擎模型230、240。媒体项220可以表示具有媒体数据210以及一个或多个渲染引擎模型230、240的结果文件、流或数据容器。

在一些示例中,媒体项220可以包括被配置为处理和渲染媒体数据210的单个渲染引擎模型(例如,230或240)。如前所述,单个渲染引擎模型可以为特定的处理成果和/或渲染意图来定制。在其他示例中,媒体项220可以包括被配置为根据不同的处理成果和/或渲染意图来处理和渲染媒体数据210的多个渲染引擎模型(例如,230和240)。多个渲染引擎模型可以提供额外的渲染和处理灵活性、控制和选项。处理媒体项220的设备或用户可以选择特定的渲染引擎模型来用于渲染媒体项220中的媒体数据210。可以基于期望的处理成果和/或渲染意图来选择特定的渲染引擎模型。

一旦媒体项220被生成,它就准备好用于处理,并且可以被计算引擎110使用来渲染媒体数据210,或者可以被发送到计算设备,诸如远程系统(例如,120、130、140)或内部处理设备(例如,106A、106B、106N),用于处理和渲染。

图2B示出了使用数据捕获设备112捕获媒体数据210并且利用一个或多个嵌入式渲染引擎模型230、240生成媒体项220的示例流程250。在该示例中,数据捕获设备112可以执行流程250,并且产生媒体数据210和具有一个或多个嵌入式渲染引擎模型230、240的媒体项220两者。该实现方式允许媒体项220由捕获媒体数据210的同一设备生成(例如,112),而不是让一个设备捕获媒体数据210,而独立或外部设备从媒体数据210产生媒体项220。

例如,照相机或配备有照相机的设备(例如,智能手机、笔记本计算机、智能电视等)可以捕获媒体数据210并且生成包含媒体数据210以及一个或多个渲染引擎模型230、240的媒体项220。此时,媒体项220准备好由任何处理设备进行渲染。因此,如果用户想要从照相机或配备照相机的设备捕获媒体数据(例如,图像、视频等),并且在另一设备上渲染媒体数据,照相机或配备照相机的设备可以捕获媒体数据210,并且准备媒体项220使得其准备好从任何其他计算设备渲染。用户将能够从另一个设备渲染媒体项220(当从照相机或配备照相机的设备接收时),而不需要在设备上安装单独的解码器。通过这种实现方式,照相机或配备照相机的设备的制造商可以确保照相机或配备照相机的设备能够捕获媒体数据并且产生最终输出,该最终输出准备好由其他设备渲染,而无需单独的解码器工具,并且没有(或具有有限的)兼容性问题。

回到示例流程250,数据捕获设备112可以首先捕获媒体数据210。数据捕获设备112可以向计算引擎116提供媒体数据210作为输入,并且计算引擎116可以产生包含媒体数据210和用于渲染媒体数据210的一个或多个渲染引擎模型230、240的媒体项220。计算引擎116可以将媒体数据210以及一个或多个渲染引擎模型230、240添加或嵌入到文件、流、或者数据容器或对象中,以创建媒体项220。

此时,媒体项220准备好由数据捕获设备112或另一计算设备渲染。例如,如果用户想要从单独的设备渲染媒体数据210,则数据捕获设备112可以将媒体项220提供给单独的设备进行渲染。如下面将参考图3A-图3B进一步解释的,单独的设备可以接收媒体项220,并且使用媒体项220中的渲染引擎模型(例如,渲染引擎模型230或240)来运行由渲染引擎模型描述或建模的渲染引擎。渲染引擎可以被配置为根据特定的处理成果和/或渲染意图来处理和渲染媒体数据210。然后单独的设备上的渲染引擎可以相应地处理和渲染媒体项220中的媒体数据210。

在媒体项220包括多个渲染引擎模型的示例实现方式中,用户或单独的设备可以基于例如与各种渲染引擎模型(例如,230和240)相关联的相应处理成果和/或渲染意图来选择特定的渲染引擎模型。单独的设备可以使用如前所述的所选择的渲染引擎模型来渲染媒体数据210,并且如果期望不同的处理成果或渲染意图,则可以选择并且实现不同的渲染引擎模型,以产生不同的渲染和/或处理成果。

图3A示出了用于处理媒体项220并且生成渲染输出310的示例流程300。在该示例中,媒体项220由媒体处理系统102上的计算引擎110来处理。媒体项220可以由计算引擎110从另一个设备或组件(例如数据捕获设备112)接收,或者由如前所述的计算引擎110生成。因此,在一些情况下,计算引擎110可以既生成媒体项220又处理媒体项220。

在流程300中,计算引擎110根据媒体项220中的渲染引擎模型(例如,230或240)运行渲染引擎。渲染引擎模型可以指定如何创建渲染引擎。计算引擎110可以分析所选择的渲染引擎模型,以确定如何生成或执行渲染引擎。渲染引擎模型可以识别用于渲染引擎的结构、参数、配置、实现信息等,计算引擎110可以使用这些来生成或执行渲染引擎。

一旦计算引擎110执行渲染引擎,它就可以将媒体数据210输入到渲染引擎中,然后渲染引擎可以处理媒体数据210以产生渲染输出310。渲染输出310可以是根据渲染引擎的渲染意图或配置、和/或渲染引擎模型中反映的渲染意图或配置的媒体数据210的渲染。

在一些情况下,渲染引擎可以是被配置为作为用于媒体数据210的渲染引擎来执行的神经网络。这里,渲染引擎模型可以包括神经网络的描述或规范。神经网络的描述或规范可以指定神经网络的构建块和架构,以及描述如何生成或执行神经网络的任何其他信息,例如神经网络参数(例如,权重、偏差等)、神经网络中的操作或滤波器、神经网络中的层数和层的类型、每层中的节点数、各层如何互连、如何形成或处理输入、如何形成输出等。计算引擎110可以使用该描述或规范来执行由该描述或规范定义的神经网络。神经网络可以处理媒体数据210并且生成渲染输出310。

图3B示出了用于处理媒体项220和生成渲染输出310的另一示例流程350。在该示例中,媒体项220由远程系统130来处理和渲染。媒体处理系统102可以生成媒体项220并且将其发送到远程系统130。远程系统130可以接收媒体项220,并且使用远程系统130上的计算引擎150对其进行处理。

计算引擎150可以使用媒体项220中的渲染引擎模型(例如,230或240),以生成用于媒体数据210的渲染引擎。计算引擎150可以分析渲染引擎模型以识别用于渲染引擎的参数、配置信息、指令等,并相应地生成或执行渲染引擎。例如,如前所述,渲染引擎模型可以包括渲染引擎(例如基于神经网络的渲染引擎)的描述或规范,计算引擎150可以使用该描述或规范来执行渲染引擎。

一旦计算引擎150执行渲染引擎,渲染引擎就可以处理媒体项220中的媒体数据210并且生成渲染输出310(例如,媒体数据210的渲染)。渲染引擎可以根据渲染引擎被配置为实现的(例如,如在渲染引擎模型中所反映的)处理成果和/或渲染意图来处理和渲染媒体数据210。远程系统130因此可以接收包含原始或捕获的媒体数据(210)的媒体项220,处理媒体项220,并且基于媒体项220中的渲染引擎模型(例如,230或240)渲染媒体项220中的原始或捕获的媒体数据,而不使用单独的解码器或媒体渲染软件。

图4示出了由渲染引擎模型230中的示例神经网络描述402定义的神经网络410的示例架构400。神经网络410可以表示用于渲染媒体数据的渲染引擎的神经网络实现。神经网络描述402可以包括神经网络410(包括神经网络架构400)的完整规范。例如,神经网络描述402可以包括神经网络410的架构400的描述或规范(例如,层、层互连、每层中的节点数量等);指示输入和输出是如何被形成或被处理的输入和输出描述;神经网络中的激活函数的指示、神经网络中的操作或滤波器等;神经网络参数,如权重、偏差等;等等。

神经网络410反映了在神经网络描述402中定义的架构400。在该示例中,神经网络410包括输入层402,其包括输入数据,例如媒体数据(例如,210)。在一个说明性示例中,输入层402可以包括表示输入媒体数据(例如,210)的一部分的数据,例如与输入媒体数据相对应的图像中的数据或像素的补丁(例如,128×128的数据补丁)。

神经网络410包括隐藏层404A至404N(以下统称为“404”)。隐藏层404可以包括n个数量的隐藏层,其中n是大于或等于1的整数。隐藏层的数量可以包括如期望的处理成果和/或渲染意图所需一样多的层。神经网络410还包括输出层406,输出层406提供由隐藏层404执行的处理产生的输出(例如,渲染输出310)。在一个说明性示例中,输出层406可以提供输入媒体数据(例如,210)的渲染。在一些情况下,输出层406可以为输入数据的每个补丁(例如,前面的示例中的128×128的数据补丁)生成输出补丁(例如,64×64×3的补丁),并且平铺或聚合每个输出补丁以生成最终输出,该最终输出提供输入媒体数据的渲染。

该示例中的神经网络410是互连节点的多层神经网络。每个节点可以表示一段信息。与节点相关联的信息在不同的层之间共享,并且每个层在信息被处理时保留信息。在一些情况下,神经网络410可以包括前馈神经网络,在这种情况下,没有反馈连接(在反馈连接中神经网络的输出被反馈到其自身)。在其他情况下,神经网络410可以包括递归神经网络,该递归神经网络可以具有允许在读入输入时跨节点携带信息的环路。

可以通过各种层之间的节点到节点的互连来在节点之间交换信息。输入层402的节点可以激活第一隐藏层404A中的一组节点。例如,如图所示,输入层402的每个输入节点连接到第一隐藏层404A的每个节点。隐藏层404A的节点可以通过对信息应用激活函数来转换每个输入节点的信息。然后从转换中导出的信息可以被传递到下一个隐藏层(例如,404B)的节点并且激活这些节点,这些节点可以执行它们自己指定的函数。示例函数包括卷积、上采样、数据转换、池化和/或任何其他合适的函数。然后隐藏层(例如,404B)的输出可以激活下一隐藏层(例如,404N)的节点,等等。最后的隐藏层的输出可以激活输出层406的一个或多个节点,此时提供输出。在一些情况下,尽管神经网络410中的节点(例如,节点408A、408B、408C)被示为具有多条输出线,但是一个节点具有单个输出,并且被示为从一个节点输出的所有线表示相同的输出值。

在一些情况下,每个节点或节点之间的互连可以具有权重,该权重是从训练神经网络410推导的一组参数。例如,节点之间的互连可以表示关于互连节点获悉的一段信息。互连可以具有能够被调谐(例如,基于训练数据集)的数字权重,允许神经网络410自适应于输入并且能够随着更多数据被处理来学习。

神经网络410可以被预先训练以使用不同的隐藏层404来处理来自输入层402中的数据的特征,以便通过输出层406提供输出。在使用神经网络410来渲染图像的示例中,可以使用包括示例图像的训练数据来训练神经网络410。例如,训练图像可以被输入到神经网络410中,该训练图像可以被神经网络410处理以生成输出,该输出可以用于调谐神经网络410的一个或多个方面,例如权重、偏差等。

在一些情况下,神经网络410可以使用称为反向传播的训练过程来调整节点的权重。反向传播可以包括前向传递、损失函数、反向传递和权重更新。针对一次训练迭代执行前向传递、损失函数、反向传递和参数更新。对于每组训练媒体数据,该过程可以重复一定次数的迭代,直到层的权重被精确调谐。

对于渲染图像的示例,前向传递可以包括通过神经网络410传递训练图像。在神经网络410被训练之前,权重可以被初始随机化。图像可以包括例如表示图像像素的数字阵列。阵列中的每个数可以包括从0到255的值,该值描述阵列中该位置的像素强度。在一个示例中,阵列可以包括28×28×3的数字阵列,其具有28行和28列像素以及3个颜色分量(例如红、绿和蓝,或者亮度和两个色度分量,等等)。

对于神经网络410的第一次训练迭代,由于在初始化时随机选择权重,输出可以包括不偏向任何特定类别的值。例如,如果输出是具有对象包括不同类别的概率的矢量,则每个不同类别的概率值可以相等或者至少非常相似(例如,对于十个可能的类别,每个类别可以具有0.1的概率值)。利用初始权重,神经网络410不能确定低级特征,并且因此不能准确确定对象的类别可能是什么。损失函数可用于分析输出中的误差。可以使用任何合适的损失函数定义。

由于实际值将不同于预测输出,所以损失(或误差)对于第一训练数据集(例如,图像)可能是高的。训练的目标是最小化损失量,使得预测输出与目标或理想输出一致。神经网络410可以通过确定哪些输入(权重)对神经网络410的损失贡献最大来执行反向传递,并且可以调整权重,使得损失减小并且最终最小化。

可以计算损失相对于权重的导数,以确定对神经网络410的损失贡献最大的权重。在计算导数之后,可以通过更新滤波器的权重来执行权重更新。例如,可以更新权重,使其沿梯度的相反方向变化。学习率可以被设置为任何合适的值,较高的学习率包括较大的权重更新,而较低的值指示较小的权重更新。

神经网络410可以包括任何合适的神经或深度学习网络。一个示例包括卷积神经网络(CNN),该网络包括输入层和输出层,其在输入层和输出层之间有多个隐藏层。CNN的隐藏层包括一系列卷积、非线性、池化(用于下采样)和全连接层。在其他示例中,神经网络410可以表示任何其他神经或深度学习网络,例如自动编码器、深度信念网络(DBN)、递归神经网络(RNN)等。

图5示出了由用于处理媒体项(例如,220)中的图像数据(例如,210)的渲染引擎模型230定义的神经网络410的示例用途。

在这个示例中,神经网络410包括输入层402、卷积隐藏层404A、池化隐藏层404B、全连接层404C和输出层406。神经网络410可以渲染输入图像数据以生成渲染图像(例如,渲染输出310)。首先,图像数据中的每个像素或像素补丁被视为具有可学习的权重和偏差的神经元。每个神经元接收一些输入,执行点积,并且可选地随后使用非线性函数。神经网络410还可以通过表达从一端上的原始图像数据(例如,像素)到另一端上的类别分数的可微分的分数函数来将某些属性编码到架构中,并且处理来自目标图像的特征。在渲染图像的部分之后,神经网络410可以生成每个渲染部分的平均分数(或z分数),并且取用户定义的缓冲区内的分数的平均值。

在一些示例中,输入层404A包括原始或捕获的媒体数据(例如,210)。例如,媒体数据可以包括表示图像像素的数字阵列,阵列中的每个数字包括从0到255的值,该值描述阵列中该位置的像素强度。图像可以通过卷积隐藏层404A、可选的非线性激活层、池化隐藏层404B和全连接隐藏层406,以在输出层406得到输出310。输出310可以是图像的渲染。

卷积隐藏层404A可以分析输入层402A的数据。卷积隐藏层404A的每个节点可以连接到输入数据(例如,图像)的节点(例如,像素)的区域。卷积隐藏层404A可以被认为是一个或多个滤波器(每个滤波器对应于不同的激活或特征映射),其中滤波器的每个卷积迭代是卷积隐藏层404A的节点或神经元。节点与该节点的感受野(节点(例如,像素)的区域)之间的每个连接学习权重,并且在一些情况下,学习整体偏差,使得每个节点学习分析其在输入图像中的特定的局部感受野。

卷积隐藏层404A的卷积性质是由于卷积层的每个节点被应用于其相应的感受野。例如,卷积隐藏层404A的滤波器可以从输入图像阵列的左上角开始,并且可以围绕输入数据(例如,图像)进行卷积。如上所述,滤波器的每个卷积迭代可以被认为是卷积隐藏层404A的节点或神经元。在每次卷积迭代中,滤波器的值与相应数量的图像的原始像素值相乘。来自每次卷积迭代的乘积可以被相加在一起,以获得对于该迭代或节点的总和。根据卷积隐藏层404A中下一个节点的感受野,该过程接着在输入数据(例如,图像)中的下一个位置继续。在输入体(volume)的每个唯一位置处理滤波器产生表示该位置的滤波结果的数字,导致为卷积隐藏层404A的每个节点确定总和值。

从输入层402到卷积隐藏层404A的映射可以被称为激活图(或特征图)。激活图包括表示输入体的每个位置处的滤波结果的每个节点的值。激活图可以包括从输入体上的滤波器的每次迭代产生的各种总和值的阵列。卷积隐藏层404A可以包括表示数据(例如,图像)中多个特征空间的几个激活图。

在一些示例中,可以在卷积隐藏层404A之后应用非线性隐藏层。非线性层可用于向已经在计算线性操作的系统引入非线性。

池化隐藏层404B可以被应用在卷积隐藏层404A之后(并且当使用时,应用在非线性隐藏层之后)。池化隐藏层404B用于简化来自卷积隐藏层404A的输出中的信息。例如,池化隐藏层404B可以获取从卷积隐藏层404A输出的每个激活图,并且使用池化函数生成压缩激活图(或特征图)。最大池化是由池化隐藏层执行的函数的一个示例。池化隐藏层404B可以使用其他形式的池化函数,例如平均池化或其他合适的池化函数。

池化函数(例如,最大池化滤波器)被应用于卷积隐藏层404A中包括的每个激活图。在图5所示的示例中,三个池化滤波器被用于卷积隐藏层404A中的三个激活图。池化函数(例如,最大池化)可以减少、聚合或连接输出,或输入(例如,图像)中的特征表示。最大池化(以及其他池化方法)提供了池化特征更少的益处,从而减少了后续层所需的参数数量。

全连接层404C可以将来自池化隐藏层404B的每个节点连接到输出层406中的每个输出节点。全连接层404C可以获得先前池化层404B的输出(其可以表示高级特征的激活图),和确定提供数据的最佳表示的特征或特征表示。例如,全连接层404C层可以确定提供数据的最佳或最接近表示的高级特征,并且可以包括高级特征的权重(节点)。可以计算全连接层404C和池化隐藏层404B的权重之间的乘积,以获得不同特征的概率。

来自输出层406的输出可以包括输入媒体数据的渲染(例如,310)。在一些示例中,来自输出层406的输出可以包括输出的补丁,然后这些补丁被平铺或组合以产生最终的渲染或输出(例如,310)。也可以提供其他示例输出。

图6示出了包含媒体数据210和远程存储的渲染引擎模型606的嵌入式地址604的媒体项602的示例实现方式。渲染引擎模型606可以是能够渲染媒体数据210的特定渲染引擎模型。在该示例中,渲染引擎模型606存储在远程系统140中。远程系统140可以存储用于媒体数据210(和其他媒体数据)的一个或多个渲染引擎模型606、230、240,这些渲染引擎模型可以由媒体处理系统102(和任何其他设备)访问以处理和渲染媒体数据。

在一些情况下,远程系统140可以存储为不同处理成果、渲染意图和/或媒体数据配置的多个渲染引擎模型。例如,远程系统140可以存储用于媒体数据210的多个渲染引擎模型,每个渲染引擎模型被定制用于不同的处理成果和/或渲染意图。远程系统140可以计算和/或存储许多渲染引擎模型,以提供广泛的定制选项。此外,远程系统140可以被实现为减轻(offload)用于存储和/或计算渲染引擎模型的处理和资源使用,向客户端提供更大量的渲染引擎模型选项,减小媒体项(例如,602)的大小和/或以其他方式减少客户端上的负担(处理和/或资源使用),并提供具有增加的定制或粒度的更大范围的渲染引擎模型。

在一些情况下,远程系统140可以具有计算和/或维护大量渲染引擎模型的基础设施和能力,例如存储和/或计算能力。例如,远程系统140可以是服务器或云服务,其包含渲染引擎模型的大仓库并且具有生成和存储具有增加的复杂性、定制性、大小等的渲染引擎模型的计算能力。远程系统140还可以训练渲染引擎模型,并如本文所述使训练的渲染引擎模型可用。远程系统140可以利用其资源来训练和调谐渲染引擎模型,并且提供高度调谐的渲染引擎模型。

在图6的说明性示例中,媒体项602包括媒体数据210和远程系统140上的渲染引擎模型606的地址604。地址604可以包括例如统一资源标识符(URI)、链路、路径、资源定位器或任何其他地址(例如网络、存储装置或目的地址)。地址604指示渲染引擎模型606位于何处和/或如何检索它。当媒体处理系统102处理媒体项602时(例如,如图3A中所示的流程300所述),它可以使用地址604从远程系统140检索渲染引擎模型606。一旦媒体处理系统102已经从远程系统140检索到渲染引擎模型606,媒体处理系统102就可以使用渲染引擎模型606来执行由渲染引擎模型606描述的渲染引擎。然后媒体处理系统102可以使用渲染引擎来处理和渲染媒体数据210。

在一些情况下,媒体项602可以包括多个渲染引擎模型的多个地址。例如,媒体项602可以包括远程系统140上的渲染引擎模型606、230和240的地址。这可以为媒体处理系统102提供更广泛的处理和渲染选项。媒体处理系统102(或相关联的用户)可以选择或识别对应于地址之一的特定渲染引擎模型以在处理媒体数据210中使用。媒体处理系统102(或相关联的用户)可以基于例如与特定渲染引擎模型相关联的特定处理成果和/或渲染意图来选择该特定的渲染引擎模型。

为了说明,媒体处理系统102(或相关联的用户)可以比较与地址相关联的、和/或与它们相应的处理成果和/或渲染意图相关联的渲染引擎模型。然后媒体处理系统102(或相关联的用户)可以选择最匹配或服务于期望的处理成果和/或渲染意图的特定渲染引擎模型。媒体处理系统102可以使用媒体项602中的对应地址来检索所选择的渲染引擎模型,并且如前所述使用所选择的渲染引擎模型来执行相关联的渲染引擎并且处理媒体数据210。

在一些情况下,当媒体项602具有多个地址并且因此提供多个选项时,为了帮助媒体处理系统102(或相关联的用户)选择渲染引擎模型,媒体项602上的每个地址可以包括关于与该地址相关联的相应渲染引擎模型的信息。例如,每个地址可以包括描述、唯一标识符和/或关于它所指向的渲染引擎模型的其他信息。地址中的描述可以包括,例如但不限于,与渲染引擎模型相关联的处理成果、与渲染引擎模型相关联的渲染意图、渲染引擎模型的一个或多个参数、与渲染引擎模型相关联的统计、渲染引擎模型和/或其规范的概要、与渲染引擎模型相关联的评级、关于何时或如何选择或实现渲染引擎模型的建议或推荐、与渲染引擎模型相关联的优点和缺点的列表等。

在一些情况下,地址(例如,604)可以包括这样的信息(例如,描述信息),即使它是媒体项602中的唯一地址。媒体处理系统102(或相关联的用户)可以使用该信息来确定与该地址相关联的渲染引擎模型是否适合特定的实例或者是否符合期望的处理或渲染成果。如果媒体处理系统102(或相关联的用户)确定与该地址相关联的渲染引擎模型是不合适的或不期望的,或者媒体处理系统102(或相关联的用户)想要不同的渲染引擎模型或附加选项,则媒体处理系统102可以如前所述生成不同的渲染引擎模型,或者从远程系统140请求不同的渲染引擎模型。远程系统140可以基于该请求为媒体处理系统102识别或计算不同的渲染引擎模型。例如,远程系统140可以基于来自媒体处理系统102的请求中提供的信息来计算不同的渲染引擎模型。请求中的信息可以包括例如期望的处理成果和/或渲染意图的指示、渲染引擎模型的一个或多个期望的参数或配置细节的指示等。

在一些情况下,媒体处理系统102(或相关联的用户)可以在使用或不使用地址中的描述性信息的情况下以不同的方式选择渲染引擎模型。例如,为了在与媒体项602中的多个地址相关联的渲染引擎模型之间进行选择,媒体项602可以与远程系统140通信以请求或检索关于渲染引擎模型的信息,例如渲染引擎模型的相应处理成果和/或渲染意图的描述、渲染引擎模型的相应规范的描述、与渲染引擎模型相关联的统计、相关联的排名等。在另一个示例中,媒体处理系统102可以向远程系统140发送包含描述期望的渲染引擎模型的参数或属性(例如,处理成果、渲染意图、配置参数等)的询问。远程系统140可以接收询问,并且使用参数或属性来识别、建议或计算渲染引擎模型。

图7示出了用于训练神经网络410以识别神经网络410的优化配置的示例流程700。从训练推导的优化配置可用于创建描述具有优化配置的神经网络410的渲染引擎模型。神经网络410的训练可以针对各种渲染引擎模型实现场景来执行。例如,神经网络410的训练可以用于训练和调谐由远程系统140向客户端提供的渲染引擎和相关的渲染引擎模型,如图6中所示。

作为另一个示例,神经网络410的训练可以用于其中数据捕获设备(例如,112、114、152、154)不仅适应于捕获媒体数据(例如,210),而且还适应于为媒体数据提供具有用于媒体数据的一个或多个渲染引擎模型的情况,如图2B所示。为了说明,在知道数据捕获设备112的能力和由数据捕获设备112捕获的媒体数据的特性的情况下,数据捕获设备112的制造商可以设计适于渲染由数据捕获设备112捕获的媒体数据的渲染引擎模型,数据捕获设备112可以向该渲染引擎模型提供其捕获的媒体数据。渲染引擎模型可以由制造商预先配置,并且可以描述渲染引擎(例如,神经网络),其已经如流程700中所述进行了训练和调谐。与渲染引擎模型相关联的渲染引擎可以针对数据捕获设备112的能力和/或其产生的媒体数据的特性来专门定做。

回到流程700,媒体数据样本702可以用作神经网络410的训练输入。媒体数据样本702可以包括图像、视频和/或音频数据的n个样本,其中n是大于或等于1的整数。在一些示例中,媒体数据样本702可以包括由一个或多个数据捕获设备捕获的原始图像或帧(例如,图像和/或视频帧)。

媒体数据样本702可用于训练神经网络410以实现特定的处理成果和/或渲染意图。目标可以是找到最佳调谐和配置参数(例如,权重、偏差等),以实现特定的处理成果和/或渲染意图。

首先基于神经网络410中节点408A-C的现有权重或者节点408A-C之间的互联,通过神经网络410(例如,经由输入层402、隐藏层404和输出层406)来对媒体数据样本702进行处理。然后神经网络410经由输出层406输出为媒体数据样本702生成的渲染输出704。来自神经网络410的渲染输出704被提供给为神经网络410生成反馈708的损失函数706,例如均方误差(MSE)函数或任何其他损失函数。反馈708提供渲染输出704中的成本或误差(例如,均方误差)。在一些情况下,成本或误差相对于目标或理想输出,例如媒体数据样本702的目标渲染输出。

神经网络410可以基于反馈708调整/调谐神经网络410中的节点408A-C的权重或节点408A-C之间的互连。通过基于反馈708调整/调谐权重,神经网络410能够减少渲染神经网络410的输出中的误差(例如,704)和优化神经网络410的性能和输出。该过程可以对每组训练数据(例如,媒体数据样本702)重复一定次数的迭代,直到神经网络410中的权重被调谐到期望的水平。

已经公开了示例系统和概念,如图8所示,本公开现在转向用于提供与媒体项一起的渲染引擎模型的示例方法800。为了清楚起见,方法800是参考图1所示的媒体处理系统102、各种组件以及图4、图5和图7中所示的被配置为执行方法800中各种步骤的神经网络410来描述的。本文概述的步骤是示例,并且可以以其任意组合来实现,包括排除、添加或修改某些步骤的组合。

在步骤802处,媒体处理系统102获得由数据捕获设备捕获(例如,112)捕获的媒体数据(例如,210)。媒体数据可以包括例如原始图像数据、原始视频数据、原始音频数据、元数据等。

在步骤804处,媒体处理系统102将渲染引擎模型(例如,230)嵌入包含媒体数据(例如,210)的媒体项中(例如,220)。渲染引擎模型可以包括被配置为处理媒体项中的媒体数据的神经网络(例如,410)的描述(例如,402),并且生成特定的媒体数据输出(例如,渲染输出310)。渲染引擎模型可以针对捕获媒体数据的条件、媒体数据的特性、解密媒体数据的计算复杂度、向用户提供特定的处理和/或渲染选项或特征等来优化或定制。

描述可以定义神经网络的神经网络架构(例如,400),例如神经网络的结构(例如,层数、每层中的节点数、层的互连等)、由神经网络实现的一组滤波器或操作、由神经网络实现的激活函数、沿着神经网络中互连层的路径实现的参数(例如,权重、偏差等)等等。在一些情况下,神经网络的描述可以定义神经网络中的层如何互连,如何基于媒体数据(例如,输入或数据补丁大小和特性等)形成神经网络的输入以及如何从神经网络(例如,输出大小和特性等)形成输出。

例如,描述可以指示输入是来自媒体数据的128×128的数据补丁,并且神经网络根据媒体数据输出64×64×3的数据补丁,并且组合或平铺64×64×3的输出数据补丁以获得最终输出。此外,在一些情况下,神经网络的描述可以定义神经网络的一个或多个任务,例如用于编码媒体数据、解码媒体数据、压缩或解压缩媒体数据、执行图像处理操作(例如,图像恢复、图像增强、去马赛克、滤波、缩放、颜色校正、颜色转换、降噪、空间滤波、图像渲染等)、执行帧速率转换(例如,上转换、下转换)、执行音频信号修改操作(例如,从窄带音频输入文件产生宽带音频信号)等的一个或多个定制任务。

在步骤806处,媒体处理系统102可以向接收者(例如,计算引擎110、远程系统120、远程系统130、存储设备或其他接收者)提供(例如,发送、存储、输出等)包含媒体数据(例如,210)和渲染引擎模型(例如,230)的媒体项(例如,220)。在一些情况下,接收者可以是媒体处理系统102内的设备或组件。在其他情况下,接收者可以是单独的或外部的设备,例如服务器、存储系统、请求媒体项的客户端设备、媒体处理系统102识别(例如,经由指令或信号)为媒体项的意图接收者的客户端设备等。

媒体项中的渲染引擎模型可以包括指令,该指令用于基于神经网络的描述执行神经网络来处理媒体项(例如,220)中的媒体数据(例如,210)以及生成特定的媒体数据输出(例如,渲染输出310)。指令可以向接收者指示如何基于神经网络的描述来执行神经网络以及如何生成特定的媒体输出。接收者可以接收媒体项,并且使用媒体项中的渲染引擎模型来执行神经网络以处理和渲染媒体项中的媒体数据。神经网络可以使用媒体数据作为输入以生成渲染的媒体数据输出。

在一些情况下,媒体处理系统102可以包括媒体项中的多个渲染引擎模型(例如,230、240)和/或地址(例如,604)。例如,媒体处理系统102可以将附加渲染引擎模型(例如,240)嵌入媒体项中(例如,220)。附加渲染引擎模型可以包括被配置为处理媒体数据(210)和生成不同的媒体数据输出的附加神经网络的附加描述。附加描述可以为附加神经网络定义不同的神经网络架构。基于不同的神经网络层、滤波器、激活函数、参数等,可以针对不同的操作成果定制不同的神经网络架构。媒体处理系统102可以将具有渲染引擎模型和附加渲染引擎模型的媒体项发送给接收者,用于处理和渲染媒体数据。

接收者可以接收媒体项并且选择多个渲染引擎模型之一(例如,渲染引擎模型或附加渲染引擎模型),并且基于所选择的渲染引擎模型,生成与所选择的渲染引擎模型相关联的相应神经网络。然后接收者可以使用该相应的神经网络处理媒体项中的媒体数据,以从该相应的神经网络获得或生成媒体数据输出。

在一些情况下,方法800可以包括生成被配置为处理和渲染原始媒体数据的测试神经网络,并基于媒体数据样本(例如,702)训练该测试神经网络。测试神经网络可以包括测试神经网络架构,其可以包括特定的神经网络结构(例如,层、节点、互连等)、测试滤波器或操作、测试激活函数、测试参数(例如,权重、偏差等)等。测试神经网络的训练可以包括使用测试神经网络处理媒体数据样本,基于与媒体数据样本相关联的一个或多个输出(例如,704)确定测试神经网络的性能、基于测试神经网络的性能确定对测试神经网络(和/或测试神经网络架构)的一个或多个调整(例如,708),以及基于测试神经网络的性能调整测试神经网络(例如,测试神经架构、测试参数、测试滤波器或操作、测试激活函数、测试神经网络中的层等)。

在一些情况下,确定测试神经网络的性能可以包括确定测试神经网络的准确度和/或来自测试神经网络的一个或多个输出中的损失或误差。例如,确定测试神经网络的性能可以包括将损失函数(例如,706)应用到一个或多个输出以产生反馈(例如,708),该反馈可以包括损失或误差计算。反馈可用于识别和做出调整以调谐测试神经网络。

在一些情况下,训练以及一个或多个调整可以用于确定与媒体项(例如,220)中的渲染引擎模型(例如,230)相关联的神经网络架构。例如,通过训练确定的测试神经网络架构和对测试神经网络架构的一个或多个调整可以用于确定特定的神经网络架构和配置,该特定的神经网络架构和配置可以用作包括在媒体项中的渲染引擎模型的基础。

在一些实现方式中,方法800可以包括在媒体项中将地址(例如,604)嵌入到远程渲染引擎模型或远程渲染引擎模型的远程位置。远程渲染引擎模型可以包括被配置为处理媒体数据和生成相应媒体数据输出的神经网络的相应描述。具有地址的媒体项可以被发送给接收者,接收者可以使用该地址从远程位置检索远程渲染引擎模型,并且基于远程渲染引擎模型中的相应描述,生成与远程渲染引擎模型相关联的神经网络,并且使用神经网络处理媒体项中的媒体数据以生成相应的媒体数据输出(例如,媒体数据的渲染)。

在一些示例中,方法800可以由计算设备或装置来执行,例如图9中所示的计算设备或者图1中所示的媒体处理系统102。在一些情况下,计算设备或装置可以包括处理器、微处理器、微型计算机或被配置为执行方法800的步骤的设备的其他组件。在一些示例中,计算设备或装置可以包括被配置为捕获媒体数据(例如音频、图像和/或视频数据(例如,视频帧))的数据捕获设备(例如,112、114、152、154)。例如,计算设备可以包括具有数据捕获设备或系统的移动设备(例如,数码相机、IP相机、包括图像捕获设备的移动电话或平板计算机或具有数据捕获设备的其他类型的系统)。在一些示例中,数据捕获设备可以与计算设备分离,在这种情况下,计算设备接收捕获的媒体数据。

在一些情况下,计算设备可以包括用于显示输出媒体数据(例如渲染的图像、视频和/或音频)的显示器。在一些情况下,计算设备可以包括视频编解码器。计算设备还可以包括网络接口,该网络接口被配置为传送数据,例如图像、音频和/或视频数据。网络接口可以被配置为通信基于互联网协议(IP)的数据或其他合适的网络数据。

方法800被示为逻辑流程图,其步骤表示可以以硬件、计算机指令或其组合来实现的步骤或操作的序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括例程、程序、对象、组件、数据结构等,它们执行特定的功能或实现特定的数据类型。描述操作的顺序不旨在被解释为限制或要求,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合来实现过程。

另外,方法800可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以实现为代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序),通过硬件或其组合在一个或多个处理器上共同执行。如上所述,代码可以(例如,以包括可由一个或多个处理器执行的多个指令的计算机程序的形式)存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。

如上所述,神经网络可以用于渲染媒体数据。可以使用任何合适的神经网络来渲染媒体数据。可以使用的神经网络的说明性示例包括卷积神经网络(CNN)、自动编码器、深度信念网络(DBN)、递归神经网络(RNN)或任何其他合适的神经网络。

在一些示例中,解码或渲染的数据可以从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备访问解码或渲染的数据。存储设备可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器或者用于存储媒体数据的任何其他合适的数字存储介质。在另一示例中,存储设备可以对应于可以存储解码或渲染的数据的文件服务器或另一中间存储设备。设备可以经由流传输或下载从存储设备访问存储的数据。文件服务器可以是能够存储数据并且将该数据发送到目的设备的任何类型的服务器。示例文件服务器包括网络服务器(例如,网站)、FTP服务器、网络连接存储(NAS)设备或本地磁盘驱动器。设备可以通过任何标准数据连接访问数据,包括互联网连接。这可以包括适用于访问存储在服务器上的数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。来自存储设备的数据传输可以是流传输、下载传输或其组合。

本公开的技术可以应用于各种多媒体应用中的任何一种,例如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(例如基于HTTP的动态自适应流传输(DASH))、数据存储介质上的数字视频、存储在数据存储介质上的数字媒体的解码或其他应用。在一些示例中,系统可以被配置为支持单向或双向视频传输,以支持诸如视频流式传输、视频回放、视频广播和/或视频电话的应用。

在前面的描述中,参考本申请的特定实施例描述了本申请的各方面,但是本领域技术人员将认识到本申请不限于此。因此,虽然本文已经详细描述了本申请的说明性实施例,但是应当理解,本发明的概念可以以其他方式不同地实施和使用,并且所附权利要求旨在被解释为包括这样的变化。上述主题的各种特征和方面可以单独或联合使用。此外,在不脱离本说明书的更广泛的精神和范围的情况下,实施例可以在除了本文描述的环境和应用之外的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的,而不是限制性的。为了说明起见,方法是按特定顺序描述的。应当理解,在替代实施例中,这些方法可以以不同于所描述的顺序来执行。

在组件被描述为“被配置为”执行某些操作的情况下,这种配置可以例如通过设计电子电路或其他硬件来执行操作、通过对可编程电子电路(例如,微处理器或其他合适的电子电路)编程来执行操作、或者它们的任意组合来完成。

本领域技术人员将理解,在不脱离本说明书的范围的情况下,本文所使用的小于(“<”)和大于(“>”)符号或术语可以分别被小于或等于(“≦”)和大于或等于(“≧”)代替。

结合本文公开的特征描述的各种说明性逻辑块、模块、电路和算法步骤可以实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,各种说明性的组件、块、模块、电路和步骤已经在上面根据它们的功能进行了一般性的描述。这种功能实现为硬件还是软件取决于特定的应用和对整个系统施加的设计约束。技术人员可以针对每个特定应用以不同的方式实现所描述的功能,但是这种实现决策不应被解释为导致脱离本申请的范围。

本文所述的技术也可以以电子硬件、计算机软件、固件或其任意组合来实现。这种技术可以在多种设备中的任何一种中实现,例如通用计算机、无线通信设备手机或具有多种用途(包括无线通信设备手机和其他设备中的应用)的集成电路设备。描述为模块或组件的任何特征可以在集成逻辑设备中一起实现,或者作为分立但可互操作的逻辑设备单独实现。如果以软件实现,这些技术可以至少部分地通过包括程序代码的计算机可读数据存储介质来实现,该程序代码包括当被执行时执行一个或多个上述方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,其可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,例如随机存取存储器(RAM)(例如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。附加地或替代地,技术可以至少部分地通过计算机可读通信介质来实现,该介质携带或通信指令或数据结构形式的程序代码,并且可以由计算机访问、读取和/或执行,例如传播的信号或波。

程序代码可以由处理器执行,该处理器可以包括一个或多个处理器,例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效的集成或分立逻辑电路。这种处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是可选地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核心的结合、或任何其他这样的配置。因此,如本文所使用的术语“处理器”可以指任何前述结构、前述结构的任何组合或者适合于实现本文所述的技术的任何其他结构或装置。

图9示出了可以实现本文描述的各种技术的计算设备的示例计算系统架构900。例如,计算系统架构900可以由图1所示的媒体处理系统102来实现以执行本文描述的媒体数据处理和渲染技术。计算系统架构900的组件被示为使用诸如总线的连接905彼此电通信。示例计算设备900包括处理单元(CPU或处理器)910和计算设备连接905,计算设备连接905将包括计算设备存储器915(例如只读存储器(ROM)920和随机存取存储器(RAM)925)的各种计算设备组件耦合到处理器910。计算设备900可以包括与处理器910直接连接、非常接近处理器910或集成为处理器910的一部分的高速存储器的高速缓存。计算设备900可以将数据从存储器915和/或存储设备930复制到高速缓存912,以供处理器910快速访问。以此方式,高速缓存可以提供性能提升,其避免处理器910在等待数据时的延迟。这些和其他模块可以控制或被配置为控制处理器910执行各种动作。也可以使用其他计算设备存储器915。存储器915可以包括具有不同性能特性的多种不同类型的存储器。处理器910可以包括任何通用处理器和被配置为控制处理器910以及专用处理器的硬件或软件服务(例如存储在存储设备930中的服务1 932、服务2 934和服务3 936),其中软件指令被结合到处理器设计中。处理器910可以是包含多个核心或处理器、总线、存储器控制器、高速缓存等的独立系统。多核处理器可以是对称的,也可以是非对称的。

为了使用户与计算设备900的交互成为可能,输入设备945可以表示任何数量的输入机制,例如用于语音的麦克风、用于手势或图形输入的触摸敏感屏幕、键盘、鼠标、运动输入、语音等等。输出设备935也可以是本领域技术人员已知的多种输出机制中的一种或多种,例如显示器、投影仪、电视、扬声器设备等。在一些情况下,多模式计算设备可以使用户能够提供多种类型的输入来与计算设备900通信。通信接口940通常可以支配和管理用户输入以及计算设备输出。对在任何特定的硬件布置上操作没有限制,因此这里的基本特征可以容易地被开发的改进的硬件或固件布置所替代。

存储设备930是非易失性存储器,并且可以是硬盘或者是可以存储计算机可访问的数据的其他类型的计算机可读介质,例如盒式磁带、闪存卡、固态存储器设备、数字多功能盘、暗盒、随机存取存储器(RAM)925、只读存储器(ROM)920及其混合。

存储设备930可以包括用于控制处理器910的服务932、934、936。其他硬件或软件模块被设想。存储设备930可以连接到计算设备连接905。在一个方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与必要的硬件组件(例如处理器910、连接905、输出设备935等)相关联,以执行该功能。

为了解释清楚,在一些情况下,本技术可以被呈现为包括包括功能块的独立的功能块,这些功能块包括以软件或硬件和软件的组合实现的方法中的设备、设备组件、步骤或例程。

在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当被提到时,非暂时性计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。

根据上述示例的方法可以使用存储在计算机可读介质中或以其他方式可从计算机可读介质获得的计算机可执行指令来实现。这样的指令可以包括例如使得或以其他方式配置通用计算机、专用计算机或处理设备来执行特定功能或功能组的指令和数据。使用的部分计算机资源可以通过网络访问。计算机可执行指令可以是例如二进制文件、中间格式指令,例如汇编语言、固件、源代码等。可用于存储指令、使用的信息和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、网络存储设备等。

实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形状因素中的任何一种。这些形状因素的典型示例包括膝上型计算机、智能手机、小型因素个人计算机、个人数字助理、机架式设备、单独运行的设备等。本文描述的功能也可以体现在外围设备或插卡中。作为另外的示例,这种功能也可以在不同芯片之间的电路板上或者在单个设备中执行的不同过程中实现。

指令、用于传达这些指令的介质、用于执行它们的计算资源以及用于支持这些计算资源的其他结构是用于提供本公开中描述的功能的示例性手段。

尽管使用了各种示例和其他信息来解释所附权利要求范围内的方面,但是基于这些示例中的特定特征或布置,不应暗示对权利要求的限制,因为普通技术人员将能够使用这些示例来推导各种各样的实现方式。此外,尽管一些主题可能已经用特定于结构特征和/或方法步骤的语言进行了描述,但是应当理解,所附权利要求中定义的主题不一定限于这些描述的特征或动作。例如,这样的功能可以不同地分布或者在除了本文所标识的组件之外的组件中执行。相反,所描述的特征和步骤被公开为所附权利要求范围内的组件、计算设备和方法的示例。

叙述“至少一个”集合的权利要求语言指示该集合的一个成员或该集合的多个成员满足该权利要求。例如,叙述“A和B中的至少一个”的权利要求语言是指A、B,或者A和B。

相关技术
  • 用于提供嵌入在媒体项中的包括神经网络描述的渲染引擎模型的方法和装置
  • 用于提供数字电影合成播放列表中的辅助媒体的方法和装置
技术分类

06120113142855