具体实施方式
下面将参考构成本文一部分的附图更全面地描述本公开,并通过说明的方式示出某些示例实施例。然而,主题可以以各种不同的形式体现,并且因此,被涵盖或要求保护的主题旨在被解释为不限于本文所述的任何示例实施例;提供示例实施例仅仅是为了说明。同样,对要求保护或涵盖的主题的适用范围也相当广泛。例如,除此之外,主题可以体现为方法、设备、组件或系统。因此,实施例可以采用例如硬件、软件、固件或其任何组合的形式(软件本身除外)。因此,以下详细描述并不旨在以限制性的意义来理解。
在整个说明书和权利要求书中,术语可能具有在上下文中建议或暗示的细微含义,而不是明确规定的含义。同样,本文所用短语“在一个实施例中”不一定指代同一实施例,而本文所用短语“在另一实施例中”不一定指代不同的实施例。例如,其旨在要求保护的主题包括全部或部分示例性实施例的组合。
一般来说,术语至少可以部分从上下文中的使用中理解。例如,本文中使用的术语,例如“和”、“或”、“和/或”,可以包括多种含义,这些含义至少部分取决于使用这些术语的上下文。通常,“或”如果用于关联列表,例如A、B或C,则旨在表示A、B和C(此处用于包容性意义)以及A、B或C(此处用于排他性意义)。此外,本文所用术语“一个或多个”至少部分取决于上下文,可用于以单数意义描述任何特征、结构或特性,或可用于以复数意义描述特征、结构或特性的组合。类似地,诸如“一”、“一个”或“所述”之类的术语也可以被理解为表达单数用法或复数用法,这至少部分取决于上下文。此外,术语“基于”可以被理解为不一定是旨在表达一组排他性因素,替代地,可以允许存在不一定明确描述的其他因素,这也至少部分取决于上下文。
本公开是参考方法和设备的框图和操作图而如下描述的。要理解的是,框图或操作图的每个方框以及框图或操作图中方框的组合可以借助于模拟或数字硬件和计算机程序指令来实现。这些计算机程序指令可提供给用于改变其如本文所述的功能的通用计算机的处理器、专用计算机、ASIC或其他可编程数据处理装置,以便通过计算机的处理器或其他可编程数据处理装置执行的指令实现框图或一个或多个操作方框中规定的功能/动作。在一些替代的实施方式中,方框中记录的功能/动作可能不以操作图中记录的顺序发生。例如,根据所涉及的功能/动作,连续示出的两个方框实际上可以基本同时执行,或者有时可以逆序执行。
出于本公开的目的,非暂时性计算机可读介质(或计算机可读存储介质)存储有计算机数据,其中数据可以包括可由计算机执行的计算机程序代码(或计算机可执行指令)。通过示例而非限制的方式,计算机可读介质可以包括用于数据的有形或固定存储的计算机可读存储介质,或用于瞬时解释包含代码的信号的通信介质。本文所用的计算机可读存储介质指的是物理或有形存储(与信号相反),包括但不限于以任何方法或技术实现的用于有形存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、DVD或其他光存储、云存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可用于有形地存储所需的信息或数据或指令并可由计算机或处理器访问的任何其他物理或材料介质。
出于本公开的目的,术语“服务器”应被理解为指代提供处理、数据库和通信设施的服务点。通过示例而非限制的方式,术语“服务器”可以指代具有相关联的通信、数据存储和数据库设施的单个物理处理器,或者可以指代处理器的联网或群集的复合物和相关联的网络和存储设备,以及支持由服务器提供的服务的操作软件和一个或多个数据库系统以及应用软件。云服务器就是示例。服务器在配置或能力上可能有很大的差异,但一般来说,服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口或一个或多个操作系统。
出于本公开的目的,“网络”应被理解为指代可以耦合设备使得可以在例如服务器和客户端设备或其他类型的设备之间(包括例如通过无线网络耦合的无线设备之间)交换通信的网络。网络还可以包括大容量存储,例如网络附接存储(NAS)、存储区域网络(SAN)或其他形式的计算机或机器可读介质。网络可以包括因特网、一个或多个局域网(LAN)、一个或多个广域网(WAN)、线型连接、无线型连接、蜂窝或其任何组合。同样,可以采用不同架构或者可以适用不同协议或与不同协议兼容的子网络,可以在更大的网络内进行互操作。例如,各种类型的设备可用于为不同的架构或协议提供互操作能力。作为一个说明性示例,路由器可以另外在单独且独立的LAN之间提供链路。
出于本公开的目的,应将“无线网络”理解为将客户端设备与网络耦合。无线网络可以采用独立的自组网络、网状网络、无线LAN(WLAN)网络、蜂窝网络等。无线网络还可以包括通过无线无线电链路等耦合的终端、网关、路由器等的系统,其可以自由、随机移动或任意组织它们,从而使网络拓扑结构有时甚至可以快速变化。
无线网络还可以采用多种网络访问技术,包括Wi-Fi、长期演进(LTE)、WLAN、无线路由器(WR)网格或第2、3、4或5代(2G、3G、4G或5G)蜂窝技术等。例如,网络访问技术可以为移动程度不同的诸如客户端设备之类的设备提供广域覆盖。
例如,网络可以通过一种或多种网络访问技术来实现RF或无线类型通信,该一种或多种网络访问技术例如是全球移动通信系统(GSM)、通用移动通信系统(UMTS)、通用分组无线电服务(GPRS)、增强型数据GSM环境(EDGE)、3GPP长期演进(LTE)、LTE高级、宽带码分多址(WCDMA)、蓝牙、802.11b/g/n等。无线网络实际上可以包括任何类型的无线通信机制,通过该机制,信号可以在设备(例如客户端设备或计算设备)之间、网络之间或网络内等被传送。
计算设备可以能够例如通过有线或无线网络发送或接收信号发送或接收信号,或者可以能够(例如作为物理存储器状态在存储器中)处理或存储信号,并且因此可以作为服务器操作。因此,能够作为服务器操作的设备可以包括(例如)专用机架式服务器、台式计算机、膝上型计算机、机顶盒、结合各种功能(例如上述设备的两个或更多个功能)的集成设备等。服务器在配置或能力上可能有很大的差异,但一般来说,服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口或一个或多个操作系统。
出于本公开的目的,客户端(或消费者或用户)设备可以包括能够(例如通过有线或无线网络)发送或接收信号的计算设备。例如,客户端设备可以包括台式计算机或便携式设备,例如蜂窝电话、智能电话、显示寻呼机、射频(RF)设备、红外(IR)设备、近场通信(NFC)设备、个人数字助理(PDA)、手持计算机、平板计算机、平板设备、膝上型计算机、机顶盒、可穿戴计算机、智能手表、结合各种功能(如上述设备的功能)的集成或分布式设备等。
客户端设备可以在能力或功能方面有所不同。所要求保护的主题旨在涵盖广泛的潜在变化。例如,一个简单的智能手机、平板设备或平板电脑可以是客户端设备。在另一个示例中,支持web的客户端设备或前面提到的设备可以包括高分辨率屏幕(例如HD或4K)、一个或多个物理或虚拟键盘、大容量存储、一个或多个加速度计、一个或多个陀螺仪、全球定位系统(GPS)或其他位置识别类型能力,或具有高度功能性的显示器(例如触摸式彩色2D或3D显示器)。
客户端设备可以包括或可以执行各种可能的应用程序,例如使得能够与其他设备通信的客户端软件应用程序。客户端设备还可以包括或执行用于传送内容(例如文本内容、多媒体内容等)的应用程序。客户端设备还可以包括或执行用于执行各种可能的任务的应用程序,这些任务例如是浏览、搜索、播放、流式传输、或显示各种形式的内容,包括本地存储或上载的图像和/或视频或游戏(例如专业体育赛事的现场直播)。上述内容被提供以示出所要求保护的主题旨在包括各种可能的功能或能力。
如本文所讨论的,对“广告”的引用应理解为包括但不限于被体现为媒体项的数字媒体内容,该媒体项提供由其他用户、服务、第三方、实体等提供的信息。这样的数字广告内容可以包括计算机设备可呈现的任何类型的已知或将要已知的媒体,包括但不限于视频、文本、音频、图像和/或任何其他类型的已知或将要已知的多媒体项或对象。在一些实施例中,数字广告内容可以被格式化为提供深度链接功能和/或能力的超链接多媒体内容。因此,虽然有些内容被称为广告,但它仍然是计算机设备可呈现的数字媒体项,并且这样的数字媒体项包括由网络关联方提供的内容中继促销内容。
本文所述原理可以用多种形式体现。所公开的系统和方法提供用于训练和应用视觉识别模型的高级机制,以便更准确和有效地检测、识别或以其他方式标识视频文件的视频帧内的特定对象。
如上所讨论的,常规的识别技术在视频上实现图像处理机制,以标识特定的对象。然而,这种技术不仅效率低下,而且会产生不准确的结果。也就是说,如上所讨论的,由于视频帧没有表现出与图像相同的视觉特性(例如,它们具有动态对象而不是静态对象,并且进行了编码),因此将图像识别技术应用于视频会产生需要大量“事后”处理的结果以便理解和/或校正这些结果。除了效率低下和结果不准确的明显缺点外,这样的常规应用程序还需要大量的数据处理,这会导致设备和网络资源的浪费,因为系统必须执行额外的计算步骤,以确保结果准确。
所公开的系统和方法提供了一种新颖的图像到视频的引导框架,该框架减少了产生视频训练数据集的时间量,从而提高了在数据集的创建和最终应用方面的准确性和效率。例如,常规的系统需要大约3周的时间来训练一个系统,使其了解数据集中通常大量的信息(例如,数百万幅图像);而所公开的系统和方法可以在更短的时间内(例如,3天)就相同的数据量训练系统。如本文所讨论的,所公开的系统和方法利用图像搜索和视频搜索的结果(例如,图像和视频的引导),以提供通过每次学习迭代提高其准确性和效率的主动学习系统。因此,在分析视频帧时,所公开的框架正在执行一个系统,该系统利用所引导的图像和视频并以计算高效的方式输出准确的结果,从而为文件的高质量输出节省系统资源,而不是分析/标识正在被显示的对象。
本文讨论的改进的处理框架的应用可以分析已知或将要已知的任何格式的视频(例如,任何类型的文件格式和/或呈现格式)。出于本公开的目的,本文的讨论集中在视频内的对象识别;然而,这不应被解释为限制,因为任何类型的已知或将要已知的媒体格式(例如图像或其他形式的多媒体)都可以在不脱离本公开的范围的情况下使用。
根据一些实施例,如下文至少针对图8所详细讨论的,与视频文件的识别处理相关联、由其衍生或以其他方式从其标识、在其期间或作为其结果的信息(如本文所讨论的)可用于货币化目的,并在提供内容、递送内容或使得这样的设备能够通过网络访问内容时被定向广告。向与这些所发现的内容相关联的用户提供定向广告可能会导致这些广告的点击率(CTR)增加和/或广告商为由第三方提供的这些内容(例如,由广告商提供的数字广告内容,其中广告商可以是第三方广告商,或与本文讨论的系统和方法直接相关联或托管本文讨论的系统和方法的实体)提供服务的投资回报率(ROI)增加。
现在将参考附图更详细地描述某些实施例。一般而言,参考图1,示出了根据本公开的实施例的系统100。图1示出了通用环境的组件,可以在该通用环境中实践本文讨论的系统和方法。实践本公开并非需要所有的组件,并且可以在不脱离本公开的精神或范围的情况下对组件的布置和类型进行变型。如图所示,图1的系统100包括局域网(“LAN”)/广域网(“WAN”)——网络105、无线网络110、移动设备(客户端设备)102-104和客户端设备101。图1另外包括各种服务器,例如内容服务器106、应用程序(或“App”)服务器108和广告(“ad”)服务器130。
下面更详细地描述了移动设备102-104的一个实施例。然而,一般而言,移动设备102-104可以包括实际上能够通过网络(例如网络105、无线网络110等)接收和发送信息的任何便携式计算设备。移动设备102-104通常也可以描述为被配置为便携式的客户端设备。因此,移动设备102-104实际上可以包括能够连接到另一个计算设备并接收信息的任何便携式计算设备,如上所讨论的。因此,移动设备102-104通常在能力和功能方面广泛变化。例如,手机可以具有数字键盘和在其上只能显示文本的几行单色液晶显示器。在另一个示例中,支持web的移动设备可以具有触摸屏、触笔和可以显示文本和图形两者的HD显示器。
移动设备102-104还可以包括被配置为从另一个计算设备接收内容的至少一个客户端应用程序。在一些实施例中,移动设备102-104还可以与非移动客户端设备(例如客户端设备101等)通信。在一个实施例中,这样的通信可以包括发送和/或接收消息;搜索,查看和/或共享照片、音频剪辑、视频剪辑;或任何其他形式的通信。因此,客户端设备101还可以具有用于显示信息的可导航视图的不同功能。
客户端设备101-104可以能够例如通过有线或无线网络发送或接收信号发送或接收信号,或者可以能够(例如作为物理存储器状态在存储器中)处理或存储信号并且因此可以作为服务器操作。
无线网络110被配置为将移动设备102-104及其组件与网络105耦合。无线网络110可以包括各种无线子网络中的任何一种,这些子网络可以进一步覆盖独立的自组网络等,以为移动设备102-104提供面向基础设施的连接。这样的子网络可能包括网状网络、无线LAN(WLAN)网络、蜂窝网络等。
网络105被配置为将内容服务器106、应用程序服务器108等与其他计算设备(包括客户端设备101)耦合,并通过无线网络110连接到移动设备102-104。网络105能够采用任何形式的计算机可读介质或网络,以用于将信息从一个电子设备传送到另一个电子设备。
在一些实施例中,所公开的网络110和/或105可以包括(一个或多个)内容分布网络。“内容递送网络”或“内容分布网络”(CDN)通常指代包括由一个或多个网络链接的计算机或计算设备的集合的分布式内容递送系统。CDN可以采用软件、系统、协议或技术来促进各种服务,例如存储、缓存、内容传送或流媒体或应用程序。CDN还可以使实体能够全部或部分地操作或管理另一站点基础设施。
内容服务器106可以包括一个设备,该设备包括通过网络向另一个设备提供任何类型或形式的内容的配置。可作为内容服务器106操作的设备包括个人计算机、台式计算机、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、服务器等。内容服务器106可以进一步提供各种服务,包括但不限于流媒体和/或下载媒体服务、搜索服务、电子邮件服务、照片服务、web服务、社交网络服务、新闻服务、第三方服务、音频服务、视频服务、即时消息(IM)服务、SMS服务、MMS服务、FTP服务、IP电话(VOIP)服务等。
广告服务器130包括存储在线广告以向用户呈现的服务器。“广告服务”是指代用于(例如,在在线会话期间或在使用计算平台期间)在网站、应用程序或其他用户更容易看到的地方放置在线广告的方法。各种货币化技术或模型可用于与赞助广告结合,包括与用户数据相关联的广告。这样的赞助广告包括货币化技术,其包括赞助搜索广告、非赞助搜索广告、担保和非担保递送广告、广告网络/交换、广告定向、广告服务和广告分析。这种系统可以将在网页创建期间(在某些情况下不到500毫秒)将近乎即时的广告投放机会的拍卖与更高质量的广告投放机会结合在一起,从而使每个广告获得更高的收入。也就是说,当广告商相信他们的广告将被投放在正在被呈现给用户的高度相关的内容中或连同该高度相关的内容一起被投放时将支付更高的广告费率。减少量化高质量广告投放所需的时间提供了广告平台的竞争优势。因此,更高的速度和更相关的上下文检测改进了这些技术领域。
例如,购买或销售在线广告的过程可能涉及许多不同的实体,包括广告商、出版商、代理、网络或开发商。为了简化该过程,被称为“广告交换”的组织系统可以与广告商或出版商建立联系,例如通过用于促进从多个广告网络购买或销售在线广告库存的平台。“广告网络”是指代来自出版商的(例如,一同向广告商提供的)广告空间供应的聚集。对于雅虎这样的门户网站,广告可以显示在网页上或应用程序中,其是至少部分基于一个或多个搜索项从用户定义的搜索中产生的。如果所显示的广告与一个或多个用户的兴趣相关,则广告可能对用户、广告商或门户网站有利。因此,已经开发了各种技术来推断用户的兴趣、用户意图或随后针对用户定向相关广告。一种呈现用于定向广告的方法包括采用人口统计学特征(例如,年龄、收入、性别、职业等)来例如分组预测用户行为。可以至少部分基于所预测的(一个或多个)用户行为来将广告呈现给定向受众中的用户。
另一种方法包括配置文件类型的广告定向。在这种方法中,可以生成特定于用户的用户配置文件来对用户行为建模,这可以通过例如跟踪用户通过网站或网站网络的路径并至少部分基于最终递送的页面或广告编译配置文件。可以标识相关性,例如用户购买。通过将内容或广告定向到特定用户,可以将所标识的相关性用于定向潜在购买者。在广告的呈现期间,呈现系统可以收集有关呈现给用户的广告类型的描述性内容。可以收集广泛的描述性内容,包括特定于广告呈现系统的内容。收集到的广告分析可以发送到对于广告呈现系统而言远程的位置以进行存储或进一步评估。如果广告分析的传递不是立即可用的,则收集到的广告分析可由广告呈现系统存储,直到这些广告分析的传递可用。
在一些实施例中,用户能够访问由服务器106、108和/或130提供的服务。通过使用其各种设备101-104的网络105,这可以被包括在非限制性示例中,身份验证服务器、搜索服务器、电子邮件服务器、社交网络服务服务器、SMS服务器、IM服务器、MMS服务器、交换服务器、照片共享服务服务器和旅行服务服务器。在一些实施例中,诸如视频应用程序(例如
Amazon
HBO
等)之类的应用程序可以由应用程序服务器108(或内容服务器106等)托管。因此,应用程序服务器108可以存储各种类型的应用程序和应用程序相关信息,包括应用程序数据和用户配置文件信息(例如,与用户关联的标识和行为信息)。还应该理解的是,内容服务器106还可以将与由内容服务器106提供的内容和服务相关的各种类型的数据存储在关联的内容数据库107中,如下详细讨论的。存在这样的实施例,其中网络105还与可信搜索服务器(TSS)耦合/连接,该服务器可用于根据本文讨论的实施例呈现内容。存在这样的实施例,其中TSS功能可以体现在服务器106、108和/或130中。
此外,尽管图1分别将服务器106、108和130示出为单个计算设备,但本公开并不局限于此。例如,服务器106、108和/或130的一个或多个功能可以分布在一个或多个不同的计算设备上。此外,在一个实施例中,服务器106、108和/或130可以集成到单个计算设备中,而不脱离本公开的范围。
图2是示出客户端设备的示意图,其显示了可在本公开中使用的客户端设备的示例实施例。客户端设备200包括的组件可以比图2中所示的那些组件多或少。然而,所示的组件足以公开用于实施本公开的说明性实施例。例如,客户端设备200可以表示上述与图1相关的客户端设备。
如图所示,客户端设备200包括通过总线224与大容量存储器230通信的处理单元(CPU)222。客户端设备200还包括电源226、一个或多个网络接口250、音频接口252、显示器254、键盘256、照明器258、输入/输出接口260、触觉界面262、可选的全球定位系统(GPS)接收器264和(一个或多个)相机或其他光学、热或电磁传感器266。设备200可以包括一个相机/传感器266或多个相机/传感器266,如本领域技术人员所理解的。(一个或多个)相机/(一个或多个)传感器266在设备200上的位置可以按照每个设备200的型号、每个设备200的能力等、或者它们的一些组合而改变。电源226为客户端设备200供电。
客户端设备200可以可选地与基站通信(未显示),或者直接与另一个计算设备通信。网络接口250有时被称为收发器、收发设备或网络接口卡(NIC)。
音频接口252被布置为产生和接收诸如人声之类的音频信号。例如,音频接口252可以耦合到扬声器和麦克风(未显示),以便与其他人进行通信和/或生成针对某些动作的音频确认。显示器254可以是液晶显示器(LCD)、气体等离子体、发光二极管(LED)或与计算设备一起使用的任何其他类型的显示器。显示器254还可以包括触敏屏,该触敏屏被布置成接收来自诸如触针或人类手的手指之类的对象的输入。
键盘256可以包括被布置为从用户接收输入的任何输入设备。照明器258可以提供状态指示和/或提供光。
客户端设备200还包括用于与外部通信的输入/输出接口260。输入/输出接口260可以使用一种或多种通信技术,例如USB、红外线、蓝牙等。触觉界面262被布置为向客户端设备的用户提供触觉反馈。
可选的GPS收发器264可以确定客户端设备200在地球表面上的物理坐标,其通常以纬度和经度值输出位置。GPS收发器264还可以使用其他地理定位机制,包括但不限于三角测量、辅助GPS(AGPS)、E-OTD、CI、SAI、ETA、BSS等,以进一步确定客户端设备200在地球表面上的物理位置。然而,在一个实施例中,客户端设备可以通过其他组件提供可用于确定设备物理位置的其他信息,包括例如MAC地址、Internet协议(IP)地址等。
大容量存储器230包括RAM 232、ROM 234和其他存储装置。大容量存储器230示出了用于存储信息的计算机存储介质的另一个示例,该信息例如是计算机可读指令、数据结构、程序模块或其他数据。大容量存储器230存储基本输入/输出系统(“BIOS”)240,以用于控制客户端设备200的低级操作。大容量存储器还存储用于控制客户端设备200的操作系统241。
存储器230还包括一个或多个数据存储,客户端设备200可以利用该一个或多个数据存储以存储应用程序242和/或其他信息或数据等。例如,可以采用数据存储来存储描述客户端设备200的各种能力的信息。然后,可以基于各种事件中的任何一种将信息提供给另一个设备,该各种事件包括在通信期间作为头文件(例如,HLS流的索引文件)的一部分被发送、根据请求被发送等。能力信息的至少一部分还可以存储在客户端设备200内的磁盘驱动器或其他存储介质(未显示)上。
应用程序242可以包括计算机可执行指令,当由客户端设备200执行时,该指令发送,接收和/或以其他方式处理音频、视频、图像,并实现与服务器和/或另一客户端设备的另一用户的通信。应用程序242还可以包括搜索客户端245,搜索客户端245被配置为发送、接收和/或以其他方式处理搜索查询和/或搜索结果。
在描述了所公开的系统和方法中采用的一般架构的组件之后,现在将参考图3-8描述组件对所公开系统和方法的一般操作。
图3是示出用于执行本文讨论的系统和方法的组件的框图。图3包括视觉识别器引擎300、网络315和数据库320。视觉识别器引擎300可以是专用机器或处理器,并且可以由应用程序服务器、内容服务器、社交网络服务器、web服务器、搜索服务器、内容提供商、第三方服务器、用户的计算设备等或其任何组合托管。
根据一些实施例,视觉识别器引擎300可以作为在用户设备上执行的独立应用程序来体现。在一些实施例中,视觉识别器引擎300可以作为安装在用户设备上的应用程序运行,并且在一些实施例中,这样的应用程序可以是用户设备通过网络访问的基于web的应用程序。在一些实施例中,视觉识别器引擎300可以作为增强脚本、程序或应用程序(例如,插件或扩展)安装到另一个媒体内容托管/服务应用程序(例如,Yahoo!
Yahoo!
Video、
Video、
Video、
Video等)。
数据库320可以是任何类型的数据库或存储器,并且可以与网络上的内容服务器(例如,内容服务器、搜索服务器或应用程序服务器)或用户设备(例如,图1-2的设备101-104或设备200)相关联。数据库320包括跟与用户、服务、应用程序、内容(例如视频)等相关的本地和/或网络信息相关联的数据和元数据的数据集。这样的信息可以独立地存储和索引在数据库320中和/或作为链接或关联的数据集。如上所讨论的,应当理解的是,数据库320中的数据(和元数据)可以是任何类型的信息和类型,无论是已知的还是将要已知的,都不会脱离本公开的范围。
根据一些实施例,数据库320可以为用户存储数据,例如用户数据。根据一些实施例,所存储的用户数据可以包括但不限于与用户配置文件相关联的信息、用户兴趣、用户行为信息、用户属性、用户偏好或设置、用户人口统计信息、用户位置信息、用户传记信息等,或者其一些组合。在一些实施例中,出于创建、流式传输、推荐、呈现和/或传送视频的目的,用户数据还可以包括用户设备信息,包括但不限于设备标识信息、设备能力信息、语音/数据载体信息、因特网协议(IP)地址、安装或能够安装或执行在这样的设备上的应用程序、和/或它们的任何或某些组合。应当理解,数据库320中的数据(和元数据)可以是与用户、内容、设备、应用程序、服务提供商、内容提供商相关的任何类型的信息,无论是已知的还是将要已知的,而不脱离本公开的范围。
根据一些实施例,数据库320可以存储与来自各种媒体和/或服务提供商和/或平台的视频内容相关联的数据和元数据。例如,信息可以与以下项相关与但不限于以下项:视频的内容类型、与视频相关联的类别、与视频像素和帧相关联的信息、与视频的提供者相关联的信息、与视频中涉及的播放机相关的信息、与在视频中描绘的活动相关联的信息、以及与视频文件相关联的任何其他类型的已知或将要已知的属性或特征、或它们的一些组合。此外,数据库320中针对每个视频的视频信息可以包括但不限于以下属性,包括但不限于视频的流行程度、视频质量、视频的新旧程度(何时被发布、共享、编辑等)等。这样的因素可以从由用户、服务提供商(即
),由提供视频内容的内容/服务提供商(如
ABC
),或由其他第三方服务(例如rottentomatoes.com、IMDB
TM、
等),或由它们的一些组合提供的信息中得出。
根据一些实施例,在接收或分析这样的视频信息时,可以将其作为每个视频和/或视频帧的N维向量(或特征向量)表示存储在数据库320中,其中与视频相关联的信息可以被转换为N维向量上的节点。在一些实施例中,当标识、检测和/或跟踪视频中的数字对象时,与其对应的信息也可以以类似的方式存储在数据库320中。数据库320可以将数据库320中的视频信息存储和索引为视频数据和元数据的链接集合,其中数据和元数据关系可以被存储为N维向量。这样的存储可以通过任何已知或将要已知的向量或数组存储来实现,包括但不限于散列树、队列、堆栈、VList或任何其他已知或将要已知的动态存储器分配技术或方法。虽然上述存储讨论涉及对视频和与其相关的视频信息的向量分析,但所存储的视频信息可以根据任何已知或将要已知的计算分析技术或算法来分析、存储和索引,这些技术和算法例如但不限于聚类分析、数据挖掘、贝叶斯网络分析、隐马尔可夫模型、人工神经网络分析、逻辑模型和/或树分析等。
出于本公开的目的,如上所讨论的,在一些实施例中对视频(存储在数据库320中并位于数据库320中)整体进行了讨论;然而,不应将其解释为限制本文讨论的系统和方法的应用。也就是说,虽然在本公开中参考了视频(例如流媒体、可下载或点播(on-demand)视频),但也可以使用其他形式的用户生成的内容和相关联的信息(包括例如文本、音频、多媒体、RSS源信息)而不脱离本申请的范围,这些信息可以根据本文讨论的系统和方法由视觉识别器引擎300传送和/或访问和处理。
如上所讨论的,参考图1,网络315可以是任何类型的网络,例如但不限于无线网络、局域网(LAN)、广域网(WAN)、因特网或其组合。网络315促进了视觉识别器引擎300和所存储的资源的数据库320的连接。实际上,如图3中所示,视觉识别器引擎300和数据库320可以通过任何已知或将要已知的方法直接连接,该方法连接和/或实现这样的设备和资源之间的通信。
主处理器、服务器或设备组合(其包含根据本文的专用功能编程的硬件)为方便起见被称为视觉识别器引擎300,并且包括训练模块302、推断模块304、注释模块306和应用模块308。应理解的是,本文讨论的(一个或多个)引擎和模块是非详尽的,因为附加的或更少的引擎和/或模块(或子模块)也可适用于所讨论的系统和方法的实施例。下面将讨论每个模块的操作、配置和功能,以及它们在本公开的实施例中的作用。
转到图4,示出了图像到视频引导训练框架的总体数据流400。数据流400提供了视觉识别器引擎300如何基于图像和视频的引导以新颖的方式进行训练的描绘。如上所讨论的,这种新技术利用从图像和视频数据集两者提供的数据,而不是像常规系统那样简单地利用图像数据集。从下面与图4和图5以及图6-7中的讨论中可以清楚地看到,对引擎300的训练的初始迭代从图像数据集的使用开始,然后转换到图像和视频数据集两者,最后完全单独利用视频数据集信息,从而提供常规系统所缺乏的视频中对象检测的准确性。
数据流400涉及图像搜索引擎404、视频搜索引擎408和对象检测模型412之间的交互。在一些实施例中,图像搜索引擎404和视频搜索引擎408可以是单独的搜索引擎,并且在一些实施例中,引擎404和引擎408可以分别是针对特定数据类型(即,图像文件和视频文件)执行单独搜索的同一引擎。
数据流400从输入402开始。输入402包括n个查询项。在一些实施例中,每个输入402可以是一组项,其中每个项对应于请求检测的单个对象。例如,如果用户希望为两(2)个类别(狗和猫)构建对象检测系统,则用户可以提供两组查询项,每一组包含不同品种的狗和猫的名称。例如,一组可以包括(狗):金毛猎犬,小猎犬,猎犬,斗牛犬;另一组可以包括(猫):德文雷克斯猫(Devon rex),斑猫(Tabby),斯芬克斯(Sphinx),短毛。
在接收到这些输入402后,系统分别通过引擎404和408执行图像搜索和视频搜索。在搜索和标识了每个输入查询402中标识的每个品种的预定数量后,将下载所标识的结果(并将其存储在数据库320中)。由图像搜索引擎402标识的图像结果406被假定为“弱标记”,因为所标识的图像很可能包含查询项。这一假定是基于图像搜索引擎固有的搜索能力和功能而做出的,因为搜索引擎对图像集合的数据和元数据进行解析,并且然后根据由任何已知或将要已知的搜索引擎执行的任何已知或将要已知的技术来标识与搜索项匹配的特定图像。
以类似的方式,由视频搜索引擎408标识的视频结果410也被假定与查询项相关。然而,它们被假定为“未标记的”。对视频结果的“未标记”假定是基于这样一个事实,即这些视频文件上没有可用的帧级注释。因此,引擎408根据由已知或将要已知的视频搜索引擎执行的已知或将要已知的视频搜索功能来分析、解析、确定或以其他方式标识来自与视频相关的数据和元数据的视频结果。
从图像搜索引擎404下载图像搜索结果406并从视频搜索引擎410下载视频搜索结果410后,这些结果将通过对象检测模型412运行。针对下面的图5,详细讨论了对象检测模型412的运行所执行的图像到视频引导处理步骤,并且作为该处理的结果,一组带注释的示例414被生成,其用于训练视觉识别器引擎300。如下文关于图5所讨论的,带注释的示例414包括基于对未标记视频410和弱标记图像406的比较/分类来注释出的一组带注释视频。因此,如下文关于图7详细讨论的,经训练的视觉识别器引擎300可以呈现、流式传输、下载或以其他方式播放视频,并且在呈现视频的每个帧集期间,该引擎300可以利用带注释的示例414执行对象检测建模,其作为确定和标识哪些对象在每个帧集中的帧中和帧之间被描绘的基础。
转到图5,示出了由对象检测模型412执行的图像到视频引导。图5描绘了导致视觉识别器引擎300的迭代训练的迭代递归回路。也就是说,图5中的建模412描绘了对来自图像和视频的数据的引导,其中未标记的视频最终被注释并转换为用于训练引擎300的带注释的示例414。如上所讨论的,这个迭代过程中的关键是建模412的机内循环方面。在每次迭代中,对象检测模型412在从“到该迭代”结果产生的带注释的示例414上训练视觉识别引擎300;因此,在每次迭代后,仅对视频数据的准确性和依赖性增加(例如,组成带注释的示例414的图像数据的部分降低,而视频数据的部分增加),从而使引擎300能够在视频帧上准确地执行对象建模。
建模412从帧采样器450对未标记的视频410进行采样开始。在一些实施例中,采样器450执行神经网络(例如卷积神经网络(CNN))算法、技术或机制,以便对视频410的每个帧执行区域建议。在一些实施例中,这涉及将CNN模型应用于视频410中的每个视频的每个帧,从而解析和标识(在一些实施例中,提取)每个视频帧的帧数据。如本领域技术人员所理解的,这样的应用在被称为“区域建议”的过程中产生,在该过程中,视频的输入帧(即图像帧)被输入到采样器450并且输出包含这样的帧,所述帧具有应用于具有视觉显著性的阈值水平的特定检测元素的边界框。因此,使用上面的示例,对于“猫”视频,边界框将应用于其中描绘了猫的帧的区域。因此,这将导致视频采样,使得只有具有所需对象的帧被呈现给对象检测器452。
在一些替代实施例中,采样器450利用已经被人类贴标机458标记的帧作为采样/过滤视频410的视频帧的基础。视频包含许多冗余帧,并且通过利用来自人类标记帧(其提供了关于哪些帧包含某个对象的指示)的数据,采样器可以跨一系列“未标记”的帧地跟踪该对象。因此,在一些实施例中,采样器450可以通过标识人类标记帧开始,然后执行对象跟踪技术,以确定在标记帧周围的具有相似内容的帧(即,其中描绘了该对象的帧)。
在一些实施例中,采样器450可以通过从具有已知标签的帧开始执行CNN区域建议技术和人类标记技术,然后通过上述CNN区域建议技术来处理周围帧。
在采样器450对视频410的帧进行采样后,将结果提供给对象检测器452,对象检测器452还接收带注释的示例414作为输入。如上所讨论的,在建模412的第一次迭代期间,带注释的示例414仅包含“弱标记”图像406(并且在随后的迭代期间,示例414包含越来越明显的图像数据与视频数据的反比)。因此,对于引擎300的第一次训练迭代,对象检测器接收来自采样器450的视频410的采样帧以及与带注释的示例414相关的数据(对于第一次迭代,带注释的示例414包括弱标记图像406)。然后,对象检测器在这些输入上执行任何已知或将要已知的视觉识别模型,包括例如,可变形零件模型、单帧检测器(Single Shot Detector,SSD)、只看一次(You Only Look Once,YOLO)检测器等。
由对象检测器452执行的对示例414和采样视频410的这种视觉识别建模的结果是具有推断标签的视频帧454。例如,通过使用上面涉及“猫”和“狗”的示例,未标记的视频410现在具有特定的帧,该特定的帧用指示符标记(或加标签)以指示在这些帧中检测到猫或狗的位置。这样的标记可以包含以下信息:{(视频ID、帧ID、X坐标、Y坐标、宽度、高度、类别_标记)}。“视频ID”指示该帧采样自视频410中的哪个视频;“X坐标”和“Y坐标”值指示在该帧内的猫/狗被描绘的位置处的X-Y坐标;“宽度”和“高度”值指示应用于检测到的猫/狗的边界框的大小坐标;并且“类别_标记”指示检测到的是猫还是狗。
然后,建模412取从对象检测器452输出的带有推断标签的帧454,并应用帧选择器456来确定帧454是否应被添加到带注释的示例中,或者是否需要人类贴标机审查。此确定是基于针对每个带推断标签的帧454执行的置信度确定。在一些实施例中,这涉及通过应用人工网络分类器分析帧,并确定置信值,该置信值指示推断标签被应用的准确程度。例如,如果猫被描绘在某个帧中,并且该帧被相应地标记,并且猫的描绘没有被场景中的另一个对象阻碍,则置信值可以确定为高;然而,如果猫的耳朵和头被隐藏,则这可能导致低置信值,因为猫和狗的身体可能是相似的并导致对象分类不准确。如果由分类器针对给定帧454确定的置信值等于或高于由系统操作员、管理员或用户设置的作为应用程序特定变量的阈值(例如90%),则将帧454添加到带注释的示例414中。如果置信值低于该阈值,但高于由系统操作员、管理员或用户设置的作为应用程序特定变量的最小阈值(例如,10%),则将帧454提供给人类贴标机458以供审查和/或校正。当由贴标机458进行审查和/或校正(这可能涉及审查帧并确认、校正或从帧中移除标签)时,对其进行注释并将其添加到带注释的示例414中。如果帧454的推断标签低于最小阈值,则可以将其丢弃。
400的建模过程和图4-5的子过程412被迭代地执行,并产生准确、高效训练的视觉识别器引擎300,其可以在视频被呈现/播放时容易地标识视频中的特定对象。如上所讨论的,建模400/412是通过使用图像开始训练并缓慢移动到视频帧作为这样的训练的基础来执行的。如上所述,通过web搜索引擎搜索到的图像往往更准确(例如,当使用项“猫”进行搜索时,可以预期会看到猫图像),但对于视频来说,这不一定是正确的。即使视频是基于查询项来标识的,也没有信息指示视频的哪些帧实际包含该查询项。上面讨论的框架在过程开始时利用图像搜索结果来指导如何分析视频帧,从而产生图像到视频的引导。这个域到域的引导结合了主动学习和跨域引导的概念,使视频帧在被呈现时能够被主动分析,并被精确处理以标识这些帧在一系列这样的帧上实际描绘了什么。
转向图6A-7,本文讨论的过程详细说明了根据本公开的一些实施例执行的步骤,以用于构建和实现如上关于图4-5所述的机内循环、图像到视频引导技术。图6A-6B的过程详述了构建和训练框架的步骤(如图4和5分别所描绘的)并且图7的过程700详述了将这样的框架应用于视频的步骤(即,当视频在计算设备(例如,用户的移动设备)上呈现时)。
转到图6A的过程600,其进一步讨论了上述关于图4的数据流400讨论的步骤,对视觉识别器引擎300进行训练以使其具备标识视频文件的每帧内的特定元素的功能。根据本公开的实施例,过程600的步骤602-610由视觉识别器引擎300的训练模块302执行,步骤612由推断模块304执行,并且步骤614由注释模块306执行。
过程600从步骤602开始,其中接收一组查询项。如上文关于图4所讨论的,这可能涉及接收期望检测到的对象类型的若干术语(用于训练引擎300)。在步骤604和606中,图像搜索引擎和视频搜索引擎执行对步骤602中的术语的搜索。在步骤608中,下载并存储在步骤604和606中确定的结果。在步骤610中,将对象检测模型应用于下载的结果。如上关于图4和5所讨论的,对象检测模型的应用导致视频帧被标记并被添加到带注释的示例414中。带注释的示例414用于训练视觉识别器引擎300,以便在视频被播放时,可以准确处理该视频的各个帧以检测其中描绘的特定对象(如下文关于图7所讨论的)。
转到图6B,详述了在过程600中执行步骤610的过程,其中应用了对象检测模型(图4-5的项412)。步骤610涉及本文讨论的图像到视频引导。步骤610中的建模从子步骤650开始,在该步骤中将帧采样器应用于下载的视频,然后对下载的视频进行采样,并标识出其中描述了所检测的对象的帧集,如上关于图5所讨论的。在子步骤652中,将对象检测模型应用于采样视频帧和带注释的示例,如关于图5所讨论的。在子步骤654中,基于对象检测模型的应用,确定推断标签并将其应用到采样视频帧中。如上关于图5中的应用的对象检测器452所讨论的,由对象检测器452将带注释的示例与采样视频帧进行比较,并且其结果是带推断标签的视频帧454。
在子步骤656中,帧选择器456分析步骤654中应用的推断标签,并确定置信值。然后在子步骤658中确定所应用的标签是否满足置信阈值,如果满足,则通过将这些视频帧添加到带注释的示例414中来更新训练集(子步骤660,并上述关于图5所讨论的)。如果置信度低于阈值,则将这些视频帧提供给编辑器(例如,人类贴标机458)——步骤662。在步骤664中,编辑器通过校正或批准标签来验证推断标签的正确性,如上面关于图5所讨论的。然后在步骤666中将这些经验证的帧添加到带注释的示例中。同样,如上所述,更新后的训练集(即,其中添加有高置信帧和经验证的低置信帧的带注释的示例414)用于训练可应用于所呈现的视频的引擎300,如下文关于图7所讨论的。
根据一些实施例,可以递归地执行图6A的过程600和图6B的子过程610,直到视频数据的阈值水平构成带注释的示例414的全部。这将涉及完成过程600,然后通过经由视频搜索引擎搜索视频来重新开始。然而,如上所讨论的,替代使用图像搜索的结果,对象检测模型412将视频结果与更新后的训练集(即,上一次迭代中更新的带注释的示例)进行比较。因此,在每次迭代之后,视觉识别器引擎300最终将通过完全的视频数据来训练,从而提高在一系列视频帧上检测对象方面的准确性和效率。
转到图7,过程700详述了将经训练的视觉识别器引擎300应用于正被呈现的视频文件的步骤。根据一些实施例,过程450的步骤452-454由视觉识别器引擎300的应用模块308执行。
过程700从步骤702开始,在该步骤中接收视频文件以在用户界面(UI)中显示。根据一些实施例,视频文件可以是HTTP实时流(HLS)文件的实时流,并且在一些实施例中,视频可以是任何类型的可下载或可呈现的媒体文件,如上所讨论的。UI可以与在用户设备上或浏览器内执行的应用程序相关联,或者与用于呈现视频的任何其他类型的已知或将已知的机制相关联。应该理解的是,视频内容可以与任何类型的内容相关联,并且本申请的功能仍然适用。
在步骤704中,正在呈现视频,其中播放机当前正在处理特定的帧序列。在一些实施例中,这可能涉及标识正在由播放机处理的特定帧(或由播放器正在执行的设备所接收的帧,例如HLS文件)。在一些实施例中,可以分析这些帧(在解码之前或之后)并将其转换为RGB图像的阵列(通过用于转换视频/音频编解码器的任何类型的命令行应用程序,例如,快速转发MPEG(FFMPEG)软件)。然后,步骤704可以涉及解析和分析接收的帧,并从视频中标识帧集。
由于对当前正在呈现的帧集的标识,过程700然后执行步骤706,其中将经训练的视觉识别器引擎300应用于所标识的帧集。如上所讨论的,视觉识别器引擎300执行对象检测建模技术,该技术将训练集(来自上文关于图4-6B讨论的训练中的带注释的示例414的当前版本)与所标识的帧集进行比较,并检测帧集内特定对象的位置,即,该对象在哪些帧中以及在这些帧内的位置。步骤708。在一些实施例中,如果(一个或多个)帧没有这样的对象,则丢弃该帧,并且序列中的下一帧排队等待引擎300处理。
例如,使用上面的猫对狗的示例,正在播放视频,其涉及猫和狗相互玩耍。在播放视频时,引擎300分析帧,并确定描绘了狗和猫的帧以及它们在每帧中的位置。例如,如上所讨论的,步骤708的结果可以提供以下信息:{(视频ID、帧ID、X坐标、Y坐标、宽度、高度、类别_标记)},其指示描绘猫/狗的帧在哪个视频中、在哪个帧中以及其可以定位在哪个位置坐标中。根据一些实施例,信息还可以包括指示其中描绘的对象类型(例如,猫/狗的品种)的数据以及对象的任何其他形式的标识信息。
因此,过程700针对呈现的视频来执行,并且能够确定猫和/或狗是否以及在何处实时显示在屏幕上(例如,随着视频被播放)。因此,当在UI中描述所期望的对象时,可以自动检测、处理和标识对象的存在(根据过程700的上述步骤),并且如下面关于图8的讨论,还可以在UI内自动显示增强或附加信息(例如,与对象相关的信息)。
图8是基于与视频相关联的信息为相关数字媒体内容提供服务的工作流程示例800,如上关于图3-7所讨论的。在一些实施例中,内容可以与广告关联或包含广告(例如,数字广告内容)。在一些实施例中,这样的内容可以向视频提供增强信息。这样的信息(仅出于参考的目的而被称为“对象信息”)可以包括但不限于与视频中检测到的对象相关联的信息、视频背景等、以及/或其一些组合。
如上所述,对“广告”的引用应理解为包括但不限于提供由其他用户、服务、第三方、实体等提供的信息的数字媒体内容。这样的数字广告内容可以包括计算设备可呈现的任何类型的已知或将要已知的媒体,包括但不限于视频、文本、音频、图像和/或任何其他类型的已知或将要已知的多媒体。在一些实施例中,数字广告内容可以被格式化为提供深度链接功能和/或能力的超链接多媒体内容。因此,虽然内容被称为广告,但它仍然是可由计算设备呈现的数字媒体项,并且这样的数字媒体项包括由网络关联的第三方提供的数字内容中继促销内容。
在步骤802中,标识对象信息(例如,从步骤706)。如上所讨论的,对象信息可以基于关于图7所概述的过程中的任何信息。出于本公开的目的,过程800将涉及单个视频文件作为针对附加内容提供服务的基础;然而,不应将其理解为限制性的,因为任何数量的文件以及所使用的程序和/或其中包含的内容项都可以构成这样的基础,而不脱离本公开的范围。
在步骤804中,基于所标识的对象信息来确定上下文。该上下文构成了为与对象信息相关的内容提供服务的基础。在一些实施例中,上下文可以是根据视频的上下文的,如上文关于图4-7所讨论的。例如,视频可以包括描绘猫和狗一起玩耍的内容;因此,步骤804中标识的上下文可以与“宠物”相关,或者更具体地,与用户区域中的动物收容所相关,并且可以用来标识与这种活动相关的数字内容(例如,提供猫/狗食品,或提供与视频中描绘的品种类型相关的wiki信息的信息等),如本文中关于过程800的步骤所讨论的。在一些实施例中,步骤804中的对上下文的标识可以发生在上文关于过程700详述的分析之前、期间和/或之后,也可以是完全独立的过程,或者是它们的一些组合。
在步骤806中,将所确定的上下文传送到包含服务器和数据库(例如,内容服务器106和内容数据库107,和/或广告服务器130和广告数据库)的内容提供平台(或将所确定的上下文与该平台共享)。在接收到上下文后,服务器执行(例如,被使得按照从执行视觉识别器引擎300的设备接收到的指令来执行)在相关联的数据库中搜索相关数字内容。对内容的搜索至少基于所标识的上下文。
在步骤808中,服务器针对与所标识的上下文匹配的(一个或多个)数字内容项来搜索数据库。在步骤810中,基于步骤808的结果选择(或检索)内容项。在一些实施例中,可以修改所选择的内容项以符合将在其上显示内容项的页面、接口、消息、平台、应用程序或方法的属性或能力,和/或符合将针对其显示内容项的应用程序和/或设备。在一些实施例中,所选择的内容项通过用户用来查看、呈现和/或与媒体交互的应用程序来共享或传送。步骤812。在一些实施例中,所选择的内容项直接发送到用户计算设备,以便在设备上和/或在描绘视频的UI内显示。在一些实施例中,所选择的内容项显示在接口的一部分内,或显示在与用于播放视频的呈现接口相关联的覆盖或弹出接口内。
出于本公开的目的,模块是软件、硬件或固件(或其组合)系统、过程或功能或其组件,其执行或促进本文所述的过程、特征和/或功能(有或无人类交互或增强)。模块可以包括子模块。模块的软件组件可以存储在计算机可读介质上,以供处理器执行。模块可以集成到一个或多个服务器,或可以由一个或多个服务器加载和执行。一个或多个模块可以组合成引擎或应用程序。
出于本公开的目的,术语“用户”、“订户”、“消费者”或“客户”应理解为指代本文所述的一个或多个应用程序的用户和/或由数据提供商提供的数据的消费者。通过示例而非限制的方式,术语“用户”或“订户”可以指代在浏览器会话中通过因特网接收由数据或服务提供商提供的数据的人,也可以指代接收数据并存储或处理数据的自动软件应用程序。
本领域技术人员将认识到,本公开的方法和系统可以以多种方式实施,因此不受上述示例性实施例和示例的限制。换句话说,由单个或多个组件、硬件和软件或固件的各种组合以及单个功能执行的功能元素可以分布在客户端水平或服务器水平或两者处的软件应用程序上。在这方面,本文所述的不同实施例的任何数量的特征可以组合成单个或多个实施例,并且具有少于或多于本文所述的所有特征的替代实施例是可能的。
功能也可以整体或部分地分布在多个组件上,以现在已知或即将已知的方式。因此,在实现本文所述的功能、特征、接口和优选项时,可以使用无数的软件/硬件/固件组合。此外,本公开的范围包括用于执行所述特征、功能和接口的常规已知方式,以及对本文所述硬件或软件或固件组件可能作出的变化和修改,这些变化和修改将被本领域技术人员现在和以后理解。
此外,本公开中作为流程图呈现和描述的方法的实施例通过示例提供,以提供对该技术的更完整理解。所公开的方法不限于本文所述的操作和逻辑流。考虑到替代实施例,其中改变了各种操作的顺序,并在其中独立地执行被描述为较大操作的一部分的子操作。
虽然为了本公开的目的已经描述了各种实施例,但不应认为这些实施例限制了本公开对这些实施例的教导。可以对上述元素和操作进行各种更改和修改,以获得仍在本公开所述系统和过程范围内的结果。