菜肴图像识别方法及装置与流程

文档序号:21104506发布日期:2020-06-16 21:08阅读:272来源:国知局
菜肴图像识别方法及装置与流程
本申请涉及菜肴图像识别方法及装置,属于计算机
技术领域

背景技术
:随着经济的快速发展,人民生活水平不断提高,人们在品尝美食的同时也会记录自己的饮食,或是将这些食物以照片的形式发布到社交网络上与他人分享自己的生活,或者通过应用程序搜索美食的菜单。而通过菜肴图像辅助查询菜肴信息、记录日常饮食是用户经常使用的方法之一。在用户通过菜肴图像进行美食互动时,电子设备(如:手机、计算机、可穿戴式设备或者服务器等具有图像处理能力的设备)通常需要使用菜肴图像识别模型对菜肴图像进行图像识别,以得到菜肴图像的特征信息。然而,现有的菜肴图像识别模型(如:alexnet模型、googlenet模型、inceptionv3模型等)忽略了随着神经网络不断加深,数据分布变化而带来的梯度消失问题,从而降低菜肴图像识别的准确性。技术实现要素:本申请提供了一种菜肴图像识别方法及装置,可以解决现有的菜肴图像识别模型忽略数据分布随神经网络加深而梯度消失的问题。本申请提供如下技术方案:第一方面,提供了一种菜肴图像识别方法,所述方法包括:获取待识别的目标菜肴图像;获取图像识别模型,所述图像识别模型基于神经网络模型建立,且所述神经网络模型中的多层中间层添加了批归一化层,所述批归一化层包括归一化层和线性变换层;所述归一化层用于对所述当前层的输入数据进行归一化;所述线性变换层用于将归一化后的数据线性变换至预设分布区间,所述线性变换层中的线性变换参数是通过对所述图像识别模型进行训练得到的;将所述目标菜肴图像输入图像识别模型,得到图像识别结果。可选地,所述获取图像识别模型,包括:获取训练数据、所述训练数据的均值和方差;获取待训练的初始网络模型,所述初始网络模型的网络结构与所述图像识别模型的网络结构相同;将所述训练数据、所述均值和所述方差输入所述初始网络模型,以使所述初始网络模型中的每层归一化层按照所述均值和所述方差对当前层的输入数据进行归一化处理、所述初始网络模型的线性变换层对归一化后的数据进行线性变换后,得到训练结果;基于所述训练结果与真实结果的差异对所述初始网络模型的模型参数进行迭代训练,得到训练后的图像识别模型;其中,所述模型参数包括所述线性变换层中的线性变换参数。可选地,所述初始网络模型中多层中间层的归一化层通过下式表示:其中,xi表示当前层的输入数据中第i个数据,μb是所述当前层的输入数据的均值,是所述训练数据的方差;∈表示预设正数,所述初始网络模型中多层中间层的线性变换层通过下式表示:其中,表示归一化后的数据,γ表示所述线性变换层的线性变换参数中的尺度变换参数,β表示所述线性变换层的线性变换参数中的平移参数。可选地,所述基于所述训练结果与真实结果的差异对所述初始网络模型的模型参数进行迭代训练,得到训练后的图像识别模型之后,还包括:获取测试数据,所述测试数据与所述训练数据不同;基于无偏估计法确定所述测试数据的均值估算值和方差估算值;将所述测试数据、所述均值估算值和所述方差估算值输入所述训练后的图像识别模型,以使所述训练后的图像识别模型中的每层归一化层按照所述均值估算值、所述方差估算值对当前层的输入数据进行归一化处理、所述训练后的图像识别模型的线性变换层使用训练后的线性变换参数对归一化后的数据进行线性变换,得到测试结果;基于所述测试结果确定所述训练后的图像识别模型的模型性能是否达到期望性能;在所述模型性能达到所述期望性能时,确定所述训练后的图像识别模型为用于识别所述目标菜肴图像的图像识别模型。可选地,所述训练后的图像识别模型中多层中间层的归一化层通过下式表示:其中,xt表示所述测试数据中第t个数据,e[x]是所述均值估算值,var[x]是所述方差估算值;∈表示预设正数。所述训练后的图像识别模型中多层中间层的线性变换层通过下式表示:其中,γ表示所述线性变换层的线性变换参数中的尺度变换参数,β表示所述线性变换层的线性变换参数中的平移参数。可选地,所述获取图像识别模型,包括:获取所述目标菜肴图像的目标识别需求;在预设的识别需求与图像识别模型的对应关系中,查找所述目标识别需求对应的图像识别模型。可选地,所述方法还包括:确定第一预设时长内图像识别请求的数量是否大于请求阈值,所述图像识别请求携带有所述目标菜肴图像;在所述图像识别请求的数量大于所述请求阈值时增加请求处理服务器,所述请求处理服务器用于处理图像识别请求;基于负载均衡原则将各个图像识别请求调度至各个请求处理服务器。可选地,所述方法还包括:确定第二预设时长内目标菜肴图像的数量是否大于图像阈值;在所述目标菜肴图像的数量大于所述图像阈值时增加图像识别节点,每个图像处理节点运行有所述图像识别模型,以对接收到的目标菜肴图像进行图像识别。可选地,所述方法还包括:检测所述图像识别模型是否存在更新;在所述图像识别模型存在更新时读取模型配置文件,得到更新后的图像识别模型,以使用所述更新后的图像识别模型对所述目标菜肴图像进行图像识别。第二方面,提供了一种菜肴图像识别装置,所述装置包括:图像获取模块,用于获取待识别的目标菜肴图像;模型获取模块,用于获取图像识别模型,所述图像识别模型基于神经网络模型建立,且所述神经网络模型中的多层中间层添加了批归一化层,所述批归一化层包括归一化层和线性变换层;所述归一化层用于对所述当前层的输入数据进行归一化;所述线性变换层用于将归一化后的数据线性变换至预设分布区间,所述线性变换层中的线性变换参数是通过对所述图像识别模型进行训练得到的;图像识别模块,用于将所述目标菜肴图像输入图像识别模型,得到图像识别结果。第三方面,提供一种菜肴图像识别装置,所述装置包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现第一方面所述的菜肴图像识别方法。第四方面,提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序由所述处理器加载并执行以实现第一方面所述的菜肴识别方法。本申请的有益效果在于:通过获取待识别的目标菜肴图像;获取图像识别模型,图像识别模型基于神经网络模型建立,且神经网络模型中的多层中间层添加了批归一化层,批归一化层包括归一化层和线性变换层;归一化层用于对当前层的输入数据进行归一化;线性变换层用于将归一化后的数据线性变换至预设分布区间,线性变换层中的线性变换参数是通过对图像识别模型进行训练得到的;将目标菜肴图像输入图像识别模型,得到图像识别结果;可以解决现有的菜肴图像识别模型忽略数据分布随神经网络加深而梯度消失的问题;由于菜肴图像识别模型多层中间层均包括归一化层和线性变换层,因此,可以保证多层中间层计算后数据分布仍存在梯度,提高菜肴识别的准确性。上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。附图说明图1是本申请一个实施例提供的vgg-16的结构示意图;图2是本申请一个实施例提供的菜肴图像识别系统的结构示意图;图3是本申请一个实施例提供的改进后的vgg-16的结构示意图;图4是本申请一个实施例提供的菜肴图像识别方法的流程图;图5是本申请一个实施例提供的菜肴图像识别装置的框图。具体实施方式下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。首先,对本申请涉及的若干名词进行解释。无偏估计:是用样本统计量来估计总体参数时的一种无偏推断。估计量的数学期望等于被估计参数的真实值,则称此估计量为被估计参数的无偏估计,即具有无偏性,是一种用于评价估计量优良性的准则。无偏估计的意义是:在多次重复下,它们的平均数接近所估计的参数真值。神经网络模型:是以神经元的数学模型为基础来描述的。简单地讲,它是一个数学模型。神经网络模型由网络拓扑、节点特点和学习规则来表示。常用的神经网络模型包括vgg-16。参考图1,vgg-16包括13个卷积层和3个全连接层。在将vgg-16应用于细粒度识别场景(细粒度图像识别场景是指针对图像数据集中相似的子类别进行分类的图像处理场景,即分类对象一般都属于同一个大类,子类之间差距较小的场景)时,一般地,随着网络深度的增加,各层网络的输入数据的梯度逐渐消失。训练数据:是指用于训练神经网络模型,估计模型参数的数据。测试数据:是指用于测试和评估训练出来的神经网络模型好坏的数据,这些不能用于训练神经网络模型。图2是本申请一个实施例提供的菜肴图像识别系统的结构示意图,如图2所示,该系统至少包括:客户端110和请求处理服务器120。客户端110与请求处理服务器120基于有线或者无线方式建立通信。示意性地,客户端110基于http协议向请求处理服务器120发送图像识别请求。客户端110用于生成图像识别请求,并将该图像识别请求发送至请求处理服务器120。其中,图像识别请求包括待识别的目标菜肴图像。请求处理服务器120用于接收图像识别请求,对该图像识别请求进行处理。请求处理服务器120中运行有菜肴图像识别引擎,以通过该菜肴图像识别引擎对该图像识别请求进行处理。其中,菜肴图像识别引擎包括图像预处理模块和图像识别模块。图像预处理模块基于tornado框架,图像预处理模块主要负责接收客户端110传送的图像信息并转发至图像识别模块,并将图像识别模块发送的识别结果转发给客户端110。在图像识别请求的并发数量较大时,单个tornado无法在响应时间内成功转发请求时,可以通过nginx的负载均衡和反向代理功能增加tornado结点,换句话说,增加请求处理服务器的数量。由于图像识别是一个较为耗时的任务,本申请中将图像预处理模块向图像识别模块发送的http请求设定为异步,这样无需等待图像识别模块返回识别结果即可马上发送下一个请求。通过图像预处理模块还可以查询图像识别模块硬件的负载情况,根据对负载情况的监控及时增加或减少图像识别节点。图像识别模块(tensorflowserving,tfs)包括多个图像识别节点(比如:gpu)。每个图像识别节点运行有图像识别模型,以对接收到的目标菜肴图像进行图像识别。具体地,请求处理服务器120对图像识别请求进行处理,包括:获取待识别的目标菜肴图像;获取图像识别模型;将目标菜肴图像输入图像识别模型,得到图像识别结果。其中,图像识别模型基于神经网络模型建立,且神经网络模型中的多层中间层添加了批归一化层,所述批归一化层包括归一化层和线性变换层;归一化层用于对当前层的输入数据进行归一化;线性变换层用于将归一化后的数据线性变换至预设分布区间,线性变换层中的线性变换参数是通过对图像识别模型进行训练得到的。以神经网络模型为图1所示的vgg-16为例,在vgg-16的多层中间层(除最后一层中间层之外的其它中间层)中均加入批归一化层(图3中的bn),该归一化层包括归一化层和线性变换层,得到改进后的vgg-16,参考图3。这样,多层中间层均进行数据归一化,可以避免随网络深度增加,数据梯度消失的问题。需要补充说明的是,本申请中仅以识别菜肴图像为例进行说明,在其它实施例中,本申请提供的菜肴图像识别方法还可以应用于其它细粒度识别场景,本申请不对该菜肴图像识别方法的识别场景作限定。图4是本申请一个实施例提供的菜肴图像识别方法的流程图,本实施例以该方法应用于图2所示的菜肴图像识别系统中,且各个步骤的执行主体为该系统中的请求处理服务器120为例进行说明。该方法至少包括以下几个步骤:步骤401,获取待识别的目标菜肴图像。可选地,接收客户端发送的图像识别请求,获取该图像识别请求中携带的目标菜肴图像。其中,图像识别请求携带有目标菜肴图像。当然,目标菜肴图像也可以是预存在存储介质中的图像。可选地,请求处理服务器还用于确定第一预设时长内图像识别请求的数量是否大于请求阈值;在图像识别请求的数量大于请求阈值时增加请求处理服务器,请求处理服务器用于处理图像识别请求;基于负载均衡原则将各个图像识别请求调度至各个请求处理服务器。步骤402,获取图像识别模型,该图像识别模型基于神经网络模型建立,且神经网络模型中的多层中间层添加了批归一化层,批归一化层包括归一化层和线性变换层;归一化层用于对当前层的输入数据进行归一化;线性变换层用于将归一化后的数据线性变换至预设分布区间,线性变换层中的线性变换参数是通过对图像识别模型进行训练得到的。其中,预设分布区间可以是[-2,2],当然,预设分布区间也可以按照需要设置为其它数值,本实施例不对预设分布区间的设置方式作限定。在一个示例中,请求处理服务器获取目标菜肴图像的目标识别需求;在预设的识别需求与图像识别模型的对应关系中,查找目标识别需求对应的图像识别模型。比如:目标识别需求为位置信息,识别需求与图像识别模型的对应关系参考下表一。若用户选择自己位置信息为江苏苏州,那么获取到的图像识别模型为识别中式菜肴图像的模型;如果用户选择自己位置信息为日本东京,那么获取到的图像识别模型为识别日式菜肴图像的模型。表一:识别需求图像识别模型中国识别中式菜肴图像的模型日本识别日式菜肴图像的模型欧洲识别西式菜肴图像的模型在另一个示例中,请求处理服务器读取存储在存储介质中的图像识别模型。图像识别模型是通过对初始网络模型进行训练得到的。初始网络模型的网络结构与图像识别模型的网络结构相同。在又一个示例中,请求处理服务器获取训练数据、训练数据的均值和方差;获取待训练的初始网络模型;将训练数据、均值和方差输入初始网络模型,以使初始网络模型中的每层归一化层按照均值和方差对当前层的输入数据进行归一化处理、初始网络模型的线性变换层对归一化后的数据进行线性变换后,得到训练结果;基于训练结果与真实结果的差异对初始网络模型的模型参数进行迭代训练,得到训练后的图像识别模型;其中,模型参数包括线性变换层中的线性变换参数。可选地,初始网络模型中多层中间层的归一化层通过下式表示:其中,xi表示当前层的输入数据中第i个数据,μb是当前层的输入数据的均值,是训练数据的方差;∈表示预设正数,初始网络模型中多层中间层的线性变换层通过下式表示:其中,表示归一化后的数据,γ表示线性变换层的线性变换参数中的尺度变换参数,β表示线性变换层的线性变换参数中的平移参数。在得到训练后的图像识别模型之后,请求处理服务器获取测试数据,测试数据与训练数据不同;基于无偏估计法确定测试数据的均值估算值和方差估算值;将测试数据、均值估算值和方差估算值输入训练后的图像识别模型,以使训练后的图像识别模型中的每层归一化层按照均值估算值、方差估算值对当前层的输入数据进行归一化处理、训练后的图像识别模型的线性变换层使用训练后的线性变换参数对归一化后的数据进行线性变换,得到测试结果;基于测试结果确定训练后的图像识别模型的模型性能是否达到期望性能;在模型性能达到期望性能时,确定训练后的图像识别模型为用于识别目标菜肴图像的图像识别模型。训练后的图像识别模型中多层中间层的归一化层通过下式表示:其中,xt表示测试数据中第t个数据,e[x]是均值估算值,var[x]是方差估算值;∈表示预设正数,e[x]←eb[μb]即,e[x]是使用无偏估计法对测试数据的均值进行估算得到的。即,var[x]是使用无偏估计法对测试数据的方值进行估算得到的。m表示测试数据的编号。训练后的图像识别模型中多层中间层的线性变换层通过下式表示:其中,γ表示线性变换层的线性变换参数中的尺度变换参数,β表示线性变换层的线性变换参数中的平移参数。步骤403,将目标菜肴图像输入图像识别模型,得到图像识别结果。可选地,请求处理服务器在得到图像识别结果后,还可以将该图像识别结果发送至客户端。可选地,请求处理服务器还可以确定第二预设时长内目标菜肴图像的数量是否大于图像阈值;在目标菜肴图像的数量大于图像阈值时增加图像识别节点,每个图像处理节点运行有图像识别模型,以对接收到的目标菜肴图像进行图像识别。在一些实施例中,通过使用的硬件设备(如:nvidiatitanxp)进行图像识别,通过监控硬件的使用情况适时增加或减少硬件数量。可选地,请求处理服务器还可以检测图像识别模型是否存在更新;在图像识别模型存在更新时读取模型配置文件,得到更新后的图像识别模型,以使用更新后的图像识别模型对目标菜肴图像进行图像识别。这样,如果后续的过程中需要增加新的模型或是更新模型版本,可以修改相应的模型配置文件,设置轮询模型配置文件的时间,这样请求处理服务器会自动重新检测配置文件是否有变化,如果有变化则按照两版文件中不同之处进行版本或模型的重新加载;如果没有变化,则不做出改动。最后,开机后用户的访问量可以通过相应的接口查询到。综上所述,本实施例提供的菜肴图像识别方法,通过获取待识别的目标菜肴图像;获取图像识别模型,图像识别模型基于神经网络模型建立,且神经网络模型中的多层中间层添加了批归一化层,批归一化层包括归一化层和线性变换层;归一化层用于对当前层的输入数据进行归一化;线性变换层用于将归一化后的数据线性变换至预设分布区间,线性变换层中的线性变换参数是通过对图像识别模型进行训练得到的;将目标菜肴图像输入图像识别模型,得到图像识别结果;可以解决现有的菜肴图像识别模型忽略数据分布随神经网络加深而梯度消失的问题;由于菜肴图像识别模型多层中间层均包括归一化层和线性变换层,因此,可以保证多层中间层计算后数据分布仍存在梯度,提高菜肴识别的准确性。另外,通过动态增加请求处理服务器的数量,可以接收更多请求,提高图像识别请求的处理速度。另外,通过动态增加图像识别节点的数量,可以增加目标菜肴图像的吞吐量,提高图像识别速度。另外,通过动态增加、删除、更新模型,可以保证使用最新的图像识别模型来进行菜肴图像的识别,提高菜肴识别的准确性。图5是本申请一个实施例提供的菜肴图像识别装置的框图,本实施例以该装置应用于图2所示的图像识别系统中的请求处理服务器120为例进行说明。该装置至少包括以下几个模块:图像获取模块510,用于获取待识别的目标菜肴图像;模型获取模块520,用于获取图像识别模型,所述图像识别模型基于神经网络模型建立,且所述神经网络模型中的多层中间层添加了批归一化层,所述批归一化层包括归一化层和线性变换层;所述归一化层用于对所述当前层的输入数据进行归一化;所述线性变换层用于将归一化后的数据线性变换至预设分布区间,所述线性变换层中的线性变换参数是通过对所述图像识别模型进行训练得到的;图像识别模块530,用于将所述目标菜肴图像输入图像识别模型,得到图像识别结果。相关细节参考上述方法实施例。需要说明的是:上述实施例中提供的菜肴图像识别装置在进行图像识别时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将菜肴图像识别装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的菜肴图像识别装置与菜肴图像识别方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的菜肴图像识别方法。可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的菜肴图像识别方法。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1