logo好方法网

细粒度分类


技术摘要:
将图像传递给图像识别器以识别图像的粗分类和被分类对象的边界框。使用掩模来识别代表对象的图像部分。在给定前景掩模的情况下,定位掩模的凸包,并且拟合包围该凸包的具有最小面积的对准矩形。旋转并缩放对准边界框,使得前景对象大致移动为标准取向和大小(称为校准)  全部
背景技术:
可以使用深卷积神经网络(CNN)来基于图像中显示的物品对图像进行分类。针对 一定程度的训练,CNN具有有限的区分能力。在典型的数据集中,物品的取向在图像之间是 不同的,并且所得到的CNN的区分能力可能耗费在能够识别物品的类别上而不考虑取向。因 此,CNN难以识别相似类型的物品之间的细微差别。 附图说明 在附图中以示例而非限制的方式示出了一些实施例。 图1是示出根据一些示例实施例的适用于细粒度图像分类的网络环境的网络图。 图2是示出根据一些示例实施例的适用于细粒度图像分类的分类服务器的组件的 框图。 图3是示出根据一些示例实施例的适用于细粒度图像分类的设备的组件的框图。 图4是示出根据一些示例实施例的适用于细粒度图像分类的图像处理的五个步骤 的图。 图5是示出根据一些示例实施例的服务器在执行细粒度图像分类的处理中的操作 的流程图。 图6是示出根据一些示例实施例的服务器在执行使用细粒度图像分类来显示广告 的处理中的操作的流程图。 图7是示出根据一些示例实施例的服务器在执行使用细粒度图像分类来显示搜索 结果的处理中的操作的流程图。 图8是示出根据一些示例实施例的可以安装在机器上的软件架构的示例的框图。 图9示出了根据示例实施例的具有计算机系统的形式的机器的示图表示,在所述 计算机系统中,可以执行一组指令以使所述机器执行本文讨论的方法中的任意一个或多个 方法。
技术实现要素:
示例方法和系统涉及细粒度图像分类。示例只是代表可能的变化。除非另行明确 5 CN 111582297 A 说 明 书 2/15 页 声明,否则组件和功能是可选的,且可被合并或细分,且操作可以在顺序上变化或被组合或 细分。在以下描述中,出于解释的目的,对多个具体细节进行阐述,以提供对示例实施例的 透彻理解。然而,对于本领域技术人员将显而易见的是:本主题可以在没有这些具体细节的 情况下实施。适当配置的计算机系统控制细粒度图像分类的处理。为了描述的目的,该处理 被分解成由各种模块或应用执行的步骤。 图像识别器对对象的图像进行操作,以识别图像的粗分类和分类对象的边界框。 图像识别器可以是卷积神经网络(CNN)、支持向量机(SVM)或其任何合适的组合。对于具有 粗分类的识别对象的特定图像,使用掩模(例如,grabCut掩模)来识别表示对象的图像部 分。根据前景掩模,定位对象的凸包,并且拟合包围该凸包的具有最小面积的旋转矩形。该 旋转矩形称为对准边界框。旋转并缩放对准边界框以形成校准图像,使得前景对象大致移 动为校准图像中的标准取向和大小。 使用校准图像作为细粒度分类模块的输入,所述细粒度模块确定输入图像在粗分 类中的细粒度分类。例如,粗分类可能是“车”和“鸟”。细粒度分类提供特定图像或对象在粗 分类上的更多细节。例如,粗分类的“车”的细粒度分类可以是车的制造商或车的型号。作为 另一示例,粗分类的“鸟”的细粒度分类可以是各个鸟种类。因此,在示例实施例中,一旦图 像被识别为描绘鸟并被处理以产生所描绘的鸟的校准图像,则校准图像被馈送到确定所描 绘的鸟的种类的细粒度分类模块。 图1是示出根据一些示例实施例的适用于细粒度图像分类的网络环境100的网络 图。网络环境100包括电子商务服务器120和140、分类服务器130以及设备150A、150B和 150C,它们都经由网络170彼此通信耦合。设备150A、150B和150C可以被集体称为“设备 150”,或者被统称为“设备150”。替代地,设备150可以直接连接到分类服务器130,或者通过 本地网络连接到分类服务器130,所述本地网络不同于用于连接到电子商务服务器120或 140的网络170。如以下参照图8至9所描述的,电子商务服务器120和140、分类服务器130以 及设备150均可以整体地或部分地在计算机系统中实现。 电子商务服务器120和140经由网络170向其他机器(例如,设备150)提供电子商务 应用。电子商务服务器120和140还可以直接连接到分类服务器130,或者与分类服务器130 集成在一起。在一些示例实施例中,一个电子商务服务器120和分类服务器130是基于网络 的系统110的一部分,而其他电子商务服务器(例如,电子商务服务器140)与基于网络的系 统110分离。电子商务应用可以向用户提供相互直接购买和出售物品、从电子商务应用提供 商购买物品和将物品出售给电子商务应用提供商、或者以上二者的途径。 分类服务器130确定输入图像的细粒度分类。分类服务器130可以经由网络170或 另一网络向其他机器(例如,电子商务服务器120和140或者设备150)提供数据。分类服务器 130可以经由网络170或另一网络从其他机器(例如,电子商务服务器120和140或者设备 150)接收数据。在一些示例实施例中,本文描述的分类服务器130的功能在诸如个人计算 机、平板计算机或智能电话之类的用户设备上执行。 图1中还示出了用户160。用户160可以是人类用户(例如,人类)、机器用户(例如, 通过软件程序配置的与设备150和分类服务器130交互的计算机)或者它们的任意合适组合 (例如,机器辅助的人或者人监管的机器)。用户160不是网络环境100的一部分,但与设备 150相关联并且可以是设备150的用户。例如,设备150可以是属于用户160的传感器、台式计 6 CN 111582297 A 说 明 书 3/15 页 算机、车载计算机、平板计算机、导航设备、便携媒体设备或智能电话。 在一些示例实施例中,分类服务器130接收关于用户160感兴趣的物品的数据。例 如,附接到设备150A的相机可以拍摄用户160希望出售的物品的图像,并且通过网络170将 该图像发送给分类服务器130。分类服务器130基于图像对物品进行分类。所述分类可被发 送给电子商务服务器120或140、发送给设备150A、或其任何组合。电子商务服务器120或140 可以使用该分类来辅助生成要出售的物品的列表。类似地,该图像可以是用户160感兴趣的 物品的图像,并且电子商务服务器120或140可以使用分类来帮助选择要向用户160显示的 物品的列表。 图1中所示的机器、数据库或设备中的任意一个可以用通用计算机来实现,所述通 用计算机通过软件修改(例如,配置或编程)为专用计算机,以执行本文针对所述机器、数据 库或设备描述的功能。例如,以下参照图8至9讨论能够实现本文描述的方法中的任意一个 或更多个的计算机系统。如本文所使用的,“数据库”是数据存储资源并可以存储结构化为 文本文件、表格、电子表格、关系数据库(例如,对象关系数据库)、三元组存储、分层数据存 储或它们的任意合适组合的数据。此外,图1中示出的机器、数据库或设备的任意两个或更 多个可以组合到单个机器、数据库或设备中,并且本文针对任意单个机器、数据库或设备描 述的功能可以细分到多个机器、数据库或设备中。 网络170可以是实现机器、数据库和设备(例如,分类服务器130和设备150)之间或 之中的通信的任意网络。因此,网络170可以是有线网络、无线网络(例如移动或蜂窝网络) 或其任意合适组合。网络170可以包括构成私有网络、公共网络(例如互联网)或其任意合适 组合的一个或多个部分。 图2是示出了根据一些示例实施例的分类服务器130的组件的框图。分类服务器 130被示为包括通信模块210、粗识别模块220、对准模块230、细粒度识别模块240、用户界面 (UI)模块250、广告模块260和存储模块270,全部模块被配置为彼此通信(例如,经由总线、 共享存储器或交换机)。本文描述的任何一个或多个模块可以使用硬件(例如机器的处理 器)来实现。此外,这些模块中的任何两个或更多个模块可被合并为单一模块,且本文中针 对单一模块描述的功能可以细分到多个模块中。此外,根据各种示例实施例,本文描述为在 单个机器、数据库或设备中实施的模块可以分布在多个机器、数据库或设备中。 通信模块210被配置为发送和接收数据。例如,通信模块210可以通过网络170接收 图像数据,并将接收的数据发送给粗识别模块220。作为另一示例,细粒度识别模块240可以 识别物品的分类,并且物品的分类可以由通信模块210通过网络170发送到电子商务服务器 140,或直接地或通过不同的网络发送到电子商务服务器120。 粗识别模块220被配置为识别给定图像的一个或多个粗分类。在一些示例实施例 中,使用CNN、SVM或其任何合适的组合被用于提供图像的粗分类。 对准模块230被配置为识别分类图像中的对象的对准边界框,并且旋转被对准边 界框包围的图像的部分,以输入到细粒度识别模块240。在一些示例实施例中,通过获取未 对准边界框,将未对准边界框内的像素作为对象的可能部分来处理,以及将未对准边界框 之外的像素作为不是对象的一部分来处理,确定对准边界框。在一些示例实施例中,未对准 边界框与图像而不是对象对准。未对准边界框可以由用户定义,或由粗识别模块220生成。 在一些示例实施例中,grabCut算法(在“GrabCut”-Interactive  Foreground  7 CN 111582297 A 说 明 书 4/15 页 Extraction  using  Iterated  Graph  Cuts,Rother等人,SigGraph(2004)中描述)用于将未 对准边界框内的像素进一步分类为不是对象的一部分。在其他示例实施例中,使用其他算 法来区分对象和背景。例如,可以将未对准边界框的中心处的像素识别为前景像素。可以将 相邻像素的颜色与前景像素的颜色进行比较。如果颜色差异低于阈值,则相邻像素也被分 类为前景的一部分。否则,相邻像素被分类为背景的一部分。重复该处理,直到找到前景像 素的区域的外边界。在一些示例实施例中,未对准边界框中具有高于阈值的亮度的所有像 素被分类为前景像素。 在识别出在包含对象的未对准边界框中的图像部分之后,创建包含对象的对准边 界框,该对准边界框与对象的形状对准。在一些示例实施例中,通过找到包含最小凸包中的 所有像素的最小矩形来生成对准边界框,其中所述最小凸包包含对象中所有识别的像素。 对准模块230将对准边界框旋转到细粒度识别模块240所期望的取向。例如,如果 粗分类是“鸟”,则细粒度识别模块240可以被配置为(例如通过训练)执行鸟的图像之间的 细区分,其中图像的长边是纵向的,并且鸟的头部正对着图像的顶部。因此,对准边界框被 旋转为使长边与纵轴对准。 细粒度识别模块240被配置为识别对象的细分类,其中对准模块230针对该对象创 建了准备图像。在一些示例实施例中,使用CNN、分级深CNN(HD-CNN)或其任何合适的组合来 实现细粒度识别模块240。细粒度识别模块240可以仅使用具有一定取向的正例来训练。这 种训练可以通过不使用任何区分能力来补偿旋转而允许在相似对象之间的细区分。 UI模块250被配置为使得用户界面被呈现在设备150A-150C中的一个或多个上。例 如,UI模块250可以由网络服务器通过网络170向设备150提供超文本标记语言(HTML)文件 来实现。用户界面可以呈现由通信模块210接收的图像、由对准模块230生成的对准边界框、 由细粒度识别模块240识别的细分类、关于所识别的分类的附加数据、由广告模块260选择 的广告,或其任何合适的组合。用户界面还可以呈现要出售的物品的列表(例如,从电子商 务服务器120或140获取的列表)。 广告模块260被配置为获取与细粒度识别模块240识别的细分类相关的广告。例 如,如果图像包括一双跑鞋,则广告模块260可以获取跑鞋本身的广告、诸如其他鞋子的替 代物品的广告、诸如袜子的补充物品的广告,或其任何合适的组合。 存储模块270被配置为存储和获取由粗识别模块220、对准模块230、细粒度识别模 块240、UI模块250和广告模块260生成和使用的数据。例如,细粒度识别模块240生成的关于 图像分类的信息也可以被存储模块270存储。电子商务服务器120或140可以(例如,通过提 供图像识别器)请求图像的细分类,所述图像可以由存储模块270从存储器获取并使用通信 模块210在网络170上发送。 图3是示出根据一些示例实施例的设备150的组件的框图。设备150被示为包括全 都被配置为(例如,经由总线、共享存储器或交换机)彼此通信的输入模块310、相机模块320 和通信模块330。本文描述的任何一个或多个模块可以使用硬件(例如机器的处理器)来实 现。此外,这些模块中的任何两个或更多个模块可被合并为单一模块,且本文中针对单一模 块描述的功能可以细分到多个模块中。此外,根据各种示例实施例,本文描述为在单个机 器、数据库或设备中实施的模块可以分布在多个机器、数据库或设备中。 输入模块310被配置为经由用户接口从用户接收输入。例如,用户可以将其用户名 8 CN 111582297 A 说 明 书 5/15 页 和密码输入到输入模块中,配置相机,选择用作列表或物品搜索的基础的图像,或其任何合 适的组合。 相机模块320被配置为捕获图像数据。例如,可以从相机接收图像,可以从红外相 机接收深度图像,可以从双目相机接收图像对,等等。 通信模块330被配置为将输入模块310或相机模块320接收的数据传送给分类服务 器130、电子商务服务器120或电子商务服务器140。例如,输入模块310可以接收对利用相机 模块320拍摄的图像的选择,以及关于图像描绘了用户(例如,用户160)希望出售的物品的 指示。通信模块330可以将图像和指示发送给电子商务服务器120。电子商务服务器120可以 将图像发送给分类服务器130以请求图像的分类,基于所述分类生成列表模板,以及使所述 列表模板经由通信模块330和输入模块310而呈现给用户。 图4是示出根据一些示例实施例的适用于细粒度图像分类的图像处理的五个步骤 的图。列410示出了鸟的四个示例图像,其中包括未对准边界框。列420示出了每个图像的 grabCut掩模。列430示出了每个图像的对准边界框。列440示出了旋转和裁剪每个图像后的 对准边界框。列450示出了每个图像的取向的grabCut掩模。 图5是示出根据一些示例实施例的分类服务器130在执行识别细分类的处理500中 的操作的流程图。处理500包括操作510、520、530、540、550和560。仅作为示例而非限制,操 作510-560被描述为由模块210-270执行。 在操作510中,粗识别模块220访问图像,并且在操作520中确定图像中描绘的物品 的粗分类。例如,经过训练的CNN可以用于确定粗分类。 在操作530中,对准模块230生成围绕图像的对准边界框,并且在操作540中,旋转 对准边界框。在一些示例实施例中,使用grabCut掩模来识别表示对象的图像部分。在给定 来自grabCut的前景掩模的情况下,定位掩模的凸包,并且拟合包围该凸包的具有最小面积 的旋转矩形。旋转并缩放对准边界框,使得前景对象大致移动为标准取向和大小。例如,可 以旋转对准边界框,使得较长的维度与水平轴对准,并且可以缩放对准边界框,使得所得到 的图像是300像素×200像素。标准取向和大小可以是全局定义的,也可以针对每个粗分类 进行指定。 在一些示例实施例中,以前景掩模的最左点作为凸包上的第一个点来找出凸包。 针对前景掩模中的每个潜在的第二个点,生成第一个点和潜在的第二个点之间的线,并且 检查以确定前景掩模中的每个其他点是否位于所生成的线的右侧。当检查成功时,潜在的 第二个点成为凸包的第二个点。从第二个点继续该处理,产生第三个点,以此类推,直到再 次到达第一个点。 在一些示例性实施例中,通过针对凸包的每条边确定共享该边并且包围凸包的最 小矩形的面积,找到包围凸包的具有最小面积的矩形。这些矩形中最小的矩形是包围凸包 的具有最小面积的矩形。 在操作550中,对准模块230产生基于旋转的边界框的新图像。例如,作为操作540 中的旋转处理的一部分,可以从输入图像中提取对准边界框中的图像部分,并保存在新的 数据结构中。 在操作560中,细粒度识别模块240基于新的图像来识别细分类。例如,使用处理 600来训练的分类器可以用于确定细分类。 9 CN 111582297 A 说 明 书 6/15 页 下面是一个伪代码列表,其示出了根据一些示例实施例的服务器在执行训练细粒 度图像分类器(例如细粒度识别模块240)的处理中的操作。 训练细粒度识别模块通常需要训练集(例如,训练集Ti)。大多数可用的训练集合 包括(图像、标签)对,其中所描绘的对象没有以特定方式对准。为了产生附加的训练图像, 训练集中的图像可以水平翻动(flick),并且被分配与相应的原始图像相同的标签。可以通 过执行处理500的步骤,从可用的训练集中生成用于细粒度识别模块的训练集,处理500的 步骤包括:识别图像前景中的带标记对象,创建对准边界框,旋转有边界的部分并调整其大 小,并将新的图像与原始标签相关联。可以使用选择性搜索来执行图像前景中带标记对象 的识别,如Selective  search  for  object  recognition,Uijlings  et  al.,IJCV(2013)中 所述。在一个示例实施例中,使用色调-饱和度-值(HSV)颜色空间和Lab颜色空间并且使用 两个相似性度量来使用选择性搜索:ColorTextureSizeFill和TestureSizeFill,其中参数 k=100。在提取出区域之后,丢弃边长小于30个像素的任何区域。在其他示例实施例中,在 训练图像的区域上滑动各种大小的滑动窗口,并进行测试以查看窗口是否包含所识别的前 景对象(例如,使用CNN)。确定具有对象的最强正识别的最小窗口,以识别前景对象的位置。 可以使用预先训练的CNN模型以及深度学习工具(例如,Caffe)来提取深卷积特 10 CN 111582297 A 说 明 书 7/15 页 征。在一个示例实施例中,使用了在Imagenet  classification  with  deep  convolutional  neural  networks,Krizhevsky  et  al.,NIPS(2012)中描述的CNN架构。Krizhevsky架构中 1000个线性分类器中的最后一层被更换为一个新的分类器层,每个分类器用于一个细分 类。每个输入图像被表示为完全连通的层fc-6(4096个维度)的激活。为了提取深度激活,将 每个输入图像变形为256x256像素,将中心部分的227x227像素用作第一层的固定大小输 入。为了补偿变形和剪切,在与其大小成比例的更大高度和宽度上提取每个输入片段,使得 用于特征计算的最终中心块与原始提取的片段完全对应。在一些示例实施例中,为了进行 细调,使用预训练的图像网络模型,并且针对细分类数量进行500次迭代来细调。附加的示 例参数包括基础学习率0.001、动量0.9、重量衰减0.0005和训练验证比4:1。 为了效率,可以精简所生成的训练图像集合,以减少训练中使用的图像数量,同时 保持训练分类器在细分类之间进行正确区分的能力。在一个示例实施例中,通过从每个片 段开始,通过增加更多片段进行迭代扩展以实现一般化,然后选择最具区分性的片段集合 来实现所述精简。在一些示例实施例中,使用5次迭代,并且在每个步骤中增加10个新片段。 给定具有n个分类的集合,对于训练集中的每个提取片段,训练一对全部的分类器,其将从 中提取出该片段的分类与所有n-1个其他分类相区分。训练模型按照以下方式进行迭代精 简:在每次迭代中,将在前次迭代中学习的模型应用于从与初始片段相同的分类中提取出 的所有片段。然后,根据与起始片段属于同一分类的置信度对片段进行排序,并将前m个评 分片段作为新的培训样本添加到该集合中。执行两个限制:1)所添加的新片段当前不能存 在于训练集中,2)每个新片段必须来自不同的图像。这些限制确保训练模型不会过度地学 习当前分类的特定实例,并保证增加每次迭代的多样性。我们将该处理继续进行p次迭代, 其中p是启发式求出的。这种挖掘处理涉及重复性训练以便将模型精简,并针对训练集中的 每个片段来进行,因为在最初时所有片段都被假设为具有潜在的区分性。 为了加速学习处理,使用具有封闭形式更新的有效线性区分分析(LDA)训练。这种 训练绕过了对过多硬负性挖掘的需要。具体地,给定具有n个目标分类的集合,仅需要执行 一次计算整个训练集的负例的样本均值μ–和样本协方差矩阵S。对于二进制LDA,我们假设 分类具有共享协方差矩阵S,并且每次迭代中只需要在更新μ 。所得到的用于正分类的LDA 分类器如下: w∝S-1(μ -μ_)。 基于熵-排序曲线来识别最具区分性集合。对于每个集合,使用最后一次迭代得出 的最终精简模型对验证中的片段进行分类。这些片段根据其得分进行排序,并选择排名前k 个的块。然后计算熵H(Y|k): 该式中,n是目标类别的数量,且p(y=yi|k)是具有标签yi的得分前k个的片段的 分数。计算熵-排名曲线的曲线(AUC)下的面积。对于理想分类器,熵从零开始,并保持为零, 直到大量获取的片段,然后由于从不同于组目标分类的分类返回的片段而开始增加。基于 AUC对片段集进行升序排序,并且从每个细分类中选择前r个组。因此,对于n个分类的组,选 择n乘以r个型号,其中每个型号检测细分类灵敏的区分片段。 图6是示出根据一些示例实施例的服务器在执行使用细粒度图像分类来显示广告 11 CN 111582297 A 说 明 书 8/15 页 的处理600中的操作的流程图。处理600包括操作610、620、630和640。仅作为示例而非限制, 操作610-640被描述为由模块210-270执行。 在操作610中,通信模块210从社交媒体用户帐户接收图像。例如,用户可以上传要 与朋友共享的图像,上传用于公众消费的图像,上传图像到私人相册,向互联网图像托管的 其他地方提供URL,或其任何合适的组合。 在操作620中,细粒度识别模块240识别图像中的物品。例如,细粒度识别模块240 可以确定图像包含本田轿车。在操作630中,图像显示在用户朋友的帐户的新闻馈送中。在 一些示例实施例中,图像显示通过通信模块210将图像发送到社交媒体服务器来实现,社交 媒体服务器将图像嵌入到发送给朋友的设备150的HTML页面中。除了图像之外,在操作640 中显示基于图像内容选择的广告。例如,基于确定图像包含本田轿车,可以呈现本田轿车、 另一辆本田车、另一辆汽车、其他汽车相关产品或其任何合适的组合的广告。 图7是示出根据一些示例实施例的分类服务器130在执行使用细粒度图像分类来 显示搜索结果的处理700中的操作的流程图。处理700包括操作710、720、730、740和750。仅 作为示例而非限制,操作710至750被描述为由模块210至270执行。 在操作710中,通信模块210从第一用户帐户接收图像。例如,社交媒体服务的用户 (例如,用户160)可以上传(例如,从设备150A)要张贴在他们的墙上或外发馈送中的图像。 作为另一示例,电子商务站点的用户可以上传要用于待出售的物品列表的一部分中的图 像。作为另一示例,电子商务站点的用户可以上传描绘用户感兴趣的物品的图像。作为另一 示例,通用搜索引擎的用户可以上传作为完整或部分搜索查询的图像。用户帐户可以是匿 名的(例如,仅由互联网协议(IP)地址识别)或与用户的数据集相关联。 在操作720中,粗识别模块220分析接收到的图像以识别图像中描绘的物品的粗分 类。可以在操作720中使用现有的粗识别方法。 在操作730中,细粒度识别模块240根据所识别的粗分类分析接收到的图像,以确 定该物品的细分类。例如,图5的操作530-560可以用于执行操作730。在一些示例实施例中, 物品的细分类指示该物品的多个属性。例如,粗分类可以将该物品识别为特定类型的服装, 例如鞋、裙子或夹克。物品的细分类可以添加附加细节,如颜色、大小、样式、长度或品牌。因 此,裙子的粗分类可以变成短红裙子的细分类。同样,夹克的粗分类也可能变成长款棕色夹 克的细分类。作为另一示例,鞋的粗分类可能变成黑色高跟鞋或棕色凉鞋的细分类。 在可选操作740中,使用来自用户帐户的信息(例如,与用户交互的网页)来补充或 替换在操作730中确定的细分类信息。例如,物品的细分类可以是长款棕色夹克,但是用户 可能希望接收关于长款黑色夹克的信息。因此,向用户呈现指示与所确定的细分类相关联 的属性的用户界面。用户界面可被用户操作以添加或修改属性。添加的属性可以包括未被 确定或不能被细粒度分类模块240确定的属性。例如,添加的属性可以包括物品是新的还是 使用过的,物品的特定品牌,或物品的精确大小。 在操作750中,UI模块250在用于第一用户帐户的显示中呈现与在操作730(以及可 选的操作740)中被细分类的一个或多个物品相关的信息。例如,搜索引擎可能会使得显示 包含文本搜索结果的一组结果,用于搜索的文本是物品的细分类的名称。作为另一示例,电 子商务网站可以使得显示与细分类的名称、描述或品牌相匹配的一组物品列表(例如,要出 售的物品的列表)。在一些示例实施例中,通过网络170将信息从分类服务器130或电子商务 12 CN 111582297 A 说 明 书 9/15 页 服务器120或140发送到用户设备(例如,设备150A)以便呈现给用户。 根据各种示例实施例,本文描述的一种或多种方法可以促进物品的细分类。通过 本文描述的方法中的一个或多个,还可以减少用户在订购感兴趣的物品时所付出的精力。 例如,根据图像准确地识别出用户感兴趣的物品的细分类可以减少用户在创建物品列表或 查找要购买的物品时花费的时间或精力。类似地,可以减少(例如在网络环境100中的)一个 或多个机器、数据库或设备使用的计算资源。这样的计算资源的示例包括处理器循环、网络 流量、存储器使用状况、数据存储容量、功耗以及冷却能力。 软件架构 图8是示出了软件802的架构的框图800,所述软件可以安装在上述任意一个或多 个设备上。图8仅是软件架构的非限制性示例,且应该了解,可以实施许多其他架构以促进 实现本文中所描述的功能。软件802可以由诸如图9的机器900的硬件来实现,机器900包括 处理器910、存储器930以及I/O组件950。在该示例架构中,软件802可被概念化为层的堆栈, 其中每层可以提供特定的功能。例如,软件802包括诸如操作系统804、库806、框架808,以及 应用810之类的层。在操作上,根据一些实施方式,应用810通过软件堆栈调用应用编程接口 (API)调用812,并响应于API调用812接收消息814。 在各种实施方式中,操作系统804管理硬件资源并提供公共服务。操作系统804包 括例如内核820、服务822和驱动824。在一些实施方式中,内核820用作硬件和其他软件层之 间的抽象层。例如,内核820提供存储器管理、处理器管理(例如,调度)、组件管理、联网和安 全设置以及其他功能。服务822可以针对其他软件层提供其他公共服务。驱动824可以负责 控制底层硬件或与底层硬件接口连接。例如,驱动824可以包括显示驱动、相机驱动、 驱动、闪存驱动、串行通信驱动(例如通用串行总线(USB)驱动)、 驱动、音 频驱动、电源管理驱动等等。 在一些实施方式中,库806提供可以由应用810使用的低级公共基础设施。库806可 以包括:可以提供诸如存储器分配功能、串操纵功能、数学功能等功能的系统库830(例如,C 标准库)。另外,库806可以包括API库832,例如媒体库(例如,支持各种媒体格式的呈现和操 纵的库,所述格式诸如运动图像专家组4(MPEG4)、高级视频编码(H.264或AVC)、运动图像专 家组层3(MP3)、高级音频编码(AAC)、自适应多速率(AMR)音频编解码器、联合图像专家组 (JPEG或JPG)、便携式网络图形(PNG))、图形库(例如,用于在显示器上的图形背景中以二维 (2D)和三维(3D)渲染的OpenGL框架)、数据库(例如,提供各种关系数据库函数的SQLite)、 web库(例如,提供网络浏览功能的WebKit)等。库806还可以包括各种各样的其他库934,以 向应用810提供许多其他API。 根据一些实施方式,框架808提供可以被应用810使用的高级公共基础设施。例如, 框架808提供各种图形用户界面(GUI)功能、高级资源管理、高级位置服务等。框架808可以 提供可以被应用810使用的广泛的其他API,其中一些可以特定于特定的操作系统或平台。 在示例实施例中,应用810包括家庭应用850、联系人应用852、浏览器应用854、书 阅读器应用856、位置应用858、媒体应用860、消息应用862、游戏应用864、以及诸如第三方 应用866之类的各种各样的其他应用。根据一些实施例,应用810是执行在程序中定义的功 能的程序。可以采用各种编程语言来创建以各种方式结构化的应用810中的一个或多个,诸 如面向对象的编程语言(例如,Objective-C,Java或C )或过程编程语言(例如C或汇编语 13 CN 111582297 A 说 明 书 10/15 页 言)。在具体示例中,第三方应用866(例如,由与特定平台的供应商不同的实体使用 AndroidTM或iOSTM软件开发工具包(SDK)而开发的应用)可以是在移动操作系统(诸如iOSTM、 AndroidTM、 Phone或其他移动操作系统)上运行的移动软件。在该示例中,第三 方应用866可以调用由移动操作系统804提供的API调用812,来促进本文描述的功能。 示例机器架构和机器可读介质 图9是示出了根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介 质)中读取指令并执行本文所讨论的方法中的任何一个或多个的机器900的组件的框图。具 体地,图9示出了计算机系统的示例形式的机器900的示意表示,其中可以执行指令916(例 如,软件、程序、应用、小应用、app或其他可执行代码)以使机器900执行本文讨论的任何一 种或多种方法。在备选的实施例中,机器900作为独立设备操作或可以耦合(例如,联网)到 其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户 端机器的能力进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器 900可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型 计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移 动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能家电)、其他智能设备、网络 设备、网络路由器、网络交换机、网桥、或能够顺序地或以其他方式执行指定机器900要采取 的动作的指令916的任何机器。此外,尽管仅示出了单个机器900,但是术语“机器”也将被认 为包括机器900的集合,其单独地或联合地执行指令916以执行本文讨论的方法中的任何一 个或多个。 机器900可以包括处理器910、存储器930和I/O组件950,其可配置成通过总线902 彼此通信。在示例实施例中,处理器910(例如,中央处理单元(CPU)、精简指令集计算(RISC) 处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用 集成电路(ASIC)、射频集成电路(RFIC)、其他处理器或其任何适当组合)可以包括例如可以 执行指令916的处理器912和处理器914。术语“处理器”旨在包括可以包括可以同时执行指 令的两个或更多个独立处理器(也称为“核”)的多核处理器。尽管图9示出了多个处理器,但 是机器900可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理 器)、具有单个核的多个处理器、具有多个核的多个处理器或其任何组合。 存储器930可以包括主存储器932、静态存储器934和可被处理器910经由总线902 访问的存储单元936。存储单元936可以包括机器可读介质938,其上存储体现本文描述的方 法或功能中的任何一个或多个的指令916。在机器900执行指令期间,指令916还可以完全地 或至少部分地驻留在主存储器932、静态存储器934、处理器910(例如,处理器的高速缓冲存 储器)中的至少一个内、或其任何合适的组合内。因此,在各种实施方式中,主存储器932、静 态存储器934和处理器910被认为是机器可读介质938。 如本文所使用的,术语“存储器”指能够临时或永久地存储数据的机器可读介质 938,并且可以被看作包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、 闪存以及高速缓存存储器。虽然机器可读介质938在示例实施例中被示为是单个介质,但是 术语“机器可读介质”应当被认为包括能够存储指令916的单个介质或多个介质(例如,集中 式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读介质”还将被认为包括 能够存储被机器(例如机器900)执行的指令(例如,指令916)的任何介质或多个介质的组 14 CN 111582297 A 说 明 书 11/15 页 合,使得指令在被机器900的一个或多个处理器(例如,处理器910)执行时,使机器900执行 本文所描述的方法中的任何一个或多个。因此,“机器可读介质”指单个存储装置或设备、以 及包括多个存储装置或设备的“基于云”的存储系统或存储网络。因此,术语“机器可读介 质”应被理解为包括但不限于具有固态存储器(例如,闪存)、光介质、磁介质、其他非易失性 存储器(例如,可擦除可编程只读存储器(EPROM))或其任何合适组合等的形式的一个或多 个数据储存库。 I/O组件950包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测 量等的各种组件。通常,应当理解,I/O组件950可以包括图9中未示出的许多其他组件。可以 根据功能将I/O组件950分组,以仅用于简化以下讨论,并且分组不以任何方式进行限制。在 各种示例实施例中,I/O组件950包括输出组件952和输入组件954。输出组件952包括可视组 件(例如显示器,比如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器 (LCD)、投影仪或阴极射线管(CRT))、声学组件(例如,扬声器)、触觉组件(例如,振动马达)、 其他信号发生器等。输入组件954包括字母数字输入组件(例如,键盘、被配置为接收字母数 字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触 摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入组件(例如,物理按钮、提供 触摸或触摸手势的位置和力的触摸屏或其他触觉输入组件)、音频输入组件((例如,麦克 风)等。 在另一些示例实施例中,I/O组件950特别包括生物测定组件956、运动组件958、环 境组件960或位置组件962等组件。例如,生物统计组件956包括用于检测表现(例如,手表 现、面部表现、语音表现、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、汗 水或脑波)、标识人(例如,语音标识、视网膜标识、面部标识、指纹标识或基于脑电图的标 识)等的组件。运动组件958包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋 转传感器组件(例如,陀螺仪)等。环境组件960包括例如照度传感器组件(例如,光度计)、温 度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组 件(例如气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器 组件(例如,检测附近物体的红外传感器)、气体传感器(例如,机器嗅觉检测传感器、为安全 而检测有害气体浓度或测量大气中的污染物的气体检测传感器)、或可以提供对应于周围 物理环境的指示、测量或信号的其他组件。位置组件962包括位置传感器组件(例如,全球定 位系统(GPS)接收机组件)、高度传感器组件(例如,高度计或检测气压的气压计(根据气压 可以导出高度))、方位传感器组件(例如,磁力计)等。 可以使用各种各样的技术来实现通信。I/O组件950可以包括通信组件964,通信组 件964可操作以分别经由耦接982和耦接972将机器900耦接到网络980或设备970。例如,通 信组件964包括网络接口组件或与网络980接口连接的另一合适设备。在另一些示例中,通 信组件964包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(NFC)组件、 组件(例如 低能耗)、 组件、以及经由其他模态提供通信的其他通信组件。设 备970可以是另一机器或各种外围设备中的任一种(例如,经由USB耦合的外围设备)。 此外,在一些实施方式中,通信组件964检测识别器或包括可操作以检测识别器的 组件。例如,通信组件964包括射频识别(RFID)标签读取器组件、NFC智能标签检测组件、光 15 CN 111582297 A 说 明 书 12/15 页 学读取器组件(例如,用于检测一维条形码(如通用产品代码(UPC)条形码)、多维条形码(如 快速响应(QR)码、Aztec码、数据矩阵、数据字、MaxiCode、PDF417、超级码、统一商业码缩减 空间符号(UCC  RSS)-2D条形码以及其他光学代码)的光学传感器)、声学检测组件(例如,识 别带标签的音频信号的麦克风)或其任意合适的组合。另外,可以经由通信组件964导出各 种信息,诸如经由互联网协议(IP)地理位置的位置、经由 信号三角测量的位置、经 由检测可以指示特定位置的NFC信标信号的位置等等。 传输介质 在各种示例实施例中,网络980的一个或多个部分可以是自组织网络、内联网、外 联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域 网(MAN)、互联网,互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务 (POTS)网络、蜂窝电话网络、无线网络、 网络、另一类型的网络、或两个或更多个这 样的网络的组合。例如,网络980或网络980的一部分可以包括无线或蜂窝网络,并且耦接 982可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一类型的蜂窝或无线耦 接。在该示例中,耦接982可以实现各种类型的数据传输技术中的任何一种,例如单载波无 线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、GSM演 进增强数据速率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、 通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演 进(LTE)标准、由各种标准设置组织定义的其他标准、其他远程协议或其他数据传输技术。 在示例实施例中,使用传输介质在网络980上经由网络接口设备(例如,通信组件 964中包括的网络接口组件)并利用多个公知传输协议中的任何一个(例如,HTTP)来发送或 接收指令916。类似地,在其他示例实施例中,使用传输介质经由耦接972(例如,对等耦接) 向设备970发送或接收指令916。术语“传输介质”应被认为包括能够存储、编码或承载用于 被机器900执行的指令916的任何无形介质,并且包括用于促进该软件的通信的数字或模拟 通信信号或其他无形介质。 此外,在一个实施例中,机器可读介质938是短暂的(换句话说,具有短暂信号),因 为它体现了传播信号或传输介质。 语言 在该说明书中,复数实例可以实现被描述为单数实例的组件、操作或结构。虽然一 个或多个方法的各个操作被示意和描述为分离的操作,但是各个操作中的一个或多个可以 同时执行,并且无需按所示顺序执行操作。在示例配置中被示为分离组件的结构和功能可 以被实现为组合结构或组件。类似地,被示为单个组件的结构和功能可以被实现为分离的 组件。这些和其他变型、修改、添加和改进落入本主题的范围内。 尽管已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本公开的 实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的这些 实施例在本文中可以单独地或共同地由术语“发明”提及,以仅仅为了方便,并且不旨在自 动地将本申请的范围限制为任何单个公开或发明构思(如果事实上公开了一个以上)。 本文充分详细地描述了示出的实施例以使得本领域技术人员能够实现公开的教 导。可以利用并根据这些实施例得出其他实施例,从而可以在不脱离本公开的范围的情况 下做出结构和逻辑上的替换和改变。因此,该“
分享到:
收藏