通过渲染许多3D视图来学习重构3D形状的制作方法

文档序号:19583043发布日期:2019-12-31 20:13阅读:178来源:国知局
通过渲染许多3D视图来学习重构3D形状的制作方法



背景技术:

三维(three-dimensional,3d)渲染是从3d对象的数据表示中生成具有景深(depthoffield)的图像(在此被称为视图)的过程。例如,3d对象可以由描述3d对象的外表面的形式的3d形状数据和描述3d对象的外表面的特性的纹理数据来表示。3d渲染使用3d形状和纹理来生成3d对象的视图。该视图可以表示3d对象的特定视点(viewpoint),诸如3d对象的平面图或等距视图,以及3d对象的特定光照,诸如从特定视点的3d对象的背光、侧光或环境光视图。

3d渲染可以由多种系统完成。一个这样的系统是神经网络。神经网络是采用一层或多层来为所接收的输入创建输出(例如分类)机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出作为输入被提供给神经网络中的下一层,即神经网络的下一隐藏层或输出层。神经网络的每个层根据相应参数集的当前值从所接收的输入生成输出。神经网络可以经受训练以提高神经网络输出的准确性。



技术实现要素:

本说明书中描述的主题的创新方面可以具体体现在方法、系统和存储指令的计算机可读设备中,所述指令被配置为执行以下动作:从对象识别引擎获得说明(specify)从对象的图像导出的第一图像特征的数据;将第一图像特征提供给三维估计器神经网络;从三维估计器神经网络获得数据,该数据说明(i)估计的三维形状和(ii)估计的纹理,它们每个都基于第一图像特征;将说明(i)估计的三维形状和(ii)估计的纹理的数据提供给三维渲染引擎;从三维渲染引擎获得说明对象的多个三维视图的数据,每个三维视图基于说明(i)估计的三维形状和(ii)估计的纹理的数据生成;将说明多个三维视图中的每个三维视图的数据提供给对象识别引擎;从对象识别引擎并且针对由该数据说明的多个三维视图中的每个三维视图,获得说明从说明该三维视图的数据导出的第二图像特征的数据;至少基于说明第一图像特征的数据和说明第二图像特征的数据,基于第一损失函数计算第一损失;以及至少基于计算出的第一损失来训练三维估计器神经网络。

这些和其它实施例中的每一个可以可选地包括以下特征中的一个或多个。在各种示例中,对象是人的面部;人的面部图像是基于说明(i)合成的三维形状和(ii)合成的纹理的数据生成的合成图像;特征可以包括至少基于(i)说明合成的三维形状和合成的纹理的数据和(ii)说明估计的三维形状和估计的纹理的数据,基于第二损失函数计算第二损失;以及至少基于计算出的第一损失和计算出的第二损失来训练三维估计器神经网络;基于说明(i)合成的三维形状和(ii)合成的纹理的数据生成人的面部的合成图像包括生成基于(i)合成的三维形状的特定姿势和特定光照以及(ii)合成的纹理的渲染;计算出的第二损失指示(i)基于合成的三维形状和合成的纹理确定的顶点和(ii)基于估计的三维形状和估计的纹理确定的顶点之间的差异实质(substantialityofdifferences)。

这些和其它实施例中的每一个也可以可选地包括以下特征中的一个或多个。在各种示例中,计算出的第一损失指示第一图像特征和第二图像特征之间的差异实质;对象识别引擎是面部识别神经网络;三维渲染引擎是三维渲染神经网络或三维光栅化引擎中的一个;多个三维视图中的每一个是基于不同于其它三维视图中的每一个的姿势和光照的各自的姿势和各自的光照来生成的。

本说明书涉及训练神经网络,并且一个特定的实施方式涉及训练估计对象的三维(3d)形状和纹理的神经网络。更具体地,本说明书描述了一种能够提高被配置为从3d对象的图像生成3d对象的数据表示的3d估计器神经网络的准确性的系统。3d估计器神经网络接收从图像导出的图像特征,并且基于所述图像特征,生成图像中表示的3d对象的3d形状和纹理。3d形状和纹理可以被提供给3d渲染器,以生成图像中描绘的3d对象的视图。由3d渲染器生成的3d对象的视图是计算机生成的图像,其可以表示多个不同的视点以及多个不同的光照角度和强度。

为了提高3d对象的视图的准确性,即,以使得视图更准确地相似于原始图像中的对象,执行对3d估计器神经网络的训练。训练3d估计器神经网络能够改进由3d估计器神经网络生成的、图像中表示的3d对象的3d形状和纹理的准确性,这反过来又能够改进3d渲染,使得它们更相似于原始3d对象。

然而,训练3d估计器神经网络通常有两个困难。第一,由3d对象的图像和那些3d对象的3d形状和纹理组成的训练对(trainingpair)通常是有限的并且难以获得。第二,训练3d估计器神经网络可能经常导致3d估计器神经网络的网络欺骗。当3d估计器神经网络被训练为生成对象的3d形状和纹理,使得该3d形状和纹理的渲染在被对象识别引擎处理时具有与原始图像特征实质上匹配的图像特征,但是在视觉上看起来与原始图像非常不同时,网络欺骗发生。因此,网络欺骗导致这样的经训练的网络:对于一组数据,该经训练的网络输出可接受结果,从人类的视角来看,该可接受结果被认为是异常结果。

本文描述的系统在训练3d估计器神经网络来估计图像中描绘的对象的3d形状和纹理时避免了这些困难。为此,系统能够利用无监督训练回路(unsupervisedtrainingloop),该无监督训练回路使用单个图像(诸如单个照片)来训练3d估计器神经网络,而不是使用3d对象的图像和该3d对象的已知3d形状和纹理的配对(pairing)。为了缓解网络欺骗,无监督训练回路还使用3d渲染器,该3d渲染器被配置为生成由3d估计器神经网络生成的3d形状和纹理的多个视图。估计的3d形状和纹理的多个视图的图像特征和原始图像中描绘的对象的图像特征之间的损失可以用于以无监督方式训练3d估计器神经网络。使用估计的3d形状和纹理的多个视图缓解了网络欺骗,因为基于估计的3d形状和纹理的多个视图训练3d估计器神经网络减少了3d形状和纹理的不良估计仍然能够导致具有与原始图像中的对象的图像特征实质上匹配的图像特征的视图的可能性。

除了无监督训练回路之外,系统还可以使用监督训练回路(supervisedtrainingloop)来避免上述困难。一种类型的监督训练回路可以利用3d渲染器来基于对象的合成的3d形状和纹理来生成对象的合成图像。这个合成图像的图像特征可以由3d估计器神经网络处理,以生成对象的估计的3d形状和纹理。合成的3d形状和纹理与估计的3d形状和纹理之间的损失可以用于以监督方式训练3d估计器神经网络。在另一种类型的监督训练回路中,系统可以计算对象的中性(neutral)图像(例如,正面图像)的像素和通过从中性图像渲染对象的估计的3d形状和纹理而生成的对象的视图的像素之间的损失。

在一个示例中,3d估计器神经网络可以用于估计照片中描绘的面部的3d形状和纹理。照片中描绘的面部的估计的3d形状和纹理可以由3d渲染器渲染,以生成计算机生成的图像,称为替身(avatar),其相似于照片中描绘的面部。为了提高3d估计器神经网络在估计照片中的面部的3d形状和纹理时的准确性,系统可以使用无监督和/或监督训练回路来训练3d估计器神经网络。

本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。从这些描述、附图和权利要求中,主题的其它潜在特征、方面和优点将变得清楚。

附图说明

图1描绘了使用3d估计器神经网络来估计图像中描绘的面部的3d形状和纹理并基于估计的3d形状和纹理生成替身的示例系统。

图2a和图2b描绘了用于训练3d估计器神经网络来估计图像中描绘的对象的3d形状和纹理的示例系统。

图3是使用无监督训练回路训练3d估计器神经网络的示例过程的流程图。

图4是使用监督训练回路训练3d估计器神经网络的示例过程的流程图。

不同附图中相同的参考标号表示相同的元素。

具体实施方式

图1描绘了使用3d估计器神经网络来估计图像中描绘的面部的3d形状和纹理并基于估计的3d形状和纹理生成替身的示例系统100。如图1所示,用户可以向系统100提交包括面部的图像的照片105,并且系统100可以基于对照片105进行处理来生成替身115。替身115是从与照片105中的视角不同的视角对照片105中的面部的估计。为了生成替身115,系统100使用面部识别引擎110、3d估计器神经网络120和3d渲染引擎130来处理照片105。

具体地,当用户向系统100提交照片105时,照片105首先由面部识别引擎110处理。面部识别引擎110被配置成生成对应于照片105中描绘的用户面部的图像特征112。在一些实施方式中,面部识别引擎110首先识别照片105中对应于用户面部的部分。在识别到照片105中对应于用户面部的部分之后,面部识别引擎110然后可以生成对应于照片105中描绘的用户面部的图像特征。在一些实施方式中,如图1所示,图像特征112可以被表示为图像特征的向量。

在获得对应于照片105中描绘的用户面部的图像特征112之后,系统100将图像特征112发送到3d估计器神经网络120。3d估计器神经网络120负责基于图像特征112估计照片105中描绘的用户面部的3d形状和纹理。3d估计器神经网络112处理从面部识别引擎110接收的图像特征112,以生成说明照片105中描绘的用户面部的估计的3d形状和估计的纹理的数据122。

在获得说明照片105中描绘的用户面部的估计的3d形状和纹理的数据122之后,系统100然后将说明估计的3d形状和纹理的数据122发送到3d渲染引擎130。3d渲染引擎130被配置为基于说明估计的3d形状和纹理的数据122来生成对应于照片105中描绘的用户面部的替身115。替身115可以对应于3d渲染引擎130基于说明估计的3d形状和纹理的数据122生成的特定视图。3d渲染引擎130输出的特定视图可以是针对给定相机角度、光照或视场的估计的3d形状和纹理的渲染。

在一些实施方式中,3d渲染引擎130可以基于数据122生成多个视图,使得系统100生成替身115的多个版本。3d渲染引擎130可以输出多个视图中的一个或多个作为替身115,例如,以提供对应于照片105中描绘的用户面部的多个替身115。对应于单个用户面部的多个替身115可以在许多应用(包括虚拟现实(virtualreality,vr)、计算机生成的卡通等)中有用。

图2a描绘了用于训练3d估计器神经网络220(诸如图1的3d估计器神经网络120)以便以提高的准确性来估计图像中描绘的对象的3d形状和纹理的示例系统200。在一些实施方式中,示例系统200被配置为执行两种类型的训练回路,以训练3d估计器神经网络220来估计对象的3d形状和纹理:无监督训练回路(步骤(a)至(f))和监督训练回路(步骤(g’)至(k’))。在图2a中,使用实线和实线箭头描绘无监督训练回路,而使用虚线和虚线箭头描绘监督训练回路。

在一些实施方式中,3d估计器神经网络220的训练遵循两个一般阶段,即预训练阶段和完全训练阶段。在预训练阶段期间,监督训练回路与无监督训练回路结合执行。在完全训练阶段期间,仅利用无监督训练回路。在预训练阶段期间使用监督训练回路可以引导(bootstrap)3d估计器神经网络220的训练,从而允许3d估计器神经网络220的输出更快地收敛,即,使用比仅使用无监督回路所需的更少的训练回路迭代和更小的样本大小(size)。在预训练之后,完全训练可以对大量迭代和大量样本单独利用无监督训练回路,来改进3d估计器神经网络220估计图像中的对象的3d形状和纹理的能力。

因为无监督训练回路可以在预训练阶段和完全训练阶段两者期间使用,所以对图2a的系统200的讨论从无监督训练回路开始。一般地,无监督训练回路由对象识别引擎210、3d估计器神经网络220、3d渲染引擎230和图像特征损失计算引擎240来执行。无监督训练回路使用原本(organic)图像(即尚未被合成生成的图像,诸如图1的用户的照片105)来执行训练。

在无监督训练回路的步骤(a)处,图像储存库215将图像205提供给对象识别引擎210进行处理。图像储存库215可以例如通过一个或多个本地有线或无线连接被包括在系统200中,或者可以远离系统200并且通过一个或多个有线或无线连接(例如,局域网(localareanetwork,lan)或广域网(wideareanetwork,wan)连接)与系统200通信。图像储存库215可以是例如本地存储在系统200处的数据库,或者托管在远离系统200的服务器处的数据库。

在无监督训练回路中使用的来自图像储存库215的图像205可以是能够被对象识别引擎210处理的任何格式和大小的任何图像。例如,对象识别引擎210可以被配置为处理使用jpeg、tiff、gif、bmp或png文件格式标准或任何其它光栅或矢量文件格式的图像。

对象识别引擎210接收图像205,并处理图像205以生成图像特征。在一些实施方式中,由对象识别引擎210生成的图像特征可以表示为特征向量,即,可以表示为表示图像的数字特征的n维向量。例如,对象识别引擎210可以检测图像205中的对象,并且可以生成特征向量,在所述特征向量中,向量中的特征值对应于图像205中的对象的像素。从图像205生成图像特征向量使得3d估计器神经网络220能够估计图像205中描绘的对象的3d形状和纹理。

在一些实施方式中,对象识别引擎210可以是面部识别神经网络,诸如由谷歌有限责任公司(googlellc)生产的facenet。也可以使用其它面部识别神经网络。在示例实施方式中,对象识别引擎210是被配置为接收图像并产生包含对应于在图像中检测到的面部的身份特征的1024-d特征向量的面部识别神经网络。在其它实施方式中,对象识别引擎210可以使用不依赖于神经网络的其它特征提取技术和算法(诸如主成分分析、边缘检测、霍夫变换或其它算法)来生成图像特征。

在步骤(b)处,对象识别引擎210将生成的图像特征发送到3d估计器神经网络220和图像特征损失计算引擎240两者。向图像特征损失计算引擎240提供图像特征使得图像特征损失计算引擎240能够稍后计算在训练3d估计器神经网络220中使用的损失,而向3d估计器神经网络220提供图像特征使得3d估计器神经网络220能够估计与在图像205中检测到的对象相对应的3d形状和纹理。

3d估计器神经网络220接收对应于图像205中的对象的图像特征作为3d估计器神经网络220的激活层的输入,并且生成对应于图像特征的估计的3d形状和估计的纹理。3d估计器神经网络220可以是被配置为基于图像特征来估计3d形状和纹理的任何人工神经网络,诸如深度卷积神经网络。其它类型的人工神经网络也可以用于3d估计器神经网络,只要神经网络被配置为接收图像或从图像导出的特征作为输入,并且产生可渲染以生成3d形状的输出,即使这样做需要在由神经网络进行处理之后进行变换。例如,输出任何3d可变形(morphable)模型坐标(例如,坐标、体素、点云、变形操作或具有固定或可变拓扑的3d多边形网格的200-d向量)的神经网络可以用作3d估计器神经网络220。

例如,3d估计器神经网络220可以接收对应于图像205中描绘的对象的图像特征向量作为输入,并且可以基于图像特征向量生成估计的3d形状和估计的纹理。对于对象是面部的实例,估计的3d形状可以表示为可变形面部的200-d向量。例如,图像205中描绘的面部的最佳拟合的200个参数可以基于按像素的比较来识别,使得3d估计器神经网络220生成估计面部的3d形状的200-d向量和估计面部的纹理的200-d向量。面部的3d形状和纹理中的每一个通过单独的主成分分析(principalcomponentanalysis,pca)分解生成,使得表示3d形状的200-d向量定义3d形状空间中的点,而定义对应于面部纹理的顶点颜色的200-d向量定义形状空间中的点。在一些示例中,面部的3d形状和纹理可以使用定义3d形状和纹理两者的400-d向量来表示。

在其它实施方式中,图像205中描绘的面部的3d形状和纹理可以被估计为224×224像素几何图像。例如,图像特征向量可用于在规则采样的2维(2d)网格(即图像,称为像素几何图像)上生成3d形状和纹理的参数化。因此,第一224×224×3像素几何图像可以提供定义面部的3维(xyz)坐标形状的形状偏移,而第二224×224×像素几何图像可以提供定义面部的3色(红-绿-蓝或“rgb”)纹理的颜色偏移。在一些示例中,面部的xyz坐标形状和面部的rgb纹理两者都可以在单个224×224×6像素几何图像中表示。3d形状和纹理的其它可能表示也可以由3d估计器神经网络220输出。

在步骤(c)处,3d估计器神经网络220向3d渲染引擎230提供图像205中描绘的对象的估计的3d形状和纹理。3d渲染引擎230可以是标准的渲染器或可微(differentiable)渲染器,其被配置为基于单个3d形状和纹理产生多个不同的渲染。在一些实施方式中,通过以更高的效率和简便性生成单个3d形状和纹理的多个渲染,可微渲染器的使用可以提供优势。多个渲染中的每一个对应于估计的3d形状和纹理的特定视图,例如,不同的相机位置、光照或相机视场。这样,3d渲染引擎230生成多个不同的图像,每个图像对应于相同的估计的3d形状和纹理的不同视图。

在一些实施方式中,3d渲染引擎230可以利用光栅化将估计的3d形状和纹理转换成图像205中描绘的对象的合成的2d图像。在其它实施方式中,3d渲染引擎230可以利用线框渲染、基于多边形的渲染、扫描线渲染、光线跟踪、辐射度或任何其它3d渲染技术。在一些实施方式中,3d渲染引擎230可以是神经网络,使得3d渲染引擎230从3d估计器神经网络220接收估计的3d形状和纹理作为神经网络的输入,并且通过神经网络的层处理该输入来生成估计的3d形状和纹理的多个视图。可以在3d渲染引擎230处采用任何其它技术,只要3d渲染引擎230输出的3d渲染能够被反向传播到对象识别引擎210进行处理。例如,3d渲染可以是jpeg、tiff、gif、bmp、png或其它光栅或矢量文件格式。

在步骤(d)处,3d渲染引擎230将多个3d渲染发送到对象识别引擎210。使用多个3d渲染倾向于减少或消除训练期间的网络欺骗。对象识别引擎210接收多个3d渲染,并生成对应于多个3d渲染的估计的图像特征。具体地,对象识别引擎210使用与在步骤(a)处使用的技术相同的技术来生成与基于图像205中描绘的对象的估计的3d形状和纹理生成的多个3d渲染中的每一个相对应的图像特征。因此,在一些实施方式中,对象识别引擎210可以生成与由3d渲染引擎230生成的多个3d渲染中的每一个相对应的图像特征向量。

虽然在图2a中描绘为仅包括单个对象识别引擎210,但是在一些实施方式中,系统200可以包括多个对象识别引擎210。在这样的实施方式中,3d渲染引擎230可以将多个3d渲染发送到与在步骤(a)处接收图像205的对象识别引擎210不同的对象识别引擎210。在这样的实施方式中,对象识别引擎210中的每一个可以使用相同的处理方法来处理图像,即图像205和由3d渲染引擎230生成的多个3d渲染,以允许恰当的图像特征比较和损失计算。

在步骤(e)处,对象识别引擎将估计的图像特征发送到图像特征损失计算引擎240。图像特征损失计算引擎240将损失函数应用于估计的图像特征和在无监督训练回路的步骤(b)处接收的图像特征,以确定由3d估计器神经网络220执行的估计引起的损失。损失函数确定在步骤(a)处由对象识别引擎210生成的在图像205中描绘的对象的图像特征和由对象识别引擎210生成的在多个3d渲染中的每一个中描绘的对象的图像特征之间的偏差。在一些实施方式中,作为3d估计器神经网络220估计图像205中描绘的对象的3d形状和纹理的结果,损失函数可以将偏差表示为图像205中描绘的对象的图像特征的准确性的损失。

在已经计算了损失之后,在步骤(f)处,损失被用于进一步优化3d估计器神经网络220,以完成无监督训练回路。例如,计算出的损失可以用于对3d估计器神经网络220的层执行参数优化。可以对来自图像储存库215的多个图像重复无监督训练回路,以迭代地优化3d估计器神经网络220。参数优化使得3d估计器神经网络220能够更准确地估计图像中描绘的对象的3d形状和纹理。随着时间的推移并通过训练回路的迭代进行足够的训练,3d估计器神经网络220可以改进,使得在步骤(e)处由对象识别引擎210提供给图像特征损失计算引擎240的图像特征收敛到在步骤(b)处由对象识别引擎210提供给图像特征损失计算引擎240的图像特征。

在一些实施方式中,如上所述,系统200可以在进行了利用监督训练回路和无监督训练回路两者的预训练阶段之后,单独使用无监督训练回路来训练3d估计器神经网络220。在这样的预训练阶段期间,如图2a所示,合成生成的3d形状和纹理被渲染以生成合成图像。系统200在无监督训练回路中使用合成图像,正如它将使用来自上述图像储存库215的图像205一样。此外,该合成图像被用于监督训练回路中,以进一步训练3d估计器神经网络220。这样,预训练阶段有效地允许基于两种分析(即无监督训练回路和监督训练回路)的对3d估计器神经网络220的优化。相反地,在完全训练阶段期间,系统200可以仅使用无监督训练回路来训练3d估计器神经网络220。

在监督训练回路的步骤(g’)处,合成的3d形状和纹理被提供给形状和纹理损失计算引擎260和3d渲染引擎270。如下所述,除了由图像特征损失计算引擎240计算出的损失之外,形状和纹理损失计算引擎260利用合成的3d形状和纹理来计算第二损失,其用于优化3d估计器神经网络220。合成的3d形状和纹理也被提供给3d渲染引擎270,其中合成的3d形状和纹理被渲染以生成用于训练3d估计器神经网络220的图像。

合成的3d形状和纹理从3d形状和纹理储存库255被提供给形状和纹理损失计算引擎260和3d渲染引擎270。3d形状和纹理储存库255存储对应于多个3d形状和纹理模型的数据,每个模型说明描述特定对象的3d形状和纹理。在一些示例中,3d形状和纹理储存库255包括特定类型对象的多个示例,以允许3d估计器神经网络220在同一对象的多个不同示例上进行训练。例如,3d形状和纹理储存库255可以包括多个模型,例如,多个200-d向量、224×224像素几何图像或其它表示,其中每个模型表示人的面部。使用多个面部训练3d估计器神经网络220可以改进3d估计器神经网络220估计图像中描绘的面部的3d形状和纹理的能力。

如同图像储存库215一样,3d形状和纹理储存库255可以例如通过一个或多个本地有线或无线连接而包括在系统200中,或者可以远离系统200并且通过一个或多个有线或无线网络连接(例如,lan或wan连接)与系统200通信。3d形状和纹理储存库255可以是例如本地存储在系统200处的数据库,或者托管在远离系统200的服务器处的数据库。

在一些实施方式中,3d形状和纹理储存库255可以包括被配置为随机生成可用于生成合成图像的合成的3d形状或合成的纹理的引擎。例如,3d形状和纹理储存库255可以具有对象的形状的连续分布,例如人的面部的3d形状的参数的连续分布。为了生成对象的合成的3d形状和纹理,3d形状和纹理储存库255可以从与对象的3d形状或纹理相对应的连续分布中随机选择。

3d渲染引擎270接收合成的3d形状和纹理,并渲染3d形状和纹理以生成合成图像。合成图像是合成的3d形状和纹理的视图,即对应于特定相机位置、光照和相机视场的视图。

在一些实施方式中,系统200仅包括单个3d渲染引擎,使得3d渲染引擎230和3d渲染引擎270是同一个。在其它实施方式中,如图2a所示,系统200可以包括多个3d渲染引擎。像3d渲染引擎230一样,3d渲染引擎270可以是标准的渲染器或可微渲染器,特别是因为在监督训练回路中仅需要基于3d形状和纹理的渲染的单个合成图像。然而,3d渲染引擎270是可微渲染器可能是有利的,因为这将使得系统200能够基于单个3d形状和纹理更有效地产生多个不同的合成图像,即,每一个都对应于相同的合成的3d形状和纹理的不同的相机位置、光照或相机视场的多个图像。相同的3d形状和纹理的多个合成图像中的每一个可以用于监督训练回路的迭代中,以训练3d估计器神经网络220。另外,可微渲染器的使用可以使得能够计算合成的3d形状和纹理与其渲染之间的损失,该损失可以用于训练可用于(即,在3d形状和纹理储存库255处)对合成的3d形状和纹理的选择的神经网络。

如同3d渲染引擎230一样,3d渲染引擎270可以利用光栅化、线框渲染、基于多边形的渲染、扫描线渲染、光线跟踪、辐射度或任何其它3d渲染技术来从合成的3d形状和纹理生成合成图像。然而,由3d渲染引擎270生成的合成图像应当能够由被配置为从合成图像生成图像特征的对象识别引擎(诸如对象识别引擎210)进行处理。因此,合成的3d形状和纹理的渲染应当具有能够被对象识别引擎处理的格式,例如jpeg、tiff、gif、bmp、png或其它光栅或矢量文件格式。

在步骤(h’)处,3d渲染引擎270将合成图像提供给对象识别引擎210进行处理。对象识别引擎210接收合成图像,并且如同无监督训练回路中的图像205一样,处理合成图像以生成图像特征。合成图像的图像特征表示可以与在无监督训练回路中使用的类型相同,例如,使得对象识别引擎210生成合成图像的图像特征向量,以训练3d估计器神经网络220基于单个类型的图像特征(即,图像特征向量)来估计3d形状和纹理。

此外,系统200可以同时执行无监督训练回路和监督训练回路,使得无监督训练回路使用合成图像而不是来自图像储存库215的图像。因此,在系统200将单个对象识别引擎210用于无监督训练回路的步骤(a)和监督训练回路的步骤(h’)的情况下,在监督训练回路中使用的合成图像的图像特征的相同集合也用于无监督训练回路。然而,在其它实施方式中,无监督训练回路和监督训练回路可以使用不同的对象识别引擎210,例如,使得在预训练阶段期间,系统200可以向两个不同的对象识别引擎210提供合成图像,这两个不同的对象识别引擎210中的每一个生成对应于合成图像的图像特征,或者可以向第一对象识别引擎210提供合成图像并且向第二对象识别引擎210提供图像205。

在步骤(i’)处,对象识别引擎210将对应于合成图像的生成的图像特征发送到3d估计器神经网络220。如在无监督训练回路的步骤(b)处,3d估计器神经网络220接收生成的图像特征,并基于所述图像特征生成对象的估计的3d形状和估计的纹理。例如,3d估计器神经网络220可以接收由对象识别引擎210生成的对应于合成图像中描绘的对象的图像特征向量。3d估计器神经网络220可以使用所述图像特征向量作为输入,并且输出对应于合成图像中描绘的对象的估计的3d形状和纹理。

在步骤(j’)处,3d估计器神经网络220向形状和纹理损失计算引擎260提供与合成图像中描绘的对象相对应的估计的3d形状和纹理。形状和纹理损失计算引擎260将损失函数应用于从3d估计器神经网络220接收的估计的3d形状和纹理以及应用于在步骤(g’)处从3d形状和纹理储存库255接收的合成的3d形状和纹理。损失函数确定合成的3d形状和纹理与3d估计器神经网络220生成的估计的3d形状和纹理之间的偏差。在一些实施方式中,损失函数可以将偏差表示为由3d估计器神经网络220执行的估计导致的3d形状和纹理的准确性损失。例如,形状和纹理损失计算引擎260可以应用损失函数,该损失函数评估合成的3d形状和纹理的顶点与估计的3d形状和纹理的顶点之间的偏差。

在步骤(k’)处,由形状和纹理损失计算引擎260计算出的损失被用于进一步优化3d估计器神经网络220,以完成监督训练回路。例如,由形状和纹理损失计算引擎260计算出的损失可以用于优化3d估计器神经网络220的层的参数。系统200可以执行监督训练回路的多次迭代,以进一步优化3d估计器神经网络220。3d估计器神经网络220的进一步优化可以改进3d估计器神经网络220,使得由3d估计器神经网络220生成的估计的3d形状和纹理收敛到从3d形状和纹理储存库255获得的对应的合成的3d形状和纹理。

图2b描绘了用于训练3d估计器神经网络以估计图像中描绘的对象的3d形状和纹理的第二示例系统200。像图2a一样,图2b也描绘了如上所述的无监督训练回路(步骤(a)至(f))。此外,图2b描绘了系统200在3d估计器神经网络的训练中可以采用的第二监督训练回路(步骤(l’)至(r’))。虽然图2a的监督训练回路基于分析估计的3d形状和纹理相对于合成的3d形状和纹理的偏差的损失函数来训练3d估计器神经网络220,但是图2b的监督训练回路基于分析对应于中性图像的像素相对于对应于3d渲染图像的像素的偏差的损失函数来训练3d估计器神经网络220,该3d渲染图像是基于3d估计器神经网络220估计的3d形状和纹理生成的。

在一些实施方式中,可以使用图2b的监督训练回路来代替图2a的监督训练回路,或者将图2b的监督训练回路与图2a的监督训练回路相结合使用。例如,预训练阶段可以基于无监督训练回路、图2a的监督训练回路和图2b的监督训练回路来训练3d估计器神经网络220。在其它实施方式中,预训练阶段可以仅利用无监督训练回路和图2b的监督训练回路来训练3d估计器神经网络220。

在图2b的步骤(l’)处,中性图像被提供给对象识别引擎210和像素识别引擎290。对象识别引擎210和像素识别引擎290可以从中性图像储存库295接收中性图像。中性图像储存库295可以例如通过一个或多个本地有线或无线连接包括在系统200中,或者可以远离系统200并且通过一个或多个有线或无线连接(例如lan或wan连接)与系统200通信。中性图像储存库295可以是例如本地存储在系统200处的数据库,或者托管在远离系统200的服务器处的数据库。

如本文所引用的,中性图像是具有对象的预定相机角度、光照或相机视场的图像。在一些示例中,中性图像也可以指描绘处于中性或预定位置或者具有中性或预定表情的对象的图像。例如,中性图像储存库295可以包括正面、中性表情面部的多个图像。中性面部图像中的每一个可以使用相同的光照或相机视场。虽然不同对象的中性图像可以具有不同的公共特性,但是通常,特定对象的中性图像将是具有相同特性集合的图像。例如,建筑物的中性图像的每一个可以是等距图像(即,在相同的特定光照和相机视场下从相同的特定相机角度拍摄的),而狗的中性图像中的每一个可以从侧面或侧视图以中性站立位置示出狗。中性图像储存库295中的中性图像可以是能够被对象识别引擎210和像素识别引擎290处理的任何格式或大小。例如,中性图像可以使用jpeg、tiff、gif、bmp、png或任何其它光栅或矢量文件格式。

对象识别引擎210接收中性图像,并以与对象识别引擎210处理图像205相同的方式处理中性图像,以生成图像特征。中性图像中描绘的对象的图像特征表示可以与无监督训练回路中使用的图像特征表示(例如,图像特征向量)相同。

在一些实施方式中,系统200可以同时执行无监督训练回路和图2b的监督训练回路,使得无监督训练回路使用来自中性图像储存库295的中性图像,而不是来自图像储存库215的图像。因此,系统200可以使用单个对象识别引擎210来执行图2b的无监督训练回路和监督训练回路两者,即,对于图2b的无监督训练回路的步骤(a)和监督训练回路的步骤(h’)。在其它实施方式中,图2b的无监督训练回路和监督训练回路可以使用不同的对象识别引擎210,例如,使得在预训练阶段期间,系统200可以向两个不同的对象识别引擎210提供中性图像,这两个不同的对象识别引擎210中的每一个生成对应于中性图像的图像特征,或者可以向第一对象识别引擎210提供中性图像并且向第二对象识别引擎210提供图像205。

像素识别引擎290还从中性图像储存库295接收中性图像,并将中性图像转换成像素。例如,如果中性图像具有不利用像素图表示的格式,或者具有不能够被像素损失计算引擎280处理的大小或维度,则像素识别引擎290可以处理中性图像以生成满足像素损失计算引擎280的要求的中性图像的像素图或像素表示。

在步骤(m’)处,像素识别引擎290将对应于中性图像的图像像素提供给像素损失计算引擎280。像素损失计算引擎280可以接收图像像素,并且可以稍后使用图像像素来计算由于3d估计器神经网络220的3d形状和纹理估计而导致的像素准确性的损失,如下所述。

在步骤(n’)处,对象识别引擎210将对应于中性图像中描绘的对象的生成的图像特征发送到3d估计器神经网络220。如在无监督训练回路的步骤(b)处,3d估计器神经网络220接收对应于中性图像中描绘的对象的生成的图像特征,并且基于所述图像特征来估计对象的3d形状和纹理。例如,3d估计器神经网络220可以接收对应于中性图像中描绘的对象的图像特征向量,并且使用图像特征向量作为输入,可以生成对象的估计的3d形状和估计的纹理。

在步骤(o’)处,3d估计器神经网络220将中性图像中描绘的对象的估计的3d形状和纹理发送到3d渲染引擎230。3d渲染引擎230基于由3d估计器神经网络220生成的估计的3d形状和纹理生成中性图像中描绘的对象的3d渲染。3d渲染引擎230可以使用与针对无监督训练回路的步骤(c)描述的技术相同的技术来生成中性图像中描绘的对象的3d渲染,例如,通过执行光栅化、线框渲染、基于多边形的渲染、扫描线渲染、光线跟踪、辐射度或另一种3d渲染技术。

在一些实施方式中,如图2b所示,系统200包括单个3d渲染引擎230,该引擎是可微渲染器,被配置为产生中性图像中描绘的对象的估计的3d形状和纹理的多个不同渲染。在这样的实施方式中,中性图像中描绘的对象的多个3d渲染可用于无监督训练回路,以训练3d估计器神经网络220,如在无监督训练回路的步骤(c)处一样。在其它实施方式中,系统200可以包括多个3d渲染引擎230。例如,第一可微3d渲染引擎230可用于生成中性图像中描绘的对象或图像205中描绘的对象的估计的3d形状和纹理的多个3d渲染,以用于无监督训练回路,而第二3d渲染引擎230用于生成中性图像中描绘的对象的估计的3d形状和纹理的3d渲染,以用于图2b的监督训练回路。在一些实施方式中,第二3d渲染引擎230还可以被配置为执行可微3d渲染,以生成中性图像中描绘的对象的多个3d渲染,该多个3d渲染可以用于根据图2b的监督训练回路来训练3d估计器神经网络220。

在步骤(p’)处,3d渲染引擎230将基于中性图像中描绘的对象的估计的3d形状和纹理生成的3d渲染发送到像素识别引擎290。类似于图2b的监督训练回路的步骤(l’),像素识别引擎290可以生成3d渲染的像素表示,或者可以修改3d渲染的像素表示以匹配像素损失计算引擎280的要求。像素识别引擎290的处理基于中性图像中描绘的对象的估计的3d形状和纹理生成对应于3d渲染引擎230生成的3d渲染的估计的图像像素。在3d渲染引擎230基于估计的3d形状和纹理生成对象的多个3d渲染的情况下,像素识别引擎290可以生成多个像素集合,每个像素集合对应于3d渲染中的一个。

在步骤(q’)处,像素识别引擎290将估计的图像像素发送到像素损失计算引擎280。像素损失计算引擎280将损失函数应用于估计的图像像素并且应用于在监督训练回路的步骤(m’)处接收的对应于中性图像的图像像素。像素损失计算引擎280将损失函数应用于估计的图像像素和中性图像的图像像素,以确定由3d估计器神经网络220对3d形状和纹理的估计引起的损失。损失函数确定在步骤(l’)处由像素识别引擎290生成的中性图像的像素和由像素识别引擎290为3d估计器神经网络220生成的估计的3d形状和纹理的3d渲染生成的像素之间的偏差。在一些实施方式中,损失函数可以将偏差表示为由3d估计器神经网络220对对象的3d形状和纹理的估计导致的中性图像中描绘的对象的像素的准确性损失。

在已经计算了该损失之后,在步骤(r’)处,损失被用于进一步优化3d估计器神经网络220,以完成图2b的监督训练回路。例如,计算出的像素损失可用于对3d估计器神经网络220的层执行参数优化。可以对中性图像储存库295中的多个中性图像重复监督训练回路,以迭代地优化3d估计器神经网络220。可选地,除了图2a的无监督训练回路或监督训练回路的迭代之外,随着图2b的监督训练回路的迭代改进3d估计器神经网络220估计图像中描绘的对象的3d形状和纹理的能力,特定中性图像中描绘的特定对象的图像像素和估计的图像像素将收敛,即,将展示出像素损失的减少。

虽然本文一般针对预训练阶段和完全训练阶段进行讨论,但是其它实施方式可以不同地利用图2a和图2b的无监督训练回路和监督训练回路。例如,在一些实施方式中,可以唯一地使用监督训练回路,使得无监督训练回路不用于训练3d估计器神经网络220。在其它实施方式中,无监督训练回路可以唯一地用于训练3d估计器神经网络220,使得在训练过程中不使用监督训练回路,即,使得仅使用完全训练阶段来训练3d估计器神经网络220。在又一些其它实施方式中,3d估计器神经网络220的训练可以在整个训练过程中使用无监督训练回路和监督训练回路两者,即,使得仅使用预训练阶段来训练3d估计器神经网络220。在又一些其它实施方式中,在3d估计器神经网络220的训练期间,可以颠倒预训练阶段和完全训练阶段,使得只有无监督训练回路用于初始训练3d估计器神经网络220,并且在一段时间之后,无监督训练回路以及所述监督训练回路中的一个或全部两个被用于训练。

图3是使用无监督训练回路训练3d估计器神经网络的示例过程300的流程图。在一些实施方式中,过程300可以由图2a和图2b的系统200或者由另一系统来执行。

系统从对象识别引擎获得说明从对象的图像导出的第一图像特征的数据(302)。例如,图2a的对象识别引擎210可以从图像储存库215接收面部图像。对象识别引擎210可以处理面部图像,以生成对应于图像中描绘的面部的图像特征。在一些实施方式中,图像特征以描述图像中描绘的对象(例如,面部)的图像特征向量来表示。

系统将第一图像特征提供给3d估计器神经网络(304)。例如,对象识别引擎210可以将对应于图像中描绘的面部的图像特征提供给3d估计器神经网络220用于处理。系统从3d估计器神经网络获得说明估计的3d形状和估计的纹理的数据,估计的3d形状和估计的纹理中的每一个都基于第一图像特征(306)。例如,对应于图像中描绘的面部的图像特征向量可以被提供作为3d估计器神经网络220的输入。3d估计器神经网络220可以处理图像特征,例如描述图像中描绘的面部的图像特征向量,以产生图像中描绘的面部的估计的3d形状和估计的纹理。说明3d形状和纹理的数据可以是例如200-d向量或224×224像素几何图像的形式。

系统将说明估计的3d形状和估计的纹理的数据提供给3d渲染引擎(308)。例如,3d估计器神经网络220可以将说明表示图像中描绘的面部的估计的3d形状和纹理的200-d向量或224×224像素几何图像的数据提供给3d渲染引擎230。系统从3d渲染引擎获得说明对象的多个3d视图的数据,每个3d视图基于说明估计的3d形状和估计的纹理的数据生成(310)。例如,3d渲染引擎230可以生成多个图像,每个图像具有不同的视图,即不同的相机视图、光照或相机视场。因此,图像中的每一个可以是图像中描绘的面部的估计的不同视图,每个视图基于估计的3d形状和纹理生成。

系统将说明多个3d视图中的每一个的数据提供给对象识别引擎(312)。例如,3d渲染引擎230可以将基于图像中描绘的面部的估计的3d形状和纹理生成的生成图像发送到对象识别引擎210。系统从对象识别引擎并针对由数据说明的多个3d视图中的每一个获得说明从说明3d视图的数据导出的第二图像特征的数据(314)。例如,3d对象识别引擎210可以处理由3d渲染引擎230生成的图像,以生成对应于那些图像中描绘的面部的图像特征。对象识别引擎210可以为3d渲染引擎230生成的面部的每个视图生成说明对应于面部的图像特征向量的数据。

系统至少基于说明第一图像特征的数据和说明第二图像特征的数据,基于第一损失函数计算第一损失(316)。例如,对象识别引擎210可以向图像特征损失计算引擎240提供与由3d渲染引擎230生成的3d渲染相对应的图像特征向量。对象识别引擎210还可以向图像特征损失计算引擎240提供为面部的原始图像生成的图像特征。图像特征损失计算引擎240可以将损失函数应用于图像特征,以确定为面部的原始图像生成的图像特征和为基于估计的3d形状和纹理生成的面部的视图中的每一个生成的图像特征之间的偏差。将损失函数应用于图像特征可以生成指示用于面部的原始图像的图像特征和用于基于估计的3d形状和纹理生成的面部的视图的图像特征之间的偏差的损失。

系统至少基于计算出的第一损失训练3d估计器神经网络(320)。例如,在一些实施方式中,通过调整3d估计器神经网络220的层的参数,诸如激活函数系数,系统200可以基于由图像特征损失计算引擎240生成的损失来训练3d估计器神经网络220。系统200可以执行过程300的多次迭代,以实现3d估计器神经网络220对面部图像的收敛。

图4是使用监督训练回路训练3d估计器神经网络的示例过程400的流程图。在一些实施方式中,过程400可以由图2a的系统200或者由另一系统来执行。

系统获得基于合成的3d形状和纹理的对象的合成图像(402)。例如,3d渲染引擎270可以从3d形状和纹理储存库接收面部的合成的3d形状和纹理,即面部的3d形状和纹理,其是这样创建的,而不是从面部图像导出的。合成的3d形状和纹理可以表示为例如200-d向量或224×224像素几何图像。3d渲染引擎270可以渲染合成的3d形状和纹理以生成合成图像。

系统获得从对象的合成图像导出的第一图像特征(404)。例如,3d渲染引擎270可以向对象识别引擎210提供基于合成的3d形状和纹理生成的面部的合成图像。对象识别引擎210可以处理所述合成图像以生成对应于所述合成图像中描绘的面部的图像特征。对应于所述合成图像中描绘的面部的图像特征可以例如以图像特征向量表示。

系统将第一图像特征提供给3d估计器神经网络(406)。例如,对象识别引擎210可以将对应于合成图像中描绘的面部的图像特征(例如,图像特征向量)提供给3d估计器神经网络220进行处理。系统从3d估计器神经网络获得说明估计的3d形状和估计的纹理的数据,所述估计的3d形状和估计的纹理中的每一个都基于第一图像特征(408)。例如,3d估计器神经网络220可以使用对应于合成图像中描绘的面部的图像特征向量作为输入。基于该输入,3d估计器神经网络220可以生成说明合成图像中描绘的面部的估计的3d形状和估计的纹理的数据。说明估计的3d形状和纹理的数据可以说明例如200-d向量、224×224像素几何图像或估计的3d形状和纹理的另一表示。

系统至少基于合成的3d形状和纹理以及估计的3d形状和估计的纹理,基于第一损失函数计算第一损失(410)。例如,3d估计器神经网络220可以向形状和纹理损失计算引擎260提供对应于合成图像中描绘的面部的估计的3d形状和估计的纹理。形状和纹理损失计算引擎260还可以从3d形状和纹理储存库接收被渲染以生成合成图像的面部的合成的3d形状和纹理。形状和纹理损失计算引擎260可以将损失函数应用于合成的3d形状和纹理以及估计的3d形状和纹理,以确定合成的3d形状和纹理与估计的3d形状和纹理之间的偏差。将损失函数应用于3d形状和纹理可以生成指示面部的估计的3d形状和纹理与面部的合成的3d形状和纹理之间的偏差的损失。

系统至少基于计算出的第一损失来训练3d估计器神经网络(412)。例如,系统200可以基于由形状和纹理损失计算引擎260生成的损失来训练3d估计器神经网络220。在一些实施方式中,基于损失训练3d估计器神经网络220可以包括调整其层的参数,诸如通过调整3d估计器神经网络220的层的系数。系统200可以执行过程400的多次迭代,以实现由3d估计器神经网络220估计面部的3d形状和纹理的收敛。

已经描述了许多实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。例如,可以使用上面所示的各种形式的流程,其中步骤被重新排序、添加或移除。因此,其它实施方式也在所附权利要求的范围内。

对于这里讨论的系统和/或方法可以收集关于用户的个人信息或者可以利用个人信息的实例,可以向用户提供控制程序或特征是否收集个人信息(例如关于用户的社交网络、社交动作或活动、职业、偏好或当前位置的信息)的机会,或者控制系统和/或方法是否和/或如何可以执行与用户更相关的操作的机会。此外,某些数据在其被存储或使用之前可能会以一种或多种方式被匿名化,从而移除个人可识别信息。例如,用户的身份可以被匿名化,从而不能为用户确定个人可识别信息,或者用户的地理位置可以被概括为获得位置信息之处,诸如城市、邮政编码或州级,从而不能确定用户的具体位置。因此,用户可以控制如何收集和使用关于他或她的信息。

虽然前面的实施例主要是参照随安装在用户设备上的应用使用的语音输入的开发或处理来描述的,但是所描述的特征也可以用于机器、其它设备、机器人或其它系统。例如,所描述的系统和方法可以用于改进用户与机器的交互,其中机器具有相关联的计算系统,可以用于开发和实施用于与机器人或具有机器人组件的系统交互的语音动作,可以用于开发和实施用于与电器、娱乐系统或其它设备交互的语音动作,或者可以用于开发和实施用于与车辆或其它运输系统交互的语音动作。

本说明书中描述的实施例和所有功能操作可以在数字电子电路中实施,或者在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实施,或者在它们中的一个或多个的组合中实施。实施例可以被实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、实现机器可读传播信号的物质组合,或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播的信号是人工生成的信号,例如机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器装置。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在位于一个站点或跨多个站点分布并通过通信网络互连的一个计算机或多个计算机上执行。

本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以实施为专用逻辑电路,例如,fpga(fieldprogrammablegatearray,现场可编程门阵列)或asic(applicationspecificintegratedcircuit,专用集成电路)。

举例来说,适于计算机程序的执行的处理器包括通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。

计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者被可操作地耦合以从一个或多个大容量存储设备接收数据或将数据传送到一个或多个大容量存储设备或者两者兼而有之。然而,计算机不需要这样的设备。此外,计算机可以嵌入在另一设备中,例如平板计算机、移动电话、个人数字助理(personaldigitalassistant,pda)、移动音频播放器、全球定位系统(globalpositioningsystem,gps)接收器等,仅举几例。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;和cdrom及dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或结合到专用逻辑电路中。

为了提供与用户的交互,实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备(例如crt(cathoderaytube,阴极射线管)或lcd(liquidcrystaldisplay,液晶显示器)监视器),以及用户可以通过其向计算机提供输入的键盘和指示设备(例如,鼠标或轨迹球)。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。

实施例可以在计算系统中实施,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可以通过其与实施方式交互的图形用户界面或网络浏览器的客户端计算机),或者包括一个或多个这样的后端组件、中间件组件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过在各自的计算机上运行并且彼此之间具有客户端-服务器关系的计算机程序产生的。

虽然本说明书包含许多细节,但这些不应被解释为对本公开或所要求保护的范围的限制,而是对特定于特定实施例的特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开地实施或以任何合适的子组合来实施。此外,尽管以上可能将特征描述为在某些组合中起作用,并且甚至最初是这样要求保护的,但是在一些情况下,所要求保护的组合中的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,尽管在附图中以特定顺序描述了操作,但这不应理解为要求以所示的特定顺序或连续顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应理解为在所有实施例中都要求这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。

在提到html文件的每一个实例中,其它文件类型或格式都可以替换。例如,html文件可以被xml、json、纯文本或其它类型的文件代替。此外,当提到表或哈希表时,可以使用其它数据结构(诸如电子表格、关系数据库或结构化文件)。

因此,已经描述了特定的实施例。其它实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行,并且仍然获得期望的结果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1