用于细粒度图像搜索的对抗学习的制作方法

文档序号:23476108发布日期:2020-12-29 13:33阅读:103来源:国知局
用于细粒度图像搜索的对抗学习的制作方法

优先权声明

本申请要求2018年5月22日提交的美国申请序列号15/985,818的优先权的权益,其在此通过引用被全部并入。

本发明的实施方式一般性涉及搜索查询,并且更具体地,涉及用于细粒度图像搜索的对抗学习。



背景技术:

尽管已经对计算机执行的图像搜索进行了广泛的研究,但是其依然是具有挑战性的问题。特别地,在细粒度水平识别图像极其困难,在细粒度水平中,目标是找到与查询内容属于同一细粒度类别的对象(例如,识别汽车的型号和模型)。使用深度神经网络的许多算法已经实现了在细粒度分类上的最先进的性能,但是它们不可直接应用于细粒度图像搜索。当前的细粒度分类系统操作包含固定数量的类别的封闭的数据集,并且因此,没有正确地处理未见过的类别。尽管分类器可以被重新训练以适应新的类别,但是频繁的重新训练由于新数据积累而变得极其昂贵。相比之下,设计的细粒度图像搜索应当发现不属于训练集里的部分的未见过类别。

除了新出现的类别之外,对象的视角和姿态变化使得找到正确的细粒度类别更加困难。解决姿态变化的经典方法依赖于匹配局部特征点、改善单应性、以及推断明确的几何变换,但是它们在计算上是昂贵的。基于深度神经网络的最新工作引入了专用模块来学习具体的几何变换以用于语义对应,然而,它们需要预定义的变换类型和良好初始化的变换矩阵以确保合理的性能。这些类型的系统不能处理复杂变换,并且因此,假定包含未知变换的增长的数据库,则这些类型的系统对于细粒度的图像搜索是不现实的。

附图说明

在不一定按比例绘制的附图中,相同的附图标记可以描述不同视图中的相似的部件。具有不同字母后缀的相同附图标记可以表示相似部件的不同实例。在附图的图中通过示例而非限制的方式示出了一些实施方式,在附图中:

图1示出了根据一些示例实施方式的系统配置,其中,电子装置经由网络通信以用于交换数据。

图2是根据一些示例实施方式的图像搜索系统的框图。

图3是根据一些示例实施方式的生成对抗网络(gan)的框图。

图4是根据一些示例实施方式的图像搜索模块的框图。

图5是示出根据某些示例实施方式的执行图像搜索的示例方法的流程图。

图6是示出根据某些示例实施方式的生成用于细粒度图像搜索的gan的示例方法的流程图。

图7是示出了可以结合本文中描述的各种硬件架构使用的代表性软件架构的框图。

图8是示出根据一些示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文中讨论的方法中的任何一种或更多种方法的机器的部件的框图。

具体实施方式

在下面的描述中,出于说明的目的,阐述了各种细节以提供对本发明的各种实施方式的透彻理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下或者在具有微小改变的情况下实践本主题。

在说明书中对“一个实施方式”或“实施方式”的引用意指结合该实施方式描述的特定特征、结构或特性被包括在本主题的至少一个实施方式中。因此,在整个说明书的各个地方出现的短语“在一个实施方式中”或“在实施方式中”的出现不一定都指代同一实施方式。

出于说明的目的,阐述了具体配置和细节以提供对本主题的透彻理解。然而,对于本领域普通技术人员将明显的是,可以在没有本文呈现的具体细节的情况下或者以如本文中所描述的各种组合来实践所描述的主题的实施方式。此外,可以省略或简化公知的特征以免使所描述的实施方式不清楚。在整个说明书中可以给出各种示例。这些示例仅是对特定实施方式的描述。权利要求的范围或含义不限于所给出的示例。

公开的是使用用于细粒度图像搜索的对抗学习的系统、方法、和计算机可读介质。通过学习隐式变换以对视角和姿态进行标准化,训练生成对抗网络gan以生成对象的图像表示。gan包括一起工作的生成器和评估器模型。通过产生高质量特征来训练生成器,以混淆评估器,而评估器旨在通过优化多个学习目标来区分由生成器生成的特征与真实的特征。

与包括向生成器提供反馈的单个鉴别器的先前的gan相比,评估器包括三个子模块:判别器、标准化器、和语义嵌入模块,子模块各自评估由生成器生成的图像并且向生成器提供反馈。每个子模块接收由生成器生成的图像作为输入,该图像在标准化视角下描绘对象。判别器输出所给出的输入图像是真实图像还是生成图像的概率。标准化器输出指示图像被标准化成标准化视角的完成情况的值。语义嵌入模块输出指示基于输入图像确定的对象分类是否与对象的期望对象分类匹配的值。评估器的三个子模块与生成器一起联合地优化,使得它们被平衡以有助于良好的得到的图像表示。

一旦被训练,gan就被用于基于对象的给定输入图像来执行图像搜索。图像搜索返回对象的其他生成图像。最初,gan使用输入图像来生成标准化视角下对象的图像。gan基于标准化视角下对象的图像生成向量表示。使用距离函数来识别最接近所生成的向量表示的表示对象的图像的其他向量。响应于图像搜索,返回由所识别的附近向量表示的图像。

图1示出了根据一些示例实施方式的示例系统配置100,其中,电子装置经由网络通信以用于交换数据。如图所示,多个装置(即,客户端装置102和图像搜索系统104)连接至通信网络104,并且被配置成通过使用通信网络104来彼此通信。通信网络104是任何类型的网络,包括诸如内联网的局域网(“lan”)、诸如因特网的广域网(“wan”)或其任何组合。此外,通信网络104可以是公共网络、专用网络或其组合。通信网络104使用与一个或更多个服务提供商相关联的任何数目的通信链路——包括一个或更多个有线通信链路、一个或更多个无线通信链路或其任意组合——来实现。另外,通信网络104被配置成支持使用任何数目的协议格式化的数据的传输。

多个计算装置可以连接至通信网络104。计算装置是能够与其他计算装置进行网络通信的任何类型的通用计算装置。例如,计算装置可以是诸如台式机或工作站的个人计算装置;商业服务器;或诸如膝上型计算机、智能电话或平板个人计算机(pc)的便携式计算装置。计算装置可以包括图8所示的机器800的特征、部件和外围设备中的一些或全部。

为了利于与其他计算装置的通信,计算装置包括通信接口,该通信接口被配置成从与该计算装置网络通信的另一计算装置接收诸如请求、数据等的通信并且将该通信传递到在该计算装置上执行的适当的处理模块。通信接口还向与计算装置网络通信的其他计算装置发送通信(例如,传输数据)。

在系统100中,用户与图像搜索系统104进行交互,以执行针对与输入图像类似的图像的图像搜索查询。例如,用户使用通过直接和/或间接通信连接至通信网络106的客户端装置102来与图像搜索系统104进行通信并且利用图像搜索系统104的功能。尽管所示的系统100包括仅一个客户端装置102,但这仅是为了易于说明,并且不意味着是限制性的。本领域的技术人员将理解的是,系统100可以包括任何数量的客户端装置102。

图像搜索系统104可以同时接受来自任何数量的客户端装置102的连接并且与任何数量的客户端装置102进行交互。图像搜索系统104支持来自各种不同类型的客户端装置102的连接,不同类型的客户端装置102例如是台式计算机;移动计算机;移动通信装置,例如移动电话、智能电话、平板;智能电视;机顶盒;和/或任何其他使能网络的计算装置。因此,客户端装置102可以具有不同的类型、能力、操作系统等。

用户经由在客户端装置102上安装并且在客户端装置102处执行的客户端侧应用来与图像搜索系统104进行交互。在一些实施方式中,客户端侧应用包括图像搜索系统104专用部件。例如,该部件可以是独立应用、一个或更多个应用插件和/或浏览器扩展。然而,用户还可以经由诸如web浏览器的第三方应用与图像搜索系统104进行交互,该第三方应用驻留在客户端装置102上并且被配置成与图像搜索系统104通信。在任一情况下,客户端侧应用呈现用户接口(ui)以供用户与图像搜索系统104进行交互。例如,用户经由与文件系统集成的客户端侧应用或者经由使用web浏览器应用显示的网页来与图像搜索系统104进行交互。

图像搜索系统104包括一个或更多个计算装置,所述一个或更多个计算装置被配置成基于提供的输入图像来执行图像搜索查询,并且返回任何识别出的图像作为搜索结果。图像搜索系统104可以是独立系统,或者可以集成至其他系统或服务中,例如,被集成至网站、网页服务等中。例如,图像搜索系统104可以集成至在线市场网站中,并且用于识别在线市场网站上列出的待售物品的另外的图片。

图像搜索系统104使得用户能够对由图像搜索系统104维护的图像以及/或者由与图像搜索系统104的网络通信中的其他数据源(未示出)维护的图像执行搜索查询。图像搜索系统104向用户提供使得用户能够提供输入图像的搜索接口。例如,输入图像可以是用户正在在线市场网站上列出的待售的对象的图像。

响应于接收输入图像,图像搜索系统104基于输入图像执行搜索查询,并且识别相似图像的集合。然后,响应于搜索查询,图像搜索系统104返回识别出的相似图像中的一些或全部。

图像搜索系统104使用gan来生成相似图像并且执行搜索查询。通过学习隐式变换以对视角和姿态进行标准化来训练gan,以生成对象的图像表示。gan包括一起工作的生成器和评估器模型。通过产生高质量特征来训练生成器,以混淆评估器,而评估器旨在通过优化多个学习目标来区分由生成器生成的特征与真实特征。

与包括向生成器提供反馈的单个判别器的先前gan相对,评估器包括三个子模块:判别器、标准化器、和语义嵌入模块,子模块各自评估由生成器生成的图像并且向生成器提供反馈。每个子模块接收由生成器生成的图像作为输入,该图像在标准化视角下描绘对象。判别器输出所给出的输入图像是真实图像还是生成图像的概率。标准化器输出指示图像被标准化成标准化视角的完成情况的值。语义嵌入模块输出指示基于输入图像来确定的对象分类是否与对象的期望对象分类匹配的值。评估器的三个子模块与生成器一起联合进行优化,使得它们被平衡以有助于良好的得到的图像表示。

一旦被训练,图像搜索系统104就使用gan基于对象的给定输入图像来执行图像搜索,图像搜索返回由gan生成的对象的其他图像。图像搜索系统104将输入图像作为输入提供至gan中,gan生成输入图像中描绘的对象在标准化视角的图像。然后,基于标准化视角下对象的图像,gan生成向量表示。图像搜索系统104使用距离函数来识别最接近所生成的向量表示的表示对象的图像的其他向量。然后,响应于图像搜索,图像搜索系统104返回由所识别的附近向量表示的图像。

图2是根据一些示例实施方式的图像搜索系统104的框图。为了避免不必要的细节模糊本发明的主题,从图2中省略了与传达对本发明的主题的理解没有密切关系的各种功能部件(例如模块)。然而,技术人员将容易地认识到,各种附加的功能部件可以通过搜索系统104来支持以有利于本文未具体描述的附加功能。此外,图2中描绘的各种功能模块可以驻留在单个计算装置上,或者可以以各种布置(例如在基于云的架构中使用的布置)分布在若干计算装置上。

如图所示,图像搜索系统104包括gan生成模块202、图像生成模块204、图像搜索模块206、和数据存储208。

gan训练模块202训练gan,gan生成标准化视角下的对象的图像的向量表示。例如,gan接收对象的输入图像作为输入,并且输出标准化视角下的对象的生成图像的向量表示。也就是说,gan生成标准化视角下对象的图像,并且生成所生成的图像的向量表示。

通过学习隐式变换以对视角和姿态进行标准化,gan训练模块202训练gan,以生成对象的图像表示。也就是说,gan训练模块202使用已知对象的参考图像的集合来训练gan。每个参考图像包括描述图像的元数据,包括图像中描绘的对象的分类。gan包括一起工作的生成器和评估器。通过产生高质量特征来训练生成器以混淆评估器,而评估器旨在通过优化多个学习目标来区分由生成器生成的特征与真实特征。

与包括向生成器提供反馈的单个判别器的先前gan相对,评估器包括三个子模块:判别器、标准化器和语义嵌入模块,子模块各自评估由生成器生成的图像并且向生成器提供反馈。在训练期间,每个子模块接收由生成器生成的标准化视角下的描绘对象的图像的向量表示和标准化视角下的对象的真实图像作为输入。判别器输出由生成器生成的输入图像是真实图像还是生成图像的概率。标准化器输出指示生成图像被标准化成标准化视角的完成情况的值。语义嵌入模块输出指示基于生成的输入图像来确定的对象分类是否与对象的期望对象分类匹配的值。评估器的三个子模块与生成器一起联合进行优化,使得它们被平衡以有助于高质量的得到的图像表示。

图3是根据一些示例实施方式的gan300的框图。如图所示,gan300包括生成器302和评估器304。生成器302和评估器304彼此一起工作,以生成标准化视角下对象的高质量的图像表示。标准化视角可以是对象的任何所选择的视角,例如,对象的正面视角,然而,标准化视角用于由生成器302生成的每个图像。

生成器302生成标准化视角下对象的图像表示(例如,向量),并且评估器304分析生成的图像表示,以确定由生成器302生成的图像是对象的真实图像还是由生成器302生成的伪造图像。另外,评估器304向生成器302提供反馈数据,反馈数据指示可以如何改进生成图像以使其看起来更像真实图像。以这种方式,gan300与其他对抗网络类似地工作,然而,gan300与其他对抗网络不同之处在于:利用评估器304中的多个子模块。传统的对抗网络利用单个判别器来分析和提供反馈数据,而gan300利用具有三个子模块,判别器306、标准化器308、和语义嵌入模块310的评估器。每个子模块评估由生成器302生成的图像,并且向生成器302提供关于生成图像的生成器302的性能的不同方面的反馈。

在训练阶段期间,生成器302接收对象的输入图像,并且输出标准化视角下对象的图像的向量表示。由生成器302接收的对象的输入图像可能处于任何视角或姿态,然而,由生成器输出的向量表示是标准化视角下对象的向量表示。标准化视角下的由生成器生成的向量表示和对象的真实图像作为输入被提供至评估器304的每个子模块306、308和310。

判别器306分析由生成器302生成的输入图像,以确定生成图像描绘对象的程度。也就是说,判别器306输出给定输入图像是对象的真实图像还是生成图像的概率。由判别器306输出的值是指示给定输入图像是真实图像还是生成图像表示的标量概率。由输出值指示的概率越高,输入图像是真实图像的机会就越大。相反地,由输出值指示的概率越低,输入图像是由生成器302生成的对象的伪造图像的几率就越大。判别器306使用在学习目标之间交替的二进制交叉熵损失函数来以区分生成的图像表示与真实图像。

标准化器308基于生成图像在标准化视角下描绘对象的程度来分析由生成器302生成的图像表示。细粒度图像搜索中的挑战之一是图像中的对象可以以显著变化的视点和姿态出现。因此,生成器302被训练以将对象的图像生成为标准化视角,这允许与其他图像的更好匹配。训练生成器302被训练以将输入图像转换为标准化视角,同时标准化器308被训练以区分标准化视角下的真实图像与标准化视角下的生成图像。

标准化器308输出指示图像被标准化成标准化视角的完成情况的值。例如,较高的输出值指示生成器302已经良好地完成将输入图像转换为标准化视角,然而较低的输出值指示生成器302没有良好地完成将输入图像转换为标准化视角。

语义嵌入模块310确保来自同一的细粒度类别的图像的特征在语义上彼此接近。最初,使用真实图像训练语义嵌入模块310,以捕获特征空间中的语义。语义嵌入模块310通过估计分类误差来评估生成的表示的质量。也就是说,语义嵌入模块310输出基于由生成器302生成的图像确定的对象是否属于给定对象类别的列表的概率的列表。从元数据中已知期望的对象分类,元数据与提供至生成器302的对象的输入图像相关联。

评估器304的三个子模块306、308和310与生成器302一起联合优化,使得它们被平衡以有助于高质量的得到的图像表示。gan训练模块202继续训练gan300,直到生成器302与评估器304达到平衡为止。也就是说,训练gan300,直到评估器304的三个子模块306、308和310不能成功地辨别由生成器302生成的图像和真实图像。

返回至图2的讨论,图像生成模块204使用gan300来生成标准化视角下对象的图像。也就是说,图像生成模块204向gan300馈送已知对象的输入图像,得到标准化视角下对象的生成图像的集合。所生成的图像被存储在数据存储208中。

图像搜索模块206基于给定的输入图像执行图像搜索。也就是说,图像搜索模块206接收输入图像,识别相同对象的相似图像,并且返回所识别的图像。图像搜索模块206使用训练后的gan300来生成标准化视角下输入图像的向量表示。然后,图像搜索模块206确定生成的向量表示与存储在数据存储208中的表示生成的图像的向量之间的距离。例如,图像搜索模块206确定生成的向量表示与其他向量之间的欧几里得距离。图像搜索模块206基于被确定为与输入图像的向量表示最接近的向量来识别相似图像。然后,响应于图像搜索查询,图像搜索模块206返回所识别的相似图像中的一个或更多个。

图4是根据一些示例实施方式的图像搜索模块206的框图。为了避免不必要的细节模糊本发明的主题,从图4中省略了与传达对本发明的主题的理解没有密切关系的各种功能部件(例如模块)。然而,技术人员将容易地认识到,各种附加的功能部件可以通过图像搜索模块206来支持以有利于本文未具体描述的附加功能。此外,图2中描绘的各种功能模块可以驻留在单个计算装置上,或者可以以各种布置(例如在基于云的架构中使用的布置)分布在若干计算装置上。

如图所示,图像搜索模块206包括搜索接口模块402、向量生成模块404、距离确定模块406、相似图像确定模块408、以及输出模块410。

搜索接口模块402在客户端装置102上提供用户接口,用户接口使得用户能够执行图像搜索。搜索接口包括用户接口元件(例如,文本框、按钮等),用户接口元件使得客户端装置102的用户能够将输入图像输入,以执行图像搜索。搜索接口模块402接收由客户端装置102的用户提供的输入,并且将输入提供至图像搜索模块402的其他模块。

向量生成模块404生成从客户端装置102的用户处接收的输入图像的向量表示。向量表示是标准化视角下图像的向量表示。例如,输入图像可以包括对象在任何姿态或视角(例如,侧视角、顶视角等)中的图像。向量生成模块404将输入图像修改为标准化视角,并且生成标准化图像的向量表示。向量生成模块404利用gan300的经训练的生成器302来生成标准化视角下输入图像的向量表示。例如,向量生成模块404使用输入图像作为生成器302中的输入,生成器302标准化视角下输出图像的向量表示。

距离确定模块406确定输入图像的向量表示与存储在数据存储208中的其他图像的向量表示之间的距离。距离确定模块406可以使用任何距离算法来确定向量之间的距离。例如,距离确定模块406可以确定向量之间的欧几里得距离。

相似图像确定模块408基于所确定的输入图像的向量表示与存储在数据存储208中的其他图像的向量表示之间的距离来确定相似图像。例如,相似图像确定模块408确定与输入图像的向量表示最接近的向量的子集。相似图像确定模块408可以确定预定数量的最接近的向量,例如,五个最接近的向量。作为另一示例,相似图像确定模块408识别在输入图像的向量表示的阈值距离内的向量。

输出模块410从数据存储208收集所识别的相似图像,并且将它们提供至客户端装置102。客户端装置102在客户端装置102的屏幕上呈现相似图像作为搜索结果。

图5是示出根据某些示例实施方式的执行图像搜索的示例方法500的流程图。方法500可以以由一个或更多个处理器执行的计算机可读指令实施,使得方法500的操作可以由图像搜索模块206部分或全部执行;相应地,下面以示例的方式参考方法500进行描述。然而,应当理解,方法500的操作中的至少一些操作可以部署在各种其他硬件配置上,并且方法500不旨在限于图像搜索模块206。

在操作502处,搜索接口402接收对象的输入图像。搜索接口模块402在客户端装置102上提供用户接口,使得用户能够执行图像搜索。搜索接口包括用户接口元件(例如,文本框、按钮等),用户接口元件使得客户端装置102的用户能够将输入图像输入以执行图像搜索。

在操作504处,向量生成模块404生成标准化视角下对象的向量表示。输入图像可以包括对象在任何姿态或视角(例如,侧视角、顶视角等)中的图像。向量生成模块404将输入图像修改为标准化视角,并且生成标准化图像的向量表示。向量生成模块404利用gan300的经训练的生成器302以生成标准化视角下输入图像的向量表示。例如,向量生成模块404使用输入图像作为生成器302的输入,生成器302标准化视角下输出图像的向量表示。

在操作506处,距离确定模块406和相似图像确定模块408基于向量表示识别描绘对象的其他图像的集合。距离确定模块406确定输入图像的向量表示与存储在数据存储208中的其他图像的向量表示之间的距离。距离确定模块406可以使用任何距离算法来确定向量之间的距离。例如,距离确定模块406可以确定向量之间的欧几里得距离。

相似图像确定模块408基于所确定的输入图像的向量表示与存储在数据存储208中的其他图像的向量表示之间的距离来确定相似图像。例如,相似图像确定模块408确定与输入图像的向量表示最接近的向量的子集。相似图像确定模块408可以确定预定数量的最接近的向量,例如,五个最接近的向量。作为另一示例,相似图像确定模块408识别在输入图像的向量表示的阈值距离内的向量。

在操作508处,响应于搜索查询,输出模块410返回其他图像中的至少一个。输出模块410从数据存储208收集所识别的相似图像,并且将它们提供至客户端装置102。客户端装置102在客户端装置102的屏幕上呈现相似图像作为搜索结果。

图6是示出根据某些示例实施方式的生成用于细粒度图像搜索的gan的示例方法的流程图。方法600可以以计算机可读指令实施以由一个或更多个处理器执行使得方法600的操作可以部分地或全部地由图像搜索模块206执行;相应地,下面以示例的方式参考方法600进行描述。然而,应当理解,方法600的操作中的至少一些操作可以部署在各种其他硬件配置上,并且方法600不旨在限于图像搜索模块206。

在操作602处,生成器302访问对象的训练图像。对象的输入图像可以处于任何视角或姿态。例如,图像可以在侧视角、顶视角等中描绘对象。

在操作604处,生成器302生成标准化视角下对象的向量表示。也就是说,生成器302生成标准化视角下对象的图像,并且生成所生成的图像的向量表示。

在操作606处,gan生成模块202将对象的向量表示和对象的真实图像提供至评估器204的三个子模块206、208和210。传统的对抗网络利用单个判别器来分析和提供反馈数据,而gan300利用具有三个子模块,判别器306、标准化器308、和语义嵌入模块310的评估器。每个子模块评估由生成器302生成的图像,并且向生成器302提供关于生成图像的生成器302的性能的不同方面的反馈。

判别器306分析由生成器302生成的输入图像以确定生成图像描绘对象的程度。也就是说,判别器306输出给定输入图像是对象的真实图像还是生成图像的概率。由判别器306输出的值是指示给定的输入图像是真实图像还是生成图像表示的标量概率。由输出值指示的概率越高,输入图像是真实图像的几率就越大。相反地,由输出值指示的概率越低,输入图像是由生成器302生成的对象的伪造图像的几率就越大。判别器306使用在学习目标之间交替的二进制交叉熵损失函数来区分生成图像表示与真实图像。

标准化器308基于生成图像标准化视角下描绘对象的程度来分析由生成器302生成的图像表示。细粒度图像搜索中的挑战之一是图像中的对象可以以显著变化的视点和姿态出现。因此,生成器302被训练成将对象的图像生成为标准化视角,这允许与其他图像的更好的匹配。生成器302被训练成将输入图像转换为标准化视角,同时标准化器308被训练成区分标准化视角下的真实图像与标准化视角下的生成图像。

标准化器308输出指示图像被标准化成标准化视角的程度的值。例如,较高的输出值指示生成器302已经良好地完成将输入图像转换为标准化视角,然而较低的输出值指示生成器302没有良好地完成将输入图像转换为标准化视角。

语义嵌入模块310确保来自同一细粒度类别的图像的特征在语义上彼此接近。最初,使用真实图像训练语义嵌入模块310,以捕获特征空间中的语义。语义嵌入模块310通过估计分类误差来评估生成的表示的质量。也就是说,语义嵌入模块310输出基于由生成器302生成的图像确定的对象是否属于给定的对象类别的列表的概率的列表。从元数据中已知期望的对象分类,元数据与提供至生成器302的对象的输入图像相关联。

评估器304的三个子模块306、308和310与生成器302一起联合进行优化,使得它们被平衡以有助于高质量的得到的图像表示。因此,在操作608处,生成器从评估器204的三个子模块206、208和210接收反馈数据,以及在操作610处,生成器302基于接收到的反馈生成对象的后续向量表示。可以重复该过程,直到生成器302与评估器304达到平衡为止。也就是说,训练gan300,直到评估器304的三个子模块306、308和310不能成功地辨别由生成器302生成的图像和真实图像。

软件架构

图7是示出示例软件架构706的框图,该示例软件架构706可以与本文中描述的各种硬件架构结合使用。图7是软件架构706的非限制性示例并且应当理解,可以实现许多其他架构以有利于本文中描述的功能。软件架构706可以在诸如图8的机器800的硬件上执行,机器800包括处理器804、存储器814和(输入/输出)(i/o)部件818等。代表性硬件层752被示出并且可以表示例如图8的机器800。代表性硬件层752包括具有相关联的可执行指令704的处理单元754。可执行指令704表示软件架构706的可执行指令,包括本文中描述的方法、部件等的实现。硬件层752还包括也具有可执行指令704的存储器和/或存储模块存储器/存储756。硬件层752还可以包括其他硬件758。

在图7的示例架构中,软件架构706可以被概念化为层的堆叠,其中每个层提供特定功能。例如,软件架构706可以包括诸如操作系统702、库720、框架/中间件718、应用716和表示层714的层。在操作上,这些层中的应用716和/或其他部件可以通过软件堆栈来调用api调用708,并且响应于api调用708接收诸如消息712的响应。所示出的层本质上是代表性的,并且并非所有软件架构都具有所有的层。例如,一些移动或专用操作系统可能不提供框架/中间件718,而其他操作系统可以提供这样的层。其他软件架构可以包括附加层或不同的层。

操作系统702可以管理硬件资源并且提供公共服务。操作系统702可以包括例如内核722、服务724和驱动器726。内核722可以用作硬件层与其他软件层之间的抽象层。例如,内核722可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务724可以给其他软件层提供其他公共服务。驱动器726可以负责控制底层硬件或与底层硬件对接。例如,根据硬件配置,驱动器726包括显示驱动器、摄像装置驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。

库720提供由应用716和/或其他部件和/或层使用的公共基础设施。库720提供功能,该功能允许其他软件部件以比与底层操作系统702功能(例如,内核722、服务724和/或驱动器726)直接对接的方式更容易的方式来执行任务。库720可以包括系统库744(例如,c标准库),系统库744可以提供函数例如存储器分配函数、串操纵函数、数学函数等。另外,库720可以包括api库746诸如媒体库(例如,支持各种媒体格式诸如mpeg4、h.264、mp3、aac、amr、jpg、png的呈现和操纵的库)、图形库(例如,可以用于在显示器上呈现2d和3d图形内容的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、网络库(例如,可以提供网络浏览功能的webkit)等。库720还可以包括各种各样的其他库748,以向应用716和其他软件部件/模块提供许多其他api。

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

应用716包括内置应用738和/或第三方应用740。代表性内置应用738的示例可以包括但不限于联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息发送应用和/或游戏应用。第三方应用740可以包括由除特定平台的供应商之外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用,并且可以是在诸如iostm、androidtm电话的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用740可以调用由移动操作系统(例如,操作系统702)提供的api调用708,以有利于本文中描述的功能。

应用716可以使用内置操作系统功能(例如,内核722、服务724和/或驱动器726)、库720和框架/中间件718来创建用户接口以与系统的用户交互。替选地或另外地,在一些系统中,与用户的交互可以通过表示层例如表示层714进行。在这些系统中,应用/部件“逻辑”可以与应用/部件的和用户交互的方面分开。

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

机器800可以包括可以被配置成例如经由总线802彼此通信的处理器804、存储器/存储806和i/o部件818。存储器/存储806可以包括诸如主存储器或其他存储器存储装置的存储器814以及存储单元816,这两者都能够由处理器804诸如经由总线802访问。存储单元816和存储器814存储实施本文所描述的方法或功能中的任一种或更多种的指令810。指令810还可以在其被机器800执行期间完全地或部分地驻留在存储器814内、存储单元816内、至少一个处理器804内(例如,在处理器的高速缓冲存储器内)或其任何合适的组合内。相应地,存储器814、存储单元816和处理器804的存储器是机器可读介质的示例。

i/o部件818可以包括用于接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器800中的特定i/o部件818将取决于机器的类型。例如,诸如移动电话的便携式机器很可能包括触摸输入装置或其他这样的输入机构,而无头服务器机器(headlessservermachine)很可能不包括这样的触摸输入装置。将理解的是,i/o部件818可以包括在图8中未示出的许多其他部件。根据功能对i/o部件818进行分组仅出于简化以下讨论的目的,并且分组决不是限制性的。在各种示例实施方式中,i/o部件818可以包括输出部件826和输入部件828。输出部件826可以包括视觉部件(例如,显示器,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件828可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。

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

可以使用各种各样的技术来实现通信。i/o部件818可以包括通信部件840,通信部件840能够进行操作以经由耦接824和耦接822分别将机器800耦接至网络832或装置820。例如,通信部件840可以包括网络接口部件或其他合适的装置以与网络832对接。在其他示例中,通信部件840可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低能耗)、部件和经由其他形式提供通信的其他通信部件。装置820可以是另外的机器或各种外围装置(例如,经由usb耦接的外围装置)中的任一种。

此外,通信部件840可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件840可以包括射频识别(rfid)标签阅读器部件、nfc智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(upc)条形码的一维条形码、诸如快速反应(qr)码的多维条形码、aztec码、数据矩阵、数据符号(dataglyph)、最大码(maxicode)、pdf417、超码(ultracode)、uccrss-2d条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件840得出各种信息,例如经由因特网协议(ip)地理位置得出位置、经由wi-fi信号三角测量得出位置、经由检测可以指示特定位置的nfc信标信号得出位置等。

术语表

该上下文中的“载波信号”是指能够存储、编码或携载由机器800执行的指令810的任何无形介质并且包括数字或模拟通信信号或其他无形介质以有利于这些指令810的通信。可以使用传输介质经由网络接口装置并且使用多个公知的传输协议中的任何一个来通过网络832发送或接收指令810。

该上下文中的“客户端装置”是指与通信网络832对接以从一个或更多个服务器系统或其他客户端装置获得资源的任何机器800。客户端装置可以是但不限于移动电话、台式计算机、膝上型计算机、pda、智能电话、平板电脑、超级本、上网本、多个膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、stb或用户可以使用以访问网络832的任何其他通信装置。

该上下文中的“通信网络”是指网络832的一个或更多个部分,该网络832可以是自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一类型的网络或者两个或更多个这样的网络的组合。例如,网络832或网络832的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任一种,例如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线服务(gprs)技术、gsm演进的增强数据率(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。

该上下文中的“机器可读介质”是指能够临时或永久地存储指令810和数据的部件、装置或其他有形介质,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其他类型的存储装置(例如,可擦除可编程只读存储器(eeprom))和/或其任何合适的组合。术语“机器可读介质”应当被认为包括能够存储指令810的单个介质或多个介质(例如,集中式或分布式数据库或者相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还应被认为包括能够存储由机器800执行的指令810(例如,代码)的任何介质或多个介质的组合,使得指令810在由机器800的一个或更多个处理器804执行时使机器800执行本文中所描述的任何一种或更多种方法。相应地,“机器可读介质”是指单个存储设备或装置,以及包括多个存储设备或装置的“基于云”的存储系统或存储网络。术语“机器可读介质”不包括信号本身。

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

该上下文中的“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生应用于操作机器800的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器804可以是中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)或其任何组合。处理器还可以是具有两个或更多个独立处理器804(有时称为“核”)的多核处理器,其可以同时执行指令810。

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