一种基于细粒度识别的菜品及属性信息的识别系统及方法与流程

文档序号:23384825发布日期:2020-12-22 13:49阅读:632来源:国知局
一种基于细粒度识别的菜品及属性信息的识别系统及方法与流程

本发明属于计算机数字图像处理与模式识别技术领域,特别涉及一种菜品种类及属性识别系统及方法。



背景技术:

随着人们生活水平的日益提高,人们对于提升菜品相关的物质生活质量十分迫切,而良好的菜品识别方法与系统是实现健康膳食推荐、自主烹饪、营养摄入管理和餐厅食堂自助结算等工作的基础。

细粒度菜品识别就是识别成百上千的不同种类菜品的类别与属性信息。目前的细粒度菜品图像识别方法,主要是基于菜品的整体外观信息,通过卷积神经网络提取特征,而后进行分类和识别任务。过度依赖于模型预设的菜品种类,而忽视了菜品的食材属性信息以及食材信息与菜品之间的对应关系,存在对于新菜品的可拓展性较弱,菜品识别的鲁棒性较差,识别结果不够准确,属性信息识别欠缺等问题。此外,当前现有菜品识别方法仅考虑其菜品种类,而没有充分考虑到菜品的各种属性信息。



技术实现要素:

本发明的目的是提供一种基于细粒度识别的菜品及属性信息的识别系统及方法,以解决上述存在的一个或多个技术问题。本发明针对于网络中出现的大量的没有明显结构化特征的菜品图像,利用自定义的深度神经网络,实现百种菜品的种类和属性的识别的系统。在自定义的深度神经网络的设计上,考虑菜品类别及属性信息的识别,提升了百种菜品识别的准确率,增强了对于新菜品的拓展性,实现了多种菜品属性信息的识别。

为了实现上述目的,本发明采用如下技术方案:

一种基于细粒度识别的菜品及属性信息的识别方法,包括:

对待识别的菜品图像进行预处理;

将预处理后的图像输入训预先练好的深度神经网络菜品分类与属性识别器进行识别,输出菜品的类别属性信息;

将获得获得菜品的类别属性信息与预先建立的菜品数据库进行匹配,输出识别结果。

进一步的,预先练好的深度神经网络菜品分类与属性识别器的训练步骤包括:

建立基于深度神经网络的分类与识别网络;

将标注菜品属性标签的学习样本集图片输入建立的基于深度神经网络的分类与识别网络进行训练,并基于菜品类别与属性的联合学习损失函数调整基于深度神经网络的分类与识别网络参数;使用随机梯度下降的方式进行优化,生成菜品分类与属性识别器,每隔一个epoch的迭代进行一次模型测试,挑选一个性能最好的模型保存下来,最终保存下来的模型为训练好的深度神经网络菜品分类与属性识别器。

进一步的,将标注菜品属性标签的学习样本集图片输入建立的基于深度神经网络的分类与识别网络进行训练,并基于菜品类别与属性的联合学习损失函数调整基于深度神经网络的分类与识别网络参数,具体包括:

3.1、将标注菜品属性标签的学习样本集图片输入建立的基于深度神经网络的分类与识别网络的基网络,获得特征图;

3.2、将步骤3.1得到的基网络输出的特征图进行通道上的全局平均池化,全局平均池化后的结果作为特征图的通道权重向量,并与特征图逐通道加权求和,将其归一化后获得图像的热力图表示;

3.3、根据步骤3.2得到的热力图结果,设定阈值为0.25,从热力图上获得值大于0.25的最小矩形区域坐标;

3.4、利用步骤3.3中得到的最小矩形区域坐标对基网络输出的特征图进行剪裁,去除冗余信息,得到剪裁后的特征图;

3.5、将步骤3.4得到的剪裁后的特征图进行自适应池化,将其尺寸池化到步骤3.1中输出的特征图大小;

3.6、将步骤3.5得到的特征图通过两个3层卷积层所组成的双流网络,分别对菜品类别与属性进行学习,输出菜品类别特征与属性特征;

3.7、将步骤3.6得到的菜品类别特征和属性特征使用双线性池化进行特征组合,输出混合的嵌入特征;

3.8、将步骤3.7中输出的混合嵌入特征与步骤3.6中输出的菜品类别特征和属性特征进行组合,作为整张图像的特征表示;

3.9、将步骤3.8输出的特征表示通过全连接层输出菜品的类别属性信息。

进一步的,菜品类别与属性的联合学习损失函数的表达式为:

l=lf+li+la;

式中,lf为菜品分类的损失函数,li为食材属性识别的损失函数,la为菜系、烹饪方式、荤素属性、凉热属性、口味、菜点起源、菜品特色的交叉熵损失函数。

进一步的,菜品分类的损失函数lf的表达式为:

式中,t为菜品类别的真实标签,p为网络输出的概率值,x表示图像序号,每一批迭代训练共计k张图像。

进一步的,li具体表达式为:

式中,t为食材属性的真实标签,p为网络输出的概率值,n为每一批迭代训练中食材属性中的负样本数量,p表示每一批迭代训练中食材属性中的正样本数量,γ为约束参数。

进一步的,la具体表达式为:

式中,j表示菜系、烹饪方式、荤素属性、凉热属性、口味、菜点起源、菜品特色,tj为第j个菜品属性的真实标签,pj为网络第j个菜品属性输出的概率值,x表示图像序号,每一批迭代训练共计k张图像。

进一步的,基于深度神经网络的分类与识别网络由基网络、双流网络和全连接层构成;

所述基网络选取vgg16或resnet50卷积神经网络去掉最后一层池化层获得。

进一步的,将获得获得菜品的类别属性信息与预先建立的菜品数据库进行匹配,输出识别结果,具体包括:

6.1、根据菜品种类和7种属性信息的输出,通过softmax函数进行约束,表达式为:

式中,pi为输出第i个单元经过softmax函数约束后的输出概率值,ei表示第i个单元的输出在softmax函数约束前取值的指数函数值;

6.2、根据食材属性信息的输出,通过sigmoid函数进行约束,表达式为:

式中,xi为第i个单元的输出,pi为第i个单元经过sigmoid函数约束后的输出概率值;

6.3、根据步骤6.1中输出的菜品种类和7种属性信息的概率值,选取概率最大的作为菜品识别和属性信息的结果;

6.4、根据步骤6.2中输出的概率,设定门限值为0.5,取大于0.5时的输出作为该食材类别的识别结果;

6.5、根据步骤6.3中输出的菜品识别和属性信息的结果中的菜品特色属性信息,与数据库中的适宜人群进行匹配,输出匹配的适宜人群推荐结果;

6.6、根据步骤6.4中输出的食材类别结果,与数据库中的菜品进行欧氏距离比较,输出欧氏距离最近的三种菜品作为此类菜品的相似菜品推荐结果。

一种基于细粒度识别的菜品及属性信息的识别系统,所述系统包括:处理器以及与所述处理器耦合的存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现所述的一种基于细粒度识别的菜品及属性信息的识别方法的方法步骤。

相对于现有技术,本发明具有以下有益效果:

本发明通过终端或其他设备获取的菜品图片数据进行菜品种类与属性信息的识别。采用现有公开菜品图像数据,人工标注其菜品属性信息并建立数据库,形成学习样本;基于自定义的适用于菜品属性信息的深度神经网络和自定义的菜品属性信息的联合学习损失函数;训练出深度学习网络的菜品分类与属性识别器;采用菜品分类与属性识别器来对终端和其他设备获取的菜品图片进行识别;将识别结果与数据库中相关菜品和相关人群进行匹配,输出菜品识别与属性信息。本发明拓展了除菜品种类外的相关属性信息,并提高了现有识别的准确率,为实现人们健康膳食推荐、自主烹饪与营养摄入管理等工作提供了更好的系统的服务。

附图说明

图1是本发明实施例中一种基于细粒度识别的菜品及属性信息的识别方法的流程图;

图2是本发明实施例中的自定义的一种基于神经网络的分类与识别网络结构示意图;

图3是本发明实施例中基于现有公开菜品数据建立的标注信息数据库示意图;

图4是本发明实施例中菜品及属性信息识别的系统运行界面示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

请参阅图1所示,本发明提供一种基于细粒度识别的菜品及属性信息的识别方法,具体包括以下步骤:

步骤1:获取现有公开菜品图像数据,标注其菜品属性标签,形成学习样本集,并建立菜品数据库。

本实例在现有公开菜品数据图片的基础上,标注其属性信息后用于训练深度神经网络分类与识别器。具体基于现有研究的公开数据集vierofood-172中的图片和网络中的菜品图片,提取可用的图像数据,标注其食材成分、菜品特色(辣度、甜度、油腻度)、菜系、烹饪方式、口味、菜点起源属性信息形成学习样本集,并把样本集整理成后端mysql数据库。样本数据量大于11万张,其中3万张用于测试,其余用于训练。菜品种类大于150种,食材种类大于300种,菜系10种,烹饪方式24种,口味10种,菜点起源6种,人群推荐5种。图3是建立的标注信息数据库示意图。

步骤2:建立基于深度神经网络的分类与识别网络;

采用自定义的基于深度神经网络的分类与识别网络和自定义的菜品类别与属性的联合学习损失函数算法,训练一个深度神经网络目标检测器:通过深度神经网络学习样本集,通过不断减少真实属性与预测属性之间的误差使网络的预测结果与真实结果相近。

本发明建立一种基于深度神经网络的分类与识别网络,是考虑到菜品不具备明显的结构化特征,并且一道菜品的外观是由不同的食材混杂在一起,所以通过生成热图来达到关注菜品区域的目的,通过双流网络来强化学习菜品的属性信息,从而实现菜品及其属性信息的识别,同时提升菜品类别及属性识别的正确率。

本发明选取vgg16或resnet50卷积神经网络作为特征提取的基网络,并去掉最后一层池化层保证输出尺寸;基网络输出连接双流网络,双流网络连接全连接层。

深度神经网络在图像分类与识别领域已经取得很大的进展,本发明可以采用多种深度神经网络作为特征提取的基网络,其中有:vggnet、resnet、densenet等。经过多次实验测试,vgg16在速度与准确性之间取得了比较的权衡。本发明在采用vgg16深度神经网络的时候取得了最好的效果,但并不局限于vgg16深度神经网络。

vgg16网络是一种由13层卷积层和3层全连接层组成的卷积神经网络。可用于图像分类与识别、目标检测等各种计算机视觉任务的特征提取网络。由universityofoxford(牛津大学)的karensimonyan等人在2014年提出,详见文献:k.simonyananda.zisserman,“verydeepconvolutionalnetworksforlarge-scaleimagerecognition,”基本思想是通过3*3大小的小尺寸卷积核,更深的特征通道数和网络深度能够学习到更好的特征。实验证明使用更深的网络具有更好的性能,vgg16在网络规模和准确度的权衡上有明显提升。

步骤3:训练深度神经网络的分类与识别网络,获得训练好的深度神经网络菜品分类与属性识别器;

将步骤1标注菜品属性标签的学习样本集图片输入步骤2建立的基于深度神经网络的分类与识别网络进行训练,并基于菜品类别与属性的联合学习损失函数调整基于深度神经网络的分类与识别网络参数;使用随机梯度下降的方式进行优化,生成菜品分类与属性识别器,每隔一个epoch的迭代进行一次模型测试,挑选一个性能最好(损失函数最小)的模型保存下来,最终保存下来的模型为训练好的深度神经网络菜品分类与属性识别器。

具体的训练过程包括:

3.1、将步骤1标注菜品属性标签的学习样本集图片输入步骤2建立的基于深度神经网络的分类与识别网络的基网络,获得特征图;

3.2、将步骤3.1得到的基网络输出的特征图进行通道上的全局平均池化,全局平均池化后的结果作为特征图的通道权重向量,并与特征图逐通道加权求和,将其归一化后获得图像的热力图表示;

3.3、根据步骤3.2得到的热力图结果,设定阈值为0.25,从热力图上获得值大于0.25的最小矩形区域坐标;

3.4、利用步骤3.3中得到的最小矩形区域坐标对基网络输出的特征图进行剪裁,去除冗余信息,得到剪裁后的特征图;

3.5、将步骤3.4得到的剪裁后的特征图进行自适应池化,将其尺寸池化到步骤3.1中输出的特征图大小;

3.6、将步骤3.5得到的特征图通过两个3层卷积层所组成的双流网络,分别对菜品类别与属性进行学习,输出菜品类别特征与属性特征;

3.7、将步骤3.6得到的菜品类别特征和属性特征使用双线性池化进行特征组合,输出混合的嵌入特征;

双线性池化是一种特征融合和强化方式,可用于图像分类与识别等任务。由universityofmassachusettsamherst(马萨诸塞大学阿默斯特分校)的tsung-yulin等人在2015年提出,详见文献:t.-y.lin,a.roychowdhury,ands.maji,“bilinearcnnmodelsforfinegrainedvisualrecognition,”基本思想是通过矩阵外积操作将特征图进行组合,将相关的重要特征进行融合和增强。实验证明使用双线性池化在特征增强与融合方面上有明显提升;

3.8、将步骤3.7中输出的混合嵌入特征与步骤3.6中输出的菜品类别特征和属性特征进行组合,作为整张图像的特征表示;

3.9、将步骤3.8输出的特征表示通过全连接层输出菜品的类别属性信息。

根据每次训练后全连接层输出菜品的类别属性信息进行联合学习损失函数计算,并基于菜品类别与属性的联合学习损失函数调整基于深度神经网络的分类与识别网络参数;使用随机梯度下降的方式进行优化,生成菜品分类与属性识别器,每隔一个epoch的迭代进行一次模型测试,挑选一个性能最好(损失函数最小)的模型保存下来,最终保存下来的模型为训练好的深度神经网络菜品分类与属性识别器。

其中,设置菜品类别与属性的联合学习损失函数,是考虑到菜品由多种属性信息。比如不同的食材属性,菜品中使用的食材十分不均衡,常见的食材被用于多种菜品,而罕见稀缺的食材很少被使用,这就决定了不同的食材具有不同的重要程度,菜品与食材属性的对应关系多样且复杂,这些属性均对于菜品及其属性的识别起到重要作用。所以通过自定义的联合学习损失函数,缓解菜品中食材属性的不均衡问题,提升菜品及其属性识别的准确率。具体做法是:

(1)菜品类别与属性的联合学习损失函数具体表达式为:

l=lf+li+la;

式中,lf为菜品分类的损失函数,li为食材属性识别的损失函数,la为菜系、烹饪方式、荤素属性、凉热属性、口味、菜点起源、菜品特色的交叉熵损失函数;

(2)根据(1)中损失函数中lf为菜品分类的交叉熵损失函数,其中lf具体表达式为:

式中,t为菜品类别的真实标签,p为网络输出的概率值,x表示图像序号,每一批迭代训练共计k张图像;

(3)根据(1)中损失函数中li为食材属性识别的损失函数所示,其中li具体表达式为:

式中,t为食材属性的真实标签,p为网络输出的概率值,n为每一批迭代训练中食材属性中的负样本数量,p表示每一批迭代训练中食材属性中的正样本数量,γ为约束参数设定为2。由于食材属性中正样本数量远远小于负样本数量,因此引入n和p参数作为均衡参数,增大对于正样本食材的学习能力。γ为约束参数,值越大,困难样本在损失函数的比例越大,通过此参数,强化学习食材中的困难样本;

(4)根据(1)中损失函数中la为菜品菜系、烹饪方式、荤素属性、凉热属性、口味、菜点起源、菜品特色的交叉熵损失函数,其中la具体表达式为:

式中,j表示菜系、烹饪方式、荤素属性、凉热属性、口味、菜点起源、菜品特色,共计7种属性输出,tj为第j个菜品属性的真实标签,pj为网络第j个菜品属性输出的概率值,x表示图像序号,每一批迭代训练共计k张图像。

步骤4:对新获取的待识别的菜品图像进行图像增强预处理;

将终端及各种设备获取的待识别图像进行规范化,并将其尺寸采样成224*224大小。

步骤5:采用步骤3训练好的深度神经网络菜品分类与属性识别器对步骤4处理过的待识别的菜品图像进行识别,获得菜品的类别属性信息。

步骤6:通过步骤5获得菜品的类别属性信息,与步骤1建立的菜品数据库进行匹配,输出识别结果。

请参阅图4,步骤6的操作具体如下:

(1)根据菜品种类和7种属性信息的输出,通过softmax函数进行约束,表达式为:

式中,pi为输出第i个单元经过softmax函数约束后的输出概率值,ei表示第i个单元的输出在softmax函数约束前取值的指数函数值;

(2)根据食材属性信息的输出,通过sigmoid函数进行约束,表达式为:

式中,xi为第i个单元的输出,pi为第i个单元经过sigmoid函数约束后的输出概率值;

(3)根据(1)中输出的菜品种类和7种属性信息的概率值,选取概率最大的作为菜品识别和属性信息的结果;

(4)根据(2)中输出的概率,设定门限值为0.5,取大于0.5时的输出作为该食材类别的识别结果;

(5)根据(3)中输出的菜品识别和属性信息的结果中的菜品特色属性信息,与数据库中的5种适宜人群进行匹配,输出匹配的适宜人群推荐结果。

(6)根据(4)中输出的食材类别结果,与数据库中的菜品进行欧氏距离比较,输出欧氏距离最近的三种菜品作为此类菜品的相似菜品推荐结果。

综上所述,针对现有的方法没有关注菜品的食材等细粒度的属性和利用属性信息提升菜品识别的正确率这个缺陷,本发明提出的方法中,自定义网络结构与损失函数,增加了对菜品进行属性的识别,同时提升菜品及食材属性识别的正确率,同时通过建立菜品数据库的方式,可以通过识别菜品包含的食材辅助判断菜品种类,不受限于模型预设的菜品种类,增加系统的可靠性和可扩展性。是实现健康膳食推荐、自主烹饪、营养摄入管理和餐厅食堂自助结算等工作的重要基础。

下面给出实验结果分析:

实验结果分析分别采用针对菜品分类的top1、top5;针对食材属性识别的micro-f1、macro-f1和accuracy来评价。其中对比方法分别有原始的vgg16、原始的双线性池化卷积神经网络b-cnn、以及2019年的传统细粒度分类方法dcl(destructionandconstructionlearning)、基于vgg16的菜品种类及属性信息联合学习的方法vgg16-m。测试结果如表1所示。

表1菜品数据集上的测试效果

实验结果表明,本发明通过加入菜品的属性信息,自定义网络结构与损失函数,实现对菜品属性信息的有效识别的同时,提高原始算法的准确率,并为实现健康膳食推荐、自主烹饪、营养摄入管理和餐厅食堂自助结算等工作提供了重要基础。

和现有的方法相比,本发明加入了菜品相关的属性信息,通过自定义网络结构和损失函数提升了菜品及属性识别的准确率,并在电脑系统中实时处理,极大的丰富了菜品信息,拓展了多种菜品相关的属性识别任务。是实现健康膳食推荐、自主烹饪、营养摄入管理和餐厅食堂自助结算等工作的重要基础。

本发明还提供了一种基于细粒度识别的菜品及属性信息的识别系统,所述系统包括:处理器以及与所述处理器耦合的存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现上述一种基于细粒度识别的菜品及属性信息的识别方法的方法步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

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