本发明涉及图像处理技术领域,具体涉及一种用于执行fasterr-cnn神经网络运算的方法和装置。
背景技术:
随着现代社会生活节奏的加快以及人们生活水平提高,人们对于饮食的要求也越来越高。人们不再关心能否吃饱,而是关注于饮食是否健康。然而很多人缺少足够的饮食健康知识,所以就需要一种能够智能测定食物能量及营养成分的设备来帮助人们更合理的饮食。
现有技术之一为通过重量计算食物能量。计量装置主要有以下几部分组成:托盘、重量测量装置、以及显示屏。重量测量装置用于测量食物重量,并将食物重量信息传递给微电脑处理器;处理器计算出食物能量后将结果显示在液晶显示屏上。
上述技术的问题在于处理能力弱,只适合测量单一食物种类的能量。对于包含多种食物类别的食物测量就不准确,也无法计算相应的营养元素含量。不具备拓展性,对于未录入的食物信息则无法处理。
另一种现有技术为通过手机拍摄测量食物的俯视图和侧视图,通过人工神经网络识别食物种类,再根据公式计算出每种食物的体积;根据食物体积计算其营养元素含量。
上述技术的问题在于操作复杂,对输入照片要求高;侧视图容易存在食物的遮挡问题。利用焦距预测食物长宽高等参数,对于不同的手机可能存在一定偏差,使用公式法计算食物体积,不适用于形状不规则食物,计算结果误差较大。
技术实现要素:
为了解决现有技术中存在的问题,一方面,本发明提供了一种用于执行fasterr-cnn神经网络运算的方法,包括:
获取同一份食物的不同角度的多个图像;
利用rpn确定样本检测的推荐区域;
利用fastr-cnn预测推荐区域中食物对象的类别和边框;
根据预测的食物的边框,利用volumer-cnn预测每个食物对象所占的体积比例;
根据fastr-cnn预测的食物对象类别以及volumer-cnn预测的食物对象体积比例,计算出不同类别食物的体积比例;
将计算出的各类食物的体积比例与各类食物的密度分别相乘,得到各类食物的质量比例;
将各类食物的质量比例与食物的总质量相乘,求得各类食物的质量;
将各类食物的质量与相对应的营养含量相乘,得到食品营养元素含量;
其中,所述rpn、fastr-cnn和volumer-cnn共享卷积层。
优选地,在确定推荐区域时,所述rpn首先对输入的图片进行多层卷积操作,提取出图片的特征映射,再使用滑动窗口对特征映射进行卷积操作,然后使用分类损失函数和边框回归损失函数两个分支来计算区域分类和区域回归,得出推荐区域。
优选地,所述fastr-cnn将推荐区域映射至所述特征映射得到rois,再对每个roi进行池化操作,转化为同等大小的特征图,然后对池化操作后的rois分别进行两个全连接网络运算,计算出每个推荐区域中的食物对象类别以及对边框进行精确预测。
优选地,所述volumer-cnn将预测的边框参数映射到所述特征映射上,再对相应的映射区域进行池化操作,变为同等大小的样本区域,然后对每个样本区域进行多层全连接网络运算,计算出图中每个食物对象的体积中间变量vi,vi为正数;然后再将所述体积中间变量转化为相应的体积比例fi,计算公式为:
优选地,将预测的边框参数映射到所述特征图上的方法为:将每个坐标数据乘上特征图和原始图像的大小之比。
优选地,所述volumer-cnn中损失函数volumeloss的形式为
优选地,预测过程中神经网络的输出包括:由volumer-cnn计算出的一个表示图像中每个食物对象的所占体积比例的n维向量,每个元素位于区间(0,1]内,且各元素之和为1;由fastr-cnn计算出的一个表示图像中各个食物对象所属类别的n*m矩阵,m为可识别食物对象的类别数目,矩阵每一行只有一个元素为1,其余m-1个元素为0,元素1所对应列即为食物对象所属类别;以及一个表示各个食物对象边框的n*4的二维数组。
优选地,所述算法还包括将表示各个食物对象体积比例的n维向量乘上表示各个食物对象所属类别的n*m二维数组,得到各类食物的体积比例向量,为m维向量,该m维向量的每一维对应一类食物,每一维上的数值表示对应类别食物所占的体积比例。
优选地,所述方法还包括对每个图像都计算出一个表示各类别食物体积比例的m维向量,然后再将所有m维向量相加再除以图像的个数,求出平均向量作为最终的各类别食物的体积比例向量。
优选地,所述方法还包括自适应性训练步骤,包括:
步骤一,rpn网络初始化网络参数,根据输入的图像信息前向传播计算出每个检测区域的类别标签以及区域调整参数;再根据反向传播使用随机梯度下降算法或adam算法来更新rpn的相关参数,包括rpn的特有部分参数以及共享卷积部分的参数,训练直至收敛;
步骤二,fastr-cnn利用步骤一训练的共享卷积层参数初始化卷积层参数,并将步骤一得到的推荐区域作为神经网络计算过程中的推荐区域进行训练,并更新网络参数,包括共享的卷积网络,直至网络收敛;
步骤三,rpn网络利用步骤二得到的共享卷积网络,继续训练并更新rpn网络的独有部分参数,不包括共享的卷积层参数;
步骤四,fastr-cnn网络使用步骤三得到的推荐区域进行训练,并且只更新fastr-cnn网络的独有部分,共享的卷积层参数不变;
步骤五,volumer-cnn网络将步骤四得到的食物对象边框映射到共享卷积网络的最后一层特征映射,并进行训练更新独有部分参数,直至网络收敛;
每个步骤的训练操作为将输入数据经过网络前向计算得到每个部分的损失函数,再反向传播,使用随机梯度下降或adam算法更新网络参数;
其中上述五个步骤的训练过程可以循环执行。
另一方面,本发明提供了一种用于执行fasterr-cnn神经网络运算的装置,包括
信息输入部,获取同一份食物的不同角度的多个图像、食物的总质量、食物中不同类别食物的密度以及营养元素含量;
信息处理部,用于对所述图像进行处理和计算;
其中所述信息处理部包括:
存储单元,用于存储所述图像、总质量、密度及营养元素含量;
推荐区域生成单元,利用rpn确定样本检测的推荐区域;
类别和边框预测单元,利用fastr-cnn预测推荐区域中食物对象的类别和边框;
食物对象体积比例预测单元,根据预测的食物对象的边框,利用volumer-cnn预测图像中每个食物对象所占的体积比例;
食物类别体积比例预测单元,根据fastr-cnn预测的食物对象类别以及volumer-cnn预测的食物对象体积比例,计算出每种类别食物所占的体积比例,并对不同图像的计算结果取平均值;
质量比例预测单元,将计算出的不同类别食物的体积比例与不同类别食物的密度分别相乘,得到不同类别食物的质量比例;
食物质量预测单元,将不同类别食物的质量比例与食物的总质量相乘,求得不同类别食物的质量;以及
营养含量预测单元,将各类食物的质量与相对应的营养含量相乘,得到食品营养元素含量;
其中,所述rpn、fastr-cnn和volumer-cnn共享卷积层。
优选地,所述信息输入部包括图像输入装置和质量输入装置。
优选地,所述信息处理部还包括数据转换单元,用于将处理单元输出的q维营养含量向量转化为相应的输出。
优选地,所述装置还包括信息输出部,用于从所述信息处理部接收输出信息,并将信息显示出来。
优选地,所述装置还包括联网部件,用于将测量数据实时上传到数据库,同时也可从云端更新最新参数模型。
优选地,所述信息处理部为神经网络芯片。
与现有技术相比,本发明具有以下有益效果:
1)相较于已有的发明,可以测量更为复杂,更多种类的食物。
2)采用人工神经网络技术和芯片,对食物的识别更加精确,快速。
3)采用斜上方俯视图片,可以有效避免不同食物之间的遮挡,同时对事物对象有较为全面的认识。
4)采用人工神经网络技术和芯片计算食物体积,计算结果更加精确而且随着训练数据的不断增加,预测精度也会提高。
5)人工神经网络芯片计算能力强大,支持离线运行神经网络,在没有云端服务器协助计算的情况下用户终端/前端离线即可实现食物营养成分探测和相应控制的工作。当芯片联网,获得云端服务器协助计算的时候,芯片计算能力更加强大。
6)装置操作简单,更加智能化,符合人们日常生活需求。
7)能够跟人们的日常饮食提供更加合理化的建议,提高人们生活质量。
附图说明
图1为本发明实施例神经网络的结构图;
图2为本发明实施例中食物对象类别和边框的预测图;
图3为本发明实施例中volumer-cnn的网络结构图;
图4为本发明实施例中装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明的一种用于执行fasterr-cnn神经网络运算的方法主要包括以下步骤:对图像的关键特征进行提取和处理,识别出图像中食物的种类和各类食物体积所占比例;再根据各类食物的密度计算出各类食物的重量比例;最后处理单元根据各类食物的重量比例和总重量计算出所测试各类食物的实际质量,再结合各种食物的元素含量表即可求出食物的能量及营养成分。
输入图像包括对同一份食物的多张不同角度的俯视照片。
对单张图像的处理阶段,处理器对输入的图像利用改进后的fasterregionconvolutionalneuralnetwork(fasterr-cnn)网络进行计算,标记出图像中每个食物类别(class),每个食物边框(boundingbox),以及每个食物的预测体积比例(volume)。其中volume表示为0-1的两位小数。
本发明中的神经网络结构是在fasterr-cnn网络的基础上进行改进,添加了预测食物体积比例的部分。网络结构如图1所示:
该神经网络可以分为三部分:用于预测推荐区域的regionproposalnetworks(rpn)网络;用于预测图像中对象的类别并精调边框的fastr-cnn网络;用于预测图像中各个食物对象所占的体积比例的volumercnn网络。三个网络共享卷积层,构成一个统一的整体网络。
食物的边框是指能够包括图像某个食物的最小矩形框。具体如图2所示,图中椭圆和不规则图形表示不同形状的食物,虚线边框即为食物边框。
图3为volumer-cnn网络结构,其中卷积层(cnn)为共享部分。这部分运算所需的边框由第二部分(fastr-cnn)得到。损失函数volumeloss的形式为
本神经网络使用regionproposalnetworks(rpn)来确定目标检测推荐区域。rpn方法先对输入的图像进行多层卷积操作,提取出图像的特征映射(featuremaps),再使用3*3的滑动窗口对特征映射进行卷积操作,之后使用两个分支来计算区域分类以及区域回归,得出推荐区域。这里的区域分类是来判断预测区域属于前景和后景的概率;这里的推荐区域的参数是相对于原始输入图像的参数。
为了预测每个推荐区域的食物类别以及将食物边框精调,所以将推荐区域映射至上述featuremaps得到rois(regionofinterest),再对每个roi进行池化操作,转化为同等大小的特征图。之后就可以对池化之后的rois分别进行两个全连接网络运算,计算出每个区域的食物类别以及对边框进行精确预测。
最后,再将边框分支预测的边框参数映射到featuremaps上,在对相应的映射区域进行池化操作,变为同等大小的区域。再对每个目标区域进行多层全连接操作,计算出每个食物的体积中间变量,中间变量为正数,但并不表示食物体积。每个目标区域中包括有一个食物,对应一个体积中间变量vi,然后在将体积中间变量转化为相应的比例fi;具体公式为:
所以,预测过程中神经网络的输出为:一个表示各个食物体积比例的n维向量,每个元素位于区间[0,1]内,且各元素之和为1;一个表示各个食物所属类别的n*m二维数组;一个表示各个食物边框的n*4的二维数组。然后,再将表示各个食物体积比例的n维向量乘上表示各个食物所属类别的二维数组,得到各类食物的体积比例向量,为m维向量。该m维向量的每一维对应一类食物,每一维上的数值表示对应类别食物所占的体积比例。
本发明的方法还包括对一组图像(对同一盘食物的不同角度的照片)中的每个图像都计算出一个表示各类食物体积比例的m维向量,然后再将所有m维向量相加再除以每组图像个数,求出平均向量作为最终的实物类别体积比例向量。
本发明的方法还包括将计算出的食物类别体积比例向量与食物类别密度向量按位相乘,得到食物类别质量比例向量,再与输入的食物总质量相乘,求得食物类别质量向量,每一位表示相应类别的食物的质量。
本发明的方法还包括将m维食物类别质量向量与相对应的食物类别营养含量矩阵相乘,得到食品营养元素含量向量,每一位表示食物中某种营养元素含量。其中食物类别营养含量矩阵为一个m*q的二维矩阵,其中q为系统可测得的营养元素种类数目。食物类别营养含量矩阵的每一行对应一类食物,每一列对应一种营养元素,表示每类食物单位质量中含有的营养元素含量。最终得到的食物营养元素含量向量为一个q维向量。
本发明的方法还包括对信息处理装置进行自适应性训练的方法。
输入数据为带有标记数据的图像,每张图像对应的标记数据为图中每个食物的类别(n维向量),每个食物边框信息(n*4的二维矩阵),每个食物的所占的体积比例(n维向量);其中n为图像中食物对象的总数。处理单元先将输入的数据信息进行预处理,例如,若食物类别信息为文字,则将其转化为类别对应的数字。
训练过程分为五个步骤,rpn网络,对食物类别检测及边框回归的fastr-cnn网络,预测食物体积比例的网络交叉训练。
步骤一,rpn网络初始化网络参数,根据输入的图像信息前向传播计算出每个检测区域的类别标签以及区域调整参数;再根据反向传播使用随机梯度下降算法或adam算法来更新rpn的相关参数,包括rpn的特有部分参数以及共享卷积部分的参数。训练直至收敛。
步骤二,fastr-cnn利用步骤一训练的共享卷积层参数初始化卷积层参数,并将步骤一得到的推荐区域作为网络计算过程中的推荐区域进行训练,并更新网络参数,包括共享的卷积网络。直至网络收敛。
步骤三,rpn网络利用步骤二得到的共享卷积网络,继续训练并更新rpn网络的独有部分参数,不包括共享的卷积层参数。
步骤四,fastr-cnn网络使用步骤三得到的推荐区域进行训练,并且只更新fastr-cnn网络的独有部分,共享的卷积层参数不变。
步骤五,volumer-cnn网络将步骤四得到的食物边框映射到共享卷积网络的最后一层特征映射,并进行训练更新独有部分参数,直至网络收敛。
每个步骤的训练操作为将输入数据经过网络前向计算得到每个部分的损失函数,再反向传播,使用随机梯度下降或adam算法更新网络参数。
上述五个步骤的训练过程可以循环执行。
本发明还提供了一种用于执行fasterr-cnn神经网络运算的装置,包括信息输入部件,信息处理部件,信息输出部件,如图4所示。
其中,信息输入部件包括一个或多个摄像头,用于输入一组不同角度的食物俯视图像;一个质量测量装置,用于测量食物质量并传输给处理部件。
信息处理部件包括存储单元和数据处理单元,存储单元用于接收并存储输入数据、指令和输出数据,其中输入数据包括一组图像和一个正数(食物质量);数据处理单元先利用神经网络对输入数据中包含的关键特征进行提取和处理,对每张图像生成一个表示食物中营养元素含量向量,对于同一组图像,求出所有图像对应向量的平均值作为测试食物的最终营养含量向量。
信息处理部件还包括一个数据转换模块,用于将处理单元输出的q维营养含量向量转化为相应的输出,输出可以是表格,饼形图的形式。
信息输出部件包括一个液晶显示器,显示器从信息处理部件接收输出信息,并将信息显示出来。
信息处理部件根据预测到的食物营养含量向量(q维向量)控制在屏幕上的输出结果。数据转换处理器将q维向量转化为相应的存储信息,格式为:营养元素名,含量。营养元素名由q维向量的每一位索引下标可对应得出,对于向量中的0元素忽略。另外,该装置可以存储或联网获取各年龄段的人每天推荐的营养元素摄入量,并对测试食物进行评估,即食物中的各种营养元素含量相较于人体每餐所需含量过高或者过低,给出合理的饮食建议。最后在显示屏上输出食物中的营养元素含量及饮食建议。营养元素含量的输出形式可以为表格和饼形图。
该装置还可以包括联网部件,可以连接到互联网,实时将测量数据上传数据库,扩大数据量,同时也可从云端更新最新参数模型,提高运算效率与精度。
数据处理单元采用神经网络芯片,适合于神经网络计算,计算能力强大。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。