一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于深度学习的多类别食材识别系统及方法与流程

2022-02-19 02:48:39 来源:中国专利 TAG:


1.本发明涉及图像识别技术领域,尤其是涉及一种基于深度学习的多类别食材识别系统及方法。


背景技术:

2.近年来随着人工智能及深度学习的迅速发展,餐饮行业的许多环节都有了或多或少的升级,自动化渗入到许多环节之中。但在食材进行加工之前的检测过程中,针对各种食材类别的自动分类识别技术并不成熟,例如在许多餐厅和企业食堂,对供应商提供的初始食材的质检还是通过人工分拣判断完成,不仅增加了人力成本,还可能出现管理不利及相关人员权力滥用的问题。随着计算机视觉技术广泛应用于各种图像的分类任务,使用相关技术完成各种不同食材的分类识别成为可能。
3.目前虽然已有关于食材的识别分类研究和应用,但都是针对一些常见的蔬菜和水果,且多为交易场景下,同时种类比较少。针对本项目计划解决的多类别(600类以上)食材检测识别问题的研究基本还处于尚未起步的阶段,甚至都还没有一个可用的数据集。同时,当类别数达到一定数量级别时,分类识别的难度也会大大增加,直接使用现有算法很难达到理想的准确度。
4.综合以上考虑,很有必要设计搭建一种基于深度学习的多类别食材识别方法,部署在后厨设备上,对供应商运送进来的食材进行快速准确的识别。


技术实现要素:

5.为解决现有技术的不足,实现多类别食材识别的目的,本发明采用如下的技术方案:
6.一种基于深度学习的多类别食材识别系统,包括:初始化层、密集连接层、过渡层、分类层,密集连接层融合其之前所有层的特征信息,使得特征资源利用率有很大提升,分别与初始化层和分类层连接,过渡层为相邻密集连接层之间的过渡区域,该卷积神经网络结构简洁,它可综合利用多层复杂度较低的浅层特征来扩增信息量,得到一个具有较好泛化性能的决策函数,提高模型的抗过拟合性,最后一个特征提取的卷积层后,加入注意力模块,使系统能有侧重地学习输入图片中的各种特征,兼顾整体特征与局部特征,以实现更有效的特征提取,从而提高识别准确率;
7.所述初始化层,对输入图片进行初始化,得到初始化后的特征图;
8.所述密集连接层,使用多个特征图大小相同的卷积模块,对输入的特征图进行深层特征提取,将前面所有卷积模块与后面的卷积模块建立连接,保留不同层次的特征并一起向后传播,卷积模块包括批量归一化层、线性整流层、卷积层,批量归一化层,对数据进行规范化,使其满足标准正态分布,同时也减少了整个训练集梯度的计算时间,线性整流层,采用relu激活函数取代sigmoid、tanh等激活函数,使梯度下降和误差反向传播的过程更加高效,同时也较好地避免了梯度消失的问题,relu函数是一个分段线性函数,把所有的负值
都变为0,而正值不变,即一种单侧抑制。当输入是负值的情况下,神经元不会被激活,即同一时间只有部分神经元会被激活,使得神经网络中的神经元具有了稀疏激活性,从而加快运算效率,所述卷积层,用于对经过批量归一化层和线性整流层的数据进行特征提取;
9.所述过渡层,对之前密集连接层得到的特征图进行降维处理;
10.所述分类层,对特征进行分类,并映射到分类标签所在的空间;
11.所述注意力模块,从通道和空间两个维度,强化重要的特征,弱化不必要的特征,以提升网络的特征提取效率。
12.进一步地,所述注意力模块,提取特征公式如下:
[0013][0014][0015]
其中f是大小为h
×
w的c维输入特征,m
c
为大小为1
×
1的c维通道注意力图,m
s
为大小为h
×
w的s维空间注意力图,h、w分别表示高度和宽度,c和s表示维度;
[0016]
通道注意力的计算公式如下:
[0017]
m
c
(f)=h(mlp(avgpool(f)) mlp(maxpool(f)))
[0018]
空间注意力的计算公式如下:
[0019]
m
s
(f)=h(f7×7([avgpool(f) maxpool(f)]))
[0020]
其中f为输入量,avgpool表示平均池化,maxpool表示最大池化,h表示激活函数,mlp表示多层感知机,f7×7表示卷积核为7
×
7的卷积运算。
[0021]
进一步地,所述注意力机制,采用软性注意力机制,对于输入的n个信息,通过计算所有输入信息的加权平均值,确定输入信息的选取标准,在该机制下以注意力权重α
i
为概率,选择第i个信息的可能性表达公式为:
[0022][0023]
其中p表示取概率操作,x
i
表示输入的第i个信息,q表示需要查询的信息,z表示注意力变量,s(x
i
,q)表示注意力评分函数,用softmax函数将概率结果归一化,
[0024]
通过计算得到注意力权重α
i
,在完成重要信息提取工作之前,将权重与特征向量进行融合,操作过程如下:
[0025][0026]
求得的值,即为该批次输入所需分配的注意力总量。
[0027]
进一步地,所述批量归一化层,在前向传播过程中,每个节点都有m个输出,批标准化batch normalization对该层每个节点的m个输出进行归一化再输出,公式如下:
[0028][0029]
其中表示输入当前批次batch的第b个样本时,该层第i个输入节点的值,x
i
为构成的行向量,长度为批大小batch size的值m,μ和σ分别表示均值
和标准差,ε为引入的极小量,γ和β分别为该行的scale和shift参数,为归一化后的结果。
[0030]
进一步地,所述过渡层,包括卷积操作和平均池化操作,卷积操作用于减少特征图的数量,平均池化操作用于减小特征图大小,减轻计算负担。
[0031]
进一步地,所述分类层,对最后一个密集连接层得到的特征图进行全局平均池化操作,对数据进行降维来融合前面学到的特征,然后,使用softmax函数对全局平均池化得到的结果,进行归一化,得到输入图片属于某一类的概率向量。
[0032]
进一步地,系统的任意两层之间直接相连,每层网络之前的所有层的输出信息,都会通过合并操作汇集到当前层,同时当前层学习得到的特征图信息,也会传给之后的所有层:
[0033]
x
l
=h
l
([x0,x1,...,x
l
‑1])
[0034]
其中l表示层,x
l
表示第l层的输出,h
l
表示一个非线性变换。
[0035]
一种基于深度学习的多类别食材识别方法,包括如下步骤:
[0036]
s1,食材进行图片采样,
[0037]
s2,按类别划分所有采集到的食材图片,使用统一的命名标准对其进行编号,构建多类别食材数据集;
[0038]
s3,将食材数据集,按比例划分为训练集、验证集和测试集;
[0039]
s4,通过预处理和图片增强,丰富样本;
[0040]
s5,构建基于深度学习的多类别食材识别系统,通过输入食材数据集,得到训练好的识别系统及其权重;
[0041]
s6,根据不同单位、不同时间的食材,通过修改包括类别标签、载入权重训练的方式对模型进行调整,以达到更高的识别准确率;
[0042]
s7,获取食材图片后,传到本地和/或云端服务器,使用s5构建好的系统,对食材图片进行分析,得出识别结果并展示。
[0043]
进一步地,所述s1的采样,包括应用场景设备采集和其他场景采集,应用场景采集将食材放置于摄像头下的传送带进行拍摄,以模拟实际应用场景,食材摆放成不同的角度、相对位置关系,食材的数量由少到多慢慢增加,其他场景采集包括终端实拍和网络图片筛选。
[0044]
所述s2中,使用三位字母加数字的命名方式,对食材进行多层次分类,第一级采用两位字母,包括副食、肉禽、蔬果、水产四大类,第二级增加一位字母,对四大类做进一步细分,第三级增加数字编号,进行精确到具体种类,对所有食材图片进行命名编号,完成食材数据集的构建。
[0045]
所述s4中,将图片预处理到600*600,该尺寸的选择是综合考虑准确率和计算代价的结果,多次试验发现选择该分辨率时准确率和计算量达到较好的平衡,随机选取中心裁剪、翻转、旋转、调整亮度、调整对比度、调整饱和度的一种或几种操作,随机编排操作顺序,对图片进行增强,由于所拍食材图片中有效食材区域通常位于中间区块,为了尽量避免背景干扰,使网络加强对主体特征的学习,因此使用pytorch中的centercrop方法进行中心裁剪,得到中间区域450*450的图像,以增加了样本容量和多样性。
[0046]
进一步地,通过边用边调整的策略,对系统进行持续更新,更新类别标签及食材图
片数据库,剔除该场景下没有的食材类别,同时将使用过程中拍摄到的图片加入食材数据集用于训练,训练过程并非从头开始,而是基于之前得到的初始模型参数,通过将frozen属性值设置为true可以将相应层的参数固定住,不参与训练,只训练最后几层网络以及分类器的参数。这种更新方式既能延用之前的训练结果又能学习到新增图片的特征,同时效率也非常高。
[0047]
本发明的优势和有益效果在于:
[0048]
本发明采用基于深度学习的分类算法,利用设计搭建的卷积神经网络自动提取图片的特征,避免用各种手工算法来提取繁琐的物理特征,效率、准确性更高;采集多种来源、多种类别、多种不同情况下的食材图片数据,构建了完备的数据集,种类有600种以上,覆盖了国内绝大多数企业食堂会出现的所有品类,使用该数据集训练得到的分类算法在保证准确率的同时也能兼顾普适性,具有大范围推广的潜力;设计引入注意力机制的细粒度分类算法,并搭建出与之对应的分类网络模型,在保留densenet网络模型特征利用率高的优点的同时改进了网络结构,使之进一步简化,通过多次测试达到准确率和运算量的最佳平衡点,加快了实际使用的识别速度,弱化对硬件的要求,有效降低成本;本方法不是一个投入使用即固定不变的方法,而是会根据实际情况持续更新以保证准确率始终在高水平,采取方式包括将使用过程中所拍图片加入训练、更新图库、标签等,并且每次更新训练都是基于之前的训练权重,训练速度很快。
附图说明
[0049]
图1是本发明方法的流程图。
[0050]
图2是本发明中densenet121网络的结构示意图。
[0051]
图3是本发明中加入注意力模块后的结构示意图
[0052]
图4是本发明中注意力模块的示意图。
具体实施方式
[0053]
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0054]
如图1所示,一种基于深度学习的食材识别方法,其包括以下步骤:
[0055]
1、针对不同的应用场景,在不同的餐饮业后厨使用设备摄像头对供应商所进的食材进行拍照采样;从多种其他渠道收集这些类别的食材图片,增加样本多样性;
[0056]
2、按类别划分所有采集到的食材图片,使用统一的命名标准对其进行编号,构建一个多类别食材数据集;
[0057]
3、按合适的比例将数据划分成训练集、验证集和测试集三部分;
[0058]
4、综合使用多种预处理和图像增强手段,进一步丰富样本;
[0059]
5、设计构建基于densenet121改进并加入注意力模块的卷积神经网络,将图片输入,训练得到分类模型及权重;
[0060]
6、针对不同单位不同时间的具体食材情况,可以通过修改类别标签、载入权重训练等方式对模型进行调整,以达到更高的识别准确率;
[0061]
7、在实际使用中,摄像头完成对食材的拍摄后,传到本地或云端服务器,使用训练
所得模型对图片进行分析,得出识别结果,并反馈在显示屏;
[0062]
在本实施例中,关于食材图片数据的采集,主要分为应用场景设备采集和其他场景采集。应用场景采集具体操作为在不同的餐饮业后厨使用设备摄像头对供应商所进的食材进行拍照采样,是把食材放置于摄像头下的传送带进行拍摄,以模拟实际应用场景。具体拍摄时将食材置于不同颜色的筐中,并且把食材摆放成不同的角度、相对位置关系,食材的数量由少到多慢慢增加,对于一些常带有袋子的食材增加套袋拍摄,尽可能把各种情况下的食材图片都采集入库。具体采集标准是每种食材有效图片数量达到500张。其他渠道采集主要分为手机实拍和网络图片筛选两种方式。使用手机在市场内拍摄所需类别的食材,具体要求是每张图片中尽可能只出现需要的主体类别,拍摄时适当选择不同的角度和远近;从网络公开图片库中获得图片的具体操作标准是选取分辨率和质量较高的食材图片,要求主体明确且单一。
[0063]
在本实施例中,关于食材图片的命名编号,采用一套通用命名标准,其具体操作如下。使用三位英文字母加数字的命名方式,对食材进行多层次分类。第一级包括副食(nf)、肉禽(nr)、蔬果(ns)、水产(nx)四大类;第二级对四大类做进一步细分,例如在蔬果类中继续划分根茎类(nsj)、叶菜类(nsy)等;第三级则在前级基础上精确到具体种类,以数字编号表示,比如叶菜类(nsy)中的青菜为nsy001,香菜为nsy019。以此类推,对所有食材进行命名编号,完成数据库的构建。对于新增的类别,只需按此标准命名并加入数据库即可。
[0064]
在本实施例中,关于不同来源的食材图片的比例确定,经过实际测试以设备采集图片为主体,加入部分手机拍摄和网络图片,三者比例大致控制在3:1:1,该数据组成下训练出的模型既能在应用场景中取得高准确率,又不会出现过拟合现象,具有较好的泛化能力。
[0065]
在本实施例中,关于图片的预处理和图片增强,主要是综合使用pytorch框架所集成的几种图像增强方式。由于三种来源的图片分辨率和尺寸各不相同,因此先统一使用pytorch的resize方法将图片处理到600*600。该尺寸的选择是综合考虑准确率和计算代价的结果,多次试验发现选择该分辨率时准确率和计算量达到较好的平衡。由于所拍食材图片中有效食材区域通常位于中间区块,为了尽量避免背景干扰,使网络加强对主体特征的学习,因此使用pytorch中的centercrop方法进行中心裁剪,得到中间区域450*450的图像;使用pytorch中的randomverticalflip方法对图片进行随机垂直翻转,概率参数设为0.5,增大样本数量;使用pytorch中的randomrotation方法对图片进行随机旋转,旋转角度取正负30度之间的随机值;使用pytorch中的colorjitter方法,调整图片的亮度、对比度、饱和度,进一步增强样本的多样性。最后使用randomchoice和randomorder方法,前者用于随机选择以上方法,后者则随机给定被选择的几种方法的操作顺序,这两步再一次增加了样本容量和多样性。
[0066]
在本实施例中,构建了基于densenet121模型改进的卷积神经网络,主要改进是适当减少dense block模块的堆叠次数以及引入注意力模块。
[0067]
densenet121是一种结构密集的卷积神经网络,标准的densenet121网络由初始化层、密集连接层(dense block)、过渡层(transition layer)、分类层共同组成。其基本结构如图2所示。dense block为密集连接模块,transition layer为两个相邻的dense block模块之间的衔接区域。并且densenet中每一个dense block模块都融合了它之前所有层的特
征信息,使得特征资源利用率有很大提升。可以看出densenet模型结构较为简洁,它可综合利用多层复杂度较低的浅层特征来扩增信息量,得到一个具有较好泛化性能的决策函数,提高模型的抗过拟合性。
[0068]
在densenet121神经网络模型中,任意两层之间直接相连,每层网络之前的所有层的输出信息都会通过合并操作汇集到本层,同时该层学习得到的特征图信息也会传给之后的所有层。描述densenet这一特点的示意公式表示如下:
[0069]
x
l
=h
l
([x0,x1,...,x
l
‑1])
[0070]
其中l表示层,x
l
表示第l层的输出,h
l
表示一个非线性变换。
[0071]
具体来说,初始化层对输入图片进行数据初始化,由一次卷积核尺寸为kernel size=7*7、步幅stride=2的卷积操作和一次采样核尺寸为3*3、步幅为stride=2的最大池化操作组成,使输入图片的特征图大小减小、数量增多。
[0072]
密集连接层dense block使用多个特征图大小相同的卷积模块对输入的特征图进行深层特征提取。其中,卷积模块是批量归一化(batch normalization,bn)、线性整流函数(rectified linear unit,relu)和卷积(conv)3种操作的组合,整体构成为bn relu (1*1)conv bn relu (3*3)conv,可以将整体看作一个非线性转换函数。
[0073]
批量归一化操作(bn)对数据进行规范化使其满足标准正态分布,同时也减少了整个训练集梯度的计算时间;具体来说如果网络的批大小batch size为m,则在前向传播过程中,每个节点都有m个输出,而batch normalization对该层每个节点的m个输出进行归一化再输出,公式如下:
[0074][0075]
其中表示输入当前batch的第b个样本时该层第i个输入节点的值,x
i
为构成的行向量,长度为batch size的值m,μ和σ分别表示均值和标准差,ε为引入的极小量,γ和β分别为该行的scale和shift参数。为归一化后的结果。
[0076]
使用线性整流函数relu取代sigmoid、tanh等激活函数,使梯度下降和误差反向传播的过程更加高效,同时也较好地避免了梯度消失的问题;relu函数是一个分段线性函数,把所有的负值都变为0,而正值不变,即一种单侧抑制。当输入是负值的情况下,神经元不会被激活,即同一时间只有部分神经元会被激活,使得神经网络中的神经元具有了稀疏激活性,从而加快运算效率。
[0077]
其公式如下:
[0078]
f(x)=max(0,x)
[0079]
其中x为输入值。
[0080]
卷积操作用于对经过批量归一化和线性整流处理的数据进行特征提取。密集连接层将前面所有卷积模块与后面的卷积模块建立连接,保留不同层次的特征并一起向后传播。
[0081]
使用densenet构建分类网络时要根据输入特征图的情况以及分类的具体要求选择合适数量的密集连接层及每个密集连接层中的卷积模块,确保高分类精度的同时做到高
效率,尽可能减少冗余。在本实施例中,就根据实际情况在标准densenet121基础上减少了1个密集连接块,并且在各模块内均适当减少了重复卷积次数。
[0082]
过渡层transition layer位于2个密集连接层之间,对之前密集连接层得到的特征图进行降维处理,包括卷积操作和平均池化操作,整体构成为bn relu (1*1conv (2*2)avgpooling。卷积操作用于减少特征图的数量,若前一个密集连接层输出z个特征图,经过渡层中的卷积操作之后会生成kz个输出特征图,k表示压缩系数;平均池化操作也可用于减小特征图大小,减轻计算负担。
[0083]
分类层对前面学到的特征进行分类,映射到标签所在空间。首先,分类层对最后一个密集连接层得到的特征图进行全局平均池化操作,对数据进行降维来融合前面学到的特征。然后,使用softmax函数对全局平均池化得到的结果进行归一化,得到输入数据属于某一类的概率向量。
[0084]
在本实施例中,向网络模型中加入注意力模块来实现更有效的特征提取。
[0085]
注意力模块设置在densenet121网络最后一层卷积层之后,加入后网络的整体结构如图3所示,其中注意力模块将注意力同时用于通道和空间两个维度,具体结构如图4所示。
[0086]
其提取过程可以表示如下:
[0087]
其中f是大小为h
×
w的c维输入特征,m
c
为大小为1
×
1的c维通道注意力图,m
s
为大小为h
×
w的s维空间注意力图。h、w分别表示高度和宽度,c和s表示维度。
[0088]
通道注意力的计算公式为:
[0089]
m
c
(f)=h(mlp(avgpool(f)) mlp(maxpool(f)))
[0090]
空间注意力的计算公式为:
[0091]
m
s
(f)=h(f7×7([avgpool(f) maxpool(f)]))
[0092]
其中f为输入量,avgpool表示平均池化,maxpool表示最大池化,h表示激活函数,mlp表示多层感知机,f7×7表示卷积核为7
×
7的卷积运算。
[0093]
注意力机制的本质是在原有特征图的基础上加入一个权重掩码,代表特征的重要程度,强化重要的特征,弱化不必要的特征,提升网络的特征提取效率。在运算过程中通常使用软性注意力机制,即对于输入的n个信息,通过计算所有输入信息的加权平均值来确定信息的选取标准。在该机制下以概率α
i
选择第i个信息的可能性表达公式为:
[0094][0095]
其中p表示取概率,x
i
表示第i个信息的输入,q是需要查询的信息,z为注意力变量,s(x
i
,q)是注意力评分函数,用softmax函数将概率结果归一化,便于后续使用。
[0096]
通过计算得到注意力权重α
i
后,在完成重要信息提取工作之前要将权重与特征向量进行融合,操作过程如下:
[0097][0098]
其中α
i
是上面计算得到的注意力概率,x
i
是第i个信息的输入,q是需要查询的信息,求得的值即为该批次输入所需分配的注意力总量。
[0099]
实际应用时,将引入的注意力机制模块设置在densenet网络模型中最后一个卷积块即特征提取模块之后,使模型能有侧重地学习输入图片中的各种特征,兼顾整体特征与局部特征,以提高识别准确率。
[0100]
在本实施例中,采取边用边调整的策略对算法模型进行持续更新。具体做法是定期更新类别标签及数据库,剔除该场景下没有的食材类别,同时将使用过程中拍摄到的图片加入样本集用于训练。训练过程并非从头开始,而是基于之前得到的初始模型参数,通过将frozen属性值设置为true可以将相应层的参数固定住,不参与训练,只需训练最后几层网络以及分类器的参数。这种更新方式既能延用之前的训练结果又能学习到新增图片的特征,同时效率也非常高。
[0101]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献