1.本发明涉及图像识别技术领域,特别是指一种计算食物营养成分的方法、装置、设备以及存储介质。
背景技术:2.随着人们对健康越来越重视,人们将更多的精力投放到日常饮食中,期望能够获取健康的饮食方式。在这基础之上,需要了解日常饮食中所涉及食物的营养成分以及自身每日摄取的总量,才能够对每日营养成分的摄入有足够的了解。同时,科学饮食也是辅助医疗的一些手段,例如对糖尿病患者每日饮食的监控。
3.目前获取食物营养成分的方法主要是通过图像识别的方式,但传统的识别食物的方式,通常只能对一种食物进行识别,同时由于实际食物中的食材、烹饪方式以及拍摄角度等多方面差异,可能导致同种食物图像存在较大差异以及不同种食物具有相似的形态特征、颜色特征,导致无法准确识别出食物。同时即便识别出食物,也需要人为干预才能够给出食物中的营养含量。
4.因此,现有技术无法直接识别出食物中的营养成分的含量。
技术实现要素:5.针对现有技术中无法直接识别出食物中的营养成分的含量的问题,本发明提供了一种计算食物营养成分的方法、装置、设备以及存储介质,为解决上述技术问题,本发明提供如下技术方案:
6.一方面,提供一种计算食物营养成分的方法,该方法包括:
7.基于食物特征,从获取到的目标图片中,确定出目标食物所属的食物种类以及个数;
8.基于用于表征数字的数字信息,从所述目标图片中确定出食物的总重量;
9.根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量;
10.根据所述分重量以及与食物重量与营养成分的对应关系表,确定所述目标图片中每种食物的营养成分。
11.具体的,所述基于食物特征,从获取到的目标图片中,确定出目标食物所属的食物种类以及个数,包括:
12.基于所述食物特征,在所述目标图片中确定出各个目标食物所在范围;
13.根据所述范围,确定与食物对应的目标检测模型;
14.使用所述目标检测模型以及所述食物特征,确定出所述目标食物所属种类以及个数。
15.具体的,所述根据所述范围,确定与食物对应的目标检测模型,包括:
16.当所述范围内的像素个数小于预设阈值范围时,将第一检测模型作为所述目标检测模型;
17.当所述范围内的像素个数大于等于预设阈值范围时,将第二检测模型作为所述目标检测模型;
18.所述第二检测模型的检测窗口大于所述第一检测模型的检测窗口。
19.具体的,所述基于用于表征数字的数字信息,从所述目标图片中确定出食物的总重量,包括:
20.基于所述数字信息,从所述目标图片中确定出多个数字;
21.将处于预设范围内的数字作为目标数字;
22.将所述目标数字作为所述食物的总重量。
23.具体的,所述根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量,包括:
24.计算属于同一种食物的食物个数;
25.计算每种食物的食物个数占总个数的比值,将比值结果与所述总重量之积作为该种类食物的分重量。
26.具体的,所述确定出目标食物所属的食物种类以及个数,包括:
27.当所述第一检测模型与所述第二检测模型检测到相同种类的食物时,分别计算所述第一检测模型与所述第二检测模型检测的置信度;
28.将置信度最高的检测窗口所对应的检测结果作为所述目标食物所属的食物种类以及个数。
29.一方面,本技术提供一种计算食物营养成分的装置,所述装置包括:
30.种类及个数确定模块,用于基于食物特征,从获取到的目标图片中,确定出目标食物所属的食物种类以及个数;
31.总重量确定模块,用于基于用于表征数字的数字信息,从所述目标图片中确定出食物的总重量;
32.分重量确定模块,用于根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量;
33.营养成分确定模块,用于根据所述分重量以及与食物重量与营养成分的对应关系表,确定所述目标图片中每种食物的营养成分。
34.一方面,本技术提供一种电子设备,包括:
35.一个或多个处理器;和
36.其上存储有指令的一个或多个机器可读介质;
37.当所述指令由所述一个或多个处理器执行时,使得所述处理器执行上述的计算食物营养成分的方法。
38.一方面,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的计算食物营养成分的方法。本发明实施例的上述技术方案至少具有如下有益效果:
39.上述方案中,本发明提出一种计算食物营养成分的方法。该方法通过识别出目标图片中的食物种类、每种食物的数量,以及图片中食物的总重量,可计算出每种食物的分重量,再通过对应关系表可确定出每种食物所含营养成分的含量,最终可得到图片中所有种类食物的营养成分含量,并依此可给出合理的饮食建议。该方法解决了现有技术无法直接
识别出食物中的营养成分的含量的问题。
附图说明
40.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
41.图1是本发明实施例提供的一种计算食物营养成分方法的流程图;
42.图2是本发明实施例提供的识别效果图;
43.图3是本发明实施例提供的食物目标识别模块的识别效果示意图;
44.图4是本发明实施例提供的光学字符识别模块的识别效果示意图;
45.图5是本发明实施例提供的一种计算食物营养成分的装置结构示意图。
具体实施方式
46.为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
47.本发明实施例提供了一种计算食物营养成分的方法、装置、设备以及存储介质,该方法可以直接识别出食物的营养成分。如图1所示,该方法的处理流程可以包括如下的步骤:
48.步骤s11,基于食物特征,从获取到的目标图片中,确定出目标食物所属的食物种类以及个数;
49.步骤s12,基于用于表征数字的数字信息,从所述目标图片中确定出食物的总重量;
50.步骤s13,根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量;
51.步骤s14,根据所述分重量以及与食物重量与营养成分的对应关系表,确定所述目标图片中每种食物的营养成分。
52.具体的,步骤s11所涉及的从获取到的目标图片中,确定出目标食物所属的食物种类以及个数,可通过以下方式执行:
53.基于所述食物特征,在所述目标图片中确定出各个目标食物所在范围;
54.根据所述范围,确定与食物对应的目标检测模型;
55.使用所述目标检测模型以及所述食物特征,确定出所述目标食物所属种类以及个数。
56.具体的上述所述根据所述范围,确定与食物对应的目标检测模型,的具体过程包括:
57.当所述范围内的像素个数小于预设阈值范围时,将第一检测模型作为所述目标检测模型;
58.当所述范围内的像素个数大于等于预设阈值范围时,将第二检测模型作为所述目标检测模型;
59.所述第二检测模型的检测窗口大于所述第一检测模型的检测窗口。
60.本步骤所涉及的过程,针对食物大小不同的情况使用不同的检测窗口,能够达到更加精确的检测结果。避免现有技术中当检测窗口过大,而食物面积较小时,可能因为其他特种也进入到检测窗口而导致检测出错的问题。也可避免,由于检测窗口过小,食物面积过大,检测窗口无法获取足够的特种,导致检测出错的可能。
61.具体的,所述基于用于表征数字的数字信息,从所述目标图片中确定出食物的总重量,包括以下过程:
62.基于所述数字信息,从所述目标图片中确定出多个数字;
63.将处于预设范围内的数字作为目标数字;
64.将所述目标数字作为所述食物的总重量。
65.具体的,所述根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量,具体过程包括:
66.计算属于同一种食物的食物个数;
67.计算每种食物的食物个数占总个数的比值,将比值结果与所述总重量之积作为该种类食物的分重量。
68.具体的,所述确定出目标食物所属的食物种类以及个数,包括:
69.当所述第一检测模型与所述第二检测模型检测到相同种类的食物时,分别计算所述第一检测模型与所述第二检测模型检测的置信度;
70.将置信度最高的检测窗口所对应的检测结果作为所述目标食物所属的食物种类以及个数。
71.具体的,当所述总重量的计量单位与所述对应关系表中的计量单位不一致时,根据计量单位的换算关系,将所述总重量的计量单位换算为所述对应关系表中的计量单位。
72.本发明实施例提供的方案着重于实际应用,基于计算机视觉的食物识别和营养测量,提出了建设性的解决方案。不仅能够识别出图像中的多种食物,而且可以测量出图像中食物的营养含量。主要表现在以下方面:
73.第一、由于实际食物中的食材、烹饪方式以及拍摄角度等多方面差异,使得食物图像表现出同类食物差异较大以及不同种类食物较为相似等特点,导致传统的机器学习方法对食物特征的提取能力不足,同时分类器对于复杂易变的食物图像学习不全面,最终导致食物识别准确率低,为解决上述传统食物识别方法的缺陷,学者们将卷积神经网络(cnn)应用到食物图像识别中。卷积神经网络将特征提取与特征识别集成在同一模型中,通过对大规模食物数据的训练,学习出食物特征的各层次表达,最终实现食物图像的自动识别。相较于传统食物识别方法,基于卷积神经网络的食物识别方法在识别速度和精度方面都有巨大提升。而采用图像识别方法只能识别出图像中的一种食物。
74.第二、由于现有技术中机器学习和图像识别两种方法均无法直接检测出食物中的营养含量,目前没有公司和机构通过图像识别直接测算食物中的营养成分。本技术提供的方案通过以下方式解决该问题:
75.(1)实现一张图像中包含多种食物时都可以检测出来:利用卷积神经网络、通道注意力机制、端到端目标检测等技术,设计了新的单阶段目标检测模型,通过大量标注的食物图像进行训练,能够识别出256种食物,并且达到了70%以上的平均准确率,模型的识别效果如图2所示(当图像中含有多种食物时都能检测出来,并且能标出食物的位置,右面的数
值是置信度,置信度越高表示模型越相信这个结果,范围是0~1)。
76.(2)解决测量图像中食物的营养:将食物放到称重器上,拍摄含有食物重量示数的图像,将图像传输到光学字符识别模型中,模型输出送入到文本筛选模块来提取出图像中的数字,即食物的重量示数,结合构建的标准食物营养数据库和食物种类,通过食物的营养数据乘以食物的重量计算得到食物中的营养成分。
77.本发明实施例还提供一种训练识别食物模型的方法,该模型中包括用于识别食物的食物目标识别模块以及识别数字的光学字符识别模块,具体训练过程如下:
78.为了得到食物目标识别模块,预先收集大量的食物图像数据集,包括vfn数据集(含有82种美国食品)、uecfood100数据集(含有100种亚洲食品)、uecfood256(含有256种亚洲食品),将这些食物目标识别模块中进行训练,训练完成后模型可以对包含这些种类的食物图像进行识别和定位,模型的识别效果如图3所示,图中的数字表明识别结果的可信程度,范围是0-1,数字越大表明结果可信程度越高。
79.为了得到光学字符识别模块,如图4所示将食物放到带有显示屏的电子称重器上,将照片放入光学字符识别模型中,可以提取出图像中的所有字符和数字,这些文本进入文本筛选模块后得到电子称重器的重量示数,即食物的重量。
80.通过上述所包括的设置预选框、图像送入网络、网络输出三维的数据、解析数据和真实图像中的食物、计算损失函数-》损失函数反向传播回网络,更新网络中的权重参数,最终得到所需的识别模块。
81.将上述方式得到的食物目标识别模块与光学字符识别模块,作为本技术用于计算营养成分所需的识别模型。
82.为了更好的介绍上述过程,以下以具体实施例进行介绍:
83.具体实施例一:
84.如图3所示,当需要计算图中三个鸡蛋的营养成分时,按照以下过程执行:
85.首先选择与图片中食物大小相匹配的检测目标检测模型,该目标检测模型的检测原理与食物目标识别模型一致,本实施例中可根据像素的个数确定该食物占整个图片面积的大小,确定出目标食物所在的范围,当确定出的范围小于预设阈值范围时,使用第一检测模型对该目标食物进行检测;当确定出的范围大于或等于预设阈值范围时,使用第二检测模型对该目标食物进行检测。
86.本实施例中由于鸡蛋所占范围较小,因此选择第一检测模型进行检测,此时可根据的目标食物的颜色和/或纹理特征和/或颜色等能够表达食物的食物特征确定出在该图片中的目标食物为鸡蛋,且个数为3个。
87.进一步的使用光学字符识别模块,根据能够描述数字特征的以及字符信息的数字信息对图片中的数字以及字符进行识别。本实施例中,字符信息可以是用于表达单位的信息,例如ml,g等单位。数字特征是用于描述数字的特征。本实施例中,根据光学字符识别模块可识别出食物的总重量是170.4g,则每个鸡蛋的分重量是56.7g。
88.根据食物重量与营养成分的对应关系表可知每50g鸡蛋含蛋白质为7g,因此,可识别出目标图片中3个鸡蛋的蛋白质含量约为24g。
89.实施例二:
90.大部分情况下目标图片中可能包括多种类的食物,此时在进行食物识别时,会因
为不同种类食物的大小差异较大,因此会同时使用第一检测模型以及第二检测模型对食物进行检测,此时可能会产生第一检测模型与第二检测模型同时对某一种食物进行了检测,但根据该种食物在图片中所占范围的实际情况应当使用第一检测模型进行检测,此时就会出现检测结果不准确的情况,对于同一种食物使用不同检测模型进行检测而导致检测结果有错误的情况,本技术提供以下解决方案:
91.当存在使用不同检测模型对同一食物进行检测的情况时,分别计算所述第一检测模型与所述第二检测模型检测的置信度;将置信度最高的检测窗口所对应的检测结果作为所述目标食物所属的食物种类以及个数。
92.实时例三:
93.当同一图片中包括多种食物,每种食物的数量为多个,且检测到这些食物的大小属于同一体积范围内时,例如检测出图片中包括2个鸡蛋3个橘子,且识别出的为总重量为260g,此时可知2个鸡蛋的总重量为104g,3个橘子的总重量为156g,然后根据食物重量与营养成分的对应关系表可知2个鸡蛋的蛋白质含量为14g,3个橘子的蛋白质含量为1.5g,因此该图片中食物的总蛋白质含量未15.5g。
94.在上述方法中,当识别到的食物单位与食物重量与营养成分的对应关系表中的单位不一致时,可根据计量单位的换算关系,将所述总重量的计量单位换算为所述对应关系表中的计量单位。
95.可见本技术通过以下方式可达到识别出图片中食物营养含量的目的:
96.1、设计深度学习中食物目标识别的技术,通过大量标注的食物图像进行训练,可以使得目标识别模块准确识别出256种食物并给出它们在图像中的位置信息,之后通过访问构建的食物标准营养数据库,可以得到每100克该食物中的蛋白质、葡萄糖、脂肪含量。
97.2、光学字符识别模块可以识别出图像中的字符,将带有称重示数的食物图像送入到该模型中,可以得到图像中所有的字符信息(包括文字、数字),通过文本筛选模块进行筛选后得到图像中的数字信息,即食物的重量。
98.3、通过并联上述两种模块,将带有称重示数的食物图像送入到该系统中,可以得到精确的食物营养信息,根据该用户的基本情况(肥胖、糖尿病、心脑血管疾病等)给出参考食用建议。
99.本发明所提供的的方法通过结合目标识别模块和光学字符识别模块等人工智能技术、实现了可以准确识别食物图像中食物类别,并测量出其营养成分含量的方法,其效果如下:
100.1、通过目标检测技术,该方法能准确识别200种以上的食物。并已在后台建立数据库,能结合数据库进行食物成分分析。
101.2、食物营养含量测量精度在小数点后两位(单位为克),可以准确测量食物中碳水化合物、蛋白质和脂肪等营养含量,帮助使用者了解自己的日常饮食习惯、保持饮食健康,根据饮食中的营养成分给出心脑血管疾病患者、糖尿病等慢性疾病患者正确的饮食建议。
102.本发明实施例还提供计算食物营养成分的装置,如图5所示,该装置包括:
103.种类及个数确定模块51,用于基于食物特征,从获取到的目标图片中,确定出目标食物所属的食物种类以及个数;
104.总重量确定模块52,用于基于用于表征数字的数字信息,从所述目标图片中确定
出食物的总重量;
105.分重量确定模块53,用于根据所述食物种类、所述个数以及所述总重量,确定每种食物的分重量;
106.营养成分确定模块54,用于根据所述分重量以及与食物重量与营养成分的对应关系表,确定所述目标图片中每种食物的营养成分。
107.其中种类及个数确定模块51具体用于,基于所述食物特征,在所述目标图片中确定出各个目标食物所在范围;根据所述范围,确定与食物对应的目标检测模型;使用所述目标检测模型以及所述食物特征,确定出所述目标食物所属种类以及个数。当所述范围内的像素个数小于预设阈值范围时,将第一检测模型作为所述目标检测模型;当所述范围内的像素个数大于等于预设阈值范围时,将第二检测模型作为所述目标检测模型;所述第二检测模型的检测窗口大于所述第一检测模型的检测窗口。当所述第一检测模型与所述第二检测模型检测到相同种类的食物时,分别计算所述第一检测模型与所述第二检测模型检测的置信度;将置信度最高的检测窗口所对应的检测结果作为所述目标食物所属的食物种类以及个数。
108.其中总重量确定模块52具体用于,基于所述数字信息,从所述目标图片中确定出多个数字;将处于预设范围内的数字作为目标数字;将所述目标数字作为所述食物的总重量。
109.其中分重量确定模块53具体用于,计算属于同一种食物的食物个数;计算每种食物的食物个数占总个数的比值,将比值结果与所述总重量之积作为该种类食物的分重量。
110.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
111.以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。