一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用先前帧进行骨骼跟踪的制作方法

2022-07-24 01:16:41 来源:中国专利 TAG:

使用先前帧进行骨骼跟踪
1.优先权声明
2.本技术要求于2019年12月11日提交的美国专利申请第16/710,980号的优先权,该美国专利申请的全部内容通过引用并入本文中。
技术领域
3.本公开内容总体上涉及基于描绘用户的图像来生成虚拟对象。


背景技术:

4.虚拟渲染系统可用于创建引人入胜且有趣的增强现实体验,在增强现实体验中,虚拟对象图形(例如化身)似乎存在于现实世界中。由于环境条件、用户动作、相机与正在渲染的对象之间的意外视觉中断等,此类系统可能会遇到呈现问题。这会导致虚拟对象消失或以其他方式表现不规则,从而打破虚拟对象存在于现实世界中的错觉。
附图说明
5.在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述相同的部件。为了容易识别对任何特定元件或动作的讨论,附图标记中的一个或多个最高位数字指代该元件被首次介绍时所在的图号。一些实施方式通过示例而不是限制的方式在附图的图中示出,在附图中:
6.图1是示出根据示例实施方式的用于通过网络交换数据(例如,消息和相关联的内容)的示例消息收发系统的框图。
7.图2是示出根据示例实施方式的可以存储在消息收发服务器系统的数据库中的数据的示意图。
8.图3是示出根据示例实施方式的由消息收发客户端应用生成的用于通信的消息的结构的示意图。
9.图4是示出根据示例实施方式的示例身体姿势估计系统的框图。
10.图5是示出根据示例实施方式的用于确定身体姿势的身体关节位置的图。
11.图6是示出根据示例实施方式的身体姿势估计系统的示例操作的流程图。
12.图7a至图8c是根据示例实施方式的身体姿势估计系统的说明性输入和输出。
13.图9是示出根据示例实施方式的可以结合本文中描述的各种硬件架构使用的代表性软件架构的框图。
14.图10是示出根据示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文中讨论的方法中的任何一种或更多种的机器的部件的框图。
具体实施方式
15.下面的描述包括体现本公开内容的说明性实施方式的系统、方法、技术、指令序列和计算机器程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节以提供对各
种实施方式的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践实施方式。一般地,公知的指令实例、协议、结构和技术不一定详细示出。
16.通常,虚拟现实(vr)和增强现实(ar)系统通过捕获用户的图像并另外使用在图像中描绘的现实世界人体的深度传感器获取深度图来显示代表给定用户的化身。通过一起处理深度图和图像,vr和ar系统可以模仿用户执行的动作。虽然这样的系统可以很好地呈现用户的化身,但对深度传感器的需求限制了它们的应用范围。这是因为向用户设备添加深度传感器以显示化身会增加设备的整体成本和复杂性,从而降低它们的吸引力。
17.此外,虽然某些系统使用实时骨骼跟踪跟踪器来识别用户执行的动作,但是这样的跟踪器是有噪声的并且需要应用时间过滤。这会降低它们的整体效率并消耗太多资源来将它们应用到移动设备上。基于经典计算机视觉和信号分析的过滤可以稍微改善结果,但还不够。
18.所公开的实施方式通过以下方式来提高使用电子设备的效率:应用第一机器学习技术以从用户的单个图像识别用户身体的骨骼关节然后通过对先前接收到的用户视频帧和当前帧图像特征应用第二机器学习技术来预测当前帧(例如,单个图像)的骨骼关节位置以过滤或改进所识别的骨骼关节。具体地,接收描绘用户的身体的视频。通过第一机器学习技术处理视频的当前帧以识别骨骼关节位置。通过第二机器学习技术处理一组先前帧(例如,当前帧之前1至2秒的视频),以预测后续帧(例如,当前帧)的骨骼关节位置。对通过第一机器学习技术对于当前帧识别的骨骼关节位置与通过第二机器学习技术基于先前帧预测的骨骼关节位置之间进行比较。然后通过第二机器学习技术校正骨骼关节位置之间的任何偏差或差异,以改进和过滤通过第一机器学习技术对于当前帧识别的骨骼关节位置。
19.然后可以使用骨骼关节来修改一个或更多个虚拟对象的呈现(例如模拟对应于骨骼关节的姿势)。虚拟对象(例如,三维对象,例如3d字幕、表情符号、角色、化身、动画、个性化化身或角色的循环动画、循环或非循环动画图形,例如跳舞的热狗、带有动画的艺术字体等)从单个红、绿、蓝(rgb)图像(例如,单目rgb图像)或描绘现实世界用户身体的rgb图像的视频直接生成。所公开的实施方式生成虚拟对象而无需获取现实世界用户身体的深度图。这使得具有简单rgb相机(无深度传感器)的用户设备能够基于现实世界用户在vr或ar应用中的身体姿势准确且快速地渲染经动画化的虚拟对象,从而允许用户在更真实的环境中与vr或ar内容交互。
20.在一些实施方式中,一个这样的虚拟对象被用户选择并添加到rgb图像,并且虚拟对象的姿势被修改以匹配用户身体的姿势从而提供所选择的虚拟对象是现实世界场景的一部分并且正在模仿用户的错觉。具体而言,所公开的实施方式使用机器学习技术处理描绘用户身体的图像以识别骨骼关节。确定由所识别的骨骼关节所表示的姿势。在确定了由骨骼关节表示的姿势之后,调整化身骨架的对应骨骼关节以改变化身的姿势从而匹配由所识别的用户身体的骨骼关节表示的姿势。生成具有与所识别的用户身体的骨骼关节所表示的姿势相匹配的修改姿势的化身以显示给用户。
21.图1是示出用于通过网络106交换数据(例如,消息和相关联的内容)的示例消息收发系统100的框图。消息收发系统100包括多个客户端设备102,所述多个客户端设备中的每一个都托管包括消息收发客户端应用104和ar/vr应用105的多个应用。每个消息收发客户端应用104经由网络106(例如,因特网)被通信地耦接至消息收发客户端应用104、ar/vr应
用105和消息收发服务器系统108的其他实例。
22.因此,每个消息收发客户端应用104和ar/vr应用105都能够经由网络106与另一消息收发客户端应用104和ar/vr应用105以及与消息收发服务器系统108通信和交换数据。在消息收发客户端应用104与ar/vr应用105之间以及在消息收发客户端应用104与消息收发服务器系统108之间交换的数据包括功能(例如,用以调用功能的命令)和有效载荷数据(例如,文本、音频、视频、或其他多媒体数据)。
23.ar/vr应用105是包括允许客户端设备102访问身体姿势估计系统124的一组功能的应用。在一些实现方式中,ar/vr应用105是作为消息收发客户端应用104的一部分的组件或特征。ar/vr应用105使用rgb相机来捕获用户的现实世界身体的单目图像。ar/vr应用105将各种经训练的机器学习技术应用于身体的所捕获的图像以及描绘身体的一个或更多个先前帧以生成化身。例如,化身被生成为具有与图像中描绘的用户身体的姿势相同的姿势。作为另一示例,化身被生成以与用户同时显示,并且化身的位置基于用户在图像中的相对位置而在帧之间改变。例如,化身位置改变以保持化身与用户之间的恒定距离,因此化身看起来跟随在用户周围。在一些实现方式中,ar/vr应用105实时或周期性地连续捕获用户身体的图像以连续或周期性地更新所生成的化身。这允许用户在现实世界中走动并实时查看化身更新。ar/vr应用105呈现各种内容(例如,消息、游戏、广告等)并且允许用户修改ar/vr应用105中的化身的姿势以与其他虚拟内容(例如,可以修改化身姿势以从虚拟树上摘下虚拟苹果)交互。在生成化身之后,用户可执行动作或手势来捕获用户和化身的图像以发送给另一个用户。
24.为了使ar/vr应用105直接从所捕获的rgb图像生成化身,ar/vr应用105从身体姿势估计系统124和/或消息收发服务器系统108获取第一经训练的机器学习技术。第一经训练的机器学习技术处理所捕获的rgb图像,以从rgb图像中提取与所捕获的rgb图像中描绘的身体相对应的一个或更多个特征。分析特征以识别一个或更多个骨骼关节以及它们相对于彼此的相应对齐。具体来说,分析特征以确定一组指定骨骼关节的关节位置。ar/vr应用105还从身体姿势估计系统124和/或消息收发服务器系统108获取第二经训练的机器学习技术。第二经训练的机器学习技术处理一个或更多个先前捕获的帧(例如,rgb图像之前1至2秒的视频帧)来估计或预测后续帧的骨骼关节位置。可以在缓冲器中连续或周期性地存储视频帧的阈值秒数(可以是用户定义的、先前指定的和/或动态确定的),使得可以通过第二经训练的机器学习技术来访问当前rgb图像之前的阈值秒数的视频帧。第二经训练的机器学习技术的骨骼关节位置的输出或预测用于过滤或改进通过第一经训练的机器学习技术识别的骨骼关节位置。在某些情况下,第二经训练的机器学习技术将通过第一经训练的机器学习技术识别的骨骼关节位置与先前捕获的帧一起处理,以过滤或改进估计的骨骼关节位置。
25.关节位置被提供给具有偏移量的数据库,以识别在所确定的关节位置的偏移量内的姿势。在识别出姿势之后,取得化身并且调整化身的骨架以模仿或复制所识别的姿势。在一些实施方式中,直接根据所确定的关节位置而不是根据所识别的姿势来调整化身的骨架。然后基于经调整以模仿所捕获的图像中描绘的身体姿势的骨架来生成化身以供显示。
26.在一些实施方式中,rgb图像是视频的多个帧中的第一帧。在这种情况下,在使用第一机器学习技术和第二机器学习技术在第一帧中检测到用户的身体之后,身体姿势估计
系统124估计用户的身体将在多个帧的第二帧中的位置和比例。第二帧可以与第一帧相邻。在一些实现方式中,将第三机器学习技术应用于第一帧以预测或估计用户身体在第二帧中的位置和比例。
27.在训练中,身体姿势估计系统124获取包括不同现实世界身体姿势的第一多个输入训练图像。这些训练图像还提供有关每个图像中描绘的身体姿势的真实信息。基于多个训练图像的特征来训练第一机器学习技术(例如,深度神经网络)。具体来说,第一机器学习技术从给定的训练图像中提取一个或更多个特征,并通过分析给定训练图像中描绘的身体的关节位置来估计身体姿势。第一机器学习技术获取与训练图像相对应的真实信息并调整或更新一个或更多个系数以改进对后续图像中描绘的身体姿势的后续估计。
28.在训练中,身体姿势估计系统124获取包括不同真实世界身体姿势的第一多个输入训练视频(每个具有与阈值视频持续时间例如1至2秒相对应的帧数)。这些训练视频还为相对于每个视频的后续帧提供了具有身体骨骼关节位置的真实信息。即,第一训练视频可以与识别在第一训练视频中在紧接在第一训练视频中的最后一帧之后的帧中描绘的身体的骨骼关节位置的真实信息相关联。基于多个训练视频的特征来训练第二机器学习技术(例如,神经网络)。具体地,第二机器学习技术从给定的训练视频中提取一个或更多个特征,并通过分析给定训练视频中描绘的身体的关节位置来估计或预测后续帧中与训练视频的最后一帧相关的骨骼关节位置。第二机器学习技术获取对应于训练视频的真实信息并调整或更新一个或更多个系数以改进后续视频中描绘的身体姿势的后续估计。
29.在一些实现方式中,第三机器学习技术(例如,深度神经网络)从给定的训练图像中提取一个或更多个特征,并通过分析给定训练图像中描绘的身体的关节位置来估计与给定训练图像相邻的后续图像中的身体姿势。第三机器学习技术获取与训练图像相对应的真实信息,该信息识别后续图像中的身体姿势,并调整一个或更多个系数以改进后续图像中描绘的身体姿势的后续估计以及后续图像中的身体姿势和比例的估计。在一些实现方式中,在训练期间,第三机器学习技术获取每个训练图像的参考3d深度图并使用参考3d深度图来估计身体姿势。
30.消息收发服务器系统108经由网络106向特定消息收发客户端应用104提供服务器端功能。虽然消息收发系统100的某些功能在本文中被描述为由消息收发客户端应用104或由消息收发服务器系统108执行,但是应当理解,某些功能的位置在消息收发客户端应用104或消息收发服务器系统108内是设计选择。例如,在技术上优选的是:可以最初将某些技术和功能部署在消息收发服务器系统108内,但是稍后将该技术和功能迁移至客户端设备102具有足够处理能力的消息收发客户端应用104。
31.消息收发服务器系统108支持向消息收发客户端应用104提供的各种服务和操作。这样的操作包括向消息收发客户端应用104发送数据、从消息收发客户端应用104接收数据以及对由消息收发客户端应用104生成的数据进行处理。该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和覆盖、虚拟对象、消息内容持久性条件、社交网络信息和生活事件信息作为示例。通过经由消息收发客户端应用104的用户接口(ui)可用的功能来激活和控制消息收发系统100内的数据交换。
32.现在具体地转至消息收发服务器系统108,应用接口(api)服务器110耦接至应用服务器112并向应用服务器112提供编程接口。应用服务器112通信地耦接至数据库服务器
118,数据库服务器118便于访问数据库120,在该数据库120中存储有与通过应用服务器112处理的消息相关联的数据。
33.具体处理api服务器110,该服务器110在客户端设备102与应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,api服务器110提供一组接口(例如,例程和协议),由消息收发客户端应用104可以调用或查询该组接口以激活应用服务器112的功能。api服务器110展示由应用服务器112支持的各种功能,包括:帐户注册;登录功能;经由应用服务器112将消息从特定消息收发客户端应用104发送至另一个消息收发客户端应用104;将媒体文件(例如,图像或视频)从消息收发客户端应用104发送至消息收发服务器应用114,并供另一消息收发客户端应用104可能访问;媒体数据集合(例如,故事)的设置;这样的集合的检索;客户端设备102的用户的朋友列表的检索;消息和内容的检索;在社交图中添加和删除朋友;朋友在社交图中的位置;访问用户对话数据;访问存储在消息收发服务器系统108上的化身信息;以及打开应用事件(例如,与消息收发客户端应用104有关)。
34.应用服务器112托管若干应用和子系统,包括消息收发服务器应用114、图像处理系统116、社交网络系统122以及身体姿势估计系统124。消息收发服务器应用114实现了若干消息处理技术和功能,特别是与从消息收发客户端应用104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个来源的文本和媒体内容可以聚合成内容集合(例如,称为故事或画廊)。然后,由消息收发服务器应用114使这些集合对消息收发客户端应用104可用。鉴于对这样的处理的硬件要求,也可以由消息收发服务器应用114在服务器端执行数据的其他处理器和存储器密集型处理。
35.应用服务器112还包括图像处理系统116,该图像处理系统116通常关于在消息收发服务器应用114处的消息的有效载荷内接收到的图像或视频,专用于执行各种图像处理操作。图像处理系统116的一部分也可以由身体姿势估计系统124来实现。
36.社交网络系统122支持各种社交网络功能和服务,并使这些功能和服务可用于消息传递服务器应用114。为此,社交网络系统122维护并访问数据库120内的实体图。社交网络系统122支持的功能和服务的示例包括识别特定用户与其具有关系或者特定用户“正在关注”的消息收发系统100的其他用户,以及还识别特定用户的其他实体和兴趣。此类其他用户还可被称为用户的好友。
37.应用服务器112通信地耦接到数据库服务器118,该数据库服务器118促进对数据库120的访问,在该数据库120中存储有与由消息收发服务器应用114处理的消息相关联的数据。
38.图2是示出根据某些示例实施方式的可以存储在消息收发服务器系统108的数据库120中的数据的示意图200。虽然数据库120的内容被示为包括若干表,但是应当理解,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。
39.数据库120包括存储在消息表214内的消息数据。实体表202存储实体数据,包括实体图204。在实体表202内维护记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管类型如何,消息收发服务器系统108存储关于其的数据的任何实体可以是识别的实体。每个实体被提供有唯一标识符,以及实体类型标识符(未示出)。
40.实体图204还存储关于实体之间的关系和关联的信息。仅举例而言,这样的关系可
以是社交的、职业的(例如,在共同的公司或组织工作)、基于兴趣的或基于活动的。
41.消息表214可以存储用户与一个或更多个朋友或实体之间的对话集合。消息表214可以包括每个对话的各种属性,例如参与者列表、对话的大小(例如,用户的数目和/或消息的数目)、对话的聊天颜色、对话的唯一标识符以及任何其他对话相关的特征。
42.数据库120还在注释表212中以过滤器的示例形式存储注释数据。数据库120还存储在注释表212中接收到的注释内容。在注释表212中存储数据的过滤器是与视频和/或图像相关联并被应用于视频(其数据存储在视频表210中)和/或图像(其数据存储在图像表208中)。在一个示例中,过滤器是在呈现给接收方用户期间显示为覆盖在图像或视频上的覆盖。过滤器可以是各种类型的,包括当发送方用户正在编写消息时由消息收发客户端应用104呈现给发送方用户的过滤器图库中用户选择的过滤器。其他类型的过滤器包括地理位置过滤器(也称为地理过滤器),其可以基于地理位置被呈现给发送方用户。例如,可以基于由客户端设备102的全球定位系统(gps)单元确定的地理位置信息,由消息收发客户端应用104在ui内呈现特定于附近或特殊位置的地理位置过滤器。另一种类型的过滤器是数据过滤器,其可以由消息收发客户端应用104基于在消息创建过程期间由客户端设备102收集的其他输入或信息选择性地呈现给发送方用户。数据过滤器的示例包括特定位置处的当前温度、发送方用户行进的当前速度、客户端设备102的电池寿命或当前时间。
43.可以存储在图像表208内的其他注释数据可以是可以添加到图像或视频中的实时特定效果和声音。
44.如上所述,视频表210存储视频数据,在一个实施方式中,该视频数据与在消息表214中维护其记录的消息相关联。类似地,图像表208存储与消息数据被存储在实体表202中的消息相关联的图像数据。实体表202可以将来自注释表212的各种注释与存储在图像表208和视频表210中的各种图像和视频相关联。
45.经训练的机器学习技术207存储在身体姿势估计系统124的训练期间已经被训练的参数。例如,经训练的机器学习技术207存储一个或更多个神经网络机器学习技术的经训练的参数。
46.身体姿势训练图像209存储对现实世界身体姿势的描绘的多个图像。存储在身体姿势训练图像209中的多个图像包括对现实世界身体姿势的各种描绘以及从3d深度传感器为每个图像捕获的3d深度信息。多个图像还包括识别一个或更多个身体骨骼关节的身体姿势和真实骨骼关节位置的真实信息。图5示出了针对给定姿势识别的骨骼关节位置的示例。这些骨骼关节位置包括右手腕、右肘、右肩、面部上的鼻子、左肩、左肘、和左手腕的位置。可以相对于彼此确定骨骼关节位置(例如,一个骨骼关节相对于另一个骨骼关节有多高或一个骨骼关节相对于鼻子有多高或多低)以确定给定的姿势。这些身体姿势训练图像209被身体姿势估计系统124用来训练第一机器学习技术,该第一机器学习技术用于从所接收的用户身体的rgb单目图像来确定身体姿势和骨骼关节位置。
47.身体姿势训练图像209存储描绘真实世界身体姿势的多个视频(1至2秒视频片段)。身体姿势训练图像209中存储的多个视频包括真实世界身体姿势的各种描绘。多个视频还包括识别在相对于多个视频中的每一个中的最后一帧的后续帧中描绘的身体的真实骨骼关节位置的真实信息。这些身体姿势训练图像209被身体姿势估计系统124用来训练第二机器学习技术,该第二机器学习技术用于根据接收到的用户身体的rgb单目视频预测后
续帧的骨骼关节位置。
48.返回至图2,故事表206存储与消息和相关联的图像、视频或音频数据的集合有关的数据,这些数据被编译成集合(例如,故事或图库)。特定集合的创建可以由特定用户(例如,在实体表202中为其维护记录的每个用户)发起。用户可以以已由该用户创建和发送/广播的内容集合的形式创建“个人故事”。为此,消息收发客户端应用104的ui可以包括用户可选择的图标,以使得发送方用户能够将特定内容添加到他或她的个人故事。
49.集合还可以构成“生活故事”,其是来自多个用户的内容的集合,该集合是手动、自动或使用手动和自动技术的组合创建的。例如,“生活故事”可以构成来自各种位置和事件的用户提交内容的策划流。其客户端设备启用了位置服务并且在特定时间处于共同位置事件处的用户可以例如经由消息收发客户端应用104的ui被呈现有选项,以将内容贡献给特定生活故事。可以由消息收发客户端应用104基于用户的位置向他或她标识生活故事。最终结果是从社区视角讲述的“生活故事”。
50.另外类型的内容集合被称为“位置故事”,其使得其客户端设备102位于特定地理位置(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些实施方式中,对位置故事的贡献可能需要二级认证以验证最终用户属于特定组织或其他实体(例如,是大学校园中的学生)。
51.图3是示出根据一些实施方式的消息300的结构的示意图,消息300由消息收发客户端应用104生成,以用于传送至另外的消息收发客户端应用104或消息收发服务器应用114。特定消息300的内容用于填充存储在数据库120中的消息表214,该消息表214可由消息服务器应用114访问。类似地,消息300的内容被存储在存储器中作为客户端设备102或应用服务器112的“在途”或“飞行中”的数据。消息300被示为包括以下组成部分:
52.·
消息标识符302:识别消息300的唯一标识符。
53.·
消息文本有效载荷304:要由用户经由客户端设备102的ui生成并且包括在消息300中的文本。
54.·
消息图像有效载荷306:由客户端设备102的摄像装置部件捕获的或从客户端设备102的存储器检索到的、并且包括在消息300中的图像数据。
55.·
消息视频有效载荷308:由摄像装置部件捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息300中的视频数据。
56.·
消息音频有效载荷310:由麦克风捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息300中的音频数据。
57.·
消息注释312:表示要应用于消息300的消息图像有效载荷306、消息视频有效载荷308或消息音频有效载荷310的注释的注释数据(例如,过滤器、贴纸或其他增强物)。
58.·
消息持续时间参数314:参数值,其指示消息的内容(例如,消息图像有效载荷306、消息视频有效载荷308、消息音频有效载荷310)将经由消息收发客户端应用104被呈现给用户或使其对于用户可访问的以秒为单位的时间量。
59.·
消息地理位置参数316:与消息的内容有效载荷相关联的地理位置数据(例如,纬度和经度坐标)。在有效载荷中可以包括多个消息地理位置参数316值,其中这些参数值中的每一个都与包括在内容中的内容项(例如,消息图像有效载荷306内的特定图像,或消息视频有效载荷308中的特定视频)相关联。
60.·
消息故事标识符318:识别一个或更多个内容集合(例如,“故事”)的标识符值,消息300的消息图像有效载荷306中的特定内容项与所述一个或更多个内容集合相关联。例如,消息图像有效载荷306内的多个图像可以各自与使用标识符值的多个内容集合相关联。
61.·
消息标签320:每个消息300可以用多个标签来标记,每个标签都指示消息有效载荷中包括的内容的主题。例如,在消息图像有效载荷306中包括的特定图像描绘动物(例如狮子)的情况下,可以在消息标签320中包括指示相关动物的标签值。标签值可以基于用户输入手动地生成,或者可以使用例如图像识别自动地生成。
62.·
消息发送者标识符322:指示在其上生成消息300并且从其发送消息300的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。
63.·
消息接收者标识符324:针对其指示消息300被寻址的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。在多个用户之间的对话的情况下,标识符可以指示对话中涉及的每个用户。
64.消息300的各种组成部分的内容(例如,值)可以是指向表中的存储内容数据值的位置的指针。例如,消息图像有效载荷306中的图像值可以是指向图像表208内的位置(或地址)的指针。类似地,消息视频有效载荷308内的值可以指向存储在视频表210内的数据,存储在消息注释312中的值可以指向存储在注释表212中的数据,存储在消息故事标识符318中的值可以指向存储在故事表206中的数据,并且存储在消息发送者标识符322和消息接收者标识符324中的值可以指向存储在实体表202中的用户记录。
65.图4是示出根据示例实施方式的示例身体姿势估计系统124的框图。身体姿势估计系统124对一组输入数据(例如,描绘用户真实身体的单目图像401、身体姿势训练图像数据402、描绘用户的身体的单目视频403、以及身体姿势训练视频数据404)进行操作。该组输入数据在训练阶段从存储在数据库200中的身体姿势训练图像209获得,并且在ar/vr应用105正在被使用时从客户端设备102的rgb相机获取。身体姿势估计系统124包括第一机器学习技术模块412、骨骼关节位置模块414、第二机器学习技术模块417、姿势确定模块416、虚拟对象修改模块418、虚拟对象模式选择模块419和虚拟对象显示模块420。
66.在训练期间,根据所公开的实施方式,身体姿势估计系统124从身体姿势训练图像数据402接收给定的训练图像(例如,描绘现实世界身体的单目图像401,诸如,用户的面部、手臂、躯干、臀部和腿部的图像)。身体姿势估计系统124使用第一机器学习技术模块412对给定训练图像应用一种或更多种机器学习技术。第一机器学习技术模块412从给定的训练图像中提取一个或更多个特征以估计图像中描绘的骨骼关节的骨骼关节位置。例如,第一机器学习技术模块412获取描绘用户面部、手臂、躯干、臀部和腿部的给定训练图像。第一机器学习技术模块412从图像中提取与用户面部和手臂相对应的特征以识别一个或更多个骨骼关节(例如,图5中所示的关节,包括左/右腕关节、左/右肘关节、左/右肩关节和鼻子位置)。
67.第一机器学习技术模块412确定所识别的骨骼关节的相对位置以确定对应于骨骼关节位置的姿势。在一个实施方式中,第一机器学习技术模块412使用与给定训练图像相关联的深度信息来帮助确定身体的骨骼关节位置和姿势。第一机器学习技术模块412将所确定的骨骼关节位置和所确定的姿势与作为身体姿势训练图像数据402的一部分提供的真实骨骼关节位置和姿势进行比较。基于比较的差异阈值,第一机器学习技术模块412更新一个
或更多个系数并获取一个或更多个额外的身体姿势训练图像。在指定数量的时期(epoch)或训练图像被处理之后和/或当差异阈值达到指定值时,第一机器学习技术模块412完成训练并且第一机器学习技术模块412的参数和系数被存储在经训练的机器学习技术207中。在一些实施方式中,第一机器学习技术模块412的部分由骨骼关节位置模块414和姿势确定模块416来实现。
68.在训练期间,根据所公开的实施方式,身体姿势估计系统124从身体姿势训练图像数据402接收给定训练视频(例如,描绘用户的身体的单目视频403,其描绘现实世界身体,诸如,用户的面部、手臂、躯干、臀部和腿部的图像)。身体姿势估计系统124使用第二机器学习技术模块417对给定训练视频应用一种或更多种机器学习技术。第二机器学习技术模块417从给定的训练视频中提取一个或更多个特征以预测视频的最后一帧之后的帧的骨骼关节位置。例如,第二机器学习技术模块417获取描绘用户面部、手臂、躯干、臀部和腿部的跨1至2秒的视频的一组帧的移动的给定训练视频。第二机器学习技术模块417从视频中提取与用户面部和手臂相对应的特征以预测视频的最后一帧之后的帧中的一个或更多个骨骼关节(例如,图5中所示的关节,包括左/右腕关节、左/右肘关节、左/右肩关节和鼻子位置)。在一些情况下,视频的最后一帧之后的帧可能不可用并且不被第二机器学习技术模块417接收,但是第二机器学习技术模块417根据先前帧预测后续帧的骨骼关节位置。
69.第二机器学习技术模块417预测给定训练视频之后的一个或更多个后续帧的骨骼关节位置。例如,第二机器学习技术模块417可以处理给定视频的帧2至25和同一视频的帧26,以预测在同一视频的帧26中描绘的身体的骨骼关节位置。第二机器学习技术模块417将确定/预测的骨骼关节位置与作为身体姿势训练图像数据402的一部分提供的真实骨骼关节位置进行比较。真实骨骼关节位置可以提供关于帧2至25中描绘的身体的移动的后续帧26的真实骨骼关节位置。基于比较的差异阈值,第二机器学习技术模块417更新一个或更多个系数并获取一个或更多个额外的身体姿势训练视频。在处理了指定数量的时期或批次的训练视频后以及/或者当差值阈值达到指定值时,第二机器学习技术模块417完成训练并且第二机器学习技术模块417的参数和系数被存储在经训练的机器学习技术207中。在一些实施方式中,第二机器学习技术模块417的一部分由骨骼关节位置模块414和姿势确定模块416实现。
70.在示例中,第二机器学习技术模块417被训练以识别骨骼关节位置跨一组连续帧的移动。第二机器学习技术模块417可以接收当前视频帧和/或根据该当前视频帧确定的骨骼关节位置。第二机器学习技术模块417可以将描绘身体的移动的一组先前帧和当前帧的图像特征一起处理,并且预测下一帧的估计骨骼关节位置。基于该预测,第二机器学习技术模块417将预测的估计骨骼关节位置与第一机器学习技术模块412针对当前帧确定的骨骼关节位置进行比较。然后第二机器学习技术模块417可以基于比较确定所需的任何偏差和校正。
71.具体地,第二机器学习技术模块417(例如,从第一机器学习技术模块412)接收已经针对当前帧确定的骨骼关节位置的集合。骨骼关节位置的集合可以指示左手腕在二维(2d)或三维(3d)空间(4,6)中的特定坐标处,而右手腕在2d或3d空间(10,8)中的另一个特定坐标处。第二机器学习技术模块417处理紧接在当前帧之前1至2秒的视频帧序列和当前帧的图像特征。第二机器学习技术模块417分析骨骼关节跨视频帧序列的移动,以预测骨骼
关节在当前帧或当前帧之后的帧中的估计位置。作为示例,第二机器学习技术模块417预测左手腕的坐标为(4,7),并且右手腕的坐标为(10,8)。第二机器学习技术模块417将预测坐标与(例如,通过第一机器学习技术模块412)针对当前帧确定的坐标进行比较。第二机器学习技术模块417可以过滤或校正至少一些不匹配的坐标。在该示例中,第二机器学习技术模块417确定左手腕坐标(4,6)与基于先前视频帧预测的坐标(4,7)不匹配,因此在骨骼关节位置的集合中将骨骼关节位置校正为(4,7)。
72.在训练之后,根据所公开的实施方式,身体姿势估计系统124接收输入图像401(例如,描绘真实世界身体的单目图像,例如用户的面部、手臂、躯干、臀部和腿的图像)作为来自客户端设备102的单个rgb图像。身体姿势估计系统124将第一经训练的机器学习技术模块412应用于所接收的输入图像401,以提取表示图像401中描绘的身体的骨骼关节的一个或更多个特征。身体姿势估计系统124将第二经训练的机器学习技术模块417应用于所接收的描绘用户身体的单目视频403,以提取表示在描绘用户的身体的单目视频403中描绘的身体的骨骼关节的一个或更多个特征以及生成对后续帧中的骨骼关节的预测或估计。
73.在一些实施方式中,从描绘用户身体的视频流中提取特征的速率是基于用户相对于图像捕获设备定位的多近或多远。例如,如果用户被定为成远离图像捕获设备并且在视频图像中显得非常小,那么更不频繁地分析用户身体的特征从而更不频繁地分析用户身体的姿势(例如,每5帧一次)。如果用户靠近图像捕获设备并在视频的图像中显得很大,则更频繁地分析用户身体的特征从而更频繁地分析用户身体的姿势(例如,每2帧一次)。所提取的特征被提供给骨骼关节位置模块414。骨骼关节位置模块414分析骨骼关节特征以确定特定骨骼关节的坐标。例如,骨骼关节位置模块414确定每个骨骼关节的特定点的x,y坐标,例如左手腕的x,y坐标、左肘的x,y坐标、左肩的x,y坐标,鼻子(或其他面部特征,诸如嘴、耳或眼睛)的x,y坐标,右手腕的x,y坐标,右肘的x,y坐标,以及右肩的x,y坐标。骨骼关节位置模块414向第二机器学习技术模块417提供指定骨骼关节的x,y坐标。在一些实施方式中,骨骼关节位置模块414向虚拟对象修改模块418提供经过滤的骨骼关节的x,y坐标。在一个实施方式中,x,y坐标表示每个骨骼关节相对于身体的中性姿势的x,y偏移量。
74.第二机器学习技术模块417分析骨骼关节在描绘用户的身体的单目图像401之前接收的视频帧序列上的移动,以预测在描绘用户身体的单目图像401中骨骼关节的估计位置。第二机器学习技术模块417分析的先前视频帧的数目或先前接收的视频片段的持续时间可以由用户设置、预定或动态调整。在某些情况下,如果通过第一机器学习技术模块412确定的骨骼关节位置的过滤或校正量超过指定阈值,则分析的先前视频帧的数目可能会增加(例如,从1秒视频到2秒视频)。在某些情况下,基于用户与相机之间的距离超过指定阈值,可以增加分析的先前视频帧的数目(例如,从1秒视频到2秒视频)。第二机器学习技术模块417可以过滤或校正由骨骼关节位置模块414提供的与由第二机器学习技术模块417基于先前视频帧预测的骨骼关节位置不匹配的一个或更多个骨骼关节位置的坐标中的至少一些。在该示例中,第二机器学习技术模块417确定左手腕坐标(4,6)与基于先前视频帧预测的坐标(4,7)不匹配,因此,在骨骼关节位置的集合中将骨骼关节位置校正为(4,7)。
75.姿势确定模块416确定从第二机器学习技术模块417接收的每个骨骼关节的相对位置。例如,姿势确定模块416确定左手腕在y方向上比右手腕更低多于第一指定量但少于第二指定量。基于该确定,姿势确定模块416估计图像中描绘的姿势对应于第一姿势。作为
另一示例,姿势确定模块416确定左手腕在y方向上比右手腕更低超过第一指定量和第二指定量。基于该确定,姿势确定模块416估计图像中描绘的姿势对应于第二姿势。在一些实施方式中,姿势确定模块416基于从骨骼关节位置模块414接收的x,y坐标来搜索数据库以识别在x,y坐标的预定阈值内的姿势。
76.虚拟对象模式选择模块419从客户端设备102接收对虚拟化模式的选择。例如,可以向ar/vr应用105的用户呈现模式选项列表。响应于接收到用户从列表中对给定模式选项的选择,给定模式被提供给虚拟对象模式选择模块419作为对虚拟化模式的选择。模式选项可以包括单个化身模仿选项、多个化身模仿选项、化身可视化控制选项、化身跟随选项、和化身虚拟世界交互选项。虚拟化模式选择控制用户身体的骨骼关节位置影响化身的骨架或显示器中化身相对于用户的位置的方式。模式选项可以包括供用户选择的不同形式和类型的化身的列表。然后使用所选择的化身来取得相应的骨架,以根据用户的姿势调整骨架。
77.虚拟对象修改模块418可以基于由虚拟对象模式选择模块419选择的模式和从骨骼关节位置模块414和/或姿势确定模块416接收的姿势或骨骼关节位置来调整给定化身的骨架。虚拟对象修改模块418例如通过改变图像中化身的姿势、视觉属性和/或位置来调整化身在图像中的呈现方式。经调整的化身由虚拟对象修改模块418提供给虚拟对象显示模块420。虚拟对象显示模块420将经调整的化身组合成所接收的描绘用户身体的单目图像,从而在图像中同时呈现经调整的化身和用户。该图像由虚拟对象显示模块420提供给客户端设备102,然后可以发送给另一个用户或存储以供以后访问和显示。
78.例如,对单个化身模仿选项的选择指示虚拟对象修改模块418基于用户身体的骨骼关节之间的相对距离来修改化身的骨架。通过这种方式,骨架被修改为复制或模仿用户身体所表示的姿势。具体地,如果确定在所捕获的rgb图像中左手腕从左手腕的中性位置偏移更高一定比例或百分比,则相应的化身骨架的左手腕被抬高到同样从化身左手腕的中性位置更高相同的比例或百分比的位置。类似地调整每个骨架关节以复制图像中描绘的身体的骨骼关节位置的相对位置。例如,如图7a所示,用户的身体723被识别并且用户的身体723的左腕关节位置被确定为比中性左腕关节位置偏移更低第一量,用户的身体723的右腕关节位置被确定为比中性右腕关节位置偏移更高第二量。在一个实施方式中,图5表示用户身体的中性骨骼关节位置。化身734的骨架的骨骼关节位置相对于它们的对应中性位置被类似地调整以偏移类似的第一量和第二量。结果,化身734看起来模仿或复制由用户的身体723表示的姿势。
79.作为另一示例,对多个化身模仿选项的选择指示虚拟对象修改模块418基于用户身体的骨骼关节之间的相对距离来修改化身的多个副本的骨架。多个化身模仿选项使得在如图8a的图像1011中所示的第一中性位置1020中描绘的化身对与如图像1013中所示的用户身体相对应的姿势进行动画处理。具体地,图像1011中所示的多个化身可以以不同的中性姿势(例如,以四条腿在地板上爬行)出现。响应于对多个化身模仿选项的选择,姿势估计系统124分析所接收的单目rgb图像的序列以确定用户的姿势何时与指定姿势相匹配。响应于确定用户的姿势与指定的姿势相匹配,姿势估计系统124使所有化身复制用户的姿势(例如,用两条腿站立并且将左臂和右臂定位成与用户相似的姿势)。化身的骨架被以与当单个化身模仿选项被选择时针对该单个化身所进行的相似方式调整。另一个示例被显示在图像1019和1015中。在图像1013中,化身1030从中性位置(平躺在地板上)过渡到模仿用户姿势
的姿势位置1032(例如,用两条腿站立并且将左臂和右臂定位成与用户相似的姿势)。当化身是纸片的集合时,纸片被动画化为飞来飞去,直到纸片以一定的顺序并以与用户的身体姿势相匹配的姿势被排列在用户的前面或后面。
80.作为另一示例,对化身可视化控制选项的选择指示虚拟对象修改模块418基于用户的姿势来修改化身的视觉属性。例如,化身在屏幕上被呈现为以给定的速率从上到下或从左到右移动。具体地,图8b的图像1110中所示的云可以被动画化为在用户面前横跨屏幕向下移动。基于用户的姿势或基于用户从一个姿势过渡到另一个姿势的速度有多慢或多快,可以增加或减少云横跨屏幕移动的速率。作为另一示例,化身(例如,云)可以被放置在用户的手上,如图像1112中所示。当用户将姿势从垂直且笔直悬在空中的手改变为水平伸展的手时,化身继续跟随用户的手并定位在用户的手上,但化身的视觉属性发生变化(例如,云现在在用户上方呈现彩虹,彩虹从位于一只手上的第一朵云到位于第二只手上的第二朵云),如图1114所示。视觉属性的改变还可以包括将化身上描绘的面部从微笑变为皱眉,或者可以基于用户的骨骼关节位置的改变来改变化身的颜色。
81.作为另一示例,对化身虚拟世界交互的选择指示虚拟对象修改模块418使得化身与图像中的另一个虚拟对象交互。例如,化身被显示在包括虚拟对象(例如,虚拟树和树上的虚拟苹果)的图像中。化身姿势和移动以允许化身与虚拟对象交互的方式跟踪和模仿用户的骨骼关节位置。具体地,图8c示出了虚拟苹果810和化身812,其手臂具有在垂直方向上彼此处于特定位置水平的左右手腕。在这个位置的化身812的右手与虚拟苹果810距离第一距离。当图像中描绘的用户的身体820抬起右臂时,化身812的右臂816也相对于左臂抬起,这也抬起了化身812的右手腕。在这个位置,化身812的右手腕和右肘高于左手腕和左肘,并且化身812的右手与虚拟苹果810距离第二距离。化身812的右手与虚拟苹果810的位置之间的距离被确定为小于阈值,因此,虚拟苹果810与虚拟树814分离并被固定到化身812的右手。如图所示,虚拟苹果810不再呈现在虚拟树814上,并且当用户放低他们的手臂时,化身的左臂和右臂也被放低以显示右手现在正拿着虚拟苹果810。以此方式,用户可以使化身812模仿用户的姿势以与图像或视频中的一个或更多个虚拟对象交互。
82.作为另一示例,对化身跟随选项的选择指示虚拟对象修改模块418保持化身与用户之间的给定距离。具体来说,此选项使得化身在一系列图像上跟随用户。例如,化身在描绘用户身体的图像中的位置随着用户的身体位置在图像中的变化而变化。特别地,如果用户向右移动一定量,则所显示的化身的位置也向右移动相同的一定量。图8c示出了在相对于图像中描绘的用户的第一位置830中并且在2d或3d空间中的化身与用户之间的第一距离处的化身。随着用户移动到第二位置,化身被移动到第二位置832以与图像中描绘的用户保持相同的距离。
83.图6是示出根据示例实施方式的执行过程600中的身体姿势估计系统124的示例操作的流程图。过程600可以以由一个或更多个处理器执行的计算机可读指令实现,使得过程600的操作可以部分地或全部地由消息收发服务器系统108和/或ar/vr应用105的功能部件执行;因此,下面参照其通过示例的方式描述过程600。然而,在其他实施方式中,过程600的操作中的至少一些操作可以部署在各种其他硬件配置上。因此,过程600并不旨在限于消息收发服务器系统108并且可以全部地或部分地由任何其他部件实现。过程600的操作中的一些操作或全部操作可以并行、无序或完全省略。
84.在操作601处,身体姿势估计系统124接收包括对用户的身体的描绘的单目图像。例如,第一机器学习技术模块412接收描绘用户的身体的单目图像401。第一机器学习技术模块412从指示骨骼关节的图像中提取一个或更多个特征。
85.在操作602处,身体姿势估计系统124检测在单目图像401中描绘的身体的多个骨骼关节。例如,骨骼关节位置模块414处理通过第一机器学习技术模块412提取的特征以确定一组骨骼关节的位置。可以相对于每个骨骼关节的中性位置来确定该位置。
86.在操作603处,身体姿势估计系统124访问包括在单目图像之前接收的多个单目图像的视频馈送。例如,姿势确定模块416访问在通过第一机器学习技术模块412处理的当前图像之前接收的1至2秒的视频。
87.在操作604处,身体姿势估计系统124使用视频馈送过滤基于单目图像检测到的身体的多个骨骼关节。例如,第二机器学习技术模块417基于一个或更多个先前帧中的骨骼关节位置(例如,基于在前1至2秒的视频中的身体移动)来预测当前帧的骨骼关节位置。第二机器学习技术模块417过滤或校正基于实际接收的当前视频帧通过第一机器学习技术模块412输出的骨骼关节位置与基于当前帧的先前视频帧和/或图像特征通过第二机器学习技术模块417输出的预测骨骼关节位置之间的任何不匹配。
88.在操作605处,身体姿势估计系统124基于经过滤的身体的多个骨骼关节来确定由单目图像中描绘的身体表示的姿势。
89.图7a至图7c示出了根据示例实施方式的身体姿势估计系统124的说明性输入和输出。图7a至图7c中所示的输入和输出可以由ar/vr应用105来实现。在一些实施方式中,第一用户访问身体姿势估计系统124以将描绘用户和对应化身的图像交换给另一用户。向第一用户呈现包括化身选择区域和开始交换图像的选项的屏幕711。在第一用户选择化身并选择开始选项之后,在屏幕712中向第一用户呈现指令以将第一用户定位在距图像捕获设备指定距离处。例如,指示第一用户后退,以便用户的身体适合图像捕获设备捕获的图像。
90.在一个实施方式中,如屏幕712中所示,第一用户被指示离开图像捕获设备足够远,直到预定的一组骨骼关节可见但并非所有骨骼关节都可见。具体地,身体姿势估计系统124可以仅需要手腕位置、肘位置、肩位置和鼻子位置在图像中可见,而不需要腿部位置。在一些实施方式中,在图像中可见的第一用户的骨骼关节使得化身的相同对应骨骼关节被调整。例如,如果图像中只有第一用户的手臂可见,则仅调整化身的手臂以模仿第一用户的手臂位置。如果用户的整个身体(包括用户的腿)都是可见的,则整个化身骨架(包括化身的腿)被调整以模仿第一用户的身体姿势。
91.在屏幕713中获取用户的身体姿势并且身体姿势估计系统124生成具有与第一用户相同或相似的姿势的化身734以用于在屏幕714中显示。第一用户可以说一个预定的词,或者,如果用户在阈值时间段内保持相同的姿势,则捕获屏幕截图或图像,该屏幕截图或图像以该姿势的用户和模仿用户姿势的化身为特征。
92.如图7b中所示,屏幕截图741在屏幕721中被显示给第一用户。空白空间760可以被包括在屏幕721中,指示来自第二用户的对应屏幕截图的接收即将发生。第一用户可以选择或按压空白区域760以使接收者列表呈现在屏幕722中。具体地,屏幕722呈现第一用户的朋友列表。第一用户可以选择给定的朋友“马特”,并且身体姿势估计系统124将屏幕截图741发送给所选择的朋友“马特”。
93.如图7c中所示,第二用户731遵循与第一用户相似的顺序以使得第二化身732模仿第二用户731的姿势,如屏幕730中所示。具体地,屏幕730被提供在与第二用户731相关联的不同移动设备上。第二用户731选择第二化身732并被指示后退以使得身体姿势估计系统124能够估计用户731的身体姿势并调整所选择的第二化身732来模仿第二用户的身体姿势。身体姿势估计系统124捕获描绘具有给定姿势的第二用户731和第二化身732的图像751,并将所捕获的图像751呈现在屏幕740中。所捕获的图像751被自动发送给第一用户。描绘具有给定姿势的第二用户731和第二化身732的所捕获的图像751与描绘具有另一姿势的第一用户和第一化身的屏幕截图741一起呈现。
94.图9是示出示例软件架构906的框图,示例软件架构906可以与本文中描述的各种硬件架构结合使用。图9是软件架构的非限制性示例,并且应当理解的是,可以实现许多其他架构以促进本文中描述的功能。软件架构906可以在诸如图10的机器1000的硬件上执行,机器1000包括处理器1004、存储器1014和输入/输出(i/o)部件1018等。代表性硬件层952被示出并且可以表示例如图10的机器1000。代表性硬件层952包括具有相关联的可执行指令904的处理单元954。可执行指令904表示软件架构906的可执行指令,包括本文中描述的方法、部件等的实现。硬件层952还包括也具有可执行指令904的存储器和/或存储模块存储器/存储装置956。硬件层952还可以包括其他硬件958。
95.在图9的示例架构中,软件架构906可以被概念化为层的堆栈,在层的堆栈中,每个层提供特定的功能。例如,软件架构906可以包括诸如操作系统902、库920、框架/中间件918、应用916和表示层914的层。在操作上,层内的应用916和/或其他组件可以通过软件堆栈激活应用编程接口(api)调用908并且响应于api调用908而接收消息912。示出的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件918,而其他操作系统可能提供这样的层。其他软件架构可以包括附加的层或不同的层。
96.操作系统902可以管理硬件资源并且提供公共服务。操作系统902可以包括例如核心922、服务924和驱动926。核心922可以用作硬件与其他软件层之间的抽象层。例如,核心922可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务924可以为其他软件层提供其他公共服务。驱动器926负责控制底层硬件或与底层硬件接口(interface)。例如,根据硬件配置,驱动器926包括显示器驱动器、摄像装置驱动器、蓝牙驱动器、闪速存储器驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
97.库920提供由应用916和/或其他部件和/或层使用的公共基础设施。库920提供如下功能,该功能允许其他软件组件以比与底层操作系统902的功能(例如,核心922、服务924和/或驱动器926)直接对接的方式更容易的方式来执行任务。库920可以包括系统库944(例如,c标准库),系统库944可以提供函数例如存储器分配函数、串操纵函数、数学函数等。此外,库920可以包括api库946,例如媒体库(例如,支持诸如mpreg4、h.264、mp3、aac、amr、jpg、png的各种媒体格式的呈现和操纵的库)、图形库(例如,可以用于在显示器上以图形内容呈现二维和三维的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能的webkit)等。库920还可以包括各种各样的其他库948,以向应用916和其他软件组件/模块提供许多其他api。
98.框架/中间件918(有时也称为中间件)提供可以由应用916和/或其他软件组件/模块使用的较高级别的公共基础设施。例如,框架/中间件918可以提供各种ui(gui)功能、高级资源管理、高级位置服务等。框架/中间件918可以提供可以由应用916和/或其他软件组件/模块利用的广范围的其他api,其中一些可以特定于特定操作系统902或平台。
99.应用916包括内置应用938和/或第三方应用940。代表性内置应用938的示例可以包括但不限于:联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息收发应用和/或游戏应用。第三方应用940可以包括由除特定平台的供应商之外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用,并且可以是在诸如iostm、androidtm、phone的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用940可以激活由移动操作系统(例如,操作系统902)提供的api调用908,以有利于本文中描述的功能。
100.应用916可以使用内置操作系统功能(例如,核心922、服务924和/或驱动器926)、库920以及框架/中间件918来创建ui以与系统的用户交互。替选地或另外地,在一些系统中,可以通过表示层例如表示层914发生与用户的交互。在这些系统中,应用/部件“逻辑”可以与应用/部件的与用户交互的方面分开。
101.图10是示出根据一些示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文中讨论的方法中的任何一种或更多种方法的机器1000的部件的框图。具体地,图10以计算机系统的示例形式示出了机器1000的示意图,在该机器1000中可以执行指令1010(例如,软件、程序、应用、小程序、app或其他可执行代码),以使机器800执行本文讨论的方法中的任何一种或更多种方法。因此,指令1010可以被用来实现本文中描述的模块或部件。指令1010将通用的非编程的机器1000转换成被编程为以所描述的方式执行所描述和所示功能的特定机器1000。在替选实施方式中,机器1000作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网部署中,机器1000可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1000可以包括但不限于:服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器1000采取的动作的指令1010的任何机器。此外,虽然仅示出了单个机器1000,但是术语“机器”还应被认为包括单独地或联合地执行指令1010以执行本文中讨论的任何一种或更多种方法的机器的集合。
102.机器1000可以包括处理器1004、存储器/存储装置1006和i/o部件1018,所述处理器1004、存储器/存储装置1006和i/o部件1018可以被配置成例如经由总线1002彼此通信。在示例实施方式中,处理器1004(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1010的处理器1008和处理器1012。术语“处理器”旨在包括多核处理器1004,该多核处理器1004可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。虽然图10示出了多处理器1004,但是机器1000可以包括具有单个核的单个处理器、具有多
个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
103.存储器/存储装置1006可以包括诸如主存储器或其他存储器存储装置的存储器1014以及存储单元1016,存储器1014和存储单元1016两者例如经由总线1002由处理器1004访问。存储单元1016和存储器1014存储体现本文中描述的方法或功能中的任何一种或更多种的指令1010。指令1010还可以在其被机器1000执行期间完全地或部分地驻留在存储器1014内、在存储单元1016内、在处理器1004中的至少一个内(例如,在处理器的高速缓存存储器内)或者在其任何合适的组合内。因此,存储器1014、存储单元1016以及处理器1004的存储器是机器可读介质的示例。
104.i/o部件1018可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等的各种部件。包括在特定机器1000中的具体i/o部件1018将取决于机器的类型。例如,诸如移动电话的便携式机器很可能包括触摸输入设备或其他这样的输入机构,而无终端(headless)服务器机器很可能不包括这样的触摸输入设备。将理解,i/o部件1018可以包括图10中未示出的许多其他部件。i/o部件1018根据功能被分组仅为了简化以下讨论,并且该分组决不是限制性的。在各种示例实施方式中,i/o部件1018可以包括输出部件1026和输入部件1028。输出部件1026可以包括视觉部件(例如,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt)的显示器)、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件1028可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸姿势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
105.在其他示例实施方式中,i/o部件1018可以包括生物识别部件1039、运动部件1034、环境部件1036或定位部件1038以及广泛的其他部件。例如,生物统计部件1039可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1034可以包括:加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1036可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测周围温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、听觉传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。定位部件1038可以包括位置传感器部件(例如,gps接收器部件)、海拔传感器部件(例如,检测可以根据其得到海拔的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
106.可以使用各种各样的技术来实现通信。i/o部件1018可以包括通信部件1040,通信部件1040能够进行操作以经由耦接1024和耦接1222分别将机器1000耦接至网络1037或设备1029。例如,通信部件1040可以包括网络接口部件或其他合适的设备以与网络1037对接。在另外示例中,通信部件1040可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场
通信(nfc)部件、蓝牙部件(例如,蓝牙低功耗)、部件和经由其他模态提供通信的其他通信部件。设备1029可以是其他机器或各种外围设备中的任何一个外围设备(例如,经由usb耦接的外围设备)。
107.此外,通信部件1040可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1040可以包括射频识别(rfid)标签阅读器部件、nfc智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(upc)条形码的一维条形码、诸如快速响应(qr)代码的多维条形码、aztec代码、数据矩阵、数据符号(dataglyph)、最大编码(maxicode)、pdf417、超代码(ultra code)、ucc rss-2d条形码和其他光代码的光学传感器)或听觉检测部件(例如,用于识别标记的音频信号的麦克风)。此外,可以经由通信部件1040得到各种信息,如经由因特网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等。
108.术语表:
109.该上下文中的“载波信号”是指能够存储、编码或携载由机器执行的暂态或非暂态指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用暂态或非暂态传输介质经由网络接口设备并且使用多个公知的传输协议中的任何一个来通过网络发送或接收指令。
110.该上下文中的“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获取资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、pda、智能电话、平板计算机、超级本、上网本、多个膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
111.该上下文中的“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(cdma)连接、全局移动通信系统(gsm)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电业务(gprs)技术、增强型数据速率gsm演进(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。
112.该上下文中的“短消息”是指可以在时间有限的持续时间内访问的消息。短消息可以是文本、图像、视频等。短消息的访问时间可以由消息发送者设置。替选地,访问时间可以是默认设置或由接收者指定的设置。无论设置技术如何,该消息都是暂时的。
113.该上下文中的“机器可读介质”是指能够临时或永久地存储指令和数据的部件、设备或其他有形介质,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其他类型的存储装置(例如,可擦
除可编程只读存储器(eeprom))和/或它们的任何合适的组合。术语“机器可读介质”应当被视为包括能够存储指令的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读介质”还将被视为包括能够存储由机器执行的指令(例如,代码)的任何介质或多个介质的组合,使得指令在由机器的一个或更多个处理器执行时使机器执行本文中描述的任何一种或更多种方法。因此,“机器可读介质”指的是单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。术语“机器可读介质”不包括信号本身。
114.该上下文中的“部件”是指具有由功能或子例程调用、分支点、api或者对特定处理或控制功能提供分区或模块化的其他技术定义的边界的设备、物理实体或逻辑。部件可以经由其接口与其他部件组合以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且可以是通常执行相关功能中的特定功能的程序的一部分。部件可以构成软件组件(例如,体现在机器可读介质上的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,可以通过软件(例如,应用或应用部分)将一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)配置成用于执行本文中描述的某些操作的硬件部件。
115.也可以机械地、电子地或以其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(fpga)或asic。硬件部件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件而配置,硬件部件就成为被独特地定制成执行所配置功能的特定机器(或机器的特定部件),而不再是通用处理器。将理解,可以出于成本和时间考虑来决定在专用且永久配置的电路中还是在临时配置(例如,由软件配置)的电路中机械地实现硬件部件。相应地,短语“硬件部件”(或者“硬件实现的部件”)应当被理解成包含有形实体,即为被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每个硬件部件进行配置或实例化。例如,在硬件部件包括通过软件配置成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器以例如在一个时刻处构成特定硬件部件,并且在不同的时刻处构成不同的硬件部件。
116.硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为通信地耦接。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件部件在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件部件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件部件可以在随后的时间访问存储器设备以检索所存储的输出并对其进行处理。
117.硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。本文所述的示例方法的各种操作可以至少部分地由临时地配置(例如,由软件)或永久地配置以执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是永久地配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中,特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器或处理器实现的部件来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或操作为“软件即服务”(saas)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,api)进行访问。某些操作的执行可以分布在处理器之间,不是仅驻留在单个机器内,而是部署在多个机器中。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理位置分布。
118.该上下文中的“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被用于操作机器的对应输出信号的任何电路或虚拟电路(通过在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp))、asic、射频集成电路(rfic)或其任何组合。处理器还可以是具有可以同时执行指令的两个或更多个独立处理器(有时称为“核”)的多核处理器。
119.该上下文中的“时间戳”指的是识别某个事件何时发生的字符或编码信息的序列,例如,从而给出日期和一天中的时间,有时精确到几分之一秒。
120.在不脱离本公开内容的范围的情况下,可以对所公开的实施方式进行改变和修改。这些和其他改变或修改旨在被包括在本公开内容的范围内,并且在所附权利要求中被表达。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献