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

增强现实内容中头部转向的面部合成

文献发布时间:2024-04-18 19:58:26


增强现实内容中头部转向的面部合成

相关申请的交叉引用

本申请要求于2021年3月31日提交的美国临时专利申请第63/200,881号的优先权的权益,该美国临时专利申请的全部内容出于所有目的通过引用并入本文。

背景技术

随着数字图像使用的增加、便携式计算设备的可负担性、数字存储介质的增加的容量的可用性以及网络连接的增加的带宽和可访问性,数字图像已成为越来越多人日常生活的一部分。

附图说明

为了容易识别对任何特定元件或动作的讨论,附图标记中的一个或更多个最高位数字指代该元件被首次引入时所在的图号。

图1是根据一些示例实施方式的可以部署本公开内容的联网环境的图形表示。

图2是根据一些示例实施方式的消息收发客户端应用的图形表示。

图3是根据一些示例实施方式的如在数据库中维护的数据结构的图形表示。

图4是根据一些示例实施方式的消息的图形表示。

图5是示出根据一些实施方式的包括对应于给定消息的附加信息的如图4中所述的消息注释的结构的示意图。

图6是示出根据某些示例实施方式的消息收发客户端应用的各种模块的框图。

图7示出了根据一些实施方式的用于增强现实内容的面部合成的示例。

图8示出了根据一些实施方式的用于增强现实内容的面部合成的示例。

图9示出了根据一些实施方式的用于增强现实内容的面部合成的示例。

图10是示出根据某些示例实施方式的方法的流程图。

图11是示出根据一些示例实施方式的其中可以实现本公开内容的软件架构的框图。

图12是根据一些示例实施方式的呈计算机系统形式的机器的图形表示,在该计算机系统中可以执行指令的集合以使机器执行本文中讨论的方法中任何一种或更多种。

具体实施方式

来自各种地方的兴趣广泛的用户可以捕获各种对象的数字图像,并且使其他人可经由网络(例如因特网)获得所捕获的图像。为了增强用户对数字图像的体验并提供各种特征,从而使得计算设备能够对在各种变化条件(例如,图像尺度、噪声、照明、运动或几何失真的变化)下捕获的各种对象和/或特征执行图像处理操作可能是有挑战性的并且是计算密集的。

增强现实技术旨在通过提供用电子信息增强的增强真实世界环境来缩小虚拟环境与真实世界环境之间的差距。因此,电子信息就像是由用户所感知的真实世界环境的一部分。在示例中,增强现实技术还提供用户界面,以与叠加在增强真实世界环境中的电子信息进行交互。

如上面所提到,随着数字图像的使用的增加、便携式计算设备的可负担性、数字存储介质的增加的容量的可用性以及网络连接的增加的带宽和可访问性,数字图像已经成为越来越多人日常生活的一部分。来自各种位置的具有一系列兴趣的用户可以捕获各种主题的数字图像,并且使其他人可经由网络(诸如,因特网)获得所捕获的图像。为了增强用户对数字图像的体验并提供各种特征,以使得计算设备能够对在各种变化条件(例如,图像尺度、噪声、照明、运动或几何失真的变化)下捕获的各种对象和/或特征执行图像处理操作可能是有挑战性的并且是计算密集的。

在各种设置中,移动计算设备的用户经常使用并且越来越多地利用消息收发系统,来以便利的方式提供不同类型的功能。如本文所描述,本消息收发系统包括在媒体内容(例如,图像、视频等)上呈现增强现实内容生成器(例如,提供增强现实体验)方面提供改进的实际应用,其中,特定的增强现实内容生成器可以通过能够提供增强现实内容的改进的系统来激活,该增强现实内容针对与相应实体(例如,商家、公司、个人等)的在线广告活动相关联的特定要求而被更有利地定制。

本技术的实施方式实现了面部动画合成,该面部动画合成可以包括将源视频中的源个体的面部表情转移到目标视频或目标图像中的目标个体。面部动画合成可以用于在许多应用(诸如,娱乐节目、计算机游戏、视频对话、虚拟现实、增强现实等)中对面部的操纵和动画化。

用于面部动画合成的一些当前技术利用可变形的面部模型来重新渲染具有不同面部表情的目标面部。虽然用可变形面部模型生成面部可能是快的,但生成的面部可能不是照片真实感的。用于面部动画合成的一些其他当前技术耗时,并且可能不适合在常规移动设备上执行实时面部动画合成。

消息收发系统被频繁使用并且在各种环境中由移动计算设备的用户日益增多地利用来以便利的方式提供不同类型的功能。如本文所描述,本消息收发系统包括实际应用,该实际应用通过至少给使用功率和资源受限的电子设备捕获图像数据提供技术改进在捕获图像和基于捕获的图像数据渲染AR内容(例如,图像、视频等)方面提供改进。捕获图像数据方面的这样的改进通过本技术提供的技术实现,本技术提供的技术减少了延迟并提高了处理捕获的图像数据的效率,从而也减少了捕获设备的功耗。

如本文进一步所讨论,本基础结构支持在整个消息收发系统的各种部件中创建和共享包括3D内容或AR效果的在本文中称为消息的交互式媒体。在本文描述的示例实施方式中,消息可以从实况摄像装置或从存储装置(例如,其中,包括3D内容和/或AR效果的消息被存储在存储器或数据库中)进入系统。本系统支持运动传感器输入和外部效果和资产数据的加载。

如本文所提及的,短语“增强现实体验”、“增强现实内容项”、“增强现实内容生成器”包括或指代与如本文进一步描述的图像修改、过滤、AR内容生成器、媒体叠加、变换等对应的各种图像处理操作并且还可以包括在AR内容或媒体内容的呈现期间音频或音乐内容的回放。

图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息收发系统100的框图。消息收发系统100包括客户端设备102(例如,计算设备)的多个实例,每个实例托管包括消息收发客户端应用104的多个应用。每个消息收发客户端应用104经由网络106(例如,因特网)通信地耦接至消息收发客户端应用104的其他实例和消息收发服务器系统108。

消息收发客户端应用104能够经由网络106与另一消息收发客户端应用104和消息收发服务器系统108进行通信和交换数据。在消息收发客户端应用104之间以及在消息收发客户端应用104与消息收发服务器系统108之间交换的数据包括函数(例如,调用函数的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。

消息收发服务器系统108经由网络106向特定消息收发客户端应用104提供服务器侧功能。虽然消息收发系统100的某些功能在本文中被描述为由消息收发客户端应用104或由消息收发服务器系统108执行,但是在消息收发客户端应用104或消息收发服务器系统108内的某些功能的位置是设计选择。例如,在技术上可能优选的是最初在消息收发服务器系统108内部署某些技术和功能,但是后面将该技术和功能迁移至其中客户端设备102具有足够处理能力的消息收发客户端应用104。

消息收发服务器系统108支持被提供给消息收发客户端应用104的各种服务和操作。这样的操作包括向消息收发客户端应用104发送数据、从消息收发客户端应用104接收数据以及对由消息收发客户端应用104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和叠加、消息内容持续条件、社交网络信息和实况事件信息。通过经由消息收发客户端应用104的用户界面(UI)可用的功能来调用和控制消息收发系统100内的数据交换。

现在具体地转至消息收发服务器系统108,应用程序接口(API)服务器110耦接至应用服务器112并且向应用服务器112提供编程接口。应用服务器112通信地耦接至数据库服务器118,这有助于访问其中存储有与由应用服务器112处理的消息相关联的数据的数据库120。

应用程序接口(API)服务器110在客户端设备102与应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,应用程序接口(API)服务器110提供接口(例如,例程和协议)的集合,所述接口的集合可以由消息收发客户端应用104调用或查询,以调用应用服务器112的功能。应用程序接口(API)服务器110公开由应用服务器112支持的各种功能,包括帐户注册、登录功能、经由应用服务器112从特定消息收发客户端应用104向另一消息收发客户端应用104发送消息、从消息收发客户端应用104向消息收发服务器应用114发送媒体文件(例如,图像或视频)以及用于另一消息收发客户端应用104的可能访问、媒体数据的集合(例如,故事)的设置、客户端设备102的用户的好友列表的检索、这样的集合的检索、消息和内容的检索、向社交图添加和删除好友、社交图内好友的位置以及打开应用事件(例如,涉及消息收发客户端应用104)。

应用服务器112托管多个应用和子系统,包括消息收发服务器应用114、图像处理系统116和社交网络系统122。消息收发服务器应用114实现了若干消息处理技术和功能,特别是与从消息收发客户端应用104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个来源的文本和媒体内容可以聚合成内容的集合(例如,称为故事或库)。然后,消息收发服务器应用114使得这些集合对消息收发客户端应用104可用。考虑到对数据的其他处理器和存储器密集处理的硬件要求,也可以由消息收发服务器应用114在服务器侧执行这样的处理。

应用服务器112还包括图像处理系统116,图像处理系统116专用于通常关于在消息收发服务器应用114处的消息的有效载荷内接收的图像或视频执行各种图像处理操作。

社交网络系统122支持各种社交联网功能服务,并且使这些功能和服务对消息收发服务器应用114可用。为此,社交网络系统122维护并访问数据库120内的实体图304(如图3所示)。社交网络系统122所支持的功能和服务的示例包括识别特定用户与之有关系或特定用户所“关注”的消息收发系统100的其他用户,以及还识别特定用户的兴趣以及其他实体。

应用服务器112通信地耦接至数据库服务器118,这便于访问数据库120,在数据库120中存储有与由消息收发服务器应用114处理的消息相关联的数据。

图2是示出根据示例实施方式的关于消息收发系统100的其他细节的框图。具体地,消息收发系统100被示出为包括消息收发客户端应用104和应用服务器112,它们又包含多个一些子系统,即短暂定时器系统202、集合管理系统204和注释系统206。

短暂定时器系统202负责实施对由消息收发客户端应用104和消息收发服务器应用114允许的内容的临时访问。为此,短暂定时器系统202结合了多个定时器,这些定时器基于与消息或消息的集合(例如,故事)相关联的持续时间和显示参数,选择性地显示消息和相关联的内容以及使得能够经由消息收发客户端应用104访问消息和相关联的内容。下面提供关于短暂定时器系统202的操作的其他细节。

集合管理系统204负责管理媒体的集合(例如,文本、图像视频和音频数据的集合)。在一些示例中,内容(例如,包括图像、视频、文本和音频的消息)的集合可以被组织成“事件画廊”或“事件故事”。可以使这样的集合在指定时间段例如内容所涉及的事件的持续时间内可用。例如,可以在音乐会的持续时间内使与音乐会有关的内容作为“故事”可用。集合管理系统204还可以负责向消息收发客户端应用104的用户界面发布提供存在特定集合的通知的图标。

此外,集合管理系统204还包括策展接口208,策展接口208使得集合管理器能够管理和策展特定内容集合。例如,策展接口208使得事件组织者能够策展与特定事件相关的内容集合(例如,删除不适当的内容或冗余消息)。此外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动地策展内容集合。在某些实施方式中,可以向用户支付补偿以将用户生成的内容包括到集合中。在这样的情况下,策展接口208进行操作以自动向这样的用户支付费用以使用其内容。

注释系统206提供使得用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206提供与生成和发布用于由消息收发系统100处理的消息的媒体叠加有关的功能。注释系统206基于客户端设备102的地理位置可操作地向消息收发客户端应用104供应媒体叠加或补充(例如,图像过滤)。在另一示例中,注释系统206基于其他信息(例如客户端设备102的用户的社交网络信息)可操作地向消息收发客户端应用104供应媒体叠加。媒体叠加可以包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、标志、动画和声音效果。视觉效果的示例包括颜色叠加。音频和视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体叠加可以包括可以叠加在由客户端设备102拍摄的照片之上的文本。在另一示例中,媒体叠加包括位置标识(例如,威尼斯海滩)叠加、实况事件的名称或商家名称(例如,海滩咖啡馆)叠加。在另一示例中,注释系统206使用客户端设备102的地理位置来标识包括在客户端设备102的地理位置处的商家名称的媒体叠加。媒体叠加可以包括与商家相关联的其他标记。媒体叠加可以存储在数据库120中并通过数据库服务器118访问。

在一个示例实施方式中,注释系统206提供基于用户的发布平台,该发布平台使得用户能够选择地图上的地理位置,并且上载与选择的地理位置相关联的内容。用户还可以指定应当向其他用户提供特定媒体叠加的环境。注释系统206生成包括所上传的内容的媒体叠加并且将所上传的内容与所选择的地理位置相关联。

在另一示例实施方式中,注释系统206提供基于商家的发布平台,该基于商家的发布平台使得商家能够通过出价过程选择与地理位置相关联的特定媒体叠加。例如,注释系统206在预定义时间量内将最高出价商家的媒体叠加与对应的地理位置相关联。

图3是示出根据某些示例实施方式的可以存储在消息收发服务器系统108的数据库120中的数据结构300的示意图。虽然数据库120的内容被示出为包括多个表,但是应当理解,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。

数据库120包括存储在消息表314内的消息数据。实体表302存储实体数据,包括实体图304。在实体表302内维护记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管类型如何,关于消息收发服务器系统108存储数据的任何实体都可以是被识别的实体。每个实体设置有唯一标识符以及实体类型标识符(未示出)。

实体图304还存储关于实体之间的关系和关联的信息。仅作为示例,这样的关系可以是基于感兴趣的或基于活动的社交关系、专业关系(例如,在共同的公司或组织工作)。

数据库120还以过滤器的示例形式将注释数据存储在注释表312中。在注释表312内存储数据的过滤器与视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)相关联并且应用于视频和/或图像。在一个示例中,过滤器是在呈现给接收用户期间显示为叠加在图像或视频上的叠加。过滤器可以是各种类型,包括当发送用户正在编写消息时由消息收发客户端应用104向发送用户呈现的来自过滤器的库中的用户选择的过滤器。其他类型的过滤器包括地理位置过滤器(也称为地理过滤器),其可以基于地理位置被呈现给发送用户。例如,基于由客户端设备102的GPS单元确定的地理位置信息,消息收发客户端应用104可以在用户界面内呈现特定于邻域或特定位置的地理位置过滤器。另一类型的过滤器是数据过滤器,其可以由消息收发客户端应用104基于在消息创建进程期间由客户端设备102收集的其他输入或信息来选择性地呈现给发送用户。数据过滤器的示例包括特定位置处的当前温度、发送用户行进的当前速度、客户端设备102的电池寿命或当前时间。

可以存储在图像表308内的其他注释数据是增强现实内容生成器(例如,对应于应用AR内容生成器、增强现实体验或增强现实内容项)。增强现实内容生成器可以是可以添加至图像或视频的实时特殊效果和声音。

如上所述,增强现实内容生成器、增强现实内容项、叠加、图像变换、AR图像和类似术语是指可以对视频或图像进行的修改。这包括实时修改,实时修改在使用设备传感器捕获图像时修改该图像,并且然后将具有修改的图像显示在设备的屏幕上。这还包括对所存储的内容的修改,例如可以被修改的库中的视频剪辑。例如,在访问多个增强现实内容生成器的设备中,用户可以将单个视频剪辑与多个增强现实内容生成器一起使用来查看不同的增强现实内容生成器将如何修改所存储的剪辑。例如,通过针对内容选择不同的增强现实内容生成器,可以将应用不同伪随机运动模型的多个增强现实内容生成器应用于同一内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由设备的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以简单地显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行或不进行修改(或两者)的情况下被记录并存储在存储器中。在一些系统中,预览特征可以示出不同的增强现实内容生成器同时在显示器中的不同窗口内看起来如何。例如,这可以使得能够同时在显示器上查看具有不同伪随机动画的多个窗口。

因此,数据以及使用增强现实内容生成器或其他这样的变换系统来使用该数据修改内容的各种系统可以涉及:对象(例如,面部、手、身体、猫、狗、表面、对象等)的检测;当这样的对象离开、进入视频帧中的视场以及在视场周围移动时对其进行跟踪;以及当跟踪这样的对象时对其进行修改或变换。在各种实施方式中,可以使用用于实现这样的变换的不同方法。例如,一些实施方式可能涉及生成一个或更多个对象的三维网格模型,并使用视频中模型的变换和动画纹理来实现变换。在其他实施方式中,对象上的点的跟踪可以用于将图像或纹理(其可以是二维或三维的)放置在所跟踪的定位处。在又一实施方式中,视频帧的神经网络分析可以用于将图像、模型或纹理放置在内容(例如,视频的图像或帧)中。因此,增强现实内容生成器既涉及用于创建内容中的变换的图像、模型和纹理,又涉及实现利用对象检测、跟踪和放置的这样的变换所需的附加建模和分析信息。

可以利用保存在任何种类的计算机化系统的存储器中的任何种类的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。另外,可以使用计算机动画模型来处理任何对象,例如人的面部和人体的部分、动物、或无生命的东西(例如椅子、汽车或其他物体)。

在一些实施方式中,当与要变换的内容一起选择特定的修改时,由计算设备识别要变换的元素,并且然后在要变换的元素存在于视频的帧中的情况下对要变换的元素进行检测和跟踪。根据修改请求修改对象的元素,因此变换视频流的帧。可以通过用于不同种类的变换的不同方法来执行视频流的帧的变换。例如,对于主要涉及改变对象元素的形式的帧的变换,计算针对对象的每个元素的特征点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格用于跟踪视频流中的对象元素的后续阶段。在跟踪进程中,所提及的每个元素的网格与每个元素的定位对准。然后,在网格上生成附加点。基于修改请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和修改请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格修改对象的元素,对视频流的帧进行变换。在这样的方法中,也可以通过跟踪和修改背景来使经修改的对象的背景改变或变形。

在一个或更多个实施方式中,可以通过计算对象的每个元素的特征点并基于所计算的特征点生成网格,来执行使用对象的元素的改变对象的一些区域的变换。在网格上生成点,并且然后生成基于点的各种区域。然后,通过将每个元素的区域与至少一个元素中的每一个的定位对准来跟踪对象的元素,并且可以基于修改的请求来修改区域的属性,从而变换视频流的帧。根据具体的修改请求,所提及的区域的属性可以以不同的方式进行变换。这样的修改可以涉及改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括到基于针对修改的请求的区域中;以及修改区域或对象的元素或者使区域或对象的元素变形。在各种实施方式中,可以使用这样的修改或其他类似修改的任何组合。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定用于模型动画的选项的整个状态空间。

在使用面部检测来变换图像数据的计算机动画模型的一些实施方式中,使用特定的面部检测算法(例如,Viola-Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。

在其他实施方式中,可以使用其他适合面部检测的方法和算法。例如,在一些实施方式中,使用界标来定位特征,该界标表示存在于所考虑的大多数图像中的可区分点。例如,对于面部界标,可以使用左眼瞳孔的定位。在初始标志界标不可识别的情况下(例如,如果人具有眼罩),可以使用次级界标。这样的界标识别进程可以用于任何这样的对象。在一些实施方式中,界标的集合形成形状。可以使用形状中的点的坐标将形状表示为矢量。一个形状利用相似性变换(允许平移、缩放和旋转)与另一个形状对准,该相似性变换使形状点之间的平均欧几里德距离最小化。平均形状是对准的训练形状的均值。

在一些实施方式中,开始从与由全局面部检测器确定的面部的位置和尺寸对准的平均形状中搜索界标。然后,这样的搜索重复以下操作的步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的位置来建议暂定形状,并且然后使暂定形状符合全局形状模型,直至发生收敛。在一些系统中,单个模板匹配是不可靠的,并且形状模型将弱模板匹配器的结果集中在一起,形成更强的整体分类器。整个搜索在从粗分辨率到细分辨率的图像金字塔的每个级别上重复。

变换系统的实施方式可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并且在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状改变、情绪转移(例如,将面部从皱眉改变为微笑)、状态转移(例如,使被摄体变老、减小表观年龄、改变性别)、风格转移、图形元素应用,以及由已经被配置成在客户端设备102上高效地执行的卷积神经网络实现的任何其他合适的图像或视频操纵。

在一些示例实施方式中,用于变换图像数据的计算机动画模型可以由系统使用,在该系统中,用户可以使用具有神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍),该神经网络操作为在客户端设备102上操作的消息收发客户端应用104的一部分。在消息收发客户端应用104内操作的变换系统确定图像或视频流内的面部的存在,并且提供与计算机动画模型相关联的修改图标以变换图像数据,或者计算机动画模型可以与本文中描述的接口相关联地存在。修改图标包括可以作为用于作为修改操作的一部分的修改图像或视频流中的用户面部的基础的改变。一旦选择了修改图标,变换系统就启动用于转换用户的图像的处理以反映所选择的修改图标(例如,对用户生成笑脸)。在一些实施方式中,一旦捕获了图像或视频流并且选择了指定的修改,就可以在移动客户端设备上显示的图形用户界面中呈现修改后的图像或视频流。变换系统可以对图像或视频流的一部分实施复杂的卷积神经网络,以生成并应用所选择的修改。也就是说,一旦选择了修改图标,用户可以捕获图像或视频流,并且实时或接近实时地被呈现修改的结果。此外,当视频流被捕获并且所选修改图标保持打开时,修改可以是持续的。机器教导的神经网络可以用于实现这样的修改。

在一些实施方式中,呈现由变换系统执行的修改的图形用户界面可以为用户供应附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的内容捕获和选择的接口(例如,从内容创建者用户接口发起)。在各种实施方式中,修改可以在修改图标的初始选择之后持续。用户可以通过敲击或以其他方式选择由变换系统修改的面部来打开或关闭修改,并将其存储以供以后查看或浏览到成像应用的其他区域。在由变换系统修改多个面部的情况下,用户可以通过敲击或选择在图形用户界面内修改和显示的单个面部来全局打开或关闭修改。在一些实施方式中,可以通过敲击或选择图形用户界面内显示的单独面部或一系列单独面部来单独修改一组多个面部当中的各个面部,或者单独打开这样的修改。

在一些示例实施方式中,提供了图形处理流水线架构,其使得能够在对应的不同层中应用不同的增强现实体验(例如,AR内容生成器)。这样的图形处理流水线提供了可扩展渲染引擎,所述可扩展渲染引擎用于提供复合媒体(例如,图像或视频)或复合AR内容中包括的多个增强现实体验以由消息收发客户端应用104(或消息收发系统100)呈现。

如以上所提及的,视频表310存储视频数据,在一个实施方式中,视频数据与其记录被维护在消息表314中的消息相关联。类似地,图像表308存储与存储在实体表302中的消息数据所关于的消息相关联的图像数据。实体表302可以将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。

故事表306存储关于消息和相关联的图像、视频或音频数据的集合的数据,这些数据被编译成集合(例如,故事或库)。特定集合的创建可以由特定用户(例如,在实体表302中维持其记录的每个用户)发起。用户可以创建以已经由该用户创建和发送/广播的内容集合的形式的“个人故事”。为此,消息收发客户端应用104的用户界面可以包括用户可选择以使得发送用户能够将特定内容添加至他或她的个人故事的图标。

集合还可以构成“实况故事”,“实况故事”是被手动地、自动地或使用手动和自动技术的组合来创建的来自多个用户的内容的集合。例如,“实况故事”可以构成来自不同位置和事件的用户提交的内容的策展流。其客户端设备具有启用的位置服务并且在特定时间处于共同位置事件的用户可以例如经由消息收发客户端应用104的用户界面被呈现有选项以向特定实况故事贡献内容。可以由消息收发客户端应用104基于用户的位置向用户标识实况故事。最终结果是从社群角度讲述的“实况故事”。

另一类型的内容集合被称为“位置故事”,“位置故事”使得其客户端设备102位于特定地理位置(例如,在大学或大学校园)内的用户能够对特定集合做出贡献。在一些实施方式中,对位置故事的贡献可能需要第二程度的认证来验证终端用户属于特定组织或其他实体(例如,是大学校园中的学生)。

图4是示出根据一些实施方式的消息400的结构的示意图,消息400由消息收发客户端应用104或消息收发客户端应用104生成以传送至另一消息收发客户端应用104或消息收发服务器应用114。特定消息400的内容用于填充存储在数据库120中的消息表314,其能够由消息收发服务器应用114访问。类似地,消息400的内容作为客户端设备102或应用服务器112的“在途”或“飞行中”数据存储在存储器中。消息400被示出为包括以下部件:

消息标识符402:标识消息400的唯一标识符。

消息文本有效载荷404:要由用户经由客户端设备102的用户界面生成并且包括在消息400中的文本。

消息图像有效载荷406:由客户端设备102的摄像装置部件捕获到或从客户端设备102的存储器部件检索到并且包括在消息400中的图像数据。

消息视频有效载荷408:由摄像装置部件捕获到或从客户端设备102的存储器部件检索到并且包括在消息400中的视频数据。

消息音频有效载荷410:由麦克风捕获到或从客户端设备102的存储器部件检索到并且包括在消息400中的音频数据。

消息注释412:表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的注释的注释数据(例如,过滤器、贴纸或其他增强)。

消息持续时间参数414:以秒为单位指示消息的内容(例如,消息图像有效载荷406、消息视频有效载荷408、消息音频有效载荷410)将经由消息收发客户端应用104被呈现给用户或使得用户可访问的时间量的参数值。

消息地理位置参数416:与消息的内容有效载荷相关联的地理位置数据(例如,纬度和经度坐标)。多个消息地理位置参数值416可以被包括在有效载荷中,这些参数值中的每一个与关于内容中包括的内容项(例如,消息图像有效载荷406内的特定图像或消息视频有效载荷408中的特定视频)相关联。

消息故事标识符418:标识与消息400的消息图像有效载荷406中的特定内容项相关联的一个或更多个内容集合(例如“故事”)的标识符值。例如,消息图像有效载荷406内的多个图像可以各自与使用标识符值的多个内容集合相关联。

消息标签420:每个消息400可以用多个标签来标记,多个标签中的每个标签指示消息有效载荷中包括的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如,狮子)的情况下,标签值可以被包括在指示相关动物的消息标签420内。标签值可以基于用户输入手动生成,或者可以使用例如图像识别自动生成。

消息发送方标识符422:指示在其上生成消息400并且从其发送消息400的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。

消息接收方标识符424:指示消息400寻址到的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。

消息400的各个组成部分的内容(例如,值)可以是指向在其内存储内容数据值的表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表308内的位置(或地址)的指针。类似地,消息视频有效载荷408内的值可以指向存储在视频表310内的数据,存储在消息注释412中的值可以指向存储在注释表312中的数据,存储在消息故事标识符418中的值可以指向存储在故事表306中的数据,并且存储在消息发送方标识符422和消息接收方标识符424中的值可以指向存储在实体表302内的用户记录。

如上所述,媒体叠加诸如AR内容生成器、叠加、图像变换、AR图像和类似术语是指可以对视频或图像进行的修改。这包括实时修改,实时修改在使用设备传感器捕获图像时修改该图像,并且然后将具有修改的图像显示在设备的屏幕上。这还包括对所存储的内容、例如库中可以被修改的视频剪辑的修改。例如,在访问多个媒体叠加(例如,AR内容生成器)的设备中,用户可以使用具有多个AR内容生成器的单个视频剪辑来查看不同的AR内容生成器将如何修改所存储的剪辑。例如,通过为同一内容选择不同的AR内容生成器,可以将应用不同伪随机运动模型的多个AR内容生成器应用于同一内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由设备的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以简单地显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行或不进行修改(或二者)的情况下被记录并存储在存储器中。在一些系统中,预览功能可以同时在显示器的不同窗口中示出不同AR内容生成器看起来如何。例如,这可以使得能够同时在显示器上查看具有不同伪随机动画的多个窗口。

数据和使用AR内容生成器或其他这样的变换系统来使用该数据来修改内容的的各种系统因此可以涉及:对象(例如,面部、手、身体、猫、狗、表面、对象等)的检测;在这样的对象离开视频帧中的视场、进入视频帧中的视场以及在视频帧中的视场四处移动时对这样的对象的跟踪;以及在这样的对象被跟踪时对这样的对象的修改或变换。在各种实施方式中,可以使用用于实现这样的变换的不同方法。例如,一些实施方式可能涉及生成一个或更多个对象的三维网格模型,并使用视频中模型的变换和动画纹理来实现变换。在其他实施方式中,对象上的点的跟踪可以用于将图像或纹理(其可以是二维或三维的)放置在所跟踪的定位处。在更进一步的实施方式中,可以使用视频帧的神经网络分析来将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,镜头(lens)数据既涉及用于创建内容变换的图像、模型和纹理,也涉及通过对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。

可以利用保存在任何种类的计算机化系统的存储器中的任何种类的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。此外,可以使用计算机动画模型来处理任何对象,例如人的面部和人身体的各部分、动物或无生命的东西(例如椅子、汽车或其他物体)。

在一些实施方式中,当与要变换的内容一起选择特定的修改时,由计算设备识别要变换的元素,并且然后在要变换的元素存在于视频的帧中的情况下对要变换的元素进行检测和跟踪。根据修改请求修改对象的元素,因此变换视频流的帧。可以通过用于不同种类的变换的不同方法来执行视频流的帧的变换。例如,对于主要涉及改变对象元素形式的帧变换,计算对象的元素中的每一个的特征点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格用于跟踪视频流中的对象元素的后续阶段。在跟踪进程中,所提及的每个元素的网格与每个元素的定位对准。然后,在网格上生成附加点。基于修改请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和修改请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格修改对象的元素,对视频流的帧进行变换。在这样的方法中,也可以通过跟踪和修改背景来使经修改的对象的背景改变或变形。

在一个或更多个实施方式中,可以通过计算对象的每个元素的特征点并基于所计算的特征点生成网格,来执行使用对象的元素的改变对象的一些区域的变换。在网格上生成点,并且然后生成基于点的各种区域。然后,通过将每个元素的区域与至少一个元素中的每一个的定位对准来跟踪对象的元素,并且可以基于修改的请求来修改区域的属性,从而变换视频流的帧。根据具体的修改请求,所提及的区域的属性可以以不同的方式进行变换。这样的修改可能涉及:改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括在基于修改请求的区域中;以及修改区域或对象的元素或使区域或对象的元素变形。在各种实施方式中,可以使用这样的修改或其他类似修改的任何组合。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定用于模型动画的选项的整个状态空间。

在使用面部检测来变换图像数据的计算机动画模型的一些实施方式中,使用特定的面部检测算法(例如,Viola-Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。

在其他实施方式中,可以使用其他适合面部检测的方法和算法。例如,在一些实施方式中,使用界标来定位特征,该界标表示存在于所考虑的大多数图像中的可区分点。例如,对于面部界标,可以使用左眼瞳孔的位置。在初始界标不可识别的情况下(例如,如果人有眼罩),可以使用次级界标。这样的界标识别进程可以用于任何这样的对象。在一些实施方式中,界标的集合形成形状。可以使用形状中的点的坐标将形状表示为矢量。一个形状利用相似性变换(允许平移、缩放和旋转)与另一个形状对准,该相似性变换使形状点之间的平均欧几里德距离最小化。平均形状是对准的训练形状的均值。

在一些实施方式中,开始从与由全局面部检测器确定的面部的位置和尺寸对准的平均形状中搜索界标。然后,这样的搜索重复以下操作的步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的定位来建议暂定形状,并且然后使暂定形状符合全局形状模型,直至发生收敛。在一些系统中,单个模板匹配是不可靠的,并且形状模型将弱模板匹配器的结果集中在一起,形成更强的整体分类器。整个搜索在从粗分辨率到细分辨率的图像金字塔的每个级别上重复。

变换系统的实施方式可以在客户端设备上捕获图像或视频流,并在客户端设备例如客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状改变、情绪迁移(例如,将面部从皱眉改变为微笑)、状态迁移(例如,使被摄体变老、减小表观年龄、改变性别)、风格迁移、图形元素应用、以及由已经被配置成在客户端设备上高效地执行的卷积神经网络实现的任何其他合适的图像或视频操纵。

在一些示例实施方式中,用于变换图像数据的计算机动画模型可以由系统使用,在该系统中,用户可以使用具有神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍),该神经网络操作为在客户端设备102上操作的消息收发客户端应用104的一部分。在消息收发客户端应用104内操作的变换系统确定图像或视频流内的面部的存在,并且提供与计算机动画模型相关联的修改图标以变换图像数据,或者计算机动画模型可以与本文中描述的接口相关联地存在。修改图标包括可以作为用于作为修改操作的一部分的修改图像或视频流中的用户面部的基础的改变。一旦选择了修改图标,变换系统就启动用于转换用户的图像的处理以反映所选择的修改图标(例如,对用户生成笑脸)。在一些实施方式中,一旦捕获了图像或视频流并且选择了指定的修改,就可以在移动客户端设备上显示的图形用户界面中呈现修改后的图像或视频流。变换系统可以对图像或视频流的一部分实施复杂的卷积神经网络,以生成并应用所选择的修改。也就是说,一旦选择了修改图标,用户可以捕获图像或视频流,并且实时或接近实时地被呈现修改的结果。此外,当视频流被捕获并且所选修改图标保持打开时,修改可以是持续的。机器教导的神经网络可以用于实现这样的修改。

在一些实施方式中,呈现由变换系统执行的修改的图形用户界面可以为用户供应附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的内容捕获和选择的接口(例如,来自内容创建者用户接口的发起)。在各种实施方式中,修改可以在修改图标的初始选择之后持续。用户可以通过轻击或以其他方式选择由变换系统修改的面部来打开或关闭修改,并将其存储以供以后查看或浏览到成像应用的其他区域。在由变换系统修改多个面部的情况下,用户可以通过敲击或选择在图形用户界面内修改和显示的单个面部来全局打开或关闭修改。在一些实施方式中,可以通过敲击或选择图形用户界面内显示的单独面部或一系列单独面部来单独修改一组多个面部当中的各个面部,或者单独打开这样的修改。

在一些示例实施方式中,提供了图形处理流水线架构,其使得能够在对应的不同层中应用不同的媒体叠加。这样的图形处理流水线提供了可扩展渲染引擎,所述可扩展渲染引擎用于提供复合媒体(例如,图像或视频)或复合AR内容中包括的多个增强现实内容生成器以由消息收发客户端应用104(或消息收发系统100)呈现。

如本文所讨论的,本基础结构支持在消息收发系统100的各个部件中创建和共享具有交互效果的交互消息。在示例中,为了提供这样的交互效果,给定的交互消息可以包括图像数据以及2D数据或3D数据。如本文所述的基础设施使得能够跨本系统提供其他形式的3D且交互式的媒体(例如,2D媒体内容),这允许跨消息收发系统100以及与照片和视频消息一起共享这样的交互式媒体。在本文描述的示例实施方式中,消息可以从实时摄像装置或从存储装置(例如,具有2D或3D内容或增强现实(AR)效果(例如,3D效果或其他交互效果)的消息被存储在内存器或数据库中)进入系统。在具有3D数据的交互消息的示例中,本系统会支持运动传感器输入,并且管理3D数据的发送和存储、以及外部效果和资产数据的加载。

如上所述,交互消息包括结合2D效果或3D效果和深度数据的图像。在示例实施方式中,除了常规的图像纹理之外,还使用本系统来渲染消息以使摄像装置所看到的空间细节/几何形状可视化。当观看者通过使客户端设备移动与该消息交互时,该运动触发被渲染的图像和几何形状的观看者视角的相应改变。

在实施方式中,本系统提供AR效果(其可以包括使用3D数据的3D效果或者不使用3D数据的交互式2D效果),该AR效果与系统的其他部件工作以提供可以占据消息中的不同3D平面的粒子、着色器、2D资产和3D几何体。在示例中,本文描述的AR效果以实时方式呈现给用户。

如本文所提及的,基于陀螺仪的交互指的是其中给定客户端设备的旋转被用作输入以改变效果的方面(例如,沿x轴旋转电话以便改变场景中的光的颜色)的交互类型。

如本文所提及的,增强现实内容生成器指的是可以添加至消息的实时特殊效果和/或声音,并且使用AR效果和/或其他3D内容(诸如3D动画图形元素、3D对象(例如,非动画的))等来修改图像和/或3D数据。

以下讨论涉及根据一些实施方式的结合这样的消息存储的示例数据。

图5是示出根据一些实施方式的由消息收发客户端应用104或消息收发客户端应用104生成的包括对应于给定消息的附加信息的如上面在图4中所描述的消息注释412的结构的示意图。

在实施方式中,如图3中所示,包括图5中所示的附加数据的特定消息400的内容被用于填充存储在数据库120内的用于给定消息的消息表314,该数据库120然后能够由客户端应用104访问。如图5中所示,消息注释412包括对应于各种数据的以下部件:

○增强现实(AR)内容标识符552:消息中使用的AR内容生成器的标识符

○消息标识符554:消息的标识符

○资产标识符556:消息中资产的标识符的集合。例如,可以针对由特定AR内容生成器确定的资产包括相应资产标识符。在实施方式中,这样的资产由发送方侧客户端设备上的AR内容生成器创建,上传到消息收发服务器应用114,并且由接收方侧客户端设备上的AR内容生成器使用,以重新创建消息。典型资产的示例包括:

■由摄像装置捕获的原始静态RGB图像

■将具有AR内容生成器效果的后处理图像应用于原始图像。

○增强现实(AR)内容元数据558:与对应于AR标识符552的AR内容生成器相关联的额外元数据,诸如:

○AR内容生成器类别:与特定AR内容生成器的类型或分类对应

○AR内容生成器轮播(carousel)索引

○轮播组:当符合条件的捕获后AR内容生成器被插入到轮播界面时,轮播组可以被填充和利用。在实现方式中,新的值“AR_DEFAULT_GROUP”(例如,分配给AR内容生成器的默认组)可以被添加到有效组名称的列表中。

○捕获与额外元数据对应的元数据560,诸如:

○摄像装置图像元数据

■摄像装置内部数据

●焦距

●主点

■其他摄像装置信息(例如,摄像装置位置)

○传感器信息

■陀螺仪传感器数据

■定位传感器数据

■加速计传感器数据

■其他传感器数据

■位置传感器数据

图6是示出根据某些示例实施方式的消息收发客户端应用104的各种模块的框图。消息收发客户端应用104被示出为包括AR内容系统600。如进一步所示,AR内容系统600包括摄像装置模块602、捕获模块604、图像数据处理模块606、渲染模块608和内容记录模块610。AR内容系统600的各个模块被配置成(例如,经由总线、共享存储器或交换机)彼此通信。这些模块中的任何一个或更多个可以使用一个或更多个计算机处理器620来实现(例如,通过将这样的一个或更多个计算机处理器配置成执行针对该模块描述的功能),并且因此可以包括计算机处理器620中的一个或更多个(例如,由客户端设备102提供的处理器的集合)。

所描述的模块中的任何一个或更多个模块可以单独使用硬件来实现(例如,机器(例如,机器1200)的计算机处理器620中的一个或更多个)或者硬件和软件的组合来实现。例如,消息收发客户端应用104的任何所描述的模块可以物理地包括被配置成执行本文针对该模块所描述的操作的一个或更多个计算机处理器620(例如,机器(例如,机器1200)的一个或更多个计算机处理器的子集或其中的一个或更多个计算机处理器)的布置。作为另一示例,AR内容系统600的任何模块可以包括软件、硬件或软件和硬件二者,其将(例如,在机器(例如,机器1200)的一个或更多个计算机处理器中的)一个或更多个计算机处理器620的布置配置成执行本文针对该模块描述的操作。因此,AR内容系统600的不同模块可以包括并配置这样的计算机处理器620的不同布置或这样的计算机处理器620在不同时间点处的单个布置。此外,消息收发客户端应用104的任何两个或更多个模块可以被组合成单个模块,并且本文针对单个模块描述的功能可以在多个模块之间细分。此外,根据各种示例实施方式,本文中描述为在单个机器、数据库或设备中实现的模块可以跨多个机器、数据库或设备分布。

摄像装置模块602执行摄像装置相关的操作,包括涉及客户端设备102的一个或更多个摄像装置的操作的功能。在示例中,摄像装置模块602可以跨正在客户端设备102上执行的不同进程访问照摄像装置功能,以确定用于面部或表面跟踪的表面,从而响应于来自这样的进程的摄像装置数据或图像数据(例如,帧)的各种请求(例如,涉及特定分辨率或格式的图像数据),向正在消费所请求的摄像装置数据或图像数据的这样的进程提供元数据。如本文所提及,“进程”或“计算进程”可以指正在由给定处理器的一个或更多个线程执行的计算机程序的实例。

如本文所提及,表面跟踪是指用于跟踪输入帧中与平面(例如,给定水平平面、地板、桌子)对应的表面的一个或更多个表示的操作。在示例中,使用命中测试(hit testing)和/或射线投射技术完成表面跟踪。在示例中,命中率测试确定在输入帧中所选择的点(例如,像素或像素的集合)是否与输入帧中的物理对象的表示的表面或平面相交。在示例中,射线投射利用基于笛卡尔的坐标系统(例如,x和y坐标),并将射线(例如,矢量)投影到如输入帧中捕获的世界的摄像装置视野中,以检测射线相交的平面。

如进一步所示,摄像装置模块602接收输入帧(或者在实施方式中可替选地是输入帧的副本)。摄像装置模块602可以包括基于跟踪的对象的类型的各种跟踪功能。在示例中,摄像装置模块602包括表面跟踪、面部跟踪、对象跟踪等的跟踪能力。在实现方式中,摄像装置模块602一次仅可以执行多个跟踪进程中的每一个之一,以促进客户端设备102或客户端设备102的计算资源的管理。此外,摄像装置模块602可以对输入帧执行一个或更多个对象识别操作或检测操作。

如本文所提及,跟踪是指在后处理阶段期间用于确定给定对象(或其部分)的空间属性(例如,位置和/或取向)的操作。在实现方式中,在跟踪期间,以连续的方式测量对象的位置和取向。可以跟踪不同对象诸如用户的头部、眼睛或四肢、表面或其他对象。跟踪涉及动态感测和测量,以使得虚拟对象和/或效果相对于与场景(例如,输入帧)对应的三维空间中的物理对象能够被渲染。因此,摄像装置模块602确定至少与输入帧中的一个或更多个物理对象的相对位置和取向对应的度量,并将这些度量包括在被提供给渲染模块608的跟踪数据中。在示例中,摄像装置模块602从帧到后续帧更新(例如,随时间跟踪)这样的度量。

在实现方式中,摄像装置模块602提供与前述度量(例如,位置和取向)对应的跟踪数据(例如,元数据)作为输出。在一些情况下,摄像装置模块602包括用于形状识别、边缘检测或任何其他合适的对象检测机制的逻辑。还可以由摄像装置模块602将感兴趣对象确定成预定对象类型的示例,以将范围内的形状、边缘或界标与预定对象类型的集合中的对象类型相匹配。

在实现方式中,摄像装置模块602可以利用将来自设备的运动传感器(例如,加速度计传感器和陀螺仪传感器等)的信息与输入帧中提供的场景的分析结合的技术。例如,摄像装置模块602检测输入帧中的特征,并且因此,使用至少部分地基于来自设备的运动传感器的数据得出的信息来跟踪这样的特征在若干输入帧上的相应位置中的差异。

如本文所提及,面部跟踪是指用于跟踪输入帧中的面部特征(诸如用户的面部的部分)的表示的操作。在一些实施方式中,摄像装置模块602包括面部跟踪逻辑,以识别一个或更多个图像内的面部的全部或一部分,并且跨视频流的该组图像来跟踪面部的界标。如本文所述,对象跟踪是指跟踪输入帧中的物理对象的表示。

在实施方式中,摄像装置模块602利用机器学习技术来(例如,从客户端设备102的当前视野)检测与显示屏的表示对应的物理对象是否被包括在捕获的图像数据中。

在示例中,摄像装置模块602利用机器学习模型,这样的神经网络用于检测图像数据中的显示屏的表示。神经网络模型可以指被实现成近似函数f的前馈深度神经网络。这方面的模型被称为前馈模型,因为信息流过正根据输入x评估的函数,流过用于限定f的一个或更多个中间操作,并且最终到输出y。前馈深度神经网络被称为网络,因为其可以通过将不同操作连接在一起来表示。前馈深度神经网络的模型可以被表示为表示如何从输入层将操作连接在一起、通过一个或更多个隐藏层并且最后连接至输出层的图。这样的图中的每个节点表示示例中要执行的操作。然而,应当理解的是,其他类型的神经网络是由本文中所描述的实现方式预期的。例如,可以为注释提供诸如长短期记忆(LSTM)神经网络的循环神经网络,或者可以利用卷积神经网络(CNN)。

在示例中,对于本技术的计算机视觉技术,摄像装置模块602利用卷积神经网络模型来检测图像数据中的显示屏(或其他适用对象)的表示。这样的卷积神经网络(CNN)可以使用包括成千上万个显示屏的图像的训练数据进行训练,使得经训练的CNN可以被提供有输入数据(例如,图像或视频数据)并且执行任务以检测输入数据中的显示屏的存在。卷积运算涉及在诸如图像数据的输入数据中找到局部模式。因此,可以在图像数据的任何其他部分中识别由CNN学习的这样的模式,这有利地提供了平移不变能力。例如,从侧面观看的显示屏的图像仍然可以产生显示屏的正确分类,就好像显示屏被从正面观看一样。类似地,在遮挡的情况下,当要检测的对象(例如,显示屏)被部分遮挡而看不见时,CNN仍然能够检测图像数据中的对象。

在实施方式中,摄像装置模块602充当AR内容系统600的其他部件与捕获模块604之间的媒介。如上所述,摄像装置模块602可以从图像数据处理模块606接收对捕获的图像数据的请求。摄像装置模块602还可以从内容记录模块610接收对捕获的图像数据的请求。摄像装置模块602可以将这样的请求转发到捕获模块604以进行处理。

捕获模块604捕获由客户端设备102的一个或更多个摄像装置(例如,响应于来自其他部件的前述请求)捕获的图像(其也可以包括深度数据)。例如,图像是由客户端设备102的光学传感器(例如,摄像装置)捕获的照片。图像包括一个或更多个真实世界的特征诸如在图像中检测到的用户的脸或真实世界的对象。在一些实施方式中,图像包括描述图像的元数据。每个捕获的图像可以被包括在本文提到的如“帧”的数据结构中,所述本文提到的如“帧”的数据结构可以包括原始图像数据以及元数据和其他信息。在实施方式中,捕获模块604可以将捕获的图像数据和元数据作为(捕获的)帧发送至AR内容系统600的一个或更多个部件。

图像数据处理模块606针对捕获的图像数据生成跟踪数据和其他元数据,包括与用于生成AR内容和应用于捕获的图像数据的AR效果的操作相关联的元数据。图像数据处理模块606对接收的图像数据执行操作。例如,各种图像处理操作由图像数据处理模块606执行。图像数据处理模块606基于对应于动画以及/或者向接收的图像数据提供视觉和/或听觉效果的算法或技术来执行各种操作。在实施方式中,给定增强现实内容生成器可以利用图像数据处理模块606来执行作为生成AR内容和AR效果的一部分的操作,然后将其提供给渲染进程以渲染这样的AR内容和AR效果(例如,包括2D效果或3D效果)等。

渲染模块608基于由前述模块中的至少一个模块提供的数据执行AR内容的渲染以由消息收发客户端应用104显示。在示例中,渲染模块608利用图形处理流水线来执行图形操作以渲染AR内容以用于显示。在示例中,渲染模块608实现可扩展的渲染引擎,该可扩展的渲染引擎支持与相应增强现实内容生成器对应的多个图像处理操作。在示例中,渲染模块608可以接收复合AR内容,以用于在由客户端设备102提供的显示器上进行渲染。

在一些实现方式中,渲染模块608提供图形系统,该图形系统将二维(2D)对象或来自三维(3D)世界(真实或想象的)的对象渲染到2D显示屏上。在一些实现方式中,这样的图形系统(例如,包括在客户端设备102上的图形系统)包括图形处理单元(GPU),该图形处理单元(GPU)用于执行图像处理操作并渲染图形元素以用于显示。

在实现方式中,GPU包括逻辑图形处理流水线,该逻辑图形处理流水线可以接收2D或3D场景的表示并提供表示2D图像的位图的输出以用于显示。现有的应用编程接口(API)已经实现了图形流水线模型。这样的API的示例包括开放图形库(OPENGL)API和METAL API。图形处理流水线包括将一组顶点、纹理、缓冲区和状态信息转换成屏幕上的图像帧的若干阶段。在实现方式中,图形处理流水线的阶段之一是着色器,该着色器可以作为应用于输入帧(例如,图像或视频)的特定增强现实内容生成器的一部分被利用。着色器可以实现为在通常执行若干计算线程的专用处理单元(也被称为着色器单元或着色器处理器)上运行的代码,代码被编程以对正在被渲染的片段生成适当等级的颜色和/或特殊效果。例如,顶点着色器处理顶点的属性(位置、纹理坐标、颜色等),以及像素着色器处理像素的属性(纹理值、颜色、z-深度和alpha值)。在一些情况下,像素着色器被称为片段着色器。

应理解的是,可以提供其他类型的着色器处理。在示例中,在图形处理流水线内,利用特定的采样率来渲染整个帧,并且/或者以特定每像素速率执行像素着色。以这种方式,给定电子设备(例如,客户端设备102)操作图形处理流水线,以将与对象对应的信息转换成可以由电子设备显示的位图。

内容记录模块610向摄像装置模块602发送请求,以启动由客户端设备102提供的一个或更多个摄像装置的对图像数据的记录。在实施方式中,摄像装置模块602充当AR内容记录系统中的其他部件之间的媒介。例如,摄像装置模块可以从内容记录模块610接收请求以启动记录,并将该请求转发给捕获模块604以进行处理。捕获模块604在接收到来自摄像装置模块602的请求后,执行通过客户端设备102提供的摄像装置启动图像数据捕获的操作。捕获的图像数据,包括来自捕获的图像数据的每一帧的时间戳信息,然后可以被发送至内容记录模块610以进行处理。在示例中,内容记录模块610可以执行操作以处理捕获的图像数据,从而用于由渲染模块608进行渲染。

在实施方式中,AR内容系统600的部件可以使用进程间通信(IPC)协议进行通信,在实施方式中,AR内容系统600的部件可以通过由AR内容系统600所提供的API进行通信。

在实施方式中,摄像装置模块602接收停止图像数据的记录的信号或命令(或请求)(例如,从内容记录模块710发送的)。作为响应,摄像装置模块602将请求发送至捕获模块604以停止捕获图像数据。捕获模块604响应于停止记录的请求,遵从该请求并停止使用客户端设备102的一个或更多个摄像装置来捕获图像数据的另外的操作。摄像装置模块602在接收到停止记录的信号或命令之后,还可以异步地向图像数据处理模块606发送图像数据的记录(例如,由捕获模块604捕获的图像数据)已经(请求)停止的信号。图像数据处理模块606在接收到信号之后,执行操作以完成或结束图像处理操作,包括执行操作以生成与AR内容项和AR效果相关的元数据。然后,这样的元数据然后可以被发送至捕获模块604,然后该捕获模块604生成包括元数据的复合AR内容项。复合AR内容项可以由渲染模块608接收并渲染以在由客户端设备102提供的显示设备上显示。

如本文所提及,本技术实现与如由下文所描述的面部动画合成相关的操作(例如,图像处理操作)。本公开内容的一些实施方式可以允许获取第一人(“源参与者”)的源媒体内容(例如,图像、视频等),并将第二实体(在下文中,称为“目标参与者”或“目标实体”诸如第二人)的目标照片(或视频)设置为输入,并对目标参与者的动画与源参与者的面部模仿和头部运动进行合成。本技术使得目标参与者能够被动画化,从而模仿源参与者的运动和面部表情。在实施方式中,可以在用户拍摄自拍(例如,包括图像或视频的媒体内容)的娱乐或广告上下文中利用本技术,并且本技术可以选择对人进行动画化并应用视觉效果的场景。场景具有不同的设置和源参与者运动,所述不同的设置和源参与者运动被传输至与用户自拍对应的媒体内容。本技术使得目标参与者能够被动画化并且由此产生的媒体内容(例如,包括面部动画合成的AR内容)可以在不同场景和位置中将用户特征化。用户可以与其他用户(例如,朋友)共享包括面部动画合成的AR内容。此外,包括面部动画合成的AR内容可以在消息收发应用(例如,消息收发客户端应用104)或社交网络服务(例如,社交网络系统122)中被用作贴纸(例如,媒体叠加包括AR内容),或者被用作在各种情况下要显示的在线广告的内容,如本文中进一步描述。

在一些实施方式中,本系统可以通过执行面部合成操作基于源面部的面部表情对目标面部进行操纵或修改,该面部合成操作实现对源参与者的头部的姿态和源参与者的面部表情的实时模仿。另外,在一些实施方式中,计算设备的操作的技术改进包括显著减少用于生成AR内容的计算时间,并允许在可以具有有限的计算资源的移动设备上执行AR内容的这种生成,在该AR内容中,目标实体的面部模仿源参与者的头部的姿态和源参与者的面部表情。

在一些实施方式中,客户端设备102可以被配置成显示目标媒体内容(例如,图像或视频)。目标媒体内容可以包括至少一个帧,所述至少一个帧包括目标实体的面部,其中,基于源参与者(例如,用户)的面部应用了面部合成。在一些实施方式中,目标媒体内容可以包括单个图像(例如,静止或静态图像,而不是视频)。在一些实施方式中,目标媒体内容可以被预先记录并存储在客户端设备102的存储器中或客户端设备102通信地耦接至的基于云的计算资源(诸如,消息收发服务器系统108)中。

在示例中,摄像装置模块602可以经由例如客户端设备102的摄像装置捕获源视频。源视频可以至少包括用户的面部(例如,“源面部”),并且可以被存储在客户端设备102的存储器中。

根据一些实施方式,客户端设备102(例如,图像数据处理模块606)或消息收发服务器系统108可以被配置成分析给定用户的存储图像(例如,源视频的单个图像或多个帧)以便提取用户的面部参数。客户端设备102或消息收发服务器系统108还可以被配置成通过基于用户的面部参数,利用面部合成技术用用户的面部替换目标视频中的目标面部来修改目标视频。

类似地,客户端设备102或消息收发服务器系统108可以被配置成分析用户的存储图像,以提取另一个人(例如,用户的朋友)的面部参数。客户端设备102还可以被配置成通过基于个人的面部参数,利用面部合成技术用个人的面部替换目标视频中的目标面部来修改目标视频。

如本文所提及,这样的面部合成技术可以至少包括,例如,确定源参与者的面部表情和头部姿势,确定源参与者的面部界标,并利用包括神经网络的机器学习模型用目标参与者的身份参数替换源参与者的身份参数,以及生成目标参与者的真实且看似合理的头部的帧序列(例如,视频),该目标参与者移动并表达从源参与者提取的情绪(例如,面部表情或面部运动)。面部界标的示例是面部上不同的可识别点或部分,诸如瞳孔或鼻尖,并且还包括眉毛、眼睛、鼻子、嘴唇及其上述部分(例如,内眉、外眉、上眼部分、下眼部分、鼻尖、上唇、下唇、左嘴部分、右嘴部分、左鼻部分、右鼻部分等)。

如本文的实施方式中所描述的本技术使得能够快速生成面部再现视频,并实现了利用通过用于头部转动的面部合成的技术获得的多个预计算的关键帧的技术。

图7示出了根据一些实施方式的用于增强现实内容的面部合成的示例。在实施方式中,这样的面部合成可以由消息收发客户端应用104和/或消息收发服务器系统108执行,并能够由客户端设备102访问,以在客户端设备102的显示屏上呈现给用户。

在实现方式中,(图形处理)流水线接收源参与者的视频(例如,帧的序列)和目标人或实体的一个或更多个图像。客户端设备102(或AR内容系统600的图像数据处理模块606)生成具有目标头部的新视频(或图像),该目标头部逐帧再现源参与者的头部转动和面部表情。

如所示,处理目标人的面部的图像700和源参与者的帧730,以生成图像750,该图像750包括重现帧730中所示的源参与者的头部转动和面部表情的目标人的头部。

图8示出了根据一些实施方式的用于增强现实内容的面部合成的示例。在实施方式中,这样的面部合成可以由消息收发客户端应用104和/或消息收发服务器系统108执行,并能够由客户端设备102访问,以在客户端设备102的显示屏上呈现给用户。

如所示,使用界标:沿着如图像800中所示的面部的某些部分以预定义方式对准的关键点来对面部表情进行编码。在一些实施方式中,每个帧通过对神经网络进行馈送来生成,该神经网络确定:1)要求的转动和表情中的面部界标;2)翘曲到这些界标(以编程方式扭曲使得其界标与要求的界标相匹配)中的目标面部的图像;3)由本文所描述的“头部转动”嵌入器网络计算的不具有面部的目标头部的深度神经表示。

如本文所提及,出于讨论的目的,上述神经网络被称为头部转动生成器。本技术通过如下方式在计算机的功能方面提供改进:至少减少被用于在面部合成和动画中执行上述操作的计算资源,从而使得诸如移动计算设备的设备能够快速执行面部合成,并且没有消耗阻碍这样的设备的使用的资源。

在示例中,为了提高计算资源的利用和执行效率,本技术经由头部转动生成器获得预定义旋转集(实际上由偏航-俯仰网格限定)中目标头部的生成图像,并利用翘曲(例如,计算上相对轻的变形步骤)来将最接近旋转的图像转换成最终生成的帧。

在一个或更多个实现方式中,本技术包括:

a.在具有中性面部表情的所要求的旋转中从“一般”人类头部的3D模型的渲染中捕获到的面部、上头部和前额界标的集合,和这样的渲染的产生的方法

b.改进已知身份的面部界标的角度检测的方法

c.使用分割掩模(segmentation mask)推断上头部和前额的界标的方法

d.使用邻近转动中面部界标的集合来选择具有中性表情的目标头部的角度最近的图像并将该图像翘曲到最终生成的帧所需的界标的方法。

在合成源场景中,3D面部模型被旋转到角度的预定义集合中并被渲染。根据得到的渲染图像集,本技术使用任意检测器估计面部界标,并使用下面进一步描述的涉及上头部和前额界标的特殊步骤估计上头部和前额界标。此外,角度与界标之间的对应关系被保存,以用于后续使用。

在830中所示的示例中,本技术实现了改进的角度检测,其中,预定义的偏航-俯仰网格被均匀地分割成三角形,以产生三角形网格,并且其中每个顶点对应于一对偏航和俯仰,并对应于具有中性面部表情的3D模型头部的对应面部界标。在示例中,每个偏航可以具有从0至360的值,其中,0的值对应于北方向,90的值对应于东方向,180的值对应于南方向,以及270的值对应于西方向。在示例中,每个俯仰可以具有从-90至+90,其中,0的值对应于地平线,+90的值对应于笔直向上,以及-90的值对应于笔直向下。在示例中,偏航和俯仰的这样的值相对于与三角形网格(或下面进一步提及的其他网格)对应的平面而言。

在850中所示的示例中,对所有界标执行面部角度检测,以获得形成第二网格的偏航和俯仰的预测对。在一些示例中,由于一些固有的不准确性,在预测角度后建立的第二网格可能被扭曲。在实施方式中,830和850中的网格二者被保存,以随后确定对应关系。

图9示出了根据一些实施方式的用于增强现实内容的面部合成的示例。在实施方式中,这样的面部合成可以由消息收发客户端应用104和/或消息收发服务器系统108执行,并能够由客户端设备102访问,以在客户端设备102的显示屏上呈现给用户。

继续图8中的讨论,在900中所示的示例中,假设所选择的角度检测器预测了某个角度,该角度由点905限定。在实现方式中,本技术确定三个最接近的预定义偏航-俯仰对,并计算预测角度相对于三个最接近的预定义偏航-俯仰对的重心坐标。在示例中,重心坐标系是以下坐标系,在该坐标系中,点的位置通过参照单纯形(例如,平面中的点的三角形,三维空间中的点的四面体等)而指定。点的重心坐标可以被解释为放置在单纯形的顶点处的质量,例如,使得点是这些质量的质心(或重心)。这样的质量可以是零,或负的,并且当且仅当点在单纯形内部时,这样的质量是正的。每个点具有重心坐标,并且重心坐标的和不为零(例如,非零)。此外,当且仅当重心坐标的两个元组成比例使得如果一个元组可以通过将另一元组的元素乘以相同的非零数来获得时重心坐标的两个元组指定同一点。因此,在示例中,重心坐标被定义成乘以非零常数,或归一化成求和为一。在示例中,重心坐标是与放置在三角形顶点处的质量对应的三组数字(t1、t2、t3)。这样的重心坐标可以用于确定位于三角形(例如,上述网格内的三角形)内的点的位置。

在930中所示的示例中,然后利用上述坐标对原始网格的对应偏航-俯仰对进行插值,以获得最终调整的角度。

在一些实施方式中,如950中所示的示例中所示,除面部界标之外,对于每个头部图像,本技术推断出上头部和前额界标。例如,在本示例中,这通过从鼻子的上尖端投射射线实现,该射线指向从右脸颊开始到左脸颊处结束的均匀距离的角度集合。对于每条射线,本技术使用二进制搜索确定(例如,找到)其与头部掩模的交点,并在该点处放置新的界标。在示例中,前额界标以相同的方式获得,但利用面部分割掩模。该掩模可以作为头部转动生成器(例如,神经网络)的输出而获得。

此外,本技术处理来自预计算关键帧的翘曲。在一些实现方式中,执行以下操作:

a.找到与所需角度最接近的几个角度对应的面部界标的集合;

b.在角度空间中使用归一化的反L2距离作为权重对面部界标的集合进行插值(平均),以获得精确转动的头部界标;

c.将来自所需帧的面部(表情)界标插入精确转动的头部;

d.选择一个最接近角度,并使用面部界标和上头部等高线和前额的界标来将一个最接近角度的对应中性头部图像翘曲成最终帧的所需界标。

图10是示出根据某些示例实施方式的方法1000的流程图。方法1000可以以计算机可读指令实施,该计算机可读指令用于由一个或更多个计算机处理器执行,使得方法1000的操作可以由客户端设备102(特别地关于上面图6中所描述的AR内容系统600的相应部件)部分或全部地执行;因此,下面参考其通过示例的方式来描述方法1000。然而,应当理解的是,方法1000的操作中的至少一些操作可以部署在各种其它硬件配置上,并且方法1000不旨在限于AR内容系统600。

在操作1002处,图像数据处理模块606接收源媒体内容的帧,源媒体内容的帧包括源参与者的头部和面部的表示。

在操作1004处,图像数据处理模块606至少部分地基于源媒体内容的帧生成源姿势参数集,源姿势参数集包括源媒体内容的帧中源参与者的头部的表示的姿态和源参与者的面部表情。

在操作1006处,图像数据处理模块606接收至少一个目标图像,该至少一个目标图像包括目标实体的目标头部和目标面部的表示。

在操作1008处,图像数据处理模块606将源姿势参数集提供给神经网络,以确定头部转动和面部表情的面部界标。

在操作1010处,图像数据处理模块606至少部分地基于源姿势参数集以及头部转动和面部表情的面部界标生成输出媒体内容,该输出媒体内容的每一帧包括输出媒体内容的至少一帧中的目标面部的图像,基于源姿势参数集中的至少一个修改目标面部的图像以模仿源参与者的头部的姿态中的至少一个和源参与者的面部表情中的至少一个。

在操作1012处,渲染模块608至少部分地基于输出媒体内容提供增强现实内容,以用于在计算设备上显示。

在实施方式中,生成输出媒体内容还包括:图像数据处理模块606接收预定义的偏航-俯仰网格;以及以均匀的方式分割预定义的偏航-俯仰网格以产生第一三角形网格,在该第一三角形网格中每个顶点对应于一对偏航值和俯仰值,并且第一三角形网格对应于具有中性面部表情的头部的表示的三维(3D)模型的一组面部界标,中性面部表情包括描绘了定位在第一三角形网格中时不带情绪的一组面部界标中的至少一些。

在实施方式中,图像数据处理模块606执行:使用面部角度检测器至少部分基于一组面部界标获得一组偏航值和俯仰值的预测对;以及至少部分基于一组偏航值和俯仰值的预测对生成第二三角形网格,该第二三角形网格与第一三角形网格不同。

在实施方式中,图像数据处理模块606执行:存储第一三角形网格和第二三角形网格。

在实施方式中,图像数据处理模块606执行:从一组偏航值和俯仰值的预测对中选择偏航值和俯仰值的特定对;从一组偏航值和俯仰值的预测对中确定与特定对最接近的偏航值和俯仰值的三个预测对;以及确定偏航值和俯仰值的特定对相对于偏航值和俯仰值的三个最接近预测对的一组重心坐标。

在实施方式中,图像数据处理模块606执行:至少部分基于对来自第一三角形网格的偏航值和俯仰值的相应对进行插值来确定调整角度。

在实施方式中,生成输出媒体内容还包括:对于输出媒体内容的至少一帧中的目标面部的每个图像,图像数据处理模块606基于从与鼻子的上尖端对应的第一面部界标投射一组射线确定一组上头部和前额界标,所述一组射线指向从与右脸颊对应的第二面部界标开始并在与左脸颊对应的第三面部界标处结束的角度的均匀距离集合。

在实施方式中,图像数据处理模块606执行确定一组上头部和前额界标包括:对于一组射线中的每条射线,使用二进制搜索确定与头部掩模的交点,并在相交的点处生成新的界标;对于一组射线中的每条射线,使用二进制搜索确定与面部分割掩模的第一交点,并在第一交点处生成新的界标;以及对于一组射线中的每条射线,使用二进制搜索确定与面部分割掩模的第二交点,并在第二交点处生成新的界标,其中,面部分割掩模从神经网络获得。

在实施方式中,生成输出媒体内容还包括:图像数据处理模块606确定与相对于与面部界标相关联的所需角度的几个最接近角度对应的面部界标的集合;以及在角度空间中使用归一化反L2距离作为权重对面部界标进行插值,以获得一组精确转动的头部界标,其中,每个L2距离包括使用欧几里德距离与向量规范对应的值。

图11是示出示例软件架构1106的框图,该示例软件架构以与本文中描述的各种硬件架构结合使用。图11是软件架构的非限制性示例,并且应当理解的是,可以实现许多其他架构以促进本文中描述的功能。软件架构1106可以在诸如图12的机器1200的硬件上执行,机器包括处理器1204、存储器1214和(输入/输出)(I/O)部件1218等。示出了代表性硬件层1152并且该代表性硬件层可以表示例如图12的机器1200。代表性硬件层1152包括具有相关联的可执行指令1104的处理单元1154。可执行指令1104表示软件架构1106的可执行指令,包括本文中描述的方法、部件等的实现方式。硬件层1152还包括也具有可执行指令1104的存储器和/或存储模块存储器/存储装置1156。硬件层1152还可以包括其他硬件1158。

在图11的示例架构中,软件架构1106可以被概念化为层的堆叠,在该层的堆叠中,每个层提供特定功能。例如,软件架构1106可以包括诸如操作系统1102、库1120、框架/中间件1118、应用1116和表示层1114的层。在操作上,层内的应用1116和/或其他部件可以通过软件堆栈调用API调用1108并且接收如消息1112中对API调用1108的响应。所示出的层在本质上是代表性的,并且不是所有软件架构都具有所有的层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件1118,而其他操作系统可能提供这样的层。其他软件架构可以包括另外的或不同的层。

操作系统1102可以管理硬件资源并且提供公共服务。操作系统1102可以包括例如核1122、服务1124和驱动器1126。核1122可以用作硬件与其他软件层之间的抽象层。例如,核1122可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务1124可以为其他软件层提供其他公共服务。驱动器1126负责控制底层硬件或与底层硬件对接。例如,根据硬件配置,驱动器1126包括显示器驱动器、摄像装置驱动器、

库1120提供由应用1116和/或其他部件和/或层使用的公共基础设施。库1120提供如下功能,该功能允许其他软件部件以比与底层操作系统1102的功能(例如,核1122、服务1124和/或驱动器1126)直接接口的方式更容易的方式来执行任务。库1120可以包括系统库1144(例如,C标准库),系统库1144可以提供函数例如存储器分配函数、串操纵函数、数学函数等。另外,库1120可以包括API库1146,例如媒体库(例如,支持诸如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG的各种媒体格式的呈现和操纵的库)、图形库(例如,可以用于在显示器上以图形内容渲染2D和3D的OpenGL框架)、数据库库(例如,可以提供各种关系数据库功能的SQLite)、web库(例如,可以提供web浏览功能的WebKit)等。库1120还可以包括各种其他库1148,以向应用1116和其他软件部件/模块提供许多其他API。

框架/中间件1118(有时也称为中间件)提供可以由应用1116和/或其他软件部件/模块使用的较高级别的公共基础设施。例如,框架/中间件1118可以提供各种图形用户界面(GUI)功能、高级资源管理、高级位置服务等。框架/中间件1118可以提供可以由应用1116和/或其他软件部件/模块使用的广泛的其他API,其中一些可以专用于特定操作系统1102或平台。

应用1116包括内置应用1138和/或第三方应用1140。代表性内置应用1138的示例可以包括但不限于联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息收发应用和/或游戏应用。第三方应用1140可以包括由除特定平台的供应商之外的实体使用ANDROID

应用1116可以使用内置操作系统功能(例如,核1122、服务1124和/或驱动器1126)、库1120和框架/中间件1118来创建用户接口以与系统的用户交互。替选地或另外地,在一些系统中,可以通过表示层例如表示层1114发生与用户的交互。在这些系统中,应用/部件“逻辑”可以与应用/部件的与用户交互的各方面分开。

图12是示出根据一些示例实施方式的机器1200的部件的框图,机器1200能够从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文中讨论的方法中的任何一种或更多种。具体地,图12示出了呈计算机系统的示例形式的机器1200的示意表示,在该机器1200中可以执行用于使机器1200执行本文讨论的方法中的任何一种或更多种的指令1210(例如,软件、程序、应用、小程序、app或其他可执行代码)。同样地,指令1210可以被用于实现本文中描述的模块或部件。指令1210将通用的未编程的机器1200变换成被编程为以所描述的方式执行所描述和所示出的功能的特定机器1200。在可替选实施方式中,机器1200作为独立设备操作或者可以耦接(例如,联网)至其他机器。在联网部署中,机器1200可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1200可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web家用电器、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器1200采取的动作的指令1210的任何机器。此外,虽然仅示出了单个机器1200,但是术语“机器”还应被视为包括单独或联合执行指令1210以执行本文中讨论的方法中的任一个或更多个方法的机器的集合。

机器1200可以包括处理器1204——其包括处理器1208至处理器1212、存储器/存储装置1206和I/O部件1218,它们可以被配置成例如经由总线1202彼此通信。存储器/存储装置1206可以包括存储器1214例如主存储器或其他存储装置以及存储单元1216,处理器1204能够例如经由总线1202访问存储器1214和存储单元1216二者。存储单元1216和存储器1214存储体现本文中描述的方法或功能中的任何一个或更多个方法或功能的指令1210。指令1210还可以在其被机器1200执行期间完全地或部分地驻留在存储器1214内、存储单元1216内、处理器1204中的至少一个内(例如,处理器的高速缓冲存储器内)或者其任何合适的组合内。因此,存储器1214、存储单元1216以及处理器1204的存储器是机器可读介质的示例。

I/O部件1218可以包括接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器1200中的具体I/O部件1218将取决于机器的类型。例如,诸如移动电话的便携式机器将很可能包括触摸输入设备或其他这样的输入机构,而无头服务器(headless server)机器将很可能不包括这样的触摸输入设备。将理解,I/O部件1218可以包括图12中未示出的许多其他部件。I/O部件1218根据功能被分组,仅是为了简化下面的讨论,并且分组决不是限制性的。在各种示例实施方式中,I/O部件1218可以包括输出部件1226和输入部件1228。输出部件1226可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件1228可以包括字母数字输入部件(例如,被配置成接收字母数字输入的键盘、触摸屏幕;光电键盘(photo-optical keyboard)或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、跟踪球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸姿势的位置和/或力的触摸屏幕或者其他触觉输入部件)、音频输入部件(例如,麦克风)等。

在另外的示例实施方式中,I/O部件1218可以包括生物特征部件1230、运动部件1234、环境部件1236或定位部件1238等各种其他部件。例如,生物特征部件1230可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1234可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1236可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测周围温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、听觉传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。定位部件1238可以包括位置传感器部件(例如,GPS接收器部件)、海拔高度传感器部件(例如,从其中检测可以得到海拔高度的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。

可以使用各种各样的技术来实现通信。I/O部件1218可以包括通信部件1240,该通信部件能够操作成分别经由耦接1224和耦接1222将机器1200耦接至网络1232或设备1220。例如,通信部件1240可以包括网络接口部件或其他合适的设备以与网络1232对接。在其他示例中,通信部件1240可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、

此外,通信部件1240可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1240可以包括射频识别(RFID)标签读取器部件、NFC智能标签检测部件、光学读取器部件(例如,用于检测下述项的光学传感器:一维条形码诸如通用产品代码(UPC)条形码;多维条形码,诸如快速响应(QR)代码、Aztec代码、数据矩阵、数据图示符(Dataglyph)、麦克斯码(MaxiCode)、PDF417、超代码、UCC RSS-2D条形码和其他光学代码)、或者听觉检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件1240得到各种信息,例如,经由因特网协议(IP)地理位置得到位置、经由

以下讨论涉及贯穿本公开内容提及的各种术语或短语。

“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有助于软件或数据的通信。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指使其特性中的一个或更多个以对信号中的信息进行编码的方式来设置或改变的信号。术语“传输介质”和“信号介质”指相同的事物并且可以在本公开内容中互换使用。

“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、

“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被应用以操作机器的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(CPU)、简化指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或它们的任何组合。处理器还可以是具有可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)的多核处理器。

“机器存储介质”是指存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库、和/或相关联的缓存和服务器)。因此,该术语应被视为包括但不限于固态存储器以及光学和磁介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,所述载波、调制数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。

“部件”是指具有以下边界的设备、物理实体或逻辑,该边界由功能或子例程调用、分支点、API或者对特定处理或控制功能提供分区或模块化的其他技术定义。部件可以经由它们的接口与其他部件对接以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且通常执行相关功能的特定功能的程序的一部分。部件可以构成软件部件(例如,在机器可读介质上实施的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,可以通过软件(例如,应用或应用部分)将一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)配置成用于执行如本文中描述的某些操作的硬件部件。也可以机械地、电子地或以其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路系统或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件部件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件而配置,硬件部件就成为被唯一地定制成执行所配置功能并且不再是通用处理器的特定机器(或机器的特定部件)。将理解的是,可以出于成本和时间考虑来推动在专用且永久配置的电路中或在短暂配置(例如,通过软件配置)的电路中机械地实现硬件部件的决策。因此,短语“硬件部件”(或“硬件实现的部件”)应当被理解成涵盖有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中所描述的某些操作的实体。考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每一个进行配置或实例化。例如,在硬件部件包括通过软件配置成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器以例如在一个时刻处构成特定硬件部件,并且在不同的时刻处构成不同的硬件部件。硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为是通信上耦接的。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中(例如,通过适当的电路和总线)的信号传输来实现通信。在其中多个硬件部件在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件部件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件部件可以在随后的时间访问存储器设备以检索所存储的输出并对其进行处理。硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。在本文中描述的示例方法的各种操作可以至少部分地由(例如,通过软件)临时地配置或永久地配置以执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是永久地配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中特定的一个或更多个处理器是硬件的示例。例如,方法的操作中的至少一些操作可以由一个或更多个处理器或者处理器实现的部件来执行。此外,所述一个或更多个处理器还可以操作成支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)进行访问。某些操作的执行可以分布在处理器之间,不是仅驻留在单个机器内,而是跨多个机器部署。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理位置分布。

“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。

“计算机可读介质”是指机器存储介质和传输介质二者。因此,这些术语包括存储设备/介质和载波/调制数据信号二者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。

“客户端设备”是指与通信网络接口以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。在本公开内容中,客户端设备也被称为“电子设备”。

“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送方设置。可替选地,访问时间可以是默认设置或者由接收方指定的设置。无论设置技术如何,该消息都是暂时的。

“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有助于软件或数据的通信。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指使其特性中的一个或更多个以对信号中的信息进行编码的方式来设置或改变的信号。术语“传输介质”和“信号介质”指相同的事物并且可以在本公开内容中互换使用。

“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、

“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被应用以操作机器的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(CPU)、简化指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或它们的任何组合。处理器还可以是具有可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)的多核处理器。

“机器存储介质”是指存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库、和/或相关联的缓存和服务器)。因此,该术语应被视为包括但不限于固态存储器以及光学和磁介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,所述载波、调制数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。

“部件”是指具有以下边界的设备、物理实体或逻辑,该边界由功能或子例程调用、分支点、API或者对特定处理或控制功能提供分区或模块化的其他技术定义。部件可以经由它们的接口与其他部件组合以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且通常执行相关功能的特定功能的程序的一部分。部件可以构成软件部件(例如,在机器可读介质上实施的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,可以通过软件(例如,应用或应用部分)将一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)配置成用于执行如本文中描述的某些操作的硬件部件。也可以机械地、电子地或其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路系统或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件部件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件进行配置,则硬件部件变成被唯一地定制成执行所配置的功能并且不再是通用处理器的特定机器(或机器的特定部件)。将理解的是,可以出于成本和时间考虑来推动在专用且永久配置的电路中或在短暂配置(例如,通过软件配置)的电路中机械地实现硬件部件的决策。因此,短语“硬件部件”(或“硬件实现的部件”)应当被理解成涵盖有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中所描述的某些操作的实体。考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每一个进行配置或实例化。例如,在硬件部件包括通过软件配置成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器以例如在一个时刻处构成特定硬件部件,并且在不同的时刻处构成不同的硬件部件。硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为是通信上耦接的。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中(例如,通过适当的电路和总线)的信号传输来实现通信。在其中多个硬件部件在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件部件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件部件可以在随后的时间访问存储器设备以检索所存储的输出并对其进行处理。硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。在本文中描述的示例方法的各种操作可以至少部分地由被临时地配置(例如,由软件)或永久地配置以执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是永久地配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中特定的一个或更多个处理器是硬件的示例。例如,方法的操作中的至少一些操作可以由一个或更多个处理器或者处理器实现的部件来执行。此外,所述一个或更多个处理器还可以操作成支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)进行访问。某些操作的执行可以分布在处理器之间,不是仅驻留在单个机器内,而是跨多个机器部署。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理位置分布。

“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。

“计算机可读介质”是指机器存储介质和传输介质二者。因此,这些术语包括存储设备/介质和载波/调制数据信号二者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。

“客户端设备”是指与通信网络接口以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。

“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送方设置。替选地,访问时间可以是默认设置或者由接收方指定的设置。无论设置技术如何,该消息都是暂时的。

相关技术
  • 用于第三方应用的增强现实内容中的面部合成
  • 叠加的增强现实内容中的面部合成
技术分类

06120116491176