首页 / 3D身体模型生成

3D身体模型生成实质审查 发明

技术领域

[0003] 本公开内容涉及3D身体模型的生成及其用于图像驱动的角色动画的用途。

相关背景技术

[0004] 现代用户设备提供允许用户彼此交换消息的消息应用。这种消息应用最近开始在这种通信中并入图形。图形可以包括模仿用户动作的化身或卡通。

具体实施方式

[0018] 下面的描述包括体现本公开内容的说明性实施方式的系统、方法、技术、指令序列和计算机器程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节以提供对各种实施方式的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践实施方式。一般地,公知的指令实例、协议、结构和技术不需要详细示出。
[0019] 人体的网格级表示在计算机图形与计算机视觉之间形成了桥梁,促进了在运动捕获、单目3D重建、人体合成、角色动画和增强现实中的一系列广泛应用。铰接的人体变形可以通过装配建模来捕获,在装配建模中骨骼使模板(网格)形状动画化。当前的模型(例如蒙皮多人线性模型(SMPL))首先通过基于线性的扩展以标准姿势合成模板网格。然后通过从合成网格回归到关节来事后估计骨骼关节。虽然此类系统通常运行良好,但其复杂性使此类系统无法在移动设备和日常应用中实施。此外,由于此类系统的模型对形状和姿势信息进行编码,因此此类系统不容易(尤其是不能实时地)控制和适应新的姿势。
[0020] 本公开内容描述了生成3D身体模型(特别是在模板合成之前设置骨缩放的骨级蒙皮模型)的方法。骨缩放可以在模板合成之前由用户手动指定,或者可以在自动化过程中确定(例如,使用一种或更多种机器学习技术)。具体地,所公开的实施方式提供了改进的系统,该系统通过将骨长度可变性与依赖于其他因素(例如锻炼或饮食习惯)获得的身体特征分离来生成3D模型。所公开的实施方式首先对骨长度驱动的网格可变性进行单独建模,然后将其与特定于身份的更新相结合以表示身体的完整分布。这种分离的表示导致更紧凑的模型,从而能够以低参数计数获得高度准确的重建。所公开的实施方式将网格合成建模为特定于身份的骨长度、特定于姿势的关节角度和特定于身份的表面变化(通过线性混合蒙皮捆绑在一起)的顺序规范。在一个应用中,将骨长度与特定于身份的变化解耦可以用于将装束重新定位到人,例如,通过缩放装配的装束的长度以匹配人的长度,同时保留装束形状的与骨长度无关的部分。
[0021] 以这种方式,应用的实施方式提供了更有效的生成这种3D模型的过程。通过首先对骨骼进行建模,可以在大小上减小所需的输入参数集。输入参数集可以被显着减小为仅包括骨缩放系数和关节角度系数。此外,这些参数的使用对于用户来说可以更直观。通过使骨缩放系数显式可控,可以提供对输出3D身体形状的更直观控制。尽管结合基于人的3D身体描述了所公开的技术,但相同或相似的技术适用于任何其他类型的3D体(例如,动物体或者人体或动物体的各部分)。
[0022] 根据第一方面,本公开内容描述了一种计算机实现的生成3D身体模型的方法,该方法包括:接收多个骨缩放系数,每个骨缩放系数对应于骨骼模型的相应的骨;接收共同限定骨骼模型的姿势的多个关节角度系数;基于所接收的骨缩放系数和所接收的关节角度系数来生成骨骼模型;基于多个骨缩放系数来生成基础表面;通过基础表面的变形来生成身份表面;以及通过将身份表面映射到摆姿势的骨骼模型上来生成3D身体模型。
[0023] 骨骼模型可以基于树状结构图。生成骨骼模型可以包括:递归生成根骨元素和多个叶骨元素。
[0024] 骨骼模型可以定义每个骨元素的静止位置。每个骨元素的静止位置可以由相应元素的平移矢量和模板旋转矩阵表示。
[0025] 骨骼模型可以进一步定义每个骨元素的旋转因子和缩放因子。旋转因子和缩放因子按顺序递归地应用于每个骨元素。
[0026] 多个关节角度系数中的每一个可以被限制在运动学有效的角度范围内。两个骨元素之间的每个关节可以被限制在某些实际自由度上。例如,肘部可以被限制在单个自由度上。每次旋转可以进一步被限制在实际范围内。例如,可以通过将对应的无约束变量映射到运动学有效的角度范围来约束关节角度系数。
[0027] 根据实施方式,可以存在与骨骼模型中的47个自由度对应的总共47个关节角度系数。然而,可以使用具有更多或更少数目的骨元素的其他骨骼模型。因此,其他骨骼模型可以具有更多或更少数目的关节角度系数。
[0028] 以这种方式限制模型(限制关节角度系数的数目)可以使处理更有效。约束可以在模型本身内应用。因此,该方法避免了例如通过对抗性训练方法对所生成的模型的运动学准确性进行事后测试的需要。与运动学可行性的事后检查过程相比,该方法可以类似地改进姿势识别,其中运动学约束的应用提高了识别的准确性。
[0029] 生成基础表面可以包括:生成平均表面,然后基于与骨长度相关的变形对平均表面应用校正。这样,对骨骼进行建模首先简化了生成3D身体模型所需的参数。体型的变化可以在与骨长度相关的变形中自动考虑。通过这种方式,体型和身份身体变化的特征可以被解耦。该方法的实施方式可以由此将许多参数减少到身份特征的水平,身份特征可以被映射为对一般体型表面的修改。
[0030] 在一些实施方式中,线性混合蒙皮过程可以用于将身份表面映射到摆姿势的骨骼模型上。线性混合蒙皮过程可以包括通过以下操作基于骨骼模型的骨元素来映射身份表面上的表面点:相对于骨元素的静止位置绘制表面点,以及基于相应骨元素的摆姿势的位置来传送所绘制的点。可以以这种方式基于骨骼模型的每个骨元素映射身份表面上的表面点,并且针对每个相应映射计算加权因子。
[0031] 在一些实现方式中,3D身体模型生成可以用于角色动画的过程。输入2D图像可以被提供给设备,其中,输入2D图像包括至少一个身体的表示。可以基于输入2D图像的图像处理来确定多个骨缩放系数和多个关节角度系数。例如,在一些实现方式中,深度卷积神经网络可以用于检测图像中是否存在至少一个身体,并且针对检测到的至少一个身体估计多个骨缩放系数和多个关节角度系数。
[0032] 因此可以基于输入2D图像和生成的3D身体模型来生成输出2D图像,其中,输入图像中的身体的表示被3D身体模型的对应2D表示替换或补充。例如,可以用一组骨骼的骨和关节来装配角色。可以基于通过2D图像中描绘的人的模型生成的骨骼信息来调整角色的骨骼装备。在示例中,骨骼装备的一些部件的尺寸可以减小以匹配人的模型的相应骨骼的骨,而其他部件的尺寸保持相同或增大。这样,角色动画可以匹配或对应于图像中描绘的人。例如,如果图像中描绘的人的手臂比角色动画的骨骼装备更长,则可以放大骨骼装备的手臂以使角色动画具有看起来更长的手臂。作为另一示例,如果图像中描绘的人超重或具有大体重量,则可以类似地增大角色动画的尺寸。
[0033] 3D身体模型可以基于从输入2D图像确定的多个骨缩放系数和多个关节角度系数来生成,并且基于输入2D图像投影到2D投影上。得到的2D投影可以被叠加到输入图像中的身体的表示上。
[0034] 当前公开的角色动画的方法可以避免在映射到图像时不真实的形状失真。通过上述体型和身份体型变化的解耦,可以根据检测到的骨大小对角色进行缩放,并且可以针对真实体型使形状相应地变形,而不会影响角色的识别变化。
[0035] 联网计算环境
[0036] 图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息系统100的框图。消息系统100包括客户端设备102的多个实例,每个客户端设备102托管包括消息客户端104和其他外部应用109(例如,第三方应用)的若干应用。每个消息客户端104经由网络112(例如,因特网)通信地耦接至消息客户端104(例如,托管在相应的其他客户端设备
102上)、消息服务器系统108和外部应用服务器110的其他实例。消息客户端104还可以使用应用程序接口(API)与本地托管的第三方应用109通信。
[0037] 消息客户端104能够经由网络112与其他消息客户端104和消息服务器系统108通信并交换数据。在消息客户端104之间以及消息客户端104与消息服务器系统108之间交换的数据包括功能(例如,激活功能的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。
[0038] 消息服务器系统108能够经由网络112向特定消息客户端104提供服务器端功能。虽然消息系统100的某些功能在本文中被描述为由消息客户端104或由消息服务器系统108执行,但是某些功能的在消息客户端104或消息服务器系统108内的定位可以是设计选择。
例如,在技术上优选的是:可以最初将某些技术和功能部署在消息服务器系统108内,但是后面将该技术和功能迁移至客户端设备102具有足够处理能力的消息客户端104。
[0039] 消息服务器系统108支持向消息客户端104提供的各种服务和操作。这样的操作包括向消息客户端104发送数据、从消息客户端104接收数据以及对由消息客户端104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体增强和叠加、消息内容持久性条件、社交网络信息和实况事件信息。通过经由消息客户端104的用户接口(UI)可用的功能来激活和控制消息系统100内的数据交换
[0040] 现在具体地转至消息服务器系统108,应用程序接口(API)服务器116耦接至应用服务器114并向应用服务器114提供编程接口。应用服务器114通信地耦接至数据库服务器120,数据库服务器120便于访问数据库126,该数据库126存储与通过应用服务器114处理的消息相关联的数据。类似地,web服务器128耦接至应用服务器114,并且向应用服务器114提供基于web的接口。为此,web服务器128通过超文本传输协议(HTTP)和若干其他相关协议处理传入的网络请求。
[0041] 应用程序接口(API)服务器116在客户端设备102与应用服务器114之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,应用程序接口(API)服务器116提供一组接口(例如,例程和协议),消息客户端104可以调用或查询该组接口以激活应用服务器114的功能。应用程序接口(API)服务器116显露由应用服务器114支持的各种功能,包括:帐户注册;登录功能;经由应用服务器114将消息从特定消息客户端104发送至另一消息客户端104;将媒体文件(例如,图像或视频)从消息客户端104发送至消息服务器118并用于另一消息客户端104的可能访问;设置媒体数据集合(例如,故事);检索客户端设备102的用户的朋友列表;检索这样的集合;检索消息和内容;在实体图(例如社交图)中添加和删除实体(例如朋友);在社交图中定位朋友;以及打开应用事件(例如,与消息客户端104有关)。
[0042] 应用服务器114托管若干服务器应用和子系统,包括例如消息服务器118、图像处理服务器122以及社交网络服务器124。消息服务器118实现了若干消息处理技术和功能,特别是与从消息客户端104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个来源的文本和媒体内容可以聚合成内容集合(例如,称为故事或库)。然后,使这些集合对消息客户端104可用。鉴于对这样的处理的硬件要求,也可以由消息服务器118在服务器端执行数据的其他处理器和存储器密集型处理。
[0043] 应用服务器114还包括图像处理服务器122,该图像处理服务器122专用于执行各种图像处理操作,通常相对于在从消息服务器118发送或者在消息服务器118处接收的消息的有效载荷内的图像或视频,执行各种图像处理操作。结合图5示出和描述了图像处理服务器122的详细功能。图像处理服务器122用于实现3D身体模型生成系统230(图2)的3D身体模型生成操作。
[0044] 在一个实施方式中,图像处理服务器122检测2D图像中的人。图像处理服务器122生成表示在2D图像中检测到的人的骨/关节的一组界标。图像处理服务器122基于该组界标调整由3D身体模型生成系统230生成的模型的参数,以生成与在2D图像中检测到的人对应的骨骼和模板。可以选择角色动画或化身(例如,用户可以手动选择所需的化身,或者可以自动检索和选择化身)。基于由3D身体模型生成系统230生成的骨骼和模板,调整用于生成角色动画或化身的骨骼装备,以表示2D图像中描绘的人的物理属性。例如,骨骼装备的手臂可以被放大以匹配图像中描绘的人的手臂骨骼。具体地,如果人的手臂比由化身装备表示的普通人长,则化身装备的手臂可以被延伸。具有较短手臂的不同用户可以使化身装备被生成为具有较短的手臂。这样,基于骨骼装备生成的化身或角色可以更接近地反映2D图像中描绘的人的物理属性。然后,化身可以替换或补充2D图像和/或视频中的人。
[0045] 社交网络服务器124支持各种社交联网功能和服务并使这些功能和服务可用于消息服务器118。为此,社交网络服务器124维护和访问数据库126内的实体图308(如图3所示)。由社交网络服务器124支持的功能和服务的示例包括识别特定用户与之有关系或“跟随”的消息系统100的其他用户,以及识别特定用户的兴趣和其他实体。
[0046] 返回到消息客户端104,外部资源(例如,第三方应用109或小应用(applet))的特征和功能经由消息客户端104的接口对用户可用。消息客户端104接收对启动或访问外部资源(例如,第三方资源)(例如,外部应用109)的特征的选项的用户选择。外部资源可以是安装在客户端设备102上的第三方应用(外部app 109)(例如,“本地app”),或者托管在客户端设备102上或者位于客户端设备102的远端(例如,在第三方服务器110上)的第三方应用的小规模版本(例如,“小应用”)。第三方应用的小规模版本包括第三方应用(例如,第三方独立应用的完整、原生版本)的特性和功能的子集,并且使用标记语言文档来实现。在一个示例中,第三方应用的小规模版本(例如,“小应用”)是第三方应用的基于web的标记语言版本,并且被嵌入在消息客户端104中。除了使用标记语言文档(例如,.*ml文件)以外,小应用(applet)可以并入脚本语言(例如,.*js文件或.json文件)和样式表(例如,.*ss文件)。
[0047] 响应于接收到对启动或访问外部资源(外部应用109)的特征的选项的用户选择,消息客户端104确定所选择的外部资源是基于web的外部资源还是本地安装的外部应用。在一些情况下,本地安装在客户端设备102上的外部应用109可以独立于消息客户端104,并且例如通过在客户端的主页画面上选择与外部应用109对应的图标来与消息客户端104分开地启动。这种外部应用的小规模版本可以经由消息客户端104启动或访问,并且在一些示例中,小规模外部应用的任何部分都不能(或者有限部分才能)在消息客户端104之外被访问。可以通过消息客户端104从外部应用服务器110接收与小规模外部应用相关联的标记语言文档并处理这样的文档来启动小规模外部应用。
[0048] 响应于确定外部资源是本地安装的外部应用109,消息客户端104通过执行与外部应用109对应的本地存储的代码来指示客户端设备102启动外部应用109。响应于确定外部资源是基于web的资源,消息客户端104与外部应用服务器110通信以获得与所选择的资源对应的标记语言文档。然后消息客户端104处理获得的标记语言文档以在消息客户端104的用户接口内呈现基于web的外部资源。
[0049] 消息客户端104可以向客户端设备102的用户或与这样的用户相关的其他用户(例如,“朋友”)通知在一个或更多个外部资源中发生的活动。例如,消息客户端104可以向消息客户端104中的对话(例如,聊天会话)的参与者提供与一组用户的一个或更多个成员当前或最近使用外部资源有关的通知。可以邀请一个或更多个用户加入活动的外部资源或者启动(在朋友组中)最近使用过但当前不活动的外部资源。外部资源可以向对话中的参与者(各自使用各自的消息客户端104)提供与一组用户的一个或更多个成员将外部资源中的项目、状况、状态或位置共享到聊天会话中的能力。共享项可以是交互式聊天卡,聊天的成员可以使用该交互式聊天卡进行交互,例如,启动相应的外部资源、查看外部资源内的特定信息、或者将聊天的成员带到外部资源内的特定位置或状态。在给定的外部资源内,可以在消息客户端104上向用户发送响应消息。外部资源可以基于外部资源的当前上下文在响应中选择性地包括不同的媒体项。
[0050] 消息客户端104可以向用户呈现可用外部资源(例如,第三方或外部应用109或小应用)的列表以启动或访问给定的外部资源。该列表可以被呈现在上下文相关菜单中。例如,表示不同的外部应用109(或小应用)的图标可以基于用户如何启动菜单(例如,从对话界面或从非对话界面)而变化。
[0051] 系统架构
[0052] 图2是示出根据一些示例的关于消息系统100的进一步细节的框图。具体地,消息系统100被显示为包括消息客户端104和应用服务器114。消息系统100包含多个子系统,这些子系统在客户端由消息客户端104支持并且在服务器端由应用服务器114支持。这些子系统包括例如短暂定时器系统202、集合管理系统204、增强系统208、地图系统210、游戏系统212和外部资源系统220。
[0053] 短暂定时器系统202负责强制由消息客户端104和消息服务器118对内容进行临时或限时访问。短暂定时器系统202包含若干个定时器,这些定时器基于与消息或消息集合(例如,故事)相关联的持续时间和显示参数,选择性地实现经由消息客户端104访问(例如,用于呈现和显示)消息和相关联的内容。下面提供关于短暂定时器系统202的操作的其他细节。
[0054] 集合管理系统204负责管理媒体的组或集合(例如,文本、图像、视频和音频数据的集合)。可以将内容(例如,消息,包括图像、视频、文本和音频)的集合组织成“事件库”或“事件故事”。可以使这样的集合在指定时间段(例如内容所涉及的事件的持续时间)内可用。例如,可以使与音乐会相关的内容在该音乐会的持续时间内作为“故事”可用。集合管理系统204还可以负责向消息客户端104的用户接口发布提供特定集合存在的通知的图标。
[0055] 此外,集合管理系统204还包括策展接口206,策展接口206使得集合管理者能够管理和策展特定内容集合。例如,策展接口206使得事件组织者能够策展与特定事件相关的内容集合(例如,删除不适当的内容或冗余消息)。另外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动地策展内容集合。在某些实施方式中,可以因将用户生成的内容包括到集合中而向用户支付补偿。在在这样的情况下,策展接口204进行操作以自动向这样的用户支付使用其内容的费用。
[0056] 增强系统208提供使用户能够增强(例如,注释或以其他方式修改或编辑)与消息相关联的媒体内容的各种功能。例如,增强系统208提供与生成和发布用于由消息系统100处理的消息的媒体叠加(media overlay)相关的功能。增强系统208基于客户端设备102的地理位置可操作地向消息客户端104提供媒体叠加或增强(例如,图像过滤器)。在另一示例中,增强系统208基于诸如客户端设备102的用户的社交网络信息的其他信息可操作地向消息客户端104供应媒体叠加。媒体叠加可以包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、标识、动画和声音效果。视觉效果的示例包括颜色叠加。音频和视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体叠加可以包括可以叠加在由客户端设备102拍摄的照片的顶部的文本、图形元素或者图像。在另一示例中,媒体叠加包括位置标识叠加(例如,威尼斯海滩)、实况事件名称或商家名称叠加(例如,海滩咖啡馆)。在另一示例中,叠加系统208使用客户端设备102的地理位置来标识包括客户端设备102的地理位置处的商家的名称的媒体叠加。媒体叠加可以包括与商家相关联的其他标记。媒体叠加可以被存储在数据库126中并通过数据库服务器120访问。
[0057] 在一些示例中,增强系统208提供基于用户的发布平台,该基于用户的发布平台使得用户能够选择地图上的地理位置并上传与所选择的地理位置相关联的内容。用户还可以指定应当向其他用户提供特定媒体叠加的情形。增强系统208生成媒体叠加,该媒体叠加包括所上传的内容并将所上传的内容与所选择的地理位置相关联。
[0058] 在其他示例中,增强系统208提供基于商家的发布平台,该平台使商家能够选择经由投标过程与地理位置相关联的特定媒体叠加。例如,增强系统208使最高出价商家的媒体叠加与相应地理位置相关联达预定义时间量。增强系统208与图像处理服务器122通信以自动选择和激活与由客户端设备102捕获的图像相关的增强现实体验。一旦在用户使用用户环境中的摄像装置扫描图像时选择增强现实体验,一个或更多个图像、视频或增强现实图形元素被检索并呈现为扫描图像顶部上的叠加。在一些情况下,摄像装置被切换到正面视图(例如,客户端设备102的前置摄像装置响应于特定增强现实体验的激活而被激活),并且来自客户端设备102的前置摄像装置而不是客户端设备102的后置摄像装置的图像开始被显示在客户端设备102。一个或更多个图像、视频或增强现实图形元素被检索并呈现为由客户端设备102的前置摄像装置捕获和显示的图像顶部上的叠加。
[0059] 地图系统210提供各种地理定位功能,并且支持由消息客户端104呈现基于地图的媒体内容和消息。例如,地图系统210能够在地图上显示(例如,存储在简档数据316中的)用户图标或化身,以指示用户的“朋友”的当前或过去位置,以及由这些朋友在地图的上下文内生成的媒体内容(例如,包括照片和视频的消息的集合)。例如,在消息客户端104的地图界面上,可以将用户从特定地理位置发布到消息系统100的消息在地图的该特定位置的上下文内显示给特定用户的“朋友”。用户还可以经由消息客户端104与消息系统100的其他用户(例如,使用适当的状况化身)共享自己的定位和状况信息,该定位和状况信息在消息客户端104的地图界面的上下文内被显示给选定用户。
[0060] 游戏系统212在消息客户端104的上下文内提供各种游戏功能。消息客户端104提供游戏界面,该游戏界面提供可用游戏(例如,基于web的游戏或基于web的应用)的列表,该游戏可以由用户在消息客户端104的上下文内启动并且与消息系统100的其他用户一起玩。消息系统100还使特定用户能够通过从消息客户端104向这样的其他用户发出邀请来邀请其他用户参与玩特定游戏。消息客户端104还支持游戏上下文内的语音和文本两者的消息(例如,聊天),为游戏提供排行榜,并且还支持提供游戏内奖励(例如,钱币和物品)。
[0061] 外部资源系统220为消息客户端104提供接口以与外部应用服务器110通信以启动或访问外部资源。每个外部资源(app)服务器110托管例如基于标记语言(例如,HTML5)的应用或外部应用(例如,消息客户端104外部的游戏、实用程序、支付或乘车共享应用)的小规模版本。消息客户端104可以通过从与基于web的资源相关联的外部资源(app)服务器110访问HTML5文件来启动基于web的资源(例如,应用)。在某些示例中,由外部资源服务器110托管的应用利用由消息服务器118提供的软件开发工具包(SDK)以JavaScript编程。SDK包括应用编程接口(API),API具有可以由基于web的应用调用或激活的功能。在某些示例中,消息服务器118包括JavaScript库,该库向给定的第三方资源提供对消息客户端104的某些用户数据的访问。HTML5被用作对游戏进行编程的示例技术,但是可以使用基于其他技术编程的应用和资源。
[0062] 为了将SDK的功能集成到基于web的资源中,SDK由外部资源(app)服务器110从消息服务器118下载或者由外部资源(app)服务器110以其他方式接收。一旦被下载或接收,SDK将被包括作为基于web的外部资源的应用代码的一部分。然后,基于web的资源的代码可以调用或激活SDK的某些功能以将消息客户端104的特征集成到基于web的资源中。
[0063] 存储在消息服务器118上的SDK有效地提供了外部资源(例如,第三方或外部应用109或小应用)与消息客户端104之间的桥梁。这为用户提供了在消息客户端104上与其他用户通信的无缝体验,同时还保留了消息客户端104的外观和感觉。为了桥接外部资源与消息客户端104之间的通信,在某些示例中,SDK促进外部资源服务器110与消息客户端104之间的通信。在某些示例中,在客户端设备102上运行的WebViewJavaScriptBridge在外部资源与消息客户端104之间建立两个单向通信通道。消息经由这些通信通道在外部资源与消息客户端104之间异步发送。每个SDK功能调用都作为消息和回调发送。每个SDK功能都是通过构造唯一的回调标识符并使用该回调标识符发送消息来实现的。
[0064] 通过使用SDK,并非来自消息客户端104的所有信息都与外部资源服务器110共享。SDK基于外部资源的需要来限制共享哪些信息。在某些示例中,每个外部资源服务器110将与基于web的外部资源对应的HTML5文件提供给消息服务器118。消息服务器118可以在消息客户端104中添加基于web的外部资源的视觉表示(例如盒设计或其他图形)。一旦用户通过消息客户端104的GUI选择视觉表示或指示消息客户端104访问基于web的外部资源的特征,消息客户端104就获得HTML5文件并且使访问基于web的外部资源的特征所需的资源实例化。
[0065] 消息客户端104呈现用于外部资源的图形用户接口(例如,登录页面或标题画面)。在呈现登录页面或标题画面期间、之前或之后,消息客户端104确定所启动的外部资源是否先前已被授权访问消息客户端104的用户数据。响应于确定所启动的外部资源先前已被授权访问消息客户端104的用户数据,消息客户端104呈现外部资源的另一图形用户接口,包括外部资源的功能和特征。响应于确定所启动的外部资源先前未被授权访问消息客户端
104的用户数据,在显示外部资源的登录页面或标题画面阈值时间段(例如,3秒)之后,消息客户端104向上滑动菜单(例如,将菜单动画化为从画面底部浮现到画面的中间或其他部分)以授权外部资源访问用户数据。该菜单标识了外部资源将被授权使用的用户数据的类型。响应于接收到对接受选项的用户选择,消息客户端104将外部资源添加到授权的外部资源的列表中,并且允许外部资源从消息客户端104访问用户数据。在一些示例中,外部资源由消息客户端104根据OAuth 2框架授权访问用户数据。
[0066] 消息客户端104基于被授权的外部资源的类型来控制与外部资源共享的用户数据的类型。例如,包括完整的外部应用(例如,第三方或外部应用109)的外部资源被提供了对第一类型的用户数据(例如,具有或不具有不同化身特征的用户的仅二维化身)的访问权。作为另一示例,包括外部应用的小规模版本(例如,第三方应用的基于web的版本)的外部资源被提供了对第二类型的用户数据(例如,支付信息、用户的二维化身、用户的三维化身、以及具有各种化身特征的化身)的访问权。化身特征包括定制化身的外观和感觉(例如不同的姿势、面部特征、服装等)的不同方式。
[0067] 3D身体模型生成系统230生成人骨骼的骨级蒙皮模型。具体地,3D身体模型生成系统接收骨缩放、关节角度和形状系数作为输入,并返回3D顶点位置数组。3D身体模型生成系统230沿两个流操作,其结果在最后阶段被组合。第一个流(显示在图5的顶部)通过骨缩放系数cb设置骨缩放来确定内部骨骼,从而得到绑定(静止)姿势。这又通过指定关节角度θ转换为新的姿势,产生最终的骨骼T(cb,θ)。第二个流(显示在图5的底部)对特定于人的模板合成过程进行建模:从与平均体型 对应的网格开始,通过添加形状校正项Vb来吸收骨缩放的影响。这又通过特定于身份的形状更新Vs得到增强。人模板由下面的式1表示:
[0068]
[0069] 使用线性混合蒙皮(LBS)将两个流的结果捆绑在一起,以得到姿势模板
[0070] 数据架构
[0071] 图3是示出根据某些示例的可以存储在消息服务器系统108的数据库126中的数据结构300的示意图。虽然数据库126的内容被示为包括若干表,但是应当理解的是,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。
[0072] 数据库126包括存储在消息表302内的消息数据。对于任何特定的一条消息,该消息数据包括至少消息发送者数据、消息接收方(或接收者)数据和有效载荷。下面参照图4描述关于可以被包括在消息中并且被包括在存储在消息表302中的消息数据中的信息的另外的细节。
[0073] 实体表306存储实体数据,并且(例如,参考地)链接到实体图308和简档数据316。在实体表306内维护记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管实体类型如何,消息服务器系统108存储关于其的数据的任何实体可以是识别的实体。每个实体被提供有唯一标识符,以及实体类型标识符(未示出)。
[0074] 实体图308存储关于实体之间的关系和关联的信息。仅举例而言,这样的关系可以是社交的、职业的(例如,在共同的公司或组织工作)、基于兴趣的或基于活动的。
[0075] 简档数据316存储关于特定实体的多种类型的简档数据。基于由特定实体指定的隐私设置,简档数据316可以被选择性地使用并呈现给消息系统100的其他用户。在实体是个人的情况下,简档数据316包括例如用户名、电话号码、地址、设置(例如,通知和隐私设置),以及用户选择的化身表示(或这种化身表示的集合)。然后,特定用户可以将这些化身表示中的一个或更多个选择性地包括在经由消息系统100传送的消息的内容中以及在由消息客户端104向其他用户显示的地图界面上。化身表示的集合可以包括“状态化身”,其呈现用户可以选择在特定时间进行通信的状态或活动的图解表示。
[0076] 在实体是团体的情况下,除了团体名称、成员和相关团体的各种设置(例如,通知)之外,团体的简档数据316还可以类似地包括与团体相关联的一个或更多个化身表示。
[0077] 数据库126还在增强表310中存储例如叠加或过滤器的增强数据。增强数据与视频(视频数据被存储在视频表304中)和图像(图像数据被存储在图像表312)相关联并且应用于视频和图像。
[0078] 在一个示例中,过滤器是在呈现给接收用户期间显示为叠加在图像或视频上的叠加。过滤器可以是各种类型的,包括当发送方用户正在编写消息时由消息客户端104呈现给发送用户的一组过滤器中用户选择的过滤器。其他类型的过滤器包括地理定位过滤器(也称为地理过滤器),其可以基于地理定位被呈现给发送用户。例如,可以基于由客户端设备102的全球定位系统(GPS)单元确定的地理定位信息,由消息客户端104在用户接口内呈现特定于附近或特殊定位的地理定位过滤器
[0079] 另一种类型的过滤器是数据过滤器,其可以由消息客户端104基于在消息创建过程期间由客户端设备102收集的其他输入或信息选择性地呈现给发送用户。数据过滤器的示例包括特定定位处的当前温度、发送用户行进的当前速度、客户端设备102的电池寿命或当前时间。
[0080] 可以被存储在图像表312内的其他增强数据包括增强现实内容项(例如,对应于应用镜头或增强现实体验)。增强现实内容项可以是可以添加到图像或视频的实时特效和声音。每个增强现实体验可以与一个或更多个标记图像相关联。在一些实施方式中,当确定标记图像与从客户端设备102接收的查询图像匹配时,标记图像的相应增强现实体验(例如,增强数据)从图像表312中被检索并提供给客户端设备102。结合图9显示和讨论了各种类型的增强现实体验。
[0081] 如上所述,增强数据包括增强现实内容项、叠加、图像变换、AR图像以及指代可以应用于图像数据(例如,视频或图像)的修改的类似项。这包括实时修改,其在使用客户端设备102的设备传感器(例如,一个或多个摄像装置)捕获图像时对该图像进行修改,然后在客户端设备102的屏幕上使用该修改进行显示。这还包括对存储内容(例如可以修改的库中的视频片段)的修改。例如,在可以访问多个增强现实内容项的客户端设备102中,用户可以使用具有多个增强现实内容项的单个视频片段来查看不同的增强现实内容项将如何修改存储的片段。例如,通过为同一内容选择不同的增强现实内容项,可以将应用不同伪随机运动模型的多个增强现实内容项应用于该同一内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由客户端设备102的传感器捕获的视频图像将如何修改捕获的数据。这样的数据可以被简单地显示在屏幕上而不存储在内存中,或者由设备传感器捕获的内容可以在有或没有修改(或两者)的情况下被记录并存储在存储器中。在某些系统中,预览功能可以显示不同的增强现实内容项将如何同时在显示器的不同窗口中显示。例如,这可以实现同时在显示器上查看具有不同伪随机动画的多个窗口。
[0082] 因此,使用增强现实内容项的数据和各种系统或使用该数据修改内容的其他此类变换系统可以涉及视频帧中对象(例如,脸、手、身体、猫、狗、表面、物体等)的检测,在这些对象离开视场、进入视场以及在视场四处移动时跟踪这些对象,以及在跟踪这些对象时对其进行修改或变换。在各种示例中,可以使用用于实现这种变换的不同方法。一些示例可以涉及生成一个或更多个对象的3D网格模型,以及在视频内使用模型的变换和动画纹理来实现变换。在其他示例中,可以使用对象上的点的跟踪将图像或纹理(可以是二维或三维的)放置在所跟踪的位置处。在更进一步的示例中,可以使用视频帧的神经网络分析将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,增强现实内容项既指用于在内容中创建变换的图像、模型和纹理,也指通过对象检测、跟踪和放置实现此类变换所需的附加建模和分析信息。
[0083] 可以利用保存在任何类型的计算机化系统的存储器中的任何类型的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。此外,可以使用计算机动画模型处理任何对象,例如人脸和人体的各部分、动物或非生物(例如椅子、汽车或其他对象)。
[0084] 在一些示例中,当与要变换的内容一起选择特定修改时,待变换的元素由计算设备识别,然后如果它们存在于视频的帧中,则被检测和跟踪。根据修改请求来修改对象的元素,从而变换视频流的帧。对于不同种类的变换,可以通过不同的方法执行对视频流的帧的变换。例如,对于主要是指对象的元素的变化形式的帧变换,计算对象的每个元素的特征点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格用于跟踪视频流中对象的元素的后续阶段。在跟踪过程中,每个元素的提到的网格与每个元素的位置对准。然后,在网格上生成附加点。基于修改请求针对每个元素生成第一组第一点,并且基于该组第一点和修改请求针对每个元素生成一组第二点。然后,可以通过基于该组第一点和该组第二点以及网格修改对象的元素,以变换视频流的帧。在这种方法中,也可以通过跟踪和修改背景来改变或扭曲被修改对象的背景。
[0085] 在一些示例中,使用对象的元素改变对象的一些区域的变换可以通过计算对象的每个元素的特征点并基于计算的特征点生成网格来执行。在网格上生成点,然后基于这些点生成各种区域。然后通过将每个元素的区域与至少一个元素中的每一个的位置对准来跟踪对象的元素,并且可以基于修改请求来修改区域的属性,从而变换视频流的帧。根据具体的修改请求,提到的区域的属性可以以不同的方式进行变换。这种修改可以涉及:改变区域的颜色;从视频流的帧中移除至少部分区域;将一个或更多个新对象包括在基于修改请求的区域中;以及修改或扭曲区域或对象的元素。在各种示例中,可以使用这样的修改或其他类似修改的任何组合。对于某些要被动画化的模型,可以选择一些特征点作为控制点,以用于确定用于模型动画的选项的整个状态空间。
[0086] 在使用面部检测来变换图像数据的计算机动画模型的一些示例中,使用特定面部检测算法(例如,Viola‑Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。
[0087] 可以使用适合于面部检测的其他方法和算法。例如,在一些示例中,使用界标来定位特征,该界标表示存在于所考虑的大多数图像中的可区分点。例如,对于面部界标,可以使用左眼瞳孔的定位。如果初始界标不可识别(例如,如果人有眼罩),则可以使用次级界标。这样的界标识别过程可以用于任何这样的对象。在一些示例中,一组界标形成形状。可以使用形状中的点的坐标将形状表示为矢量。一个形状通过相似变换(允许平移、缩放和旋转)与另一形状对准,该变换使形状点之间的平均欧几里得距离最小化。平均形状是对准的训练形状的平均。
[0088] 在一些示例中,从与由全局面部检测器确定的面部的位置和大小对准的平均形状开始搜索界标。然后,这种搜索重复以下步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的定位来建议暂定形状,然后使暂定形状符合全局形状模型,直到发生收敛。在某些系统中,个别的模板匹配是不可靠的,形状模型将弱模板匹配的结果进行池化,形成更强的整体分类器。整个搜索从粗分辨率到细分辨率在图像金字塔的每个级别上重复。
[0089] 变换系统可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状变化、情绪转换(例如,将面部从皱眉变为微笑)、状态转换(例如,使对象变老、减少表观年龄、改变性别)、风格转换、图形元素应用,以及由已经被配置成在客户端设备102上有效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
[0090] 在一些示例中,用于变换图像数据的计算机动画模型可以由系统使用,在该系统中,用户可以使用具有神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍),该神经网络操作作为在客户端设备102上操作的消息客户端104的一部分。在消息客户端104内操作的变换系统确定图像或视频流中的面部的存在并且提供与计算机动画模型相关联的修改图标以变换图像数据,或者计算机动画模型可以被呈现为与本文中描述的接口相关联。修改图标包括以下变化,该变化可以是作为修改操作的一部分的在图像或视频流中修改用户面部的基础。一旦选择了修改图标,变换系统就发起转换用户的图像以反映所选的修改图标(例如,在用户上生成笑脸)的过程。一旦图像或视频流被捕获并且指定的修改被选择,修改的图像或视频流就可以呈现在客户端设备102上显示的图形用户接口中。变换系统可以在图像或视频流的一部分上实施复杂的卷积神经网络,以生成和应用选定的修改。也就是说,一旦选择了修改图标,用户就可以捕获图像或视频流并且实时或近乎实时地呈现修改结果。此外,当正在捕获视频流时,修改可以是持久的,并且所选择的修改图标保持被切换。机器学习的神经网络可以用于实现此类修改。
[0091] 呈现由变换系统执行的修改的图形用户接口可以为用户提供附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的内容捕获和选择的接口(例如,从内容创建者用户接口发起)。在各种示例中,修改可以在修改图标的初始选择之后持续存在。用户可以通过轻击或以其他方式选择由变换系统修改的面部来打开或关闭修改,并将其存储以供以后查看或浏览到成像应用的其他区域。在变换系统修改多个面部的情况下,用户可以通过轻击或选择在图形用户接口内修改和显示的单个面部来全局打开或关闭修改。在一些示例中,可以单独修改一组多个面部中的各个面部,或者可以通过轻击或选择图形用户接口内显示的各个面部或一系列各个面部来单独切换这种修改。
[0092] 故事表314存储与消息和相关联的图像、视频或音频数据的集合有关的数据,这些数据被编译成集合(例如,故事或库)。特定集合的创建可以由特定用户(例如,在实体表306中维护其记录的每个用户)发起。用户可以以已由该用户创建和发送/广播的内容集合的形式创建“个人故事”。为此,消息客户端104的用户接口可以包括用户可选择的图标,以使得发送用户能够将特定内容添加到他或她的个人故事。
[0093] 集合还可以构成“现场故事”,其是来自多个用户的内容的集合,该集合是手动、自动或使用手动和自动技术的组合创建的。例如,“现场故事”可以构成来自各种定位和事件的用户提交内容的策划流。其客户端设备启用了定位服务并且在特定时间处于共同定位事件处的用户可以例如经由消息客户端104的用户接口被呈现有选项,以将内容贡献给特定现场故事。可以由消息客户端104基于用户的定位向他或她标识现场故事。最终结果是从社群视角讲述的“现场故事”。
[0094] 另外类型的内容集合被称为“定位故事”,其使得其客户端设备102位于特定地理定位(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些示例中,对定位故事的贡献可能需要二级认证以验证最终用户属于特定组织或其他实体(例如,是大学校园中的学生)。
[0095] 如上面提到的,视频表304存储视频数据,在一个示例中,该视频数据与其记录保存在消息表302内的消息相关联。类似地,图像表312存储与消息数据被存储在实体表306中的消息相关联的图像数据。实体表306可以使来自增强表310的各种增强与存储在图像表312和视频表304中的各种图像和视频相关联。
[0096] 数据通信架构
[0097] 图4是示出根据一些示例的消息400的结构的示意图,消息400由消息客户端104生成,以用于传送至另外的消息客户端104或消息服务器118。特定消息400的内容用于填充存储在数据库126中的消息表302,该消息表302可由消息服务器118访问。类似地,消息400的内容被存储在存储器中作为客户端设备102或应用服务器114的“传输中”或“飞行中”的数据。消息400被示为包括以下示例组成部分
[0098] ·消息标识符402:识别消息400的唯一标识符。
[0099] ·消息文本有效载荷404:要由用户经由客户端设备102的用户接口生成并且包括在消息400中的文本。
[0100] ·消息图像有效载荷406:由客户端设备102的摄像装置部件捕获的或从客户端设备102的存储器检索到的、并且包括在消息400中的图像数据。用于发送或接收的消息400的图像数据可以被存储在图像表312中。
[0101] ·消息视频有效载荷408:由摄像装置部件捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息400中的视频数据。用于发送或接收的消息400的视频数据可以被存储在视频表304中。
[0102] ·消息音频有效载荷410:由麦克风捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息400中的音频数据。
[0103] ·消息增强数据412:表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的增强的增强数据(例如,过滤器、贴纸或其他增强)。用于发送或接收的消息400的增强数据可以被存储在增强表310中。
[0104] ·消息持续时间参数414:参数值,其指示消息的内容(例如,消息图像有效载荷406、消息视频有效载荷408、消息音频有效载荷410)将经由消息客户端104被呈现给用户或使其对于用户可访问的以秒为单位的时间量。
[0105] ·消息地理定位参数416:与消息的内容有效载荷相关联的地理定位数据(例如,纬度和经度坐标)。在有效载荷中可以包括多个消息地理定位参数416值,其中这些参数值中的每一个都与包括在内容中的内容项(例如,消息图像有效载荷406内的特定图像,或消息视频有效载荷408中的特定视频)相关联。
[0106] ·消息故事标识符418:标识一个或更多个内容集合(例如,“故事”)的标识符值,通过其将消息400的消息图像有效载荷406中的特定内容项与所述一个或更多个内容集合相关联。例如,可以使用标识符值将消息图像有效载荷406内的多个图像各自与多个内容集合相关联。
[0107] ·消息标签420:每个消息400可以用多个标签来标记,这些标签中的每个标签都指示消息有效载荷中包括的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如狮子)的情况下,可以在消息标签420中包括指示相关动物的标签值。标签值可以基于用户输入手动地生成,或者可以使用例如图像识别自动地生成。
[0108] ·消息发送者标识符422:指示在其上生成消息400并且从其发送消息400的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
[0109] ·消息接收者标识符424:指示消息400寻址到的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
[0110] 消息400的各种组成部分的内容(例如,值)可以是指向表中的存储内容数据值的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表312内的位置(或地址)的指针。类似地,消息视频有效载荷408内的值可以指向存储在视频表304内的数据,存储在消息注释412中的值可以指向存储在注释表310中的数据,存储在消息故事标识符418中的值可以指向存储在故事表314中的数据,并且存储在消息发送者标识符422和消息接收者标识符424中的值可以指向存储在实体表306中的用户记录。
[0111] 图5是根据一些实施方式的由3D身体模型生成系统230执行的操作的图解表示500。具体地,最上面一行显示骨骼合成:从标准绑定姿势510开始,首先缩放骨长度,然后应用关节变换。最下面一行显示形状控制:标准网格模板通过骨缩放混合形状受到骨缩放变换的影响,然后进一步更新以捕获特定于身份的形状变化。骨骼通过LBS驱动所生成的模板的变形,以产生摆姿势的形状580。
[0112] 作为示例,模型以处于静止或绑定姿势的平均骨骼510开始。该平均骨骼510表示平均人群或整体人群规模。还提供了表示整体人群或平均人群的外观和感觉(身份或皮肤)的模板550或网格。作为第一控制,针对给定的人(例如,2D图像中描绘的人)计算骨缩放参数512(称为b)。使用这些骨缩放参数512来调整每个单独的骨长度(例如,增加手臂的大小并且减小腿的大小)以输出经缩放的骨骼520。与缩放骨骼的并行地或在其之后,通过应用骨缩放校正514(称为Vb),基于骨缩放参数来校正整体人群的模板。这输出具有与经缩放的骨骼520相对应的大小和缩放的模板560。
[0113] 将参数θ应用于经缩放的骨骼,以运动学地将经缩放的骨骼的骨和关节调整为处于特定姿势。这输出经缩放和摆姿势的骨骼530。形状更新参数562(称为VS)被应用到已经被缩放的模板以考虑到特定于人的可变性,并且在缩放校正和形状更新之后生成模板570。线性混合蒙皮(LBS)540被应用于经缩放和摆姿势的骨骼530以及在缩放校正和形状更新之后的模板570以输出姿势形状模板580。即,表示人的身份的模板是基于骨骼530的形状和姿势来摆姿势的,以输出摆姿势的形状。然后可以使用该摆姿势的形状来调整表示人的角色动画或化身。
[0114] 骨骼510由通过关节连接将人骨联系在一起的树状结构图确定。从单个骨开始,其“绑定姿势”由表示两个骨关节处的坐标系之间的位移和旋转的模板旋转矩阵Rt和平移矢量Ot来表达。变换是通过旋转矩阵R和缩放因子s相对于绑定姿势建模的,R和s一起被捆绑在4×4矩阵T中:
[0115]
[0116] 角色建模的常见模型使用s=1并且只允许肢体旋转。对象缩放或骨长度的任何变化都是通过修改绑定姿势处的位移O来建模的。这是仅隐式地通过从3D合成形状回归绑定姿势关节来完成的。所公开的实施方式通过参数s提供了肢体缩放上的句柄,使得人骨骼的合成显式可控。
[0117] 完整的骨骼是递归构造的,沿着运动链从根节点传播到叶节点。每个骨变换都对两个相邻骨i和j之间的位移、旋转和缩放进行编码,其中i是父节点,j是子节点。为简化符i号,沿单个运动链描述建模,即j=i+1,并且将骨的局部变换表示为T 。从骨j的局部坐标到i
世界坐标的全局变换Tj由下式给出:Tj=Πi≤jT ,其中变换由从根到第j个节点的路径上的每个骨组成。该乘积累积了连续变换的效果:例如,骨缩放的变化将对其所有后代产生相同的缩放。这些后代又可以有自己的缩放参数,这些参数与他们的祖先的参数相结合。每个骨j的3D位置可以从Tj的最后一列读取,而Tj的左上3×3部分提供其坐标系的缩放和取向。
[0118] 人的比例是通过缩放每个骨来显式建模的。在示例中,对骨长度执行主成分分析(PCA)并使用主成分分析将单独的骨缩放表示为: (式3),其中cb是骨缩放系数,Pb是骨缩放矩阵,是平均骨缩放。返回参照图5,骨缩放参数512通过调整特定人(例如,2D图像中描绘的人)的cb,根据上面的等式2对平均骨骼510进行缩放。参数Pb是针对群体设置的学习参数,并且将结合图6进行更详细的讨论。式1中出现的骨缩放s旨在通过运动链递归使用,这意味着父缩放的乘积得到实际的骨缩放,bj=Πi≤jSi。这可以用于将式3的预测变换为可以用于式1的形式:
[0119]
[0120] 为了调整骨骼的姿势以创建经缩放和摆姿势的骨骼530,对关节角度进行建模以考虑人体的运动学约束。例如,膝盖有一个自由度,手腕有两个自由度,脖子有三个自由度。对于每个关节,无效的自由度设置为等同于零,其余角度被限制在合理范围内(例如,肘部为±45度)。图8示出了通过使模板沿一个有效自由度摆姿势来合成的示例网格。对于每个这样的自由度,使用无约束变量x∈R并通过使用双曲正切单元将其映射到有效的欧拉角θ∈[θmin,θmax]:
[0121]
[0122] 这使得在将模型拟合到数据时实现无约束优化,同时得到运动学上可行的姿势。得到的每个关节的欧拉角被转换成旋转矩阵,得到式1中的矩阵R。
[0123] 在考虑人的骨长度和特定于身份的可变性的情况下,模板550被建模。骨长度可以用于解释身体形状可变性的很大一部分。例如,较长的骨与男性体型相关,而四肢的比例可能与瘦长型、矮胖型和中等型体型可变性相关。模板表面的骨长度相关变形通过线性更新表示:Vb=cbPbc,其中Pbc是骨校正混合形状的矩阵,并且是经学习的参数(如结合图6所讨论的)。
[0124] 图7示出了骨长度变化对模板的影响。简单的线性混合蒙皮导致伪影710和720。线性的骨校正混合形状消除了这些伪影并且捕获骨长度与性别和体型的相关性。例如,伪影710和720不再存在于模板712和722中。具体地,如果给定模板的尺寸基于更小的骨而减小,则通常的模板生成模型引入伪影710和720,而根据所公开的实施方式生成的模板712和722没有伪影。
[0125] 在考虑了形状可变性的骨长度相关部分以生成中间模板560之后,考虑特定于人的可变性,根据Vs生成模板570。在一个实施方式中,根据Vs=csPs线性计算Vs,其中,cs是形状系数,Ps是形状分量的矩阵。
[0126] 使用LBS根据骨骼合成模板570,其中模板网格V的变形由骨骼的变换确定。如由矩阵 描述的那样考虑骨骼的绑定姿势,其中3D网格顶点取其标准值vi∈V,而目标姿势由Tj描述。根据LBS,每个顶点根据权重wij受到每个骨j的影响;目标位姿的顶点位置由下式给出:
[0127]
[0128] 该式可以理解为相对于绑定骨绘制每个点vk(通过将其乘以 ),然后传送到目标骨(通过乘以Tj)。
[0129] 图6示出了根据一些实施方式的3D身体模型生成系统230并且更具体地示出了3D身体模型生成系统230的训练。3D身体模型生成系统230包括姿势和骨缩放模块620、骨校正和平均形状模块630和顶点位移模块640。3D身体模型生成系统230接收骨骼数据610(例如,由界标位置提供,该界标位置根据描绘人并由神经网络处理的2D图像生成)。在一些情况下,3D身体模型生成系统230对化身装备数据614进行操作以调整化身或角色以对应于2D图像中描绘的人的物理属性和形状和大小。
[0130] 为了训练3D身体模型生成系统230,处理描绘不同姿势和形状的各种人的3D扫描的集合。训练分多个阶段进行。训练的结果是从数据中学习模型的上述参数。在某些情况下,3D扫描包括穿着紧身衣服的4400个被摄体的高分辨率3D扫描612。训练过程求解连续要求的优化问题,并在优化期间使用自动微分来有效地计算导数。
[0131] 每个3D扫描612Sn与已在3D中定位的73个解剖界标Ln相关联。训练首先通过骨缩放nS和关节角度上的梯度下降将模板拟合到这些界标,以使界标位置与相应的模板顶点之间的3D距离最小化。更具体地,姿势和骨缩放模块620求解以下优化问题:
[0132] θn,sn=argminθ,s||ALBS(VT,T(s,θ))‑Ln||2 式4
[0133] 其中,A从模板中选择界标的子集。在处理4400个3D扫描612时,求解上述式4的优n n化问题的结果是4400个θ和骨缩放S参数的集合。
[0134] 具体地,针对每个3D扫描612,姿势和骨缩放模块620根据骨骼将LBS应用于模板,以找到使距给定3D扫描612的界标的距离最小化的关节角度θ和骨缩放s参数。这得到了初始拟合,该始拟合通过将预测 配准到每个扫描612来进一步细化。
n
[0135] 在某些情况下,骨缩放基础被用作正则化器来重新估计姿势θ和骨缩放系数 以通过求解式5的优化问题将模板VT与每个配准 匹配:
[0136]
[0137] 式5的输出被提供给骨校正和平均形状模块630以计算和确定骨校正参数Pbc和平均形状参数 为确定这些参数,求解由式6定义的以下优化问题:
[0138]
[0139] 作为示例,骨校正和平均形状模块630处理每个3D扫描612,并且使客观真实模板n与使用如通过式4或5针对特定3D扫描612计算的对应姿势θ和骨缩放系数 计算的模板之间的LBS函数差异最小化。
[0140] 一旦使用骨校正混合形状来改进模型与配准形状 的拟合,重建中的残差仅归因于特定于身份的形状可变性。顶点位移模块640通过导出函数VD来调整参数,以考虑特定于身份的的形状可变性。具体地,残差被建模为顶点位移 并且通过设置来估计每个配准 以确保残差由T‑姿势坐
标系定义。
[0141] 给定新的3D扫描,姿势和骨缩放模块620调整参数θn和骨缩放系数 并且骨校正和平均形状模块630使用这些经适配的参数来调整模板。然后通过将3D扫描的界标应用于解码器D来改进模板以表示3D扫描中描绘的人。
[0142] 在某些情况下,LBS公式的混合权重是手动初始化的。为了改进这个过程,处理各n种身份和姿势的配准。对于数据集中的每个配准,首先估计参数,即, θ以及残差残差 是将形状混合形状考虑在内之后T‑姿势坐标系上的误差。然后,优化混合权重以使以下误差最小化:
[0143]
[0144] 映射 其中 用于自由优化W',同时确保输出权重W满足LBS混合权重约束:
[0145] ∑jWij=1,并且mathbfWij≥O。
[0146] 在某些情况下,首先通过优化躯干骨的形状系数和关节角度来拟合躯干上的顶点(例如,通过躯干骨的权重混合到模板上定义的那些顶点)。然后对于第二和第三阶段,分别添加上肢和下肢。在最后阶段,使用所有顶点来微调拟合参数。
[0147] 图9示出了根据一些实施方式的将化身或角色与图像中的人匹配的示例。在一些实施方式中,接收装配的角色910。通过从多个装配的角色中选择角色来接收该装配的角色910。装配的角色910被应用于由3D身体模型生成系统230提供的骨骼。给定人的图像(例如,如930中所示),将模型拟合到人以估计图像中的人的骨变换(缩放和旋转)。骨变换被应用于经装配的角色以实现准确的图像驱动角色动画。在示例中,如930所示,根据人的骨变换适配的经装配的角色与人一起显示。替选地,如920所示,呈现装配的角色以代替人。在某些情况下,如果模型确定2D图像中描绘的人的骨变换大于平均骨骼,则延长被装配的角色的手臂。在某些情况下,如果模型确定2D图像中描绘的人的骨变换小于平均骨骼,则缩短装配的角色的手臂。角色的身份属性也基于由模型确定的形状属性进行适配。这允许系统将任何人变换为选定的化身或角色,同时保留图像中人的姿势和体型。
[0148] 图10是示出根据示例实施方式的执行过程1000中的消息客户端104的示例操作的流程图。过程1000可以以由一个或更多个处理器执行的计算机可读指令实现,使得过程1000的操作可以部分地或全部地由消息服务器系统108的功能部件执行;因此,下面参照其通过示例的方式描述过程1000。然而,在其他实施方式中,过程1000的操作中的至少一些操作可以部署在各种其他硬件配置上。过程1000中的操作可以以任何顺序执行、并行地执行,或者可以完全跳过和省略。
[0149] 在操作1001处,图像处理服务器122接收多个骨缩放系数,每个骨缩放系数对应于骨骼模型的相应的骨。例如,图像处理服务器122接收骨缩放参数512。在一些情况下,骨缩放参数512作为骨缩放系数cb被接收。
[0150] 在操作1002处,图像处理服务器122接收共同限定骨骼模型的姿势的多个关节角n度系数。例如,图像处理服务器122接收摆姿势参数θ。
[0151] 在操作1003处,图像处理服务器122基于接收到的骨缩放系数和接收到的关节角度系数来生成骨骼模型。例如,图像处理服务器122生成经缩放和摆姿势的骨骼530。
[0152] 在操作1004处,图像处理服务器122基于多个骨缩放系数来生成基础表面。例如,图像处理服务器122生成模板550。
[0153] 在操作1005处,图像处理服务器122通过基础表面的变形来生成身份表面。例如,图像处理服务器122基于骨参数来调整模板550,并且使用形状更新参数562应用身份信息来生成模板570。
[0154] 在操作1006处,图像处理服务器122通过将身份表面映射到摆姿势的骨骼模型上来生成3D身体模型。例如,图像处理服务器122使用LBS 540基于经缩放和摆姿势的骨骼530来调整模板570以输出摆姿势的模板580。
[0155] 机器架构
[0156] 图11是机器1100的图解表示,在机器1100中,可以执行用于使机器1100执行本文中讨论的任何一个或更多个方法的指令1108(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令1108可以使机器1100执行本文中描述的任何一个或更多个方法。指令1108将通用的非编程的机器1100转换成被编程为以所描述的方式执行所描述和所示功能的特定机器1100。机器1100可以操作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网部署中,机器1100可以在服务器‑客户端网络环境中以服务器机器或客户端机器的能力进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1100可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器1100采取的动作的指令1108的任何机器。此外,虽然仅示出了单个机器1100,但是术语“机器”还应被认为包括单独地或联合地执行指令1100以执行本文中讨论的任何一种或更多种方法的机器的集合。例如,机器1100可以包括客户端设备102或者形成消息服务器系统108的一部分的若干个服务器设备中的任何一个。在一些示例中,机器1100还可以包括客户端和服务器系统二者,其中在服务器侧执行特定方法或算法的某些操作,并且在客户端侧执行特定方法或算法的某些操作。
[0157] 机器1100可以包括处理器1102、存储器1104和输入/输出部件1038,所述处理器1102、存储器1104和输入/输出部件1138,这些部件可以被配置成经由总线1040彼此通信。
在示例中,处理器1102(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1108的处理器1006和处理器1110。术语“处理器”旨在包括多核处理器,该多核处理器可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。虽然图11示出了多处理器1102,但是机器1100可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
[0158] 存储器1104包括主存储器1112、静态存储器1114和存储单元1116,处理器1102,其均可以经由总线1140访问所有这些部件。主存储器1104、静态存储器1114和存储单元1116存储体现本文中描述的方法或功能中的任何一种或更多种的指令1108。指令1108还可以在其被机器1100执行期间完全地或部分地驻留在主存储器1112内、在静态存储器1114内、在存储单元1116内的机器可读介质内、在处理器1102中的至少一个内(例如,在处理器的高速缓存存储器内)、或者在其任何合适的组合内。
[0159] I/O部件1138可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等的各种部件。包括在特定机器中的具体I/O部件1138将取决于机器的类型。例如,诸如移动电话的便携式机器可能包括触摸输入设备或其他这样的输入机构,而无终端(headless)服务器机器很可能不包括这样的触摸输入设备。将理解,I/O部件1138可以包括图11中未示出的许多其他部件。在各种示例中,I/O部件1138可以包括用户输出部件1124和用户输入部件1126。用户输出部件1124可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。用户输入部件1126可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸姿势的定位和力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
[0160] 在另外的示例中,I/O部件1138可以包括生物计量部件1128、运动部件1130、环境部件1132或位置部件1134以及广泛的一系列其他部件。例如,生物计量部件1128包括用于检测表达(例如,手表达、面部表达、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1130可以包括:加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)。
[0161] 环境部件1132可以包括例如一个或更多个摄像装置(具有静止图像/照片和视频能力)、照明传感器部件(例如,光度计)、温度传感器部件(例如,检测周围温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。
[0162] 关于摄像装置,客户端设备102可以具有摄像装置系统,该摄像装置系统包括例如客户端设备102的前表面上的前置摄像装置和客户端设备102的后表面上的后置摄像装置。前置摄像装置可以例如用于捕获客户端设备102的用户的静止图像和视频(例如,“自拍”),然后可以用上述增强数据(例如,过滤器)对该静止图像和视频进行增强。例如,后置摄像装置可以用于以更传统的摄像装置模式捕获静止图像和视频,这些图像类似地使用增强数据进行增强。除了前置和后置摄像装置之外,客户端设备102还可以包括用于捕获360°照片和视频的360°摄像装置。
[0163] 此外,客户端设备102的摄像装置系统可以包括双后置摄像装置(例如,主摄像装置以及深度感应摄像装置),或者甚至在客户端设备102的前后侧上包括三重、四重或五重后置摄像装置配置。例如,这些多摄像装置系统可以包括广角摄像装置、超广角摄像装置、长焦摄像装置、微距摄像装置和深度传感器。
[0164] 位置部件1134可以包括定位传感器部件(例如,GPS接收器部件)、海拔传感器部件(例如,检测气压的高度计或气压计,根据该气压可以得到海拔)、取向传感器部件(例如,磁力计)等。
[0165] 可以使用各种各样的技术来实现通信。I/O部件1138还包括通信部件1136,通信部件1136能够进行操作以经由相应的耦接或连接分别将机器1100耦接至网络1120或设备1122。例如,通信部件1136可以包括网络接口部件或另一合适的设备以与网络1120对接。在另外示例中,通信部件1136可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、 部件(例如, 低功耗)、 部件
和经由其他模态提供通信的其他通信部件。设备1122可以是其他机器或各种外围设备中的任何一个外围设备(例如,经由USB耦接的外围设备)。
[0166] 此外,通信部件1136可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1136可以包括射频识别(RFID)标签阅读器部件、NFC智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(UPC)条形码的一维条形码、诸如快速响应(QR)代码的多维条形码、Aztec代码、数据矩阵、数据符号(Dataglyph)、最大码(MaxiCode)、PDF417、超码(Ultra Code)、UCC RSS‑2D条形码和其他光代码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。此外,可以经由通信部件1136得到各种信息,如经由因特网协议(IP)地理定位的定位、经由 信号三角测量的定位、经由检测可以指示特定定位的NFC信标信号的定位等。
[0167] 各种存储器(例如,主存储器1112、静态存储器1114以及处理器1102的存储器)以及存储单元1116可以存储由本文中描述的方法或功能中的任何一个或更多个实现或使用的一组或更多组指令和数据结构(例如,软件)。在由处理器1102执行的情况下,这些指令(例如,指令1108)使得各种操作实现所公开的示例。
[0168] 可以经由网络接口设备(例如,通信部件1136中包括的网络接口部件),使用传输介质并且使用多个公知的传输协议中的任意一种传输协议(例如,超文本传输协议(HTTP)),通过网络1120来发送或接收指令1108。类似地,可以使用传输介质经由至设备1122的耦接(例如,对等耦接)来发送或接收指令1108。
[0169] 软件架构
[0170] 图12是示出可以安装在本文中所描述的设备中的任何一个或更多个上的软件架构1204的框图1200。软件架构1204由诸如包括处理器1220、存储器1226和I/O部件1238的机器1202的硬件来支持。在该示例中,软件架构1204可以被概念化为层的堆栈,其中每个层提供特定功能。软件架构1204包括诸如操作系统1212、库1210、框架1208和应用1206的层。在操作上,应用1206通过软件堆栈来激活API调用1250,并且接收响应于API调用1250的消息1252。
[0171] 操作系统1212管理硬件资源并且提供公共服务。操作系统1212包括例如:内核1214、服务1216、以及驱动器1222。内核1214充当硬件层与其他软件层之间的抽象层。例如,内核1214提供存储器管理、处理器管理(例如,调度)、部件管理、联网和安全设置等功能。服务1216可以为其他软件层提供其他公共服务。驱动器1222负责控制底层硬件或与底层硬件对接。例如,驱动器1222可以包括显示驱动器、摄像装置驱动器、 或
低功耗驱动器、闪存驱动器、串行通信驱动器(例如,USB驱动器)、
驱动器、音频驱动器、电力管理驱动器等。
[0172] 库1210提供由应用1206使用的公共低级基础设施。库1210可以包括系统库1218(例如,C标准库),系统库1218提供诸如存储器分配功能、字符串操纵功能、数学功能等的功能。另外,库1210可以包括API库1224,例如媒体库(例如,用于支持各种媒体格式的呈现和操纵的库,该媒体格式例如是运动图像专家组4(MPEG4)、高级视频编码(H.264或AVC)、运动图像专家组层3(MP3)、高级音频编码(AAC)、自适应多速率(AMR)音频编解码器、联合图像专家组(JPEG或JPG)或便携式网络图形(PNG))、图形库(例如,用于在显示器上的图形内容中以二维(2D)和三维(3D)进行呈现的OpenGL框架)、数据库库(例如,提供各种关系数据库功能的SQLite)、web库(例如,提供网页浏览功能的WebKit)等。库1210还可以包括各种其他库1228,以向应用1206提供许多其他API。
[0173] 框架1208提供由应用1206使用的公共高级基础设施。例如,框架1208提供各种图形用户接口(GUI)功能、高级资源管理和高级定位服务。框架1208可以提供可以由应用1206使用的广泛的其他API,其中一些API可以特定于特定操作系统或平台。
[0174] 在示例中,应用1206可以包括家庭应用1236、联系人应用1230、浏览器应用1232、书籍阅读器应用1234、定位应用1242、媒体应用1244、消息应用1246、游戏应用1248和诸如外部应用1240的各种各样的其他应用。应用1206是执行程序中限定的功能的程序。可以采用各种编程语言来创建以各种方式构造的应用1206中的一个或更多个,编程语言例如是面向对象的编程语言(例如,Objective‑C、Java或C++)或过程编程语言(例如,C语言或汇编语言)。在特定示例中,外部应用1240(例如,由特定平台的供应商以外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用)可以是在诸如IOSTM、ANDROIDTM、Phone的移动操作系统或另外的移动操作系统上运行的移动软件。在该示例中,外部应用
1240可以激活由操作系统1212提供的API调用1250以有助于本文中描述的功能。
[0175] 术语表
[0176] “载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。
[0177] “客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
[0178] “通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、 网络、其他类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(CDMA)连接、全局移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电业务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他标准、其他远距离协议或其他数据传输技术。
[0179] “部件”是指具有以下边界的设备、物理实体或逻辑,该边界由功能或子例程调用、分支点、API或者对特定处理或控制功能提供分区或模块化的其他技术定义。部件可以经由其接口与其他部件组合以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且可以是通常执行相关功能中的特定功能的程序的一部分。
[0180] 部件可以构成软件组件(例如,实施在机器可读介质上的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,可以通过软件(例如,应用或应用部分)将一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)配置成用于执行本文中描述的某些操作的硬件部件。
[0181] 也可以机械地、电子地或以其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路或逻辑。硬件部件可以是例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)的专用处理器。硬件部件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件而配置,硬件部件就成为被独特地定制成执行所配置功能的特定机器(或机器的特定部件),而不再是通用处理器。将理解,可以出于成本和时间考虑来决定机械地、在专用且永久配置的电路中还是在临时配置(例如,由软件配置)的电路中实现硬件部件。相应地,短语“硬件部件”(或者“硬件实现的部件”)应当被理解成包含有形实体,即为被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。
[0182] 考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每个硬件部件进行配置或实例化。例如,在硬件部件包括通过软件配置成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置成不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或更多个特定处理器以例如在一个时刻处构成特定硬件部件,并且在不同的时刻处构成不同的硬件部件。
[0183] 硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为通信地耦接。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件部件在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件部件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件部件可以在随后的时间访问存储器设备以检索所存储的输出并对其进行处理。硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。
[0184] 本文所述的示例方法的各种操作可以至少部分地由临时地配置(例如,由软件)或永久地配置成执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是永久地配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中,特定的一个或更多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器1102或处理器实现的部件来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)进行访问。某些操作的执行可以分布在处理器之间,不是仅驻留在单个机器内,而是部署在多个机器中。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理定位中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理定位分布。
[0185] “计算机可读存储介质”是指机器存储介质和传输介质两者。因此,术语包括存储设备/介质和载波/调制数据信号两者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物并且可以在本公开内容中互换地使用。
[0186] “短暂消息”是指在有时间限制的持续时间内可访问的消息。电子邮件消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送者设置。替选地,访问时间可以是默认设置或由接收者指定的设置。无论设置技术如何,该消息都是暂时的。
[0187] “机器存储介质”是指存储可执行指令、例程和数据的单个或多个存储设备和介质(例如,集中式或分布式数据库,以及相关联的高速缓存和服务器)。因此,术语应被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘(诸如内部硬盘和可移除盘);磁光盘;以及CD‑ROM和DVD‑ROM盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换地使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,所述载波、调制数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。
[0188] “非暂态计算机可读存储介质”是指能够存储、编码或携载由机器执行的指令的有形介质。
[0189] “信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且“信号介质”包括数字或模拟通信信号或其他无形介质以有助于软件或数据的通信。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指使信号特性中的一个或更多个特性被设置或改变以将信息编码在其中的信号。术语“传输介质”和“信号介质”意指相同的事物并且可以在本公开内容中互换地使用。
[0190] 在不脱离本公开内容的范围的情况下,可以对所公开的实施方式进行改变和修改。这些和其他改变或修改旨在被包括在所附权利要求中表达的本公开内容的范围内。

当前第1页 第1页 第2页 第3页