分层深卷积神经网络的制作方法

文档序号:11530898阅读:319来源:国知局
分层深卷积神经网络的制造方法与工艺

优先权声明

本申请要求于2014年12月23日提交的题为“hierarchicaldeepconvolutionalneuralnetworkforimageclassification”的美国专利申请no.14/582,059的优先权,该专利申请要求于2014年10月27日提交的题为“hierarchicaldeepconvolutionalneuralnetworkforimageclassification”的美国专利申请no.62/068,883的优先权,通过引用将上述申请中的每一个并入本文。

本文公开的主题通常涉及使用分层深卷积神经网络对数据分类。具体地,本公开涉及生成和使用用于图像分类的分层深卷积神经网络的系统和方法。



背景技术:

深卷积神经网络(cnn)被训练作为n路分类器以在n类数据之间进行区分。cnn分类器被用于对图像进行分类,检测对象,估计姿势,识别面部以及执行其他分类任务。通常,由设计者选择cnn的结构(例如,层的数量、层的类型、层之间的连接性等),然后通过训练确定每层的参数。

可以通过平均来组合使用多个分类器。在模型平均中,使用多个单独的模型。每个模型都能够对类别的整个集合进行分类,并且每个模型都是独立训练的。其预测差异的主要来源包括:不同的初始化、训练全集的不同子集,等等。组合模型的输出是各个单独模型的平均输出。

附图说明

在附图中以示例而非限制的方式示出了一些实施例。

图1是示出根据一些示例实施例的适合于创建和使用用于图像分类的分层深cnn的网络环境的网络图。

图2是示出根据一些示例实施例的适用于图像分类的分层深cnn服务器的组件的框图。

图3是示出根据一些示例实施例的适合于使用分层深cnn技术进行图像分类的设备的组件的框图。

图4是示出根据一些示例实施例的分类图像的组图。

图5是示出根据一些示例实施例的被配置为识别图像的精细类别的服务器的组件之间的关系的框图。

图6是示出根据一些示例实施例的在执行识别粗类别的处理中服务器的操作的流程图。

图7是示出根据一些示例实施例的在执行生成用于对图像进行分类的分层深cnn的处理中服务器的操作的流程图。

图8是示出根据一些示例实施例的可以安装在机器上的软件架构的示例的框图。

图9示出了根据示例实施例的具有计算机系统的形式的机器的示图表示,在所述计算机系统中,可以执行一组指令以使所述机器执行本文讨论的方法中的任意一个或多个方法。

具体实施方式

示例方法和系统涉及用于图像分类的分层深cnn。示例仅仅代表可能的变形。除非另行明确声明,否则组件和功能是可选的,且可被合并或细分,且操作可以在顺序上变化或被组合或细分。在以下描述中,出于解释的目的,对多个具体细节进行阐述,以提供对示例实施例的透彻理解。然而,对于本领域技术人员将显而易见的是:本主题可以在没有这些具体细节的情况下实施。

分层深cnn(hd-cnn)遵循由粗到精的分类策略和模块化设计原则。对于任何给定的类标签,有可能定义简单类集合和混淆类集合。因此,初始的粗分类器cnn能够将可容易分离的类彼此分离。随后,具有挑战性的类被路由到下游精细cnn,其仅关注混淆类。在一些示例实施例中,hd-cnn将分类性能改善得优于标准深cnn模型。与cnn一样,hd-cnn的结构(例如,每个组件cnn的结构、精细类的数量等)可以由设计者确定,而每个cnn的每个层的参数可以通过训练来确定。

与从头开始训练hd-cnn相比,预训练hd-cnn可以获得好处。例如,与标准深cnn模型相比,hd-cnn具有来自共享分支浅层以及c′独立分支深层的附加自由参数。相对于标准cnn而言,这将极大地增加hd-cnn内的自由参数的数量。因此,如果使用相同数量的训练数据,则过拟合(overfit)更可能发生在hd-cnn中。预训练可以帮助克服训练数据不足的困难。

预训练的另一潜在好处是:对粗类别的良好选择将有益于训练分支组件,以集中关注容易混淆的精细类别的一致子集。例如,分支组件1善长区分苹果和橙子,而分支组件2在区分公共汽车和火车方面更具能力。因此,识别粗类别集合,粗类别组件被预训练来对该粗类别集合进行分类。

一些训练数据集包括与粗类别有关的信息以及精细类别和粗类别之间的关系。然而,很多训练数据集不是如此。这些训练数据集仅为数据集中的每个项目提供精细类别,而不识别粗类别。因此,下面参照图6描述将精细类别划分到粗类别的过程。

图1是示出根据一些示例实施例的适合于创建和使用用于图像分类的分层深cnn的网络环境100的网络图。网络环境100包括电子商务服务器120和140、hd-cnn服务器130以及设备150a、150b和150c,它们都经由网络170彼此通信耦合。设备150a、150b和150c可以被集体称为“设备150”,或者被统称为“设备150”。电子商务服务器120和140以及hd-cnn服务器130可以是基于网络的系统110的一部分。备选地,设备150可以直接连接到hd-cnn服务器130,或者通过本地网络连接到hd-cnn服务器130,所述本地网络不同于用于连接到电子商务服务器120或140的网络170。如以下参照图8-9所描述的,电子商务服务器120和140、hd-cnn服务器130以及设备150均可以整体地或部分地实现在计算机系统中。

电子商务服务器120和140经由网络170向其他机器(例如,设备150)提供电子商务应用。电子商务服务器120和140还可以直接连接到hd-cnn服务器130,或者与hd-cnn服务器130集成在一起。在一些示例实施例中,一个电子商务服务器120和hd-cnn服务器130是基于网络的系统110的一部分,而其他电子商务服务器(例如,电子商务服务器140)与基于网络的系统110分离。电子商务应用可以向用户提供以下方式:彼此直接购买和出售物品,从电子商务应用提供商购买物品并将物品出售给电子商务应用提供商,或者以上二者。

hd-cnn服务器130创建用于对图像进行分类的hd-cnn,使用hd-cnn对图像进行分类,或者执行这两者。例如,hd-cnn服务器130可以基于训练集创建用于对图像进行分类的hd-cnn,或者可以将预先存在的hd-cnn加载到hd-cnn服务器130上。hd-cnn服务器130还可以通过为图像提供精细类别来响应对图像分类的请求。hd-cnn服务器130可以经由网络170或另一网络向其他机器(例如,电子商务服务器120和140或者设备150)提供数据。hd-cnn服务器130可以经由网络170或另一网络从其他机器(例如,电子商务服务器120和140或者设备150)接收数据。在一些示例性实施例中,这里描述的hd-cnn服务器130的功能在诸如个人计算机、平板计算机或智能电话之类的用户设备上执行。

图1中还示出了用户160。用户160可以是人类用户(例如,人类)、机器用户(例如,通过软件程序配置的与设备150和hd-cnn服务器130交互的计算机)或者它们的任意合适组合(例如,机器辅助的人或者人监管的机器)。用户160不是网络环境100的一部分,但与设备150相关联并且可以是设备150的用户。例如,设备150可以是属于用户160的传感器、台式计算机、车载计算机、平板计算机、导航设备、便携媒体设备或智能电话。

在一些示例性实施例中,hd-cnn服务器130接收与用户感兴趣的项目有关的数据。例如,附接到设备150a的相机可以拍摄用户160希望销售的项目的图像,并且通过网络170将该图像发送给hd-cnn服务器130。hd-cnn服务器130基于该图像对该项目进行分类。类别可被发送给电子商务服务器120或140、发送给设备150a、或其任何组合。电子商务服务器120或140可以使用该类别来辅助生成要出售的项目的列表。类似地,该图像可以是用户160感兴趣的项目的图像,并且可以由电子商务服务器120或140使用类别来帮助选择要向用户160显示的项目的列表。

图1中所示的机器、数据库或设备中的任意一个可以用通用计算机来实现,所述通用计算机通过软件修改(例如,配置或编程)为专用计算机,以执行本文针对所述机器、数据库或设备描述的功能。例如,以下参照图8-9讨论能够实现本文描述的方法中的任意一个或更多个的计算机系统。如本文所使用的,“数据库”是数据存储资源并可以存储数据,所述数据结构化为文本文件、表格、电子表格、关系数据库(例如,对象关系数据库)、三元组存储、分层数据存储或它们的任意合适组合。此外,图1中示出的机器、数据库或设备的任意两个或更多个可以组合到单个机器中,并且本文针对任意单个机器、数据库或设备描述的功能可以再划分到多个机器、数据库或设备中。

网络170可以是实现机器、数据库和设备(例如,hd-cnn服务器130和设备150)之间的通信的任意网络。因此,网络170可以是有线网络、无线网络(例如,移动或蜂窝网络)、或其任意合适组合。网络170可以包括构成私有网络、公共网络(例如,互联网)或其任意合适组合的一个或多个部分。

图2是示出了根据一些示例实施例的hd-cnn服务器130的组件的框图。hd-cnn服务器130被示出为包括通信模块210、粗类别识别模块220、预训练模块230、微调模块240、分类模块250和存储模块260,这些模块全都被配置为彼此通信(例如,经由总线、共享存储器或交换机)。本文描述的任何一个或多个模块可以使用硬件(例如机器的处理器)来实现。此外,这些模块中的任何两个或更多个模块可被合并为单一模块,且本文中针对单一模块描述的功能可以再划分到多个模块中。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备中实施的模块可以分布在多个机器、数据库或设备中。

通信模块210被配置为发送和接收数据。例如,通信模块210可以通过网络170接收图像数据,并将接收的数据发送给分类模块250。作为另一示例,分类模块250可以识别项目的类别,并且可以由通信模块210通过网络170将项目的类别发送给电子商务服务器120。

粗类别识别模块220被配置为针对给定数据集来识别粗类别。粗类别识别模块220确定相关的精细类别,并将它们分组到粗类别。例如,所提供的数据集可以具有c个精细类别,并且hd-cnn设计者可以确定期望的粗类别的数量c′。粗类别识别模块220识别c个精细类别到c’个粗类别的映射。可以使用下面描述的图6的处理600将精细类别分组到粗类别。

预训练模块230和微调模块240被配置为确定hd-cnn的参数。预训练模块230对粗类别cnn和精细类别cnn进行预训练,以减少精细类别cnn之间的重叠。预训练完成之后,微调模块240提供对hd-cnn的附加调整。可以使用下面描述的图7的处理700来执行预训练和微调。

分类模块250被配置为接收并处理图像数据。图像数据可以是二维图像、来自连续视频流的帧、三维图像、深度图像、红外图像、双目图像或其任何合适的组合。例如,图像可以是从相机接收的。为了说明,相机可以拍摄图片,并将其发送给分类模块250。分类模块250通过使用hd-cnn来确定图像的精细类别(例如,通过使用粗类别cnn确定粗类别或粗类别权重,并且使用一个或多个精细类别cnn确定精细类别)。可以使用预训练模块230、微调模块240或这两者来生成hd-cnn。备选地,hd-cnn可以提供自外部源。

存储模块260被配置为存储和检索由粗类别识别模块220、预训练模块230、微调模块240和分类模块250生成和使用的数据。例如,由预训练模块230生成的hd-cnn可由存储模块260存储,以供微调模块240检索。由分类模块250生成的关于图像分类的信息也可以由存储模块260存储。电子商务服务器120或140可以(例如,通过提供图像标识符)请求图像的类别,所述图像的类别可以由存储模块260从存储器检索并使用通信模块210在网络170上发送。

图3是示出了根据一些示例实施例的设备150的组件的框图。设备150被示出为包括全都被配置为(例如,经由总线、共享存储器或交换机)彼此通信的输入模块310、相机模块320和通信模块330。本文描述的任何一个或多个模块可以使用硬件(例如机器的处理器)来实现。此外,这些模块中的任何两个或更多个模块可被合并为单一模块,且本文中针对单一模块描述的功能可以再划分到多个模块中。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备中实施的模块可以分布在多个机器、数据库或设备中。

输入模块310被配置为经由用户接口从用户接收输入。例如,用户可以将其用户名和密码输入到输入模块中,配置相机,选择用作列表或项目搜索的基础的图像,或其任何合适的组合。

相机模块320被配置为捕获图像数据。例如,可以从相机接收图像,可以从红外相机接收深度图像,可以从双目相机接收一对图像,等等。

通信模块330被配置为将输入模块310或相机模块320接收的数据传送给hd-cnn服务器130、电子商务服务器120或电子商务服务器140。例如,输入模块310可以接收:对利用相机模块320拍摄的图像的选择,以及关于图像描绘了用户(例如,用户160)希望销售的项目的指示。通信模块330可以将图像和指示传送给电子商务服务器120。电子商务服务器120可以将图像发送给hd-cnn服务器130以请求图像的分类,基于类别生成列表模板,以及使列表模板经由通信模块330和输入模块310而呈现给用户。

图4是示出根据一些示例实施例的分类图像的组图。在图4中,已经将二十七张图像正确分类为描绘苹果(组410)、橙子(组420)或公共汽车(组430)。组410-430在本文中被称为苹果、橙子和公共汽车。通过检查,区分苹果的成员和公共汽车的成员相对容易,而区分苹果的成员和橙子的成员则较困难。来自苹果和橙子的图像可能具有相似的形状、纹理和颜色,所以正确地区分它们较难。相比之下,来自公共汽车的图像通常具有与苹果不同的视觉外观,因此可以预期分类较容易。事实上,苹果和橙子这两个类别可以被定义为属于相同的粗类别,而公交汽车属于不同的粗类别。例如,在cifar100数据集(其在“learningmultiplelayersoffeaturesfromtinyimages”,krizhevsky(2009)中进行了讨论)中,苹果和橙子是“水果和蔬菜”中的子类别,而公交汽车是“车辆1”中的子类别。cifar100数据集由自然图像的100个类组成。cifar100数据集中有50,000张训练图像和10,000张测试图像。

图5是示出了根据一些示例实施例的分类模块250的组件之间的关系的框图。可以使用单个标准的深cnn作为hd-cnn的精细预测组件的构建块。如图5所示,粗类别cnn520预测在粗类别上的概率。多个分支cnn540-550是独立添加的。在一些示例性实施例中,分支cnn540-550共享分支浅层530。粗类别cnn520和多个分支cnn540-550各自接收输入图像并且对输入图像并行操作。尽管每个分支cnn540-550接收输入图像并给出在精细类别的全集上的概率分布,但是每个分支cnn540-550的结果仅对类别的子集有效。由概率平均层560对来自分支cnn540-550的多个完全预测进行线性组合,以形成由对应的粗别概率加权的最终精细类别预测。

以下的符号用于下面的讨论。数据集包括:nt个训练样本{xi,yi}t(其中i在1到nt的范围内),以及ns个测试样本{xi,yi}t(其中i在1到ns的范围内)。xi和yi分别表示图像数据和图像标签。图像标签对应于图像的精细类别。在数据集{sk}中有c个预定义的精细类别,其中k在1到c的范围内。该数据集中有c′个粗类别。

与标准的深cnn模型一样,hd-cnn实现端到端分类。虽然标准的深cnn模型仅由单个cnn组成,但是hd-cnn主要包括三个部分,即单个粗类别组件b(对应于粗类别cnn520)、多个分支精细类别组件{fj}(其中,j在1到c′的范围内(对应于分支cnn540-550))、以及单个概率平均层(对应于概率平均层560)。单个粗类别cnn520接收作为输入的原始图像像素数据,并且输出在粗类别上的概率分布。粗类别概率被概率平均层560用于为由分支cnn540-550做出的完全预测指派权重。

图5还示出了分支cnn540-550的集合,每个分支cnn做出精细类别的全集上预测。在一些示例性实施例中,分支cnn540-550共享浅层530中的参数,但具有独立的深层。浅层是cnn中最接近原始输入的层,而深层是更靠近最终输出的层。共享浅层中的参数可以会带来以下好处。首先,在浅层中,每个cnn可以提取原始低级特征(例如,斑点、拐角),其对于分类所有精细类别是有用的。因此,即使每个分支组件聚焦在精细类别的不同集合上,也可以在分支组件之间共享浅层。第二,共享浅层中的参数大大降低了hd-cnn中的参数的总数,这可有助于hd-cnn模型的训练成功。如果每个分支精细类别组件是完全彼此独立训练的,则hd-cnn中的自由参数的数量将与粗类别的数量成线性比例。模型中的过大的参数数量将增加过拟合的可能性。第三,hd-cnn的计算成本和内存消耗也因为共享浅层而减少,这对于在实际应用中部署hd-cnn具有实践重要性。

概率平均层560接收所有分支cnn540-550预测以及粗类别cnn520预测,并产生加权平均作为图像i的最终预测p(xi),如下面的等式所示。

在该等式中,bij是粗类别cnn520预测的图像i的粗类别j的概率。对于图像i,由第j个分支组件fj做出的精细类别预测是pj(xi)。

粗类别cnn520和分支cnn540-550二者可被实现为任何端到端深cnn模型,其以原始图像作为输入,并且将在类别上的概率预测作为输出来返回。

对用于训练精细类别组件的多项物流损失函数使用时间稀疏度惩罚项将鼓励每个分支聚焦在精细类别的子集上。包含该时间稀疏度惩罚项的修正的损失函数由下面的等式示出:

在该等式中,n是训练小批次的大小,yi是图像i的基本真值标签(groundtruthlabel),λ是正则化常数。在一些示例实施例中,值5被用于λ。bij是粗类别cnn520预测的图像i的粗类别j的概率。分支j的目标时间稀疏度被表示为tj。

结合分支的初始化,时间稀疏度项可以确保每个分支组件聚焦于对精细类别的不同子集进行分类,并且防止少数分支接收粗类别概率体的大部分。

图6是示出根据一些示例实施例的在执行识别粗类别的处理600中hd-cnn服务器130的操作的流程图。处理600包括操作610、620、630、640和650。仅作为示例而非限制,操作610-650被描述为由模块210-260执行。

在操作610中,粗类别识别模块220将训练样本集合划分为训练集和评估集。例如,将由nt个训练样本构成的数据集{xi,yi}t划分为两个部分train_train和train_val,其中i在1到nt范围内。这可以通过选择所期望的train_train和train_val之间的样本分布来完成,例如70%对30%的分布。一旦选择了分布,针对每个集合,可以按照适当的比例随机选择样本。在操作620中,由预训练模块230使用标准训练技术,基于train_train来训练深cnn模型。例如,反向传播(back-propagation)训练算法是训练深cnn模型的一种选择。

在操作630中,粗类别识别模块220基于train_val来绘制混淆矩阵。混淆矩阵的大小为c×c。矩阵的列对应于预测的精细类别,而矩阵的行对应于train_val中的实际精细类别。例如,如果每个预测都是正确的,那么只有矩阵的主对角线中的单元格将是不为零的。相反,如果每个预测都是不正确的,那么矩阵的主对角线中的单元将都为零。

粗类别识别模块220通过从1减去混淆矩阵的每个元素并使d的对角元素归零来生成距离矩阵d。通过对d和dt(d的转置)求平均来使得距离矩阵对称。在执行这些操作之后,每个元素dij度量类别i与类别j区分的容易度。

在操作640中,获得精细类别的低维特征表示{fi},其中i在1至c的范围内。例如,拉普拉斯特征映射(laplacianeigenmap)可被用于此目的。低维特征表示保留了低维流形(manifold)上的局部邻域信息,并且被用于将精细类别聚类到粗类别。在示例实施例中,使用k个最近邻居来构造邻接图。例如,值3可以用于k。通过使用热核(例如,具有宽度参数t=0.95)来设置邻接图的权重。在一些示例性实施例中,{fi}的维数为3。

粗类别识别模块220(在操作650中)将c个精细类别聚类到c’个粗类别中。可以使用仿射传播(affinitypropagation)、k-均值聚类或其他聚类算法来执行聚类。仿射传播可以自动引入粗类别的数量,并可能导致与其他聚类方法相比在尺寸方面更均衡的聚类。均衡聚类有助于确保每个分支组件处理类似数量的精细类别并因此具有类似的工作量。仿射传播中的阻尼因子λ可能影响所得聚类的数量。在一些示例性实施例中,λ被设置为0.98。聚类的结果是从精细类别y到粗类别y′的映射p(y)=y’。

例如,通过基于数据集的50,000个训练图像和10,000个测试图像来训练深cnn模型,可以将cifar100数据集的100个类别划分到粗类别。粗类别的数量可被提供作为输入(例如,可以选择四个粗类别),并且过程600用于将精细类别划分到粗类别。在一个示例实施例中,cifar100数据集的100个类别被划分到四个粗类别,如下表所示。

图7是示出根据一些示例实施例的在执行生成用于对图像进行分类的hd-cnn的处理700中hd-cnn服务器130的操作的流程图。处理700包括操作710、720、730、740、750和760。仅作为示例而非限制,操作710-760被描述为由模块210-260执行。

在操作710中,预训练模块230在粗类别的集合上训练粗类别cnn。例如,可以已经使用处理600识别了粗类别的集合。使用映射p(y)=y′,用粗类别来替换训练数据集的精细类别。在示例实施例中,数据集{xi,y’i}被用于训练标准深cnn模型,其中i在1到nt的范围内。被训练的模型成为hd-cnn的粗类别组件(例如,粗类别cnn520)。

在示例实施例中,使用由三个卷积层、一个完全连接层和一个softmax层构成的网络。每个卷积层有64个过滤器。修正线性单元(rectifiedlinearunits,relu)被用作激活单元。在卷积层之间还使用汇集层和响应归一化层。在下面的示例1表格中定义了完整的示例架构。在下面的示例2表格中定义了另一示例架构。

在上表中,过滤器使用所指示的输入(例如,像素值)数目。例如,5x5过滤器查找5x5网格中的25个像素,以确定单个值。5x5过滤器考虑输入图像中的每个5x5网格。因此,具有64个5×5过滤器的层针对每个输入像素生成64个输出,这些值中的每一个基于以该输入像素为中心的5×5像素网格。max池具有针对像素集合的多个输入,并提供单个输出,即那些输入的最大值。例如,3x3max池层将针对每个3x3像素块输出一个值,即那9个像素中的最大值。avg池具有针对像素集的多个输入,并提供单个输出,即那些输入的平均值(例如均值)。归一化层对从前一层输出的值进行归一化。cccp层向cnn提供非线性组件。softmax函数是归一化的指数函数,其提供多项物流回归的非线性变型。在一些示例实施例中,softmax函数获取k维的值向量,并输出k维的值向量,使得输出向量的元素总和为1并且在0至1的范围内。例如,下面的等式可被用于从输入向量z生成输出向量y:

其中j=1,…,k.

在操作720中,预训练模块230还训练原型精细类别组件。例如,数据集{xi,yi}(其中i在1到nt范围内)被用于训练标准深cnn模型,其成为原型精细类别组件。在示例实施例中,cifar100数据集被用于将cnn作为原型精细类别组件训练。

在操作730中,循环开始,以处理c’个精细类别组件中的每一个。因此,针对每个精细类别组件执行操作740和750。例如,当识别出四个粗类别时,循环将针对四个精细类别组件中的每一个进行迭代。

在操作740中,预训练模块230制作精细类别组件的原型精细类别组件的副本。因此,所有精细类别组件都被初始化为相同的状态。在与精细类别组件的粗类别对应的数据集部分上进一步训练精细类别组件。例如,可以使用数据集{xi,yi}的子集,其中p(yi)是粗类别。一旦所有精细类别组件和粗类别组件都已经被训练,则hd-cnn被构建。

针对精细类别组件的cnn的浅层可以保持固定,而深层允许在训练期间发生改变。例如,使用上述示例1的结构,对于每个精细类别组件,浅层conv1、pool1和norm1可以保持不变,而深层conv2、pool2、norm2、conv3、pool3、ip1和prob在每个精品类组件的训练期间被修改。在一些示例性实施例中,浅层的结构保持固定,但是在浅层内使用的值允许发生改变。关于上述示例2的结构,对于每个精细类别组件,浅层conv1、cccp1、cccp2、pool1和conv2可以保持不变,而深层cccp3、cccp4、pool2、conv3、cccp5、cccp6、pool3和prob在每个精细类别组件的训练期间被修改。

在操作760中,微调模块240对构造的hd-cnn进行微调。可以使用具有时间稀疏度惩罚的多项物流损失函数来执行微调。目标时间稀疏度{tj}(其中j在1到c’的范围内)可以使用映射p来定义。例如,可以使用下面的等式,其中sk是来自精细类别k的图像集合。

可以基于计算时间和期望的每次迭代的学习量来选择用于微调的批次大小。例如,可以使用批次大小250。在每个批次后,可以测量训练误差。如果训练误差的改善率低于阈值,则可以降低学习速率(例如,降低10%,折半降低,或降低另一量)。当学习速率降低时,可以修改阈值。在达到最小学习速率之后(例如,当学习速率降低到原始值的50%以下时),在预定数量的批次已被用于微调之后,或在其任何适当的组合下,微调处理停止。

根据各种示例实施例,本文描述的方法中的一种或多种可以促进生成用于图像分类的hd-cnn。此外,相对于标准深cnn而言,本文描述的方法中的一种或多种可以以较高的成功率促进对图像的分类。此外,相对于以前的方法而言,本文描述的方法中的一种或多种可以有助于更快地且使用较少的计算能力来为用户训练hd-cnn。类似地,与将cnn训练到一分辨率质量的情形相比,本文描述的方法中的一种或多种方法可以有助于利用较少的训练样本来以相同分辨率质量训练hd-cnn。

当总体考虑这些效果时,本文描述的方法中的一个或多个可以消除针对某些工作量或资源的需求,该某些工作量或资源原本是生成或者使用用于图像分类的hd-cnn所涉及的。通过本文描述的方法中的一个或多个,还可以减少用户在订购感兴趣的项目时所付出的努力。例如,根据图像准确地识别出用户感兴趣的项目的类别可以减少用户在创建项目列表或查找要购买的项目时花费的时间或工作量。可以类似地减少由(例如在网络环境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还可以包括各种各样的其他库834,以向应用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或汇编语言)。在具体示例中,第三方应用866(例如,由与特定平台的供应商不同的实体使用androidtm或iostm软件开发工具包(sdk)而开发的应用)可以是在移动操作系统(诸如iostm、androidtmphone或其他移动操作系统)上运行的移动软件。在该示例中,第三方应用866可以调用由移动操作系统804提供的api调用812,以促进本文描述的功能。

示例机器架构和机器可读介质

图9是示出了根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)中读取指令并执行本文所讨论的方法中的任何一个或多个的机器900的组件的框图。具体地,图9示出了计算机系统的示例形式的机器900的示意性表示,在机器900中,可以执行指令916(例如,软件、程序、应用、小应用程序、app或其他可执行代码)以使机器900执行本文所讨论的方法中的任何一个或多个。在备选实施例中,机器900作为独立设备操作或可以耦合(例如,联网)到其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器900可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能家电)、其他智能设备、网络设备、网络路由器、网络交换机、网络桥、或能够顺序地或以其他方式执行指定机器900要采取的动作的指令916的任意机器。此外,尽管仅示出了单个机器900,但是术语“机器”也将被认为包括机器900的集合,机器900单独地或联合地执行指令916以执行本文讨论的方法中的任何一个或多个。

机器900可以包括可被配置为经由总线902彼此通信的处理器910、存储器930和i/o组件950。在示例实施例中,处理器910(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、其他处理器或其任何适当组合)可以包括例如可以执行指令916的处理器912和处理器914。术语“处理器”旨在包括可以包括可以同时执行指令的两个或更多个独立处理器(也称为“核”)的多核处理器。尽管图9示出了多个处理器,但是机器900可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理)、具有单个核的多个处理器、具有多个核的多个处理器或其任意组合。

存储器930可以包括经由总线902可被处理器910访问的主存储器932、静态存储器934和存储单元936。存储单元936可以包括其上存储有指令916的机器可读介质938,所述指令916实现此处描述的方法或功能中的任意一个或多个。在机器900执行指令期间,指令916还可以完全地或至少部分地驻留在主存储器932内、静态存储器934内、处理器910中的至少一个内(例如,处理器的高速缓冲存储器内)、或其任何合适的组合内。因此,在各种实现中,主存储器932、静态存储器934和处理器910被认为是机器可读介质938。

如本文所使用的,术语“存储器”指能够临时或永久地存储数据的机器可读介质938,并且可以被看作包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存以及高速缓存存储器。虽然机器可读介质938在示例实施例中被示为是单个介质,但是术语“机器可读介质”应当被认为包括能够存储指令916的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读介质”还将被认为包括能够存储被机器(例如机器900)执行的指令(例如,指令916)的任何介质或多个介质的组合,使得指令在被机器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智能标签检测组件、光学读取器组件(例如,用于检测一维条形码(如通用产品代码(upc)条形码)、多维条形码(如快速响应(qr)码、aztec码、数据矩阵、数据字、maxicode、pdf417、超级码、统一商业码缩减空间符号(uccrss)-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的一个实施例。

语言

在该说明书中,复数实例可以实现被描述为单数实例的组件、操作或结构。虽然一个或多个方法的各个操作被示意和描述为分离的操作,但是各个操作中的一个或多个可以同时执行,并且无需按所示顺序执行操作。在示例配置中被示为分离组件的结构和功能可以被实现为组合结构或组件。类似地,被示为单个组件的结构和功能可以被实现为分离的组件。这些和其他变型、修改、添加和改进落入本主题的范围内。

尽管已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的这些实施例在本文中可以单独地或共同地由术语“发明”提及,以仅仅为了方便,并且不旨在自动地将本申请的范围限制为任何单个公开或发明构思(如果事实上公开了一个以上)。

本文充分详细地描述了示出的实施例以使得本领域技术人员能够实现公开的教导。可以利用并根据这些实施例得出其他实施例,从而可以在不脱离本公开的范围的情况下做出结构和逻辑上的替换和改变。因此,该“具体实施方式”不应当看做是限制意义,并且各种实施例的范围仅通过所附权利要求以及权利要求的等同物的全部范围来限定。

如本文所使用的,术语“或”可以被解释为包括性或排他性的意义。此外,可以针对本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在具体说明性配置的上下文中示出了特定操作。设想了功能的其他分配,并且这些分配可以落入本公开的各种实施例的范围内。一般来说,在示例配置中作为单独资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单个资源呈现的结构和功能可以被实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应当被看做说明性的而不是限制意义的。

以下列举的示例定义了本文讨论的方法、机器可读介质和系统(例如,装置)的各种示例实施例:

示例1一种系统,包括:

粗类别识别模块,被配置为:

访问包括分类数据的数据集,所述分类数据具有多个精细类别;

识别多个粗类别,所述粗类别的数量少于精细类别的数量;以及

针对每个精细类别,确定相关联的粗类别;

预训练模块,被配置为:

训练用于在粗类别之间进行区分的基础卷积神经网络(cnn);以及

训练每个粗类别的精细cnn,所述粗类别的精细cnn用于在与所述粗类别相关联的精细类别之间进行区分;以及

分类模块,被配置为:

接收对数据进行分类的请求;

使用所述基础cnn,确定所述数据的粗类别;

使用所确定的粗类别的精细cnn,确定所述数据的精细类别;以及

响应于所述请求,发送所述数据的精细类别。

示例2根据示例1所述的系统,其中,所述粗类别识别模块还被配置为:

将所述数据集划分为训练集和值集;

使用所述训练集来训练第一cnn模型;以及

使用所述值集生成所述第一cnn模型的混淆矩阵;其中

针对每个精细类别确定相关联的粗类别包括:向所述混淆矩阵应用仿射传播算法。

示例3根据示例1或示例2所述的系统,其中,所述粗类别识别模块还被配置为:

使用拉普拉斯特征映射获取精细类别的低维特征表示。

示例4根据示例1到3中任一合适项所述的系统,其中,所述训练模块被配置为使用包括以下各项的操作来训练每个粗类别的精细cnn:

使用所述训练集来训练第二cnn模型;

根据所述第二cnn生成每个粗类别的精细cnn;以及

使用所述训练集的子集来训练每个粗类别的精细cnn,所述子集不包括具有与所述粗类别不相关联的精细类别的数据。

示例5根据示例1至4中任一合适项所述的设备,其中:

所述预训练模块还被配置为:将用于在粗类别之间进行区分的cnn与用于在精细类别之间进行区分的每个cnn进行组合,以形成分层深cnn(hd-cnn);以及

所述系统还包括微调模块,所述微调模块被配置为对所述hd-cnn进行微调。

示例6根据示例5所述的系统,其中,所述微调模块被配置为使用包括以下各项的操作来对所述hd-cnn进行微调:

使用学习因子开始所述微调;

通过使用所述学习因子迭代一系列训练批次来训练所述hd-cnn;

在每次迭代之后,将所述训练批次的训练误差与阈值进行比较;

基于所述比较来确定所述训练批次的训练误差低于阈值;以及

响应于确定所述训练批次的训练误差低于阈值,修改所述学习因子。

示例7根据示例5或示例6所述的系统,其中,所述微调模块被配置为使用包括以下各项的操作来对所述hd-cnn进行微调:

在对每个所述cnn的评估中应用时间稀疏元素,以在精细类别之间进行区分。

示例8根据示例1到7中任一合适项所述的系统,其中,包括分类数据的所述数据集包括:分类图像。

示例9一种方法,包括:

访问包括分类数据的数据集,所述分类数据具有多个精细类别;

识别多个粗类别,所述粗类别的数量少于精细类别的数量;

针对每个精细类别,确定相关联的粗类别;

训练用于在粗类别之间进行区分的基础卷积神经网络(cnn),所述基础cnn由机器的处理器实现;以及

训练每个粗类别的精细cnn,所述粗类别的精细cnn用于在与所述粗类别相关联的精细类别之间进行区分;

接收对数据进行分类的请求;

使用所述基础cnn,确定所述数据的粗类别;

使用所确定的粗类别的精细cnn,确定所述数据的精细类别;以及

响应于所述请求,发送所述数据的精细类别。

示例10根据示例9的方法,还包括:

将所述数据集划分为训练集和值集;

使用所述训练集来训练第一cnn模型;以及

使用所述值集生成所述第一cnn模型的混淆矩阵;其中

针对每个精细类别确定相关联的粗类别包括:向所述混淆矩阵应用仿射传播算法。

示例11根据示例9或示例10所述的方法,还包括:使用拉普拉斯特征映射获取精细类别的低维特征表示。

示例12根据示例9到11中任一项所述的方法,其中,所述训练每个粗类别的精细cnn包括:

使用所述训练集来训练第二cnn模型;

根据所述第二cnn生成每个粗类别的精细cnn;以及

使用所述训练集的子集来训练每个粗类别的精细cnn,所述子集不包括具有与所述粗类别不相关联的精细类别的数据。

示例13根据示例9到12中任一项所述的方法,还包括:

将所述基础cnn与每个精细cnn进行组合以形成分层深cnn(hd-cnn);以及

对所述hd-cnn进行微调。

示例14根据示例9到13中任一项所述的方法,其中,对所述hd-cnn的微调包括:

使用学习因子开始所述微调;

通过使用所述学习因子迭代一系列训练批次来训练所述hd-cnn;

在每次迭代之后,将所述训练批次的训练误差与阈值进行比较;

基于所述比较来确定所述训练批次的训练误差低于阈值;以及

响应于确定所述训练批次的训练误差低于阈值,修改所述学习因子。

示例15根据示例9到14中任一项所述的方法,其中,所述微调模块对所述hd-cnn的微调包括:

在对每个所述cnn的评估中应用时间稀疏元素,以在精细类别之间进行区分。

示例16根据权利要求9所述的方法,其中,包括分类数据的所述数据集包括:分类图像。

示例17一种承载指令的机器可读介质,所述指令能够由机器的处理器执行以执行根据示例9到16中任一项所述的方法。

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