用于编录、检索和组织与对象相关联的用户生成的内容的计算系统和方法与流程

文档序号:26008523发布日期:2021-07-23 21:27阅读:82来源:国知局
用于编录、检索和组织与对象相关联的用户生成的内容的计算系统和方法与流程

优先权要求

本申请基于申请日为2018年11月7日的美国临时申请号62/756,857并要求其优先权。申请人要求该申请中的每一个的优先权和权益,并且通过引用将该申请的全部整体并入本文。

本公开一般而言涉及图像识别和数据存储。更具体而言,本公开涉及提供用于检索和编录(catalog)包括图像的用户生成的数据的工具的计算系统和方法。



背景技术:

由于机器学习的进步,包括图像分类和数据管理在内的计算技术已经被大大的改善。但是,图像识别中的绊脚石是获得稀有或罕见对象的训练数据。可以不断改变的现实世界环境的复杂性加剧了这个问题。当前的图像识别工具常常依赖于静态的学习模型,而不是可以用新数据连续更新的模型。这为增强现实应用和需要处理与动态改变的世界相关联的当前图像数据的其它工具的开发提出了挑战。虽然静态模型可以提供一般的用户体验,但仍有待一种用于定制与动态图像数据的用户交互的解决方案。



技术实现要素:

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

本公开的一个示例方面针对一种用于对与对象相关联的用户生成的数据进行编录和检索的计算系统。该计算系统包括一个或多个处理器和共同存储指令的一个或多个非暂态计算机可读介质,这些指令在由一个或多个处理器执行时使计算系统执行操作。所述操作包括接收数据集,所述数据集包括由用户捕获的描绘对象的一个或多个图像。所述操作包括使用人工神经网络处理数据集以生成与对象相关联的嵌入。所述操作包括访问用户生成的内容的多个库中的一个或多个库,其中多个库中的每个库包括分别与一个或多个编录的对象相关联的一个或多个编录的嵌入。每个编录的嵌入已经从由一个或多个其他用户捕获的相关联的编录的对象的一个或多个图像生成。用户生成的内容的一个或多个项目与每个编录的对象相关联。一个或多个库是多个库的子集。所述操作包括至少部分地基于嵌入与一个或多个库中包括的一个或多个编录的嵌入的比较来标识(identify)一个或多个库中包括的一个或多个编录的嵌入中的最接近的编录的嵌入。所述操作包括提供与一个或多个库中包括的一个或多个编录的嵌入中的最接近的编录的嵌入相关联的用户生成的内容的至少一个项目,用于向用户呈现。

本公开的另一个示例方面针对一种用于对与对象相关联的用户生成的数据进行编录和检索的计算机实现的方法。所述方法包括由一个或多个计算设备接收数据集,该数据集包括由用户捕获的描绘对象的一个或多个图像。所述方法包括由一个或多个计算设备使用神经网络处理数据集以生成与对象相关联的嵌入。所述方法包括由一个或多个计算设备访问多个库中的一个或多个库。多个库中的每个库包括分别与一个或多个编录的对象相关联的一个或多个编录的嵌入。每个编录的嵌入已经从相关联的编录的对象的一个或多个图像生成。内容的一个或多个项目与每个嵌入相关联。一个或多个库是多个库的子集。所述方法包括由一个或多个计算设备将嵌入与编录的对象之一相关联。将嵌入与编录的对象之一相关联产生新的编录的嵌入,该新的编录的嵌入可由一个或多个计算设备访问。

本公开的另一个示例方面针对一种计算系统。该计算系统包括存储用户生成的内容的多个库的一个或多个数据存储设备。多个库中的每个库包括分别与一个或多个编录的对象相关联的一个或多个编录的嵌入。每个编录的嵌入已经从由一个或多个用户捕获的相关联的编录的对象的一个或多个图像生成。用户生成的内容的一个或多个项目与每个嵌入相关联。计算系统包括实现用户生成的内容平台的一个或多个计算设备,该用户生成的内容平台:从客户端接收对象的影像;使用人工神经网络生成对象的嵌入;搜索多个库中的一个或多个库,以标识具有与对象的嵌入最接近的编录的嵌入的编录的对象;并向客户端提供(serve)与标识出的编录的对象相关联的用户生成的内容的至少一个项目。

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

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

附图说明

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

图1a图示了根据本公开的示例实施例的用于检索用户生成的内容的示例过程的工作流图。

图1b图示了根据本公开的示例实施例的用于对用户生成的内容进行编录的示例过程的工作流图。

图2a图示了根据本公开的示例实施例的用于检索用户生成的内容的示例方法的流程图。

图2b图示了根据本公开的示例实施例的用于对用户生成的内容进行编录的示例方法的流程图。

图3a图示了根据本公开的示例实施例的用于在计算设备上运行的平台的示例硬件图的框图。

图3b图示了根据本公开的示例实施例的用于在通过通信网络连接的一个或多个计算设备上运行的平台的示例硬件图的框图。

图4图示了根据本公开的示例实施例的平台的示例使用的图形图。

具体实施方式

概述

一般而言,本公开针对与对象相关联的图像识别和用户生成的内容的管理。本公开的实施例针对一种计算系统,该计算系统使用户能够与和编录的对象相关联的用户生成的内容的库进行交互。例如,用户可以捕获现实世界对象的一个或多个图像、用各种类型的用户生成的内容标记或以其他方式注释该对象,并将该对象及其相关联的内容组织到一个或多个库中。特别地,在实施例中可以使用诸如人工神经网络之类的嵌入模型来基于这种对象的图像为每个编录的对象生成编录的嵌入。该一个或多个库可以与其他用户共享,并且计算系统可以使其他用户能够基于对对应对象的视觉识别来接收用户生成的内容。

作为示例,第一用户可以将特定对象和内容编录到库中。此后,第二用户可以在用户位于特定对象附近的同时捕获该对象的图像。计算系统可以使用嵌入模型(例如,人工神经网络)来处理对象的(一个或多个)图像以生成与对象相关联的嵌入。计算系统可以访问来自用户生成的内容的库的集合的一个或多个库,例如,包括第一用户对特定对象进行编录的库。计算系统可以至少部分地基于嵌入与一个或多个库中包括的一个或多个编录的嵌入的比较来标识一个或多个库中包括的一个或多个编录的嵌入中的最接近的编录的嵌入。计算系统可以提供与一个或多个库中包括的一个或多个编录的嵌入中的最接近的编录的嵌入相关联的用户生成的内容的至少一个项目,用于向第二用户呈现。特别地,计算系统可以识别特定对象并将相关联的内容提供给第二用户。因此,通过捕获对象的影像并将其提供给计算系统,第二用户可以接收由第一用户先前在其中一个库中与该对象相关联的用户生成的内容。

为了提供用于说明的目的的示例,艺术爱好者可以去博物馆并走近绘画。艺术爱好者可以拍摄绘画的(一个或多个)照片,并且还可以生成与绘画相关联的一些内容。例如,用户生成的内容可以包括由艺术爱好者输入的关于艺术家使用的画笔技术的一些注解。绘画的(一个或多个)照片和用户生成的内容可以被供应给平台,并且平台可以使用人工神经网络基于(一个或多个)照片来生成绘画的嵌入。嵌入和用户生成的内容可以彼此关联并且存储在一个或多个库内。例如,嵌入和用户生成的内容可以存储在与博物馆相关联的特定库中。此后,艺术系学生可以去博物馆并开始使用该平台。特别地,艺术系学生可以选择与博物馆相关联的库以供使用。学生可能注意到绘画并希望接收附加信息。为此,学生可以用她的设备(例如,智能电话)捕获绘画的一个或多个图像。平台可以基于学生捕获的图像来识别绘画。特别地,平台可以使用神经网络基于学生捕获的图像生成嵌入,并且可以将生成的嵌入与基于艺术爱好者捕获的图像而生成的编录的嵌入进行匹配。平台可以访问库中的与绘画相关联的用户生成的内容(例如,美术爱好者关于画笔技术的注解),并将其提供给美术系学生。在其中内容的多个项目与绘画相关联的情况下,平台可以生成组织的内容项目的列表,并允许用户选择定制的体验,诸如回顾评论、查看类似的绘画或收听叙述。

更特别地,本公开的各方面针对一种对象识别和内容提供平台,该平台使得能够通过使用视觉对象识别和对象内容库来对与对象相关联的用户生成的内容进行编录和检索。在对对象进行编录或接收与对象相关联的内容的实施例中,用户可以捕获对象的一个或多个图像,然后将包括图像的数据集提供给平台。在一些实施例中,用户可以指示她是在尝试对项目进行编录还是要接收与项目相关联的内容,并且平台可以相应地处理数据集。

作为示例实施例,为了获得对象的图像,用户可以操作她的设备(例如,智能电话)中的相机以捕获对象的离散图像。然后,用户可以从图库中选择图像并将它们提供给平台。作为另一个示例实施例,数据集可以包括视频流。在一些实施例中,可以在捕获视频流时实时地处理视频流(例如,以识别所描绘的对象)。因此,在某些实施例中,可能不要求用户实际捕获对象的不同图像(例如,通过操作快门控件以捕获可以存储到照片图库的图像),而是可以代替地简单地操纵设备(例如,智能电话或其它图像捕获设备),使得将感兴趣的对象定位在设备的视场内。在一些实施例中,可以至少每秒或根据其它时间量来处理视频流。

在以上任一个实施例中,平台可以从用户接收数据集,并且可以使用嵌入模型来处理该数据集以生成用于所描绘的对象的嵌入。作为示例实施例,嵌入模型可以是诸如例如卷积神经网络之类的人工神经网络。可以(例如,经由三元组训练方案)训练嵌入模型以在嵌入维度空间中产生对象的嵌入,在嵌入维度空间中两个对象的两个嵌入之间的距离的量值(magnitude)与两个对象之间的相似度反相关。在一些实施例中,平台可以包括单个嵌入模型,而在其它实施例中,可以使用多个不同的嵌入模型。例如,可以使用不同的嵌入模型,这些模型分别被训练为特定于对象的不同类型、域或类。作为一个示例,平台可以将第一嵌入模型用于一般对象,而将第二专用嵌入模型用于食物或食物菜肴。在一些实施方式中,用于特定库的嵌入模型可以由库的所有者提供和/或特定于该库。

在以上任一个实施例中,可以使用对象的多个图像来生成对象的嵌入。例如,在一些这样的实施方式中,平台可以使用嵌入模型来为每个图像生成相应的原型嵌入(proto-embedding)。平台可以聚合多个图像的原型嵌入,以生成与对象相关联的嵌入。例如,一些或全部原型嵌入的平均可以被用作对象的嵌入。从多个图像生成的原型嵌入的聚合在图像描绘其中只有对象中的一个是聚焦对象的混乱场景的情景和/或对象不一致并且只有对象的不同视图提供不同信息的情景中可能是有益的。

在包括尝试对对象进行编录的用户或平台的实施例中,可以将产生的嵌入和/或用户生成的内容的一个或多个项目(在本文进一步描述其示例)添加到一个或多个对象内容库。对于本公开的实施例,库可以是公共库或私用库。这些库可以特定于单个用户,或者可以在多个用户之间共享。在一些实施例中,库可以特定于特定地点(例如,博物馆)或特定于特定主题(例如,恐怖电影或园艺),或者可以是编录的对象的一般集合。这些库可以本地存储在用户的设备上、与一个或多个其它设备共享,和/或可以上传到集中式数据库以供其它设备访问。如本文进一步所述,可以以其它方式来组织、组合、共享、合成、转移或管理库。因此,本公开的各方面使用户能够生成或补充各种不同的库,这些库基于用户供应的影像对对象进行编录,并且进一步将用户生成的内容与这样编录的对象相关联并存储。

在本公开的某些实施例中,对对象进行编录还可以包括应用垃圾邮件过滤器。在这些情况下,一个或多个编录的嵌入的第一子集可以被用于标识质量,并且第二子集可以被用于标识相关性;并且质量和相关性可以被用于产生内容项目。作为示例,一个或多个编录的嵌入的第一子集可以包括从包括一个或多个垃圾邮件类的数据集生成的嵌入,这些垃圾邮件类诸如为:低光照、高曝光、低分辨率、焦点未对准、裸露和不适当的语言。在垃圾邮件过滤器标识出差质量的情况下,内容项目可以包括提示,该提示通知用户与一个或多个垃圾邮件类的关联。

在用户尝试接收与对象相关联的内容而不是对对象进行编录的实施例中,则平台可以访问一个或多个库以尝试识别对象并检索与对象相关联的内容。特别地,每个库可以包括分别与一个或多个编录的对象相关联的一个或多个编录的嵌入。在一些实施例中,已经从由一个或多个其他用户捕获的相关联的编录的对象的一个或多个图像生成了一些或全部编录的嵌入。此外,可以将用户生成的内容的一个或多个项目与每个库中的每个编录的对象相关联。因此,在某些实施例中,可以访问所有可能的库的特定子集,并将其用于识别对象和/或获取与对象相关联的内容。

在一些实施例中,可以基于用户输入来选择或以其它方式标识所访问的特定库。例如,用户输入可以作为数据集的一部分或当前与数据集一起接收,或者可以在平台准备好访问库时被接收(例如,响应于提示)。

在一些实施例中,可以将所访问的库下载到用户的计算设备。在一些情况下,用户可以选择要下载的库。在其它情况下,无需用户输入而使用来自数据集的信息下载库。

在一些实施例中,访问许可可以与库相关联。特别地,多个库中的每个库和/或其中所包含的每个编录的嵌入可以与特定用户相关联或由特定用户拥有。用户可以控制针对该用户拥有的相应库或嵌入的访问许可的集合。在这些实施例中,访问用户生成的内容的多个库中的一个或多个库可以包括仅访问正在寻找内容的用户已被授予许可来访问的库。

在某些实施例中,可以使用提供层次结构的数据管理系统来组织库。作为示例,层次结构可以包括学习算法,以优化从显示相似特征或对象的图像生成的编录的嵌入的分组。以这种方式,学习算法将嵌入分组到库中,使得每个库包括在各种特性(例如,位置、主题、对象类等)上相似的编录的嵌入的子集。另外,数据管理系统可以包括库元数据,该库元数据提供描述与库相关联的编录的嵌入中存在的共同特征的平均库嵌入。在接收到新生成的嵌入后,数据管理系统可以至少使用该嵌入与平均库嵌入的比较来确定最接近的库。

在一些实施例中,包括库间相似性的第二库元数据也可以被用于确定最接近的库。库间相似性可以被用于将库分组为集合。作为示例,数据管理系统可以包括动物的集合,其包括专门用于猫、狗、马、小鼠和猪的库;食物的集合;以及艺术品的集合。在接收到猫的图像后,数据管理系统可以处理该图像以生成嵌入,并且可以将该嵌入与平均库嵌入进行比较。如果平均库嵌入与包含不同面食图像的库相关联,那么相异性将指示它不是最接近的库。通过将嵌入与来自每个集合的一个平均库嵌入进行比较,初始粗略过滤器可以确定最接近的集合;并且与最接近的集合相关联的每个平均库的进一步比较为确定最接近的库提供了精细过滤器。在一些实施方式中,可以使用类似的搜索技术来搜索库的集合内最接近的编录的嵌入。

一般而言,库可以为显示出相似的特征的编录的嵌入提供分组,以及与嵌入相关联的用户内容。在一些情况下,库可以由用户生成。例如,每个用户可以生成包括该用户已经提交给所描述的计算系统的内容的个人库。随着用户提交新内容,他们的个人库可以更新以包括新内容。在一些情况下,库可以由计算系统使用算法来生成。例如,学习算法可以被用于将具有相似特征的嵌入关联到库中。在使用算法生成库的情况下,可以从包括对象的(一个或多个)图像的数据和/或非图像数据(诸如对象位置或嵌入本身)导出相似的特征。这些情况不应当被视为互斥的,因此,可以使用多种技术来生成库,这些技术可以包括用户输入、编程的算法或两者的组合。

已获得或以其它方式访问了适当的库,平台可以将针对来自从用户接收到的数据集的对象产生的嵌入与一个或多个库中包括的一个或多个编录的嵌入进行比较,以标识一个或多个库中包括的一个或多个编录的嵌入中的最接近的编录的嵌入。例如,如上所述,最接近的编录的嵌入可以是在嵌入维度空间内具有至该嵌入的最小距离(例如,l1距离)的编录的嵌入。

在一些实施例中,当尝试识别对象时,平台可以处理和使用除了所提供的(一个或多个)图像之外的数据。在示例实施例中,由平台接收的数据集还可以包括在捕获图像时用户的当前位置或除图像之外的其它上下文数据。这个位置数据可以由用户或用户的设备显式地提供,或者这个数据可以作为元数据包括在图像内。另外,当确定要访问哪些库时,可以使用附加数据(例如,位置数据或其它上下文数据)。作为示例,可以至少部分地基于在捕获一个或多个图像时用户的当前位置从多个库中选择被搜索的库。

在标识出最接近的编录的嵌入(例如,识别对象)后,平台可以向用户提供一个或多个库中与最接近的编录的嵌入相关联的用户生成的内容的一个或多个项目。因此,嵌入可以被用于识别对象并访问与识别出的对象相关联的内容。

用户生成的内容的示例可以包括文本注释、音频注释或视觉注释。这些内容的项目可以提供将不同用户链接在一起的定制体验。

作为另一个示例,在一些实施例中,与其中一些对象相关联的用户生成的内容可以包括相关联的虚拟层。特别地,向用户呈现与对象相关联的用户生成的内容可以包括在增强现实显示中的对象的影像上渲染虚拟层。在某些实施例中,虚拟层不需要特定的增强现实显示,并且可以作为弹出图像结合在静态照片或动态相机显示上。此外,在一些实施例中,虚拟层可以包括音频、视觉或音频和视觉媒体。

在一些实施例中,平台可以识别场景中的多个对象。平台可以在视觉上突出显示可以被选择并与之交互的潜在对象(例如,提供或接收用户生成的内容)。在一些这样的实施例中,平台可以执行设备上实体分割,以识别多个不同的对象。

在一些实施例中,除了在标识最接近的编录的嵌入后向用户提供用户生成的内容的一个或多个项目之外,或者作为其替代,平台还可以向一个或多个附加系统、应用、设备或其它组件提供信号,该信号标识最接近的编录的嵌入、与最接近的编录的嵌入相关联的对象和/或库,和/或与最接近的编录的嵌入相关联的任何用户生成的内容。因此,如本文所述的对特定对象或嵌入的标识可以被用作到各种其它系统的信号,这些系统可以响应于接收到的信息而执行操作。作为一个示例,如果用户具有“我的东西”的库并且平台识别来自该库的某物,那么平台可以将信号传递到另一个系统,该系统可以使用该信号(例如,连同其它信号)来触发某个动作或输出。例如,如果平台从“我的东西”库中识别出用户的车辆,那么该平台可以与用户的车辆通信(例如,经由无线网络)。因此,用户的车辆可以解锁车门、启动发动机、调节座椅设置等。在一些实施例中,可以使用应用编程接口在平台与附加系统、应用、设备或其它组件之间发生通信。

在本公开的一些实施例中,对象识别和内容提供平台可以在用户的设备(例如,智能电话、平板电脑、膝上型计算机等)上本地实现。例如,用户的设备可以从数据库下载一个或多个对象内容库。用户的设备可以在本地实现该平台,以在下载的库内搜索以标识对象并将与标识出的对象相关联的内容提供给用户。同样,用户的设备可以在本地实现该平台,以将对象及其用户生成的内容编录到库中,然后可以将其上传到中央数据库,以供其它设备下载。附加地或可替代地,平台可以在服务器计算设备上实现。例如,可以在服务器设备处执行搜索和编录功能,使得用户的设备仅负责将影像供应给服务器并从服务器接收内容以呈现给用户。无论平台是在本地实现还是在服务器设备上实现,平台都可以在单个应用的上下文内实现,或者可以作为服务为多个不同应用或其它客户端提供。此外,如上所述,可以从中央数据库下载或以其它方式访问内容库,和/或可以以对等方式共享内容库,从而不要求或不执行内容数据的集中收集。

在本公开的一些实施例中,平台可以使用一个或多个应用编程接口(api)进行通信。例如,api可以被用于接收由用户捕获的(一个或多个)图像和/或提供内容项目。api可以是预定义的,并且可以使平台能够具有与客户端(例如,各种设备和/或应用)的标准化接口。

在一些实施例中,计算系统可以利用数据库来存储包括嵌入和相关联的用户生成的内容的信息。在示例中,数据库可以是不包括内置数据层次结构的非关系数据库,诸如云数据库或nosql数据库。但是,在其它示例中,可以使用关系数据库,诸如sql数据库。对于利用非关系数据库的一些实施例,计算系统还可以包括用于将某些编录的嵌入物的副本和相关联的用户生成的内容的副本从非关系数据库移动到临时数据库的算法。在这些示例中,临时数据库可以包括一个或多个库;并且计算系统可以访问来自临时数据库的库,以识别最接近的编录的嵌入。

作为由本公开提供的示例技术效果和益处,搜索可以限于编录的嵌入的整个集合的子集。可以通过用户选择一个或多个相关库在库级别对搜索进行限制,以减少与编录的嵌入的比较的数量。附加地或可替代地,可以利用与编录的嵌入的集合相关联的元数据对搜索进行限制。在一些实施方式中,还可以通过将数据复制或移动到临时数据库来将数据库工程应用于管道相关数据,以将查询限制在临时数据库内的嵌入的子集。通过将搜索限制到库或嵌入的子集,所描述的方法和系统可以节省处理能力、减少存储器使用量,并且在一些情况下可以在用户设备上实现。因此,所描述的实施例导致较低的功耗,这将节省操作成本,并且更快地识别相关内容,这将提供更好的用户体验。

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

示例实施例

图1a图示了用于检索用户生成的内容的示例过程。该过程利用平台10来接收图像100并处理图像100以生成嵌入101(例如,经由使用嵌入模型102)。然后,平台10访问存储在多个库103中的内容,以标识与用户生成的内容105相关联的最接近的编录的嵌入104。

在某些实施例中,标识最接近的编录的嵌入104可以利用嵌入维度空间内的距离。在实施例中,最接近的编录的嵌入104显示到嵌入101的最小距离。然后,平台10可以提供用户生成的内容105作为一种形式的输出。用户生成的内容105的示例类型可以包括可以针对图像100整体或针对图像100内的对象的音频或视觉注释。在一些情况下,用户生成的内容105可以被提供为叠加在图像100上的虚拟层。

图1b图示了用于对用户生成的内容进行编录的示例过程。该过程利用平台10来接收图像100并处理图像100以生成嵌入101。平台10然后访问存储在多个库103中的内容。例如,可以存在用于本地自然历史博物馆的库,可以存在用于哺乳动物的库,可以存在用于单个用户的库,和/或可以存在用于其它组织、对象的类别等的库。平台10将嵌入101与编录的对象(例如,属于与本地博物馆或哺乳动物相关联的一组对象或作为其成员的对象)相关联,作为库的一部分。通过这个过程,平台10可以将嵌入101作为编录的嵌入添加106到多个库103。虽然这个过程说明了嵌入的添加,但是用户生成的内容可以可选地与嵌入101一起被包括或用户生成的内容可以可选地与嵌入101相关联。对于这些情况,可以连同图像100一起提供用户生成的内容,或者可以在将嵌入与库相关联之后提供用户生成的内容。

在一些情况下,平台10可以将嵌入101作为编录的嵌入添加106到现有库。在一些情况下,平台10可以将嵌入101作为编录的嵌入添加106到新库。在实施例中,向库添加嵌入可以仅使用图像数据,包括图像元数据。在另一个实施例中,将嵌入与库相关联的过程可以使用诸如用户输入之类的附加数据来确定应当将嵌入添加到哪个或哪些库。

图2a图示了用于检索用户生成的内容的示例方法200。方法200的实施例包括以下步骤:接收201、处理202、访问203、标识204以及提供205。接收201数据集可以包括在处理202数据集以生成嵌入之前在本地存储数据集。在某些情况下,可以实时处理数据集(例如,包括流传输的视频的数据集)。

方法200还包括处理202数据集以生成嵌入。可以使用嵌入器模型来完成对数据集的处理202。嵌入器模型的示例包括人工神经网络,诸如前馈神经网络、循环神经网络(例如,长期短期记忆循环神经网络)、卷积神经网络或其它形式的神经网络。此外,生成嵌入可以使用人工神经网络的隐藏层中的一个或多个来生成嵌入。

方法200还包括访问203包括与编录的嵌入相关联的用户内容的库。例如,访问203库可以包括访问包含多个库的数据库;从多个库中定位库;并从该库读取数据。在一些实施例中,访问203库还可以包括将库下载到本地设备上。在一些实施例中,访问203库可以包括仅访问来自多个库的库的子集。另外,实施例可以包括用户或系统许可,使得访问库可以被用户或系统许可限制为访问多个库的子集、包含在库中的嵌入或编录的用户数据的子集或两者的组合。

方法200还包括标识204最接近的编录的嵌入。一般而言,标识204最接近的编录的嵌入可以至少部分地基于嵌入与一个或多个库中包含的一个或多个编录的嵌入的比较。在某些实施例中,比较可以包括确定嵌入与一个或多个编录的嵌入之间的属性,诸如距离。在示例实施例中,识别204最接近的编录的嵌入可以包括标识在嵌入维度空间内具有至该嵌入的最小距离的编录的嵌入。

方法200还包括提供205与最接近的编录的嵌入相关联的用户内容的项目。一般而言,提供205用户内容的项目可以允许本公开的实施例产生将来自平台用户的信息和知识链接在一起的定制用户体验。在某些实施例中,提供205用户内容的项目可以包括内容项目的列表。对于这些实施例,可以以展示内容项目与所接收图像的相关性的方式对内容项目的列表进行排序或标识。作为示例,实现该方法的计算系统接收食物菜肴的图片,并提供与标识出的最接近的编录的嵌入相关联的用户内容的项目的列表。该列表可以作为来自每个内容项目的摘录被提供,其中最相关的内容项目具有更普遍的摘录,而最不相关的内容项目具有更不普遍的摘录。在一个示例中,最常在餐馆中标识出食物菜肴,因此,提供该菜肴的餐馆的摘录是最大的。另一个示例摘录可以包括制作食物菜肴的菜谱,其可以以较小的字体呈现或在背景中呈现。

图2b图示了用于对用户生成的内容进行编录的示例方法210。方法210包括以下步骤:接收包括图像的数据集211;处理数据集以生成嵌入212;访问包括与编录的嵌入相关联的用户内容的库213;并且将嵌入与编录的对象相关联214。一般而言,对用户生成的内容进行编录包括与检索用户生成的内容相似的操作。两者中存在几个重叠的操作,并且可以在不脱离本公开的实施例的精神的情况下单独地或一起实践每种方法。

虽然为了说明和讨论的目的,图2a和图2b描绘了以特定次序执行的步骤,但是本公开的方法不限于特定示出的次序或布置。在不脱离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调整方法200和210的各个步骤。

图3a图示了在计算设备300上运行的平台10的示例硬件图。计算设备300可以包括一个或多个处理器307,其可以执行计算机可读指令305,以利用包括相机302和接收器301的组件。这些指令的示例包括用于检索数据集303、使用嵌入器模型304处理数据集303以及访问编录的嵌入306的方法。在一些实施例中,通信网络308可以为计算设备300提供管道以接收数据集303。一般而言,计算设备300可以包括智能电话、平板电脑、膝上型计算机和台式计算机,以及可以能够与通信网络308进行交互的其它本地或远程连接的设备。作为示例,计算设备300可以包括包含处理器307以及作为下载的应用的平台10的智能电话。在用智能电话相机302拍摄照片后,可以对照片进行预处理或照原样使用。智能电话可以访问作为应用的平台10,以运行用于接收照片(图像)和处理照片以生成嵌入的指令。在一些计算设备中,平台可以在使用相机之后或使用相机的任何时间自动执行这些步骤。

图3b图示了在通过通信网络308连接的一个或多个计算设备上运行的平台10的示例硬件图。每个计算设备可以包括一个或多个处理器307,其可以执行计算机可读指令305,以利用包括相机302和/或接收器301的组件。这些指令305还可以包括用于对由计算设备接收的数据集进行编录和检索的方法。

在示例实施例中,至少两个计算设备,用户设备311和服务器设备310,可以通过通信网络308进行交互。用户设备311和服务器设备310可以分别包括智能电话和数据库,并且通信网络可以包括互联网。在实施例中,服务器设备310可以包括包含多个编录的嵌入306的数据库,并且用户设备311可以下载编录的嵌入306的子集以与平台10一起使用。

在另一个实施例中,用户设备311可以使用相机302捕获图像,并且将图像作为数据集303的一部分通过通信网络308传送给服务器设备310。服务器设备310可以利用接收器301来处理数据集303,并且可以将数据集303写入存储器309。此外,服务器可以包括编录的嵌入的数据库。在接收到数据集303后,平台10可以执行指令305以使用嵌入器模型304来处理数据集303并访问编录的嵌入的数据库以标识最接近的编录的嵌入以及与最接近的编录的嵌入相关联的用户生成的内容。这种信息中的一些可以通过通信网络308被传输到用户设备311的接收器301。在用户设备处,平台可以执行用于提供用户生成的内容的指令305。提供用户生成的内容可以利用api来访问用户设备311组件,诸如相机302。作为非限制性示例,api可以提供用户生成的内容作为叠加在相机图像上的虚拟层。

一般而言,诸如图3b中所示的用户计算设备之类的计算设备可以是任何类型的计算设备,诸如例如个人计算设备(例如,膝上型计算机或台式机)、移动计算设备(例如,智能电话或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备或任何其它类型的计算设备。

在实现计算设备300的本公开的实施例中,计算设备300可以包括一个或多个处理器307和存储器309。一个或多个处理器307可以是任何合适的处理设备(例如,处理器核、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或操作性地连接的多个处理器。存储器309可以包括一个或多个非暂态计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等,以及它们的组合。存储器309可以是非本地化的,并且可以包括由处理器307执行以使计算设备300执行操作的指令305。

在一些实施方式中,用户计算设备311可以存储或包括一个或多个嵌入器模型304。例如,嵌入器模型304可以是或可以以其他方式包括各种机器学习模型,诸如神经网络(例如,深度神经网络)或其它类型的机器学习模型,包括非线性模型和/或线性模型。神经网络可以包括前馈神经网络、循环神经网络(例如,长短期记忆循环神经网络)、卷积神经网络或其它形式的神经网络。

在一些实施方式中,可以通过通信网络308从服务器计算设备接收一个或多个嵌入器模型304,将其存储在用户计算设备存储器中,然后由一个或多个处理器307使用或以其它方式实现。在一些实施方式中,用户计算设备可以实现嵌入器模型304的多个并行实例。

更特别地,嵌入器模型304可以访问位于一个或多个计算设备300上的编录的嵌入306和相关联的对象以训练嵌入器模型304。在一些实施例中,编录的嵌入306可以包括与(一个或多个)已知对象相关联的训练嵌入的子集。一般而言,这个训练数据提供了一种可以与人工神经网络(诸如卷积神经网络或循环神经网络)结合进行监督式学习的系统,以训练嵌入器模型304。当编录的嵌入306的数量由于新嵌入的关联而增加时,这个方法210的实施例在图2b中示出,嵌入器模型可以被配置为将一些或全部新数据采用到训练算法中。可替代地,本公开的一些实施例可以仅利用训练数据的静态集合。特别地,从图像生成嵌入可以利用将图像映射到离散值的n维空间的任何降维技术。作为示例,人工神经网络的隐藏层可以被用于生成嵌入。在一些实施例中,嵌入可以从单个隐藏层产生;在其它实施例中,嵌入可以从一个或多个隐藏层的平均产生;在某些实施例中,嵌入可以从一个或多个隐藏层的平均产生,其中每个隐藏层是从同一对象的不同图像生成的。在任何实施例中,嵌入器模型还可以结合来自数据集的附加数据。例如,图像位置和/或用户注释可以被用作对嵌入器模型的附加输入。总之,本公开的实施例可以提供用于将包括图像的数据集映射到n维空间的嵌入器模型,该n维空间对从显示相似特征或对象的图像生成的嵌入进行聚类。

附加地或可替代地,一个或多个嵌入器模型304可以被包括在根据客户端-服务器关系与用户计算设备通信的服务器计算设备中或以其它方式由其存储和实现。例如,嵌入器模型304可以由服务器计算设备实现为web服务的一部分。因此,可以在用户计算设备处存储和实现一个或多个嵌入器模型304,和/或可以在服务器计算设备处存储和实现一个或多个嵌入器模型304。

用户计算设备还可以包括接收用户输入的一个或多个用户输入组件,诸如接收器301。例如,用户输入组件或接收器可以是对用户输入对象(例如,手指或手写笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用来实现虚拟键盘。其它示例用户输入组件包括麦克风、传统键盘或用户可以通过其提供用户输入的其它手段。输入组件还可以将手势或瞳孔跟踪识别为用于接收的输入的机制。

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

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

如上所述,服务器计算设备可以存储或以其它方式包括一个或多个机器学习嵌入器模型304。例如,模型304可以是或可以以其它方式包括各种机器学习模型。示例机器学习模型包括神经网络或其它多层非线性模型。示例神经网络包括前馈神经网络、深度神经网络、循环神经网络和卷积神经网络。

用户计算设备和/或服务器计算设备可以经由与编录的嵌入306的交互来训练模型304,编录的嵌入306可以包括训练数据作为训练库的一部分,该训练库按某个周期性的时间被更新。训练计算系统可以与服务器计算设备分离地实现,或者可以是服务器计算设备的一部分。

本公开的实施例可以包括计算设备300上的训练系统,或者可以通过通信网络308访问的训练系统。训练计算系统可以包括一个或多个处理器307和存储器309。一个或多个处理器307可以是任何合适的处理设备(例如,处理器核、微处理器、asic、fpga、控制器、微控制器等),并且可以是一个处理器或操作性地连接的多个处理器。存储器309可以包括一个或多个非暂态计算机可读存储介质,诸如ram、rom、eeprom、eprom、闪存设备、磁盘等,以及它们的组合。平台10可以包括由处理器307执行以使训练计算系统执行操作的指令305。在一些实施方式中,训练计算系统包括一个或多个服务器计算设备或以其它方式由其实现。

训练计算系统可以包括模型训练器,该模型训练器使用各种训练或学习技术(诸如例如误差的反向传播)来训练存储在用户计算设备311和/或服务器计算设备310处的机器学习嵌入器模型304。在一些实施方式中,执行误差的反向传播可以包括执行通过时间的截断反向传播。模型训练器可以执行多种泛化技术(例如,权重衰退、丢弃等),以提高正被训练的模型的泛化能力。

特别地,模型训练器可以基于训练数据的集合来训练嵌入器模型304,该训练数据的集合可以包括编录的嵌入306的全部或子集。训练数据可以包括例如对象类别(例如,动物、食物、植物、艺术品等)和代表该类别的几个图像。

在一些实施方式中,如果用户已经提供了同意,那么可以由用户计算设备311来提供训练示例。因此,在这样的实施方式中,提供给用户计算设备311的模型304可以由训练计算系统在从用户计算设备311接收的特定于用户的数据上进行训练。在一些情况下,这个过程可以被称为使模型个性化。在一些实施方式中,系统和/或模型训练器可以利用联合学习技术来以隐私保护方式帮助从私有本地模型引导全局模型。

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

通信网络308可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,互联网)或其某种组合,并且可以包括任何数量的有线或无线链路。一般而言,可以使用各种通信协议(例如,tcp/ip、http、smtp、ftp)、编码或格式(例如,html、xml)和/或保护方案(例如,vpn、安全http、ssl)经由任何类型的有线和/或无线连接来携带通过网络180的通信。

图3a图示了可以被用于实现本公开的一个示例计算设备300。也可以使用其它计算设备300。例如,在一些实施方式中,用户计算设备311可以包括嵌入器模型304和编录的嵌入306。在这样的实施方式中,可以在用户计算设备311处本地训练和使用模型。在一些这样的实施方式中,用户计算设备311可以实现模型训练器304以基于特定于用户的数据来使模型个性化。

图3a和图3b描绘了根据本公开的示例实施例执行的一个或多个示例计算设备300的框图。计算设备300可以是用户计算设备311或服务器计算设备310。

计算设备300可以包括多个应用(例如,应用1至n)。每个设备可以包含其自己的机器学习库和(一个或多个)机器学习模型。例如,每个设备可以包括嵌入器模型。附加应用可以包括文本消息传递应用、听写应用、虚拟键盘应用、浏览器应用等。

如图3b中所示,平台10可以包括用于与计算设备的多个其它组件(诸如例如相机302和接收器301)进行通信的指令305。在一些实施例中,组件还可以包括一个或多个传感器、上下文管理器、设备状态组件和/或附加组件。在一些实施方式中,平台10可以使用api(例如,公共api)与每个设备组件通信。在一些实施方式中,每个应用使用的api特定于那个应用。在一些实施方式中,api可以使用公用api与每个应用通信,或者可以与设备管理器通信以确定特定于组件的指令(例如,跨所有应用的公用api)。

图4图示了用于该平台的现实世界示例。如图所示,平台10可以接收图像100,并且在某些实施方式中,平台10可以将图像10标识为包括雕塑,并且还提供与该雕塑相关的相关用户生成的内容105。在一些情况下,平台10还可以从图像或从元数据标识位置,并且还提供与该位置相关的相关用户生成的内容105。

附加公开

本文讨论的技术参考服务器、数据库、软件应用和其它基于计算机的系统,以及对此类系统采取的动作以及发送到此类系统和来自此类系统的信息。基于计算机的系统的固有灵活性允许在组件之间和之中进行任务和功能的多种可能的配置、组合以及划分。例如,本文讨论的过程可以使用单个设备或组件或组合工作的多个设备或组件来实现。数据库和应用可以在单个系统上实现,或者跨多个系统分布。分布式组件可以顺序或并行地操作。

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

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