紧凑的无语言面部表情嵌入和新颖三元组的训练方案的制作方法

文档序号:19905889发布日期:2020-02-11 14:29阅读:185来源:国知局
紧凑的无语言面部表情嵌入和新颖三元组的训练方案的制作方法

本公开总体上涉及机器学习。更具体地,本公开涉及紧凑的无语言(language-free)面部表情嵌入和相关联的新颖的三元组(triplet)训练技术。



背景技术:

机器学习通常指的是计算机科学的一个领域,该领域的重点是诸如计算机的机器能够在没有明确编程的情况下学习。机器学习包括研究和构建机器执行的、使机器能够从数据中学习并对数据做出预测的算法或技术。具体而言,这种算法可以通过从输入观察的训练集建立模型来操作,以便做出被表达为输出的、由数据驱动的预测或决策,而不是严格遵循静态编程指令。

机器学习技术的一个主要分支包括监督学习技术。监督学习可以包括从包括许多标记示例的训练数据集推断或学习函数或模型。例如,训练数据集中的每个示例可以包括一个或多个输入值(可以被表达为具有多个特征的向量、二维矩阵或其他格式)和一个或多个期望的输出值(也可以称为监督信号)。通常,使用提供输入值和输出值的已知的地面真值(groundtruth)信息来标记受监督的训练数据。受监督的机器学习算法可以分析训练数据并产生推断模型,然后该模型可以用于对新的、未标记的示例进行映射或做出预测。

然而,在许多场景中,标记的数据和/或地面真值数据可能难以获得和/或获得成本高昂。例如,数据的手动标记可能要求人类确定并向大量的训练示例提供大量的标记,这可能要求过多的时间和费用。此外,提供手动标记在概念上具有挑战性,因为在某些情况下,可能要求(多个)人类标记员提前就具体哪些标记可供使用达成一致。即使假设对可用标记的词汇表达成一致,标记员也可能不同意应用哪个标记,或者如何或何时将标记应用于给定的训练示例。



技术实现要素:

本公开的实施例的方面和优点将在以下描述中部分阐述,或者可以从描述中获知,或者可以通过实施例的实践获知。

本公开的一个示例方面针对一种计算机系统。该计算机系统包括面部表情模型,所述面部表情模型被配置为接收描绘面部的输入图像,并且作为响应,提供面部表情嵌入,所述面部表情嵌入对描述由输入图像中描绘的面部做出的面部表情的信息进行编码。该计算机系统包括一个或多个处理器,和存储指令的一个或多个非暂时性计算机可读介质,当所述指令被所述一个或多个处理器执行时,使得所述计算机系统:获得描绘面部的输入图像;将所述输入图像输入所述面部表情模型;并且从所述面部表情模型接收对描述由所述面部做出的面部表情的信息进行编码的面部表情嵌入。

本公开的另一示例方面针对一种用于训练面部表情模型的计算机实施的方法。该方法包括接收训练数据,所述训练数据包括描绘面部的多个图像三元组和对应于每个三元组的相似性信息。每个三元组的相似性信息指示这样的三元组的哪两个图像已经被确定为在面部表情方面最相似的图像对。没有一个图像被指示为所述三元组的其他两个图像已经与之进行了比较的参考图像。该方法包括使用所述训练数据训练面部表情模型,使得最相似的图像对之间的嵌入空间中的距离小于所述图像对中的每个图像和所述三元组中的第三图像之间的相应距离。

作为示例,在一些实施方式中,使用所述训练数据训练面部表情模型可以包括:使用所述训练数据来训练所述面部表情模型,使得最相似的图像对之间的嵌入空间中的距离比所述图像对中的每个图像和所述三元组中的第三图像之间的相应距离小至少一个余量(margin)。

本公开的另一示例方面针对一个或多个非暂时性计算机可读介质,其共同存储指令,当由一个或多个处理器执行时,这些指令使得一个或多个处理器执行操作。这些操作包括训练面部表情模型,以提供描述由输入图像中包括的面部做出的面部表情的无语言面部表情嵌入。训练面部表情模型包括获得训练数据集,所述训练数据集包括组织成图像三元组的多个图像。每个图像三元组具有标记,所述标记指示包括在这样的图像三元组中的第一图像和第二图像已经被评估为这样的图像三元组中最相似的图像对。训练面部表情模型包括使用编码第一约束和第二约束两者的目标函数训练面部表情模型。对于每个图像三元组,第一约束包括第一要求,所述第一要求是面部表情模型为所述第一图像提供的第一嵌入和面部表情模型为所述第二图像提供的第二嵌入之间的第一距离小于所述第一嵌入和面部表情模型为包括在这样的图像三元组中的第三图像提供的第三嵌入之间的第二距离。对于每个图像三元组,第二约束包括第二要求,所述第二要求是所述第一嵌入和所述第二嵌入之间的第一距离小于面部表情模型为所述第二图像提供的第二嵌入和面部表情模型为所述第三图像提供的第三嵌入之间的第三距离。

作为示例,在一些实施方式中,对于每个图像三元组,第一约束可以包括第一要求,第一要求是面部表情模型为第一图像提供的第一嵌入和面部表情模型为第二图像提供的第二嵌入之间的第一距离比第一嵌入和面部表情模型为包括在这样的图像三元组中的第三图像提供的第三嵌入之间的第二距离小至少第一余量。同样,在一些实施方式中,对于每个图像三元组,第二约束可以包括第二要求,第二要求是第一嵌入和第二嵌入之间的第一距离比面部表情模型为第二图像提供的第二嵌入和面部表情模型为第三图像提供的第三嵌入之间的第三距离小至少第二余量。

本公开的其他方面针对各种系统、装置、非暂时性计算机可读介质、用户界面和电子设备。

参考以下描述和所附权利要求,将更好地理解本公开的各种实施例的这些和其他特征、方面和优点。合并在本说明书中并构成其一部分的附图图示了本公开的示例实施例,并且与描述一起用于解释相关原理。

附图说明

在参考附图的说明书中阐述了针对本领域普通技术人员的实施例的详细讨论,其中:

图1a描绘了根据本公开的示例实施例的示例计算系统的框图。

图1b描绘了根据本公开的示例实施例的示例计算设备的框图。

图1c描绘了根据本公开的示例实施例的示例计算设备的框图。

图2描绘了根据本公开的示例实施例的示例工作流。

图3描绘了根据本公开的示例实施例的示例图像预处理工作流。

图4描绘了根据本公开的示例实施例的示例面部表情模型。

图5a-5b描绘了根据本公开的示例实施例的示例训练方案。

图6描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图7描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图8描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图9描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图10描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图11描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。

图12描绘了根据本公开的示例实施例的获得面部表情嵌入的示例方法的流程图。

图13描绘了根据本公开的示例实施例的训练面部表情模型的示例方法的流程图。

图14描绘了根据本公开的示例实施例的示例的基于面部表情嵌入的搜索结果。

在多个附图之间重复的参考数字旨在标识不同实施方式中的相同组件或特征。

具体实施方式

概观

通常,本公开针对包括或以其他方式利用面部表情模型的系统和方法,该面部表情模型被配置为提供面部表情嵌入。具体而言,面部表情模型可以接收描绘面部的输入图像,并且作为响应,提供对描述由输入图像中描绘的面部做出的面部表情的信息进行编码的面部表情嵌入。作为示例,面部表情模型可以是或包括神经网络,诸如卷积神经网络。

根据本公开的一方面,在一些实施方式中,面部表情嵌入可以是无语言嵌入。具体而言,在一些实施方式中,面部表情嵌入可以是或包括嵌入向量,该嵌入向量包含分别用于多个嵌入维度(例如,16个嵌入维度)的多个数值。因此,面部表情嵌入可以提供面部表情信息的数字编码,该数字编码不依赖于面部表情的人类语言概念(例如,“微笑”、“皱眉”等),而是位于嵌入空间的连续且通用的数字频谱内。

这样,面部表情嵌入解决了与基于以语言为基础的类别对面部表情分类相关联的常见问题,该常见问题是要求对面部表情类别的共享和固有限制字典进行先验协议。此外,由于嵌入空间的连续特性,面部表情模型和对应的嵌入可以编码对面部表情更加复杂和微妙的理解。例如,面部表情模型和对应的嵌入可以在细微的表情(诸如强迫微笑和真诚微笑)之间进行区分。面部表情模型的这种连续频谱特性也与面部识别模型形成对比,其中面部识别模型固有地基于多个离散类别(例如,身份)。

面部表情嵌入可用于多种不同的用途,包括例如确定由各个图像中的不同面部做出的两个面部表情之间的相似性度量。具体而言,各个面部表情嵌入之间的相似性可以指示各个面部表情之间的相似性。同样,嵌入之间的不相似性可以指示面部表情之间的不相似性。在一个示例中,面部表情之间的相似性或关联性可以通过计算面部表情模型所提供的它们各自的嵌入向量之间的欧几里德距离(例如,以维度方式)来确定。这对于在其他应用当中执行表情相似性搜索可能是有用的。

此外,由面部表情嵌入编码的面部表情信息通常是抽象的,或者以其他方式与做出面部表情的人的身份相分离。因此,表情可以在不同的人之间进行比较,而不考虑做出该表情的(多个)人的身份。这与更常用的面部识别模型(例如,面部识别神经网络)形成对比,这些面部识别模型聚焦于使用嵌入来识别同一个人的图像,而不考虑面部表情。

根据本公开的另一方面,面部表情模型可以被训练以提供反映或以其他方式模仿人类感知或意见的面部表情嵌入。例如,在一些实施方式中,面部表情模型可以在包括人类应用的标记的训练数据上被训练,从而提供关于面部表情的、模仿或以其他方式反映人类感知或意见的嵌入。

具体而言,根据本公开的一方面,面部表情模型可以根据三元组训练方案来训练,在三元组训练方案中图像三元组被用于训练模型。更具体地,可以通过标记图像三元组中的图像来训练诸如神经网络(例如卷积神经网络)的模型,以执行面部(或任何其他对象)识别。具体地,在某些现有技术中,图像中的一个被标记为其他两个图像已经与之进行了比较的参考图像(有时也称为锚或查询图像)。然后,其他两个图像被标记为正或负,正标记指示图像中的面部/对象与参考图像中的面部/对象匹配,并且负标记指示图像中的面部/对象与参考图像中的面部/对象不匹配。

尽管这种方法对于识别以离散方式变化的图像的主体的特征(例如主体的身份或类型/类别)可能是有效的,但是当特征不离散变化时,它可能不太有效。这种非离散变化的特征包括面部表情,因为面部表情可能包含许多细微的差异,所以不容易归类到任何一个类别。此外,与所有人类应用的数据标记的一般情况一样,为训练数据收集标记可能要求大量的时间和/或财务费用的支出。

这样,根据本公开的另一方面,面部表情模型可以使用新颖且独特的三元组训练方案来训练,与上面刚刚描述的三元组训练方案相比,该方案不依赖于将特定图像指定为锚或参考图像。具体地,训练数据可以包括多个图像三元组和对应于每个三元组的相似性信息。每个三元组的相似性信息可以指示该三元组的哪两个图像已经被确定为该三元组中最相似的图像对。例如,相似性信息可以包括已经由人类审查者(reviewer)应用的一个或多个标记,其中一个或多个标记指示人类审查者评估的该图像三元组中哪两个图像最相似。

与上述传统方法不同,没有一个图像被指示为三元组的其它两个图像已经与之进行了比较的参考图像。相反,三元组的任何两个图像都可能被确定为最相似的。在传统方法中情况并非如此,在传统方法中,不可能已经将两个非参考图像确定为最相似。

然后可以使用该训练数据来训练面部表情模型。例如,根据本公开的另一方面,在一些实施方式中,面部表情模型可以被训练成使得最相似的图像对的嵌入之间的嵌入空间中的距离小于该图像对的每个图像和该三元组的第三图像的嵌入之间的相应距离。具体而言,在一些实施方式中,面部表情模型可以被训练成使得最相似的图像对之间的嵌入空间中的距离比该图像对的每个图像和该三元组的第三图像之间的相应距离至少小一个余量。

作为上述概念的示例,在一些实施方式中,可以使用编码第一约束和第二约束两者的目标函数来训练面部表情模型。对于每个图像三元组,第一约束可以包括第一要求,该第一要求是为最相似图像对的第一图像提供的第一嵌入和为最相似图像对的第二图像提供的第二嵌入之间的第一距离比该第一嵌入和面部表情模型为第三图像(例如,不包括在最相似图像对中的图像)提供的第三嵌入之间的第二距离小(例如,小至少第一余量)。同样,对于每个图像三元组,第二约束可以包括第二要求,该第二要求是第一嵌入和第二嵌入之间的第一距离比面部表情模型为第二图像提供的第二嵌入和面部表情模型为第三图像提供的第三嵌入之间的第三距离小(例如,小至少第二余量)。例如,嵌入之间的每个距离可以是这些嵌入之间的欧几里德距离。第一余量可以与第二余量相同或不同。第一余量和/或第二余量可以是零或者可以是非零(例如,正实数)。

因为相似性信息指示最相似的图像对,而不是图像的某个特征是否最相似于参考图像的特征,所以可以更准确地识别非离散(或连续)变化的特征。这可能至少部分是因为相似性信息可以提供比传统标记方法更多的信息。这是因为它指示a)第一图像最相似于第二图像,b)第三图像不如第二图像相似于第一图像,以及c)第三图像不如第一图像相似于第二图像。相反,传统的标记方法仅指示正图像比负图像更相似于参考图像。

因此,实际上,由本公开提供的新颖的无锚标记方案为每个图像三元组提供两种判断,而更传统的标记方法仅提供一种判断。因此,本文所述的新颖的无锚标记方案使人类执行的标记的每个实例的有用性加倍。因此,与收集人类应用的标记相关联的大量时间和/或财务费用的支出可以减少一半。

除以上之外,因为不要求图像三元组包括两个匹配的图像和一个不匹配的图像,所以可以减少选择图像三元组所涉及的处理。例如,任何三个任意图像都可以用来提供有用的训练信息,同时仍然反映人类感知。换句话说,使用传统方法,需要执行初始检查,以确保锚图像实际上包括在最相似的图像对中。然而,利用本文描述的新颖的训练方案,不要求这种初始检查,因为人类标记员可以自由选择三个图像中的任意两个作为最相似的对。因此,以这种方式,可以进一步减少时间和/或财务费用的支出。

此外,因为图像三元组可以是未分类的,所以训练方法可以是语言独立的,这可以避免与不同语言中特定类别标记的含义之间的差异相关联的任何问题(例如,增加的错误)。

面部表情的准确识别可能有许多用途。例如,它可以用于确定主体的情绪状态或情绪反应、理解人类欺骗、和测谎。它还可以促进改善的人机交互,因为它可以使机器检测未说出口的情绪、想法或命令,并相应地做出反应。

本公开的系统和方法可以使用本文描述的面部表情嵌入的附加示例用途包括:搜索描绘做出(多个)相似表情的(多个)其他面部的(多个)图像;将人类面部表情的图像转换成具有相同面部表情的卡通(例如,表情符号(emoji));汇总照片或其他图像集合;作为策展(curate)图像时的一个特征或考虑;木偶;和/或面部合成。下面将更详细地讨论这些和其他示例用例。

此外,尽管特别参考面部表情模型讨论了本公开所描述的新颖的三元组训练技术,但是本文所描述的三元组训练技术可被更广泛地应用,并且可用于训练模型以提供描述由任意数量的不同类型或介质的输入数据(例如,不止图像)所展示的任意数量的不同特征(例如,除了面部表情)的嵌入。因此,三元组训练技术可以应用于具有任何不同属性或特征的任何形式的训练数据,以使得模型能够在连续嵌入空间内提供描述这种属性或特征的无语言嵌入。此外,如上所述,当应用于本质上连续的特征或属性时,本文描述的三元组训练技术具有特别的适用性和有用性。

为了提供新颖的三元组训练技术在除了面部表情上下文的一个示例应用,可以向人类审查者提供声音的三元组,并要求他们选择每个三元组中彼此最相似的一对声音。声音嵌入模型可以使用本文描述的标记的三元组和/或示例目标函数来训练,以提供描述输入声音的无语言声音嵌入。这种声音嵌入可以用于许多不同的用途,包括例如识别与输入声音相似的声音(通过它们相似的嵌入来证明)。声音仅作为一个示例特征提供。可以使用许多其他特征,例如包括颜色、艺术品、发型、图案、书写风格、各种类型的视觉外观、由传感器数据指示的操作参数或状态,等等。

现在参考附图,将进一步详细讨论本公开的示例实施例。

设备和系统示例

图1a描绘了根据本公开的示例实施例的示例计算系统100的框图。系统100包括通过网络180通信耦合的用户计算设备102、服务器计算系统130和训练计算系统150。

用户计算设备102可以是任何类型的计算设备,诸如例如个人计算设备(例如膝上型或台式)、移动计算设备(例如智能手机或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备或任何其他类型的计算设备。

用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核心、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器114可以包括一个或多个非暂时性计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等,以及它们的组合。存储器114可以存储数据116和由处理器112执行的指令118,以使用户计算设备102执行操作。

用户计算设备102可以存储或包括一个或多个面部表情模型120。例如,面部表情模型120可以是或可以以其他方式包括各种机器学习模型,诸如神经网络(例如深度神经网络)或其他多层非线性模型。神经网络可以包括递归神经网络(例如,长短期记忆递归神经网络)、前馈神经网络、卷积神经网络或其他形式的神经网络。替代地或附加地,面部表情模型120可以包括其他形式的机器学习模型。参考图2-5b讨论示例面部表情模型120及其训练方案。

在一些实施方式中,一个或多个面部表情模型120可以通过网络180从服务器计算系统130接收,存储在用户计算设备存储器114中,然后由一个或多个处理器112使用或以其他方式实施。在一些实施方式中,用户计算设备102可以实施面部表情模型120的多个并行实例(例如,以执行面部表情嵌入生成的多个并行实例)。

附加地或替代地,一个或多个面部表情模型140可以被包括在根据客户端-服务器关系与用户计算设备102通信的服务器计算系统130中,或者以其他方式被服务器计算系统130存储和实施。例如,面部表情模型140可以由服务器计算系统140实施为网络服务(例如,面部表情搜索服务)的一部分。因此,一个或多个模型120可以在用户计算设备102处存储和实施,和/或一个或多个模型140可以在服务器计算系统130处存储和实施。

用户计算设备102还可以包括接收用户输入的一个或多个用户输入组件122。例如,用户输入组件122可以是对用户输入对象(例如,手指或触笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用来实施虚拟键盘。其他示例用户输入组件包括麦克风、传统键盘、传统鼠标、相机、麦克风或用户可以提供用户输入的其他组件。

服务器计算系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核心、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器134可以包括一个或多个非暂时性计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等,以及它们的组合。存储器134可以存储数据136和由处理器132执行的指令138,以使服务器计算系统130执行操作。

在一些实施方式中,服务器计算系统130包括一个或多个服务器计算设备或者以其他方式由一个或多个服务器计算设备实施。在服务器计算系统130包括多个服务器计算设备的情况下,这样的服务器计算设备可以根据顺序计算架构、并行计算架构或它们的一些组合来操作。

如上所述,服务器计算系统130可以存储或以其他方式包括一个或多个机器学习的面部表情模型140。例如,面部表情模型140可以是或可以以其他方式包括各种机器学习模型,诸如神经网络(例如深度神经网络)或其他多层非线性模型。神经网络可以包括递归神经网络(例如,长短期记忆递归神经网络)、前馈神经网络、卷积神经网络或其他形式的神经网络。替代地或附加地,面部表情模型140可以包括其他形式的机器学习模型。参考图2-5b讨论示例面部表情模型140及其训练方案。

服务器计算系统130可以经由与通过网络180通信耦合的训练计算系统150的交互来训练面部表情模型140。训练计算系统150可以与服务器计算系统130分离,或者可以是服务器计算系统130的一部分。

训练计算系统150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器核心、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器154可以包括一个或多个非暂时性计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等,以及它们的组合。存储器154可以存储数据156和由处理器152执行的指令158,以使训练计算系统150执行操作。在一些实施方式中,训练计算系统150包括一个或多个服务器计算设备或者以其他方式由一个或多个服务器计算设备实施。

训练计算系统150可以包括模型训练器160,该模型训练器160使用各种训练或学习技术(诸如例如误差的反向传播)来训练机器学习的模型120/140。模型训练器160可以执行多种泛化技术(例如,权重衰减、丢失等)来提高被训练模型的泛化能力。

具体而言,模型训练器160可以基于一组训练数据162训练面部表情模型120/140。参考图5a-5b进一步详细讨论训练数据和训练方案的示例类型

在一些实施方式中,如果用户已经提供同意,则训练示例可以由用户计算设备102提供。因此,在这样的实施方式中,提供给或用于用户计算设备102的模型120/140可以由训练计算系统150在从用户计算设备102接收的用户特定数据上进行训练。在一些情况下,这个过程可以称为个性化模型。此外,如参考图5-图6所述,也可以训练特定的分类模型。

模型训练器160包括用于提供期望功能的计算机逻辑。模型训练器160可以用控制通用处理器的硬件、固件和/或软件来实施。例如,在一些实施方式中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其他实施方式中,模型训练器160包括一组或多组计算机可执行指令,这些指令存储在有形的计算机可读存储介质中,诸如ram硬盘或光学或磁性介质。

网络180可以是任何类型的通信网络,诸如局域网(例如内联网)、广域网(例如因特网)或它们的一些组合,并且可以包括任何数量的有线或无线链路。一般来说,网络180上的通信可以经由任何类型的有线和/或无线连接,使用各种各样的通信协议(例如,tcp/ip、http、smtp、ftp)、编码或格式(例如,html、xml)和/或保护方案(例如,vpn、安全http、ssl)来进行。

图1a示出了可用于实施本公开的一个示例计算系统。也可以使用其他计算系统。例如,在一些实施方式中,用户计算设备102可以包括模型训练器160和训练数据集162。在这样的实施方式中,面部表情模型120可以在用户计算设备102处本地地被训练和使用。在这样的实施方式中的一些中,用户计算设备102可以实施模型训练器160,以基于用户特定的数据个性化面部表情模型120。

图1b描绘了根据本公开的示例实施例的示例计算设备10的框图。计算设备10可以是用户计算设备或服务器计算设备。

计算设备10包括多个应用(例如,应用1至应用n)。每个应用都包含自己的机器学习库和(多个)机器学习模型。例如,每个应用可以包括机器学习的面部表情模型。示例应用包括:包括图像和/或视频搜索功能的应用、图像收集和/或管理应用、表情符号提供应用、木偶应用、面部合成应用、浏览器应用,等等。

如图1b所示,每个应用可以与计算设备的多个其他组件通信,例如一个或多个传感器、上下文管理器、设备状态组件和/或附加组件。在一些实施方式中,每个应用可以使用api(例如,公共api)与每个设备组件通信。在一些实施方式中,每个应用使用的api是特定于该应用的。

图1c描绘了根据本公开的示例实施例的示例计算设备50的框图。计算设备50可以是用户计算设备或服务器计算设备。

计算设备50包括多个应用(例如,应用1至应用n)。每个应用都与一个中央智能层通信。示例应用包括:包括图像和/或视频搜索功能的应用、图像收集和/或管理应用、表情符号提供应用、木偶应用、面部合成应用、浏览器应用等。在一些实施方式中,每个应用可以使用api(例如,所有应用的公共api)与中央智能层(以及存储在其中的(多个)模型)通信。

中央智能层包括多个机器学习模型。例如,如图1c所示,可以为每个应用提供相应的机器学习模型(例如,面部表情模型),并由中央智能层管理机器学习模型。在其他实施方式中,两个或更多个应用可以共享单个机器学习模型。例如,在一些实施方式中,中央智能层可以为所有应用提供单个模型(例如,单个面部表情模型)。在一些实施方式中,中央智能层被包括在计算设备50的操作系统内或者以其他方式由计算设备50的操作系统实施。

中央智能层可以与中央设备数据层通信。中央设备数据层可以是计算设备50的中央数据储存库。如图1c所示,中央设备数据层可以与计算设备的多个其他组件通信,诸如例如一个或多个传感器、上下文管理器、设备状态组件和/或附加组件。在一些实施方式中,中央设备数据层可以使用api(例如,专用api)与每个设备组件通信。

示例模型布置和训练方案

图2描绘了根据本公开的示例实施例的示例工作流。具体而言,图2示出了面部表情模型202,其被配置为提供面部表情嵌入206。具体而言,面部表情模型202可以接收描绘面部的输入图像204,并且作为响应,提供面部表情嵌入206,该面部表情嵌入206对描述由输入图像204中描绘的面部做出的面部表情的信息进行编码。

在一些实施方式中,面部表情嵌入206可以从面部表情模型202的最后一层获得或者以其他方式在面部表情模型202的最后一层处提供。在其他实施方式中,面部表情嵌入206可以从面部表情模型202的中间层获得或以其他方式面部表情模型202的中间层处提供。例如,中间层可以是面部表情模型202的接近最后的层但不是最后一层。

在一些实施方式中,面部表情模型202可以是或可以以其他方式包括各种机器学习模型,诸如神经网络(例如深度神经网络)或其他多层非线性模型。神经网络可以包括递归神经网络(例如,长短期记忆递归神经网络)、前馈神经网络、卷积神经网络或其他形式的神经网络。替代地或附加地,面部表情模型202可以包括其他形式的机器学习模型。

根据本公开的一方面,在一些实施方式中,面部表情嵌入206可以是无语言嵌入。具体而言,在一些实施方式中,面部表情嵌入206可以是或包括嵌入向量,该嵌入向量包含分别用于多个嵌入维度(例如,16个嵌入维度)的多个数值。因此,面部表情嵌入206可以提供对面部表情信息的数字编码,该数字编码不依赖于面部表情的人类语言概念(例如,“微笑”、“皱眉”等),而是位于嵌入空间的连续且通用的数字频谱内。

这样,面部表情嵌入206解决了与基于以语言为基础的类别对面部表情分类相关联的常见问题,该常见问题是要求对面部表情类别的共享和固有限制字典进行先验协议。此外,由于嵌入空间的连续特性,面部表情模型202和对应的嵌入206可以编码对面部表情更加复杂和微妙的理解。例如,面部表情模型202和对应的嵌入206可以在细微的表情(诸如强迫微笑和真诚微笑)之间进行区分。面部表情模型202的这种连续频谱特性也与固有地基于多个离散类别(例如,身份)的面部识别模型形成对比。

面部表情嵌入206可用于多种不同的用途,包括例如确定由各个图像中的不同面部做出的两个面部表情之间的相似性度量。具体而言,各个面部表情嵌入之间的相似性可以指示各个面部表情之间的相似性。同样,嵌入之间的不相似性可以指示面部表情之间的不相似性。在一个示例中,面部表情之间的相似性或关联性可以通过计算面部表情模型所提供的其各自的嵌入向量之间的欧几里德距离(例如,以维度方式)来确定。这对于在其他应用中执行表情相似性搜索可能是有用的。

此外,由面部表情嵌入206编码的面部表情信息通常是抽象的,或者以其他方式与做出面部表情的人的身份脱离。因此,表情可以在不同的人之间进行比较,而不考虑做出表情的(多个)人的身份。这与更常用的面部识别模型(例如,面部识别神经网络)形成对比,这些面部识别模型聚焦于使用嵌入来识别同一个人的图像,而不考虑面部表情。

图3描绘了根据本公开的示例实施例的示例图像预处理工作流。图3描述了预处理工作流的一个示例。除了图3所示的工作流之外,或者作为图3所示工作流的替代,可以使用(或者不使用)其他预处理工作流。

如图3所描绘的,示例预处理工作流可以包括面部检测器304和面部提取器308。具体而言,面部检测器304可以接收或以其他方式获得原始输入图像302。面部检测器304可以输出检测到的面部306。例如,面部检测器304可以提供原始输入图像302内描绘一个或多个面部的一个或多个位置的指示(例如,以坐标或边界框的形式)。作为另一个示例,面部检测器304可以裁剪原始输入图像302,以提供仅包含检测到的面部306的裁剪图像。

更具体地,面部检测器304可以在照片中找到人脸。在一些实施方式中,它还可以找到并跟踪面部标志(诸如眼睛、鼻子和嘴巴)的位置。在一些实施方式中,面部检测器304还可以描述在原始图像302内面部被定向的一个或多个角度、姿态或方位。

在一些实施方式中,面部检测器304可以是神经网络,诸如卷积神经网络。在一些实施方式中,面部检测器304可以经由应用编程接口来提供或访问。

面部提取器308可以接收检测到的面部306以及可选地原始输入图像302。面部提取器308可以输出预处理的输入图像310。在一些实施方式中,预处理的输入图像310可以用作输入图像204。在其他实现中,原始输入图像302可以用作输入图像204。

面部提取器308可以从检测到的面部306和/或原始输入图像302生成预处理的输入图像310。例如,在一些实施方式中,面部提取器308可以基于面部检测器304为检测到的面部306提供的位置信息,从原始输入图像302生成预处理的输入图像310。

作为一个示例,在一些实施方式中,预处理的输入图像310可以包括比面部检测器304为检测到的面部306提供的边界框相对更大的边界框。作为另一个示例,在一些实施方式中,面部提取器308可以旋转检测到的面部306,使得检测到的面部306处于在预处理的输入图像310内的平面内。作为又一示例,在一些实施方式中,面部提取器308可以将提取的面部和/或检测到的面部调整到特定分辨率,诸如例如244×244图像。

图4描绘了根据本公开的示例实施例的示例面部表情模型400。图4描绘了一个示例模型结构。除了图4所示的结构之外,或者作为图4所示结构的替代,可以使用其他结构。面部表情模型400包括卷积网络402、平均池化层404、第一完全连接层406、第二完全连接层408和归一化层410。

卷积网络402可以包括一个或多个卷积层。在一个示例中,卷积网络402可以向平均池化层404提供7×7×1024的特征图。

在一些实施方式中,卷积网络402和/或面部表情模型400的其他部分可以先前已经在其他形式的数据上被训练,并且此后可以被重新调整用途或以其他方式重新训练以在面部表情模型400内使用。作为一个示例,卷积网络402可以是facenetv8模型的重新训练部分(例如,直到混合的5a-0层)。例如,参见schroff等人的《面部网:面部识别的统一嵌入和聚类》。然而,在其他实施方式中,卷积网络402可以从头开始训练(例如,不从一些其他先前训练的模型中重新调整用途)。

在一些实施方式中,作为示例,平均池化层404可以向完全连接层406提供1024维的数据;第一完全连接层406可以向第二完全连接层408提供512维的数据;和/或第二完全连接层408可以向归一化层410提供16维的数据。在一些实施方式中,归一化层410可以将从第二完全连接层408接收的数据归一化到单位长度。

如上所述,在一些实施方式中,由归一化层410提供的面部表情嵌入206可以是或包括嵌入向量,该嵌入向量包含分别用于多个嵌入维度(例如,16个嵌入维度)的多个数值。

示例的三元组训练方案

图5a-5b描绘了根据本公开的示例实施例的示例训练方案。更具体地,根据本公开的另一方面,面部表情模型可以被训练以提供反映或以其他方式模仿人类感知或意见的面部表情嵌入。例如,在一些实施方式中,面部表情模型可以在包括人类应用的标记的训练数据上被训练,从而提供关于面部表情的、模拟或以其他方式反映人类感知或意见的嵌入。

具体而言,根据本公开的一个方面,面部表情模型可以根据三元组训练方案来训练,其中图像三元组被用于训练模型。具体而言,如图5a所示,面部表情模型202可以使用基于三元组的目标函数502来训练。例如,基于三元组的目标函数502可以通过面部表情模型202反向传播,以训练面部表情模型202。

更具体地,可以通过标记图像三元组中的图像来训练诸如神经网络(例如卷积神经网络)的模型来执行面部(或任何其他对象)识别。具体地,在某些现有技术中,图像中的一个被标记为其他两个图像已经与之进行了比较的参考图像(有时也称为锚或查询图像)。其他两个图像被标记为正或负,正标记指示图像中的面部/对象与参考图像中的面部/对象匹配,并且负标记指示图像中的面部/对象与参考图像中的面部/对象不匹配。

尽管这种方法对于识别以离散方式变化的图像的主体的特征(例如主体的身份或类型/类别)可能是有效的,但是当特征不离散变化时,它可能不太有效。这种非离散变化的特征包括面部表情,因为面部表情可能包含许多细微的差异,所以不容易归类到任何一个类别。此外,与所有人类应用的数据标记的一般情况一样,为训练数据收集标记可能要求大量的时间和/或财务费用的支出。

这样,根据本公开的另一方面,面部表情模型可以使用新颖且独特的三元组训练方案来训练,与上面刚刚描述的三元组训练方案相比,该方案不依赖于将特定图像指定为锚或参考图像。具体地,训练数据可以包括多个图像三元组和对应于每个三元组的相似性信息。每个三元组的相似性信息可以指示该三元组的哪两个图像已经被确定为该三元组中最相似的图像对。例如,相似性信息可以包括已经由人类审查者应用的一个或多个标记,其中一个或多个标记指示人类审查者认为的该图像三元组中哪两个图像最相似。

与上述传统方法不同,没有一个图像被指示为三元组的其它两个图像已经与之进行了比较的参考图像。相反,三元组的任何两个图像都可能被确定为最相似的。在传统方法中情况并非如此,在传统方法中,不可能已经将两个非参考图像确定为最相似。

作为示例,图5b示出了包括图像a、图像b和图像c的图像三元组。图像a、图像b和图像c中的每一个描绘了做出相应面部表情的相应面部。如图5b所示,可以指示人类审查者(例如,通过文本提示)选择描绘最相似面部表情的三元组中的图像对。虽然该选择是基于人类审查者的个人判断,但是一个示例判断可以选择图像a和图像c作为描绘最相似面部表情的图像对。

再次参考图5a,然后使用该训练数据训练面部表情模型202。例如,根据本公开的另一方面,在一些实施方式中,面部表情模型可以被训练成使得最相似的图像对的嵌入之间的嵌入空间中的距离小于该图像对的每个图像和该三元组的第三图像的嵌入之间的相应距离。具体而言,在一些实施方式中,面部表情模型可以被训练成使得最相似的图像对之间的嵌入空间中的距离比该图像对的每个图像和该三元组的第三图像之间的相应距离至少小一个余量。

作为上述概念的示例,在一些实施方式中,可以使用编码第一约束和第二约束的目标函数502来训练面部表情模型。对于每个图像三元组,第一约束可以包括第一要求,该第一要求是为最相似图像对的第一图像提供的第一嵌入和为最相似图像对的第二图像提供的第二嵌入之间的第一距离比该第一嵌入和面部表情模型为第三图像(例如,不包括在最相似图像对中的图像)提供的第三嵌入之间的第二距离小(例如,小至少第一余量)。同样,对于每个图像三元组,第二约束可以包括第二要求,该第二要求是第一嵌入和第二嵌入之间的第一距离比面部表情模型为第二图像提供的第二嵌入和面部表情模型为第三图像提供的第三嵌入之间的第三距离小(例如,小至少第二余量)。例如,嵌入之间的每个距离可以是这些嵌入之间的欧几里德距离。第一余量可以与第二余量相同或不同。第一余量和/或第二余量可以是零或者可以是非零(例如,正实数)。

为了提供一个示例,共同参考图5a和图5b,并且假设图像a和c被选择为描绘最相似面部表情的图像对,那么在这种情况下,目标函数502可以编码第一约束,第一约束是图像a和图像c的相应嵌入之间的第一距离比图像a和图像b的相应嵌入的第二距离小(例如,小至少第一余量)。除了第一约束之外,目标函数502还可以编码第二约束,第二约束是图像a和图像c的相应嵌入之间的第一距离也比图像c和图像b的相应嵌入之间的第三距离小(例如,小至少第二余量)。

因为相似性信息指示最相似的图像对,而不是图像的某个特征是否最相似于参考图像的特征,所以可以更准确地识别非离散(或连续)变化的特征。这可能至少部分是因为相似性信息可以提供比传统标记方法更多的信息。这是因为它指示a)第一图像最相似于第二图像,b)第三图像不如第二图像相似于第一图像,以及c)第三图像不如第一图像相似于第二图像。相反,传统的标记方法仅指示正图像比负图像更相似于参考图像。

因此,实际上,由本公开提供的新颖的无锚标记方案为每个图像三元组提供两种判断,而更传统的标记方法仅提供一种判断。因此,本文所述的新颖的无锚标记方案使人类执行的标记的每个实例的有用性加倍。因此,与收集人类应用的标记相关联的大量时间和/或财务费用的支出可以减少一半。

这样,在一些实施方式中,目标函数可以为每个示例三元组编码两个约束。然而,在其他实施方式中,目标函数可以简单地编码单个约束,并且为每个三元组提供的两个比较/判断可以简单地被视为可以应用该单个约束的两个不同的训练示例。在后一种场景中,相对于锚技术,人类执行的标记的每个实例的有用性仍然是两倍。

除以上之外,因为不要求图像三元组包括两个匹配的图像和一个不匹配的图像,所以可以减少选择图像三元组所涉及的处理。例如,任何三个任意图像都可以用来提供有用的训练信息,同时仍然反映人类感知。换句话说,使用传统方法,需要执行初始检查,以确保锚图像实际上包括在最相似的图像对中。然而,利用本文描述的新颖的训练方案,不要求这种初始检查,因为人类标记员可以自由选择三个图像中的任意两个作为最相似的对。因此,以这种方式,可以进一步减少时间和/或财务费用的支出。

此外,因为图像三元组可以是未分类的,所以训练方法可以是语言独立的,这可以避免与不同语言中特定类别标记的含义之间的差异相关联的任何问题(例如,增加的错误)。

此外,尽管特别地参考面部表情模型讨论了本公开所描述的新颖的三元组训练技术,但是本文所描述的三元组训练技术可被更广泛地应用,并且可用于训练模型以提供描述由任意数量的不同类型或介质的输入数据(例如,除了图像)所展示的任意数量的不同特征(例如,不止面部表情)的嵌入。因此,三元组训练技术可以应用于具有任何不同属性或特征的任何形式的训练数据,以使得模型能够在连续嵌入空间内提供描述这种属性或特征的无语言嵌入。此外,如上所述,当应用于本质上连续的特征或属性时,本文描述的三元组训练技术具有特别的适用性和有用性。

为了提供新颖的三元组训练技术在除了面部表情上下文之外的一个示例应用,可以向人类审查者提供声音的三元组,并要求他们选择每个三元组中彼此最相似的一对声音。声音嵌入模型可以使用本文描述的标记的三元组和/或示例目标函数来训练,以提供描述输入声音的无语言声音嵌入。这种声音嵌入可以用于许多不同的用途,包括例如识别与输入声音相似的声音(通过它们相似的嵌入来证明)。声音仅作为一个示例特征提供。可以使用许多其他特征,例如包括颜色、艺术品、发型、图案、书写风格、各种类型的视觉外观、由传感器数据指示的操作参数或状态,等等。

用例示例

图6描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图6示出了接收面部表情嵌入206并使用面部表情嵌入206来识别一个或多个图像604的搜索工具602,该一个或多个图像604具有与输入图像204所描绘的面部所展示的面部表情相似的面部表情。

搜索工具602可以是任何形式的搜索引擎或其他搜索工具。如上所述,在一些实施方式中,搜索工具602可以通过确定面部表情嵌入206和分别与图像604相关联的各个嵌入之间的距离来识别具有相似表情的图像604。例如,嵌入之间相对较小的欧几里德距离可以指示图像包括相对更相似的表情。

作为一个示例,图14描绘了根据本公开的示例实施例的示例的基于面部表情嵌入的搜索结果。特别是,图14示出了一些示例表情检索结果。图14包括3行。在每一行中,最左边的图像是查询(例如,输入图像),并且该行中剩余的图像是来自155,000张名人照片数据库的五个最接近的图像。

因此,用户可以使用图6所示的示例工作流在照片数据库中搜索特定的表情。照片数据库可以是用户自己的个人照片或线上照片。

在另一个示例中,图像或照片管理应用可以使用户能够在相机中做出面部表情,或者以其他方式提供描绘特定表情的输入图像,并且然后作为响应,示出描绘具有相同或相似面部表情的面部的所有图像(例如,在用户的照片集内)。

图7描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图7示出了表情符号选择器702,其可以基于面部表情嵌入206来选择表情符号704。

表情符号选择器702可以至少部分基于面部表情嵌入206来识别表情符号704,表情符号704具有与输入图像204所描绘的面部做出的面部表情最相似的表情符号表情。

在一些实施方式中,表情符号选择器702可以是分类模型,诸如例如机器学习的分类模型。例如,分类模型可以被训练以接收嵌入206,并且作为响应,基于包括用“正确的”表情符号标记的嵌入的训练数据输出选择的表情符号704。例如,分类模型可以是神经网络、支持向量机、决策树或其他形式的分类器。

在其他实施方式中,表情符号选择器702可以是查找表。例如,嵌入的范围或集合可能先前已经被映射到特定表情符号,并且查找表可以提供和/或利用这样的映射。

作为又一个示例,多个候选表情符号可以分别具有分别与之相关联的多个嵌入。在这样的实施方式中,表情符号选择器702可以确定从面部表情嵌入206到每个表情符号的相应嵌入的相应距离。选择器702可以选择从其嵌入到面部表情嵌入206的距离最小的相应表情符号作为所选择的表情符号704。这样,表情符号选择器702可以以类似于搜索工具602的方式操作。

在表情符号选择器702的一个示例应用中,表情符号选择应用可以使用户能够在相机中做出面部表情,或者以其他方式提供描绘特定面部表情的输入图像,并且然后作为响应,提供具有相同面部表情的一个或多个表情符号。(多个)表情符号可以是通用的,也可以是个性化的。(多个)表情符号可以用在消息传递应用中使用。

表情符号仅用作一个示例。除了表情符号之外,本文描述的技术同样适用于面部的其他表示(例如,逼真的面部渲染)。

图8描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图8示出了使用针对多个输入图像802分别获得的多个面部表情嵌入806来进行图像集合汇总。

更具体地,多个输入图像802可以分别输入到面部表情模型804中,以分别接收多个面部表情嵌入806。图像集合汇总器808可以使用嵌入806来生成图像集合汇总810。例如,图像集合汇总810可以包括根据由这些图像描绘的面部表情聚类的图像。因此,面部表情嵌入806可用于根据面部表情相似性将集合中的图像聚类成聚类。

图9描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图9示出了木偶(puppet)控制器902,其使用面部表情嵌入206来控制表情受控的木偶904。例如,在一些实施方式中,木偶904可以被控制为具有与输入图像204中描绘的面部表情相同的面部表情。例如,输入图像204可以是由相机同时捕获的用户的图像。

在一些实施方式中,木偶控制器902可以以类似于参照图7讨论的表情符号选择器702的方式操作。例如,木偶控制器902可以包括或利用分类器、查找表或其他聚类或搜索工具来识别与输入图像204(例如,输入图像204可以是同时捕获的用户图像)所描绘的表情相匹配的适当木偶表情。

作为一个示例,木偶904可以是用户的化身(avatar)或其他图形和/或虚拟呈现。因此,在一个示例中,木偶控制器902可用于控制虚拟现实环境内用户的化身(例如,当用户的面部表情随时间变化时,控制该化身具有与用户相同的面部表情)。

在其他实施方式中,可以使用面部表情和木偶动作之间的一些其他映射,这些映射不必简单地重新创建由输入图像204描绘的面部表情。例如,预定义的映射可以从描述输入图像204中包括的微笑的嵌入206转换成木偶904的跳舞动作。同样,映射可以从描述输入图像204中包括的皱眉的嵌入206转换成木偶904的哭泣动作。可以使用许多不同的任意映射。

图10描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图10示出了图像策展器1008,其使用由面部表情模型1004分别为输入图像1002提供的面部表情嵌入1006来提供策展图像1010。

在一个示例中,图像策展器1008可以至少部分基于为输入图像提供的面部表情嵌入来确定这种输入图像的分数。图像策展器1008可以至少部分基于其分数来确定要对该图像采取的动作。

在一个示例中,图像策展器1008可以至少部分基于为输入图像确定的分数相对于为一组图像确定的其他分数,从该组图像中选择该输入图像作为最佳镜头。因此,例如,可以至少部分基于每个收集的图像的面部表情嵌入来为每个收集的图像确定分数。来自一组图像中的最佳镜头可以基于其分数(例如,基于在该组中具有最高分数)来识别。

在另一个示例中,图像策展器1008可以至少部分基于为输入图像确定的分数来确定是存储输入图像的非临时副本,还是丢弃输入图像的临时副本而不存储输入图像的非临时副本。因此,例如,可以至少部分基于每个收集的图像的面部表情嵌入来为每个收集的图像确定分数。图像策展器1008可以至少部分基于输入图像的分数来确定是存储输入图像还是丢弃输入图像而不存储。这可能适用于存储空间有限的“永不停机”的相机。

也可以执行其他图像策展任务。具体而言,嵌入可以用作训练其他算法(例如,从照片连拍中选择最佳照片、识别由设备捕获的有趣时刻等的策展算法)的特征。在一些实施方式中,图像策展器1008可以是或包括神经网络。

图11描绘了根据本公开的示例实施例的面部表情嵌入的示例使用。具体而言,图11示出了面部合成器1102,其可以至少部分基于面部表情嵌入206来生成合成的面部1104(例如,合成的面部的图像)。具体而言,面部合成器1102可以生成具有与输入图像204中描绘的面部表情相同的面部表情的合成的面部1104。

在一些实施方式中,面部合成器1102还可以接收面部特征嵌入1106或其他面部特征信息。例如,面部特征嵌入1106可以由面部识别模型提供。

面部合成器1102可以使用面部特征信息1106和面部表情嵌入206来生成合成的面部1104,该合成的面部1104具有目标面部表情并且还具有由面部特征信息1106描述的面部特征。

在一些实施方式中,面部合成器1102可以是神经网络。例如,在一些实施方式中,面部合成器1102可以是自动编码器,诸如生成式自动编码器。

因此,表情嵌入206可以与面部识别网络给出的面部特征嵌入一起用作神经网络的输入,以合成具有目标表情的特定主体的面部图像。

示例方法

图12描绘了根据本公开的示例实施例的获得面部表情嵌入的示例方法1200的流程图。

在1202,计算系统获得输入图像。输入图像可以描绘正在做出面部表情的面部。

在1204,计算系统向面部表情模型提供输入图像。在1206,计算系统从面部表情模型接收面部表情嵌入。面部表情嵌入对描述由输入图像中描绘的面部做出的面部表情的信息进行编码。

在1208,计算系统使用面部表情嵌入。上面参考图6至图11和其他地方描述了面部表情嵌入的示例使用。

图13描绘了根据本公开的示例实施例的训练面部表情模型的示例方法1300的流程图。

在1302,计算系统获得训练数据。例如,训练数据可以包括组织成图像三元组的多个图像。每个图像三元组可以包括相似性信息,诸如标记,其指示包括在该图像三元组中的三个图像中的哪两个已经被评估为该图像三元组中最相似的图像对。

具体而言,根据本公开的一个方面,在一些实施方式中,三个图像中没有一个图像被指示为被要求包括在最相似的图像对内的参考图像或锚图像。

在1304,计算系统在训练数据上训练面部表情模型。例如,面部表情模型可以使用基于三元组的目标函数来训练。例如,目标函数可以通过面部表情模型反向传播,以训练面部表情模型。然而,除了反向传播之外或作为其替代,可以执行其他训练技术。

具体而言,在一些实施方式中,目标函数可以编码第一约束和第二约束两者。第一约束可以包括第一要求,第一要求是为最相似图像对提供的嵌入之间的第一距离小于为该图像对中的第一图像提供的嵌入和为不包括在该图像对中的三元组的第三图像提供的嵌入之间的第二距离。第二约束可以包括第二要求,第二要求是为最相似图像对提供的嵌入之间的第一距离小于为该图像对中的第二图像提供的嵌入和为不包括在该图像对中的三元组的第三图像提供的嵌入之间的第三距离。

附加公开

这里讨论的技术涉及服务器、数据库、软件应用和其他基于计算机的系统,以及所采取的动作和发送到这些系统和从这些系统接收的信息。基于计算机的系统固有的灵活性允许各种可能的配置、组合以及组件之间任务和功能的划分。例如,本文讨论的过程可以使用单个设备或组件或者组合工作的多个设备或组件来实施。数据库和应用程序可以在单个系统上实施,也可以分布在多个系统上。分布式组件可以顺序或并行运行。

尽管已经针对本主题的各种具体示例实施例详细描述了本主题,但是每个示例都是通过解释的方式提供的,而不是对本公开的限制。本领域技术人员在理解前述内容后,可以容易地产生对这些实施例的改变、变化和等同物。因此,本主题公开不排除包括对本主题的这种修改、变化和/或添加,这对本领域普通技术人员来说是显而易见的。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用,以产生又一个实施例。因此,本公开旨在覆盖这些改变、变化和等同物。

面部提取器308、搜索工具602、表情符号选择器702、图像集合汇总器808、木偶控制器902、图像策展器1008和面部合成器1102中的每一个都包括用于提供期望功能的计算机逻辑。面部提取器308、搜索工具602、表情符号选择器702、图像集合汇总器808、木偶控制器902、图像策展器1008和面部合成器1102中的每一个可以用控制通用处理器的硬件、固件和/或软件来实施。例如,在一些实施方式中,面部提取器308、搜索工具602、表情符号选择器702、图像集合汇总器808、木偶控制器902、图像策展器1008和面部合成器1102中的每一个包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其他实施方式中,面部提取器308、搜索工具602、表情符号选择器702、图像集合汇总器808、木偶控制器902、图像策展器1008和面部合成器1102中的每一个都包括存储在有形的计算机可读存储介质中的一组或多组计算机可执行指令,所述计算机可读存储介质诸如ram硬盘或光学或磁性介质。

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