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

食物识别方法、装置、存储介质及电子装置与流程

2022-02-22 07:29:40 来源:中国专利 TAG:


1.本发明实施例涉及通信领域,具体而言,涉及一种食物识别方法、装 置、存储介质及电子装置。


背景技术:

2.食物识别作为计算机视觉新的应用领域,得到了学术界和工业界的关 注。在相关技术中,针对食物识别应用的实现,已经存在大量的技术方法, 而对于食物重量估计而言,相关研究则几乎为零。对于食物识别方法,一 部分是基于相关硬件设备进行食物识别,但其场景固定、鲁棒性差;主流 方法则是基于深度学习方法进行食物识别,但深度模型的训练依赖于大量 的食物数据,而数据来源却十分缺乏。同时,深度模型种类繁杂,选择合 适的模型进行食物识别也是充满挑战。尤其在中餐方面,由于中餐牵涉的 食材和烹饪方法多种多样,有很强的长尾效应,所谓长尾效应是指有大量 食物类别出现的频率小,但由于类别巨大,依然占据了不可忽视的食物出 现比例。因此,简单的将一般食物识别的方法套用到中餐图片上结果难以 令人满意。
3.由此可知,相关技术中存在食物识别准确率低的问题。
4.针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种食物识别方法、装置、存储介质及电子装置, 以至少解决相关技术中存在的食物识别准确率低的问题。
6.根据本发明的一个实施例,提供了一种食物识别方法,包括:获取包 含第一食物的第一图片;使用第一模型对所述第一图片进行分析,确定所 述第一图片中包含的所述第一食物的第一区域信息,其中,所述第一模型 为使用多组第一数据通过机器学习对第一初始模型进行训练所得到的,所 述多组第一数据中的每组第一数据均包括:图片和图片中包含的食物的区 域信息;基于所述第一区域信息在所述第一图片中裁剪出所述第一食物的 图像,并将裁剪出的图像作为第二图片;使用第二模型对所述第二图片进 行分析,确定所述第二图片中包含的所述第一食物的第一食物名,其中, 所述第二模型为使用多组第二数据通过机器学习对第二初始模型进行训 练所得到的,所述多组第二数据中的每组第二数据均包括:图片和图片中 包括的食物的食物名,所述食物名包括食材信息和用于指示烹饪食材的方 式的烹饪信息;输出所述第一区域信息和所述第一食物名。
7.根据本发明的另一个实施例,提供了一种食物识别装置,包括:第一 获取模块,用于获取包含第一食物的第一图片;第一分析模块,用于使用 第一模型对所述第一图片进行分析,确定所述第一图片中包含的所述第一 食物的第一区域信息,其中,所述第一模型为使用多组第一数据通过机器 学习对第一初始模型进行训练所得到的,所述多组第一数据中的每组第一 数据均包括:图片和图片中包含的食物的区域信息;裁剪模块,用于基于 所述第一区域信息在所述第一图片中裁剪出所述第一食物的图像,并将裁 剪出的图像作为
第二图片;第二分析模块,用于使用第二模型对所述第二 图片进行分析,确定所述第二图片中包含的所述第一食物的第一食物名, 其中,所述第二模型为使用多组第二数据通过机器学习对第二初始模型进 行训练所得到的,所述多组第二数据中的每组第二数据均包括:图片和图 片中包括的食物的食物名,所述食物名包括食材信息和用于指示烹饪食材 的方式的烹饪信息;第一输出模块,用于输出所述第一区域信息和所述第 一食物名。
8.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所 述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设 置为运行时执行上述任一项方法实施例中的步骤。
9.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和 处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述 计算机程序以执行上述任一项方法实施例中的步骤。
10.通过本发明,在获取包含第一食物的第一图片后,利用第一模型对第 一图片进行分析,确定第一图片中包含的第一食物的第一区域信息,根据 第一区域信息裁剪出第一食物的图像,并将其确定为第二图片,利用第二 模型对第二图片进行分析,确定出第二图片中包含的第一食物的第一食物 名,并将第一区域信息和第一食物名输出。利用通过机器学习得到的模型 对第一图片进行分析,识别出食物名。此外,在对食物名分析的模型的训 练数据集中,每组训练数据均包括:图片和图片中包括的食物的食物名, 所述食物名包括食材信息和用于指示烹饪食材的方式的烹饪信息,以及以 食材信息和烹饪信息组成的层级结构,该层级结构的应用,使得在食物识 别过程中能够更为精准、可信。因此,可以解决相关技术中存在的食物识 别准确率低的问题,达到准确识别食物的效果,提高了食物识别的准确率。
附图说明
11.图1是本发明实施例的一种食物识别方法的移动终端的硬件结构框图;
12.图2是根据本发明实施例的食物识别方法的流程图;
13.图3是根据本发明实施例的带有边框标注信息的多食物图片示意图;
14.图4是根据本发明示例性实施例的模型训练流程图;
15.图5是根据本发明示例性实施例的xception示意图;
16.图6是根据本发明示例性实施例的convolution示意图;
17.图7是根据本发明示例性实施例的depthwise separable convolution 示意图;
18.图8是根据本发明示例性实施例的第二模型的训练流程图;
19.图9是根据本发明示例性实施例的yolov3网络结构示意图;
20.图10是根据本发明示例性实施例的darknet-53网络结构示意图;
21.图11是根据本发明示例性实施例的第一模型的训练流程图;
22.图12是根据本发明示例性实施例的第三模型的训练流程图;
23.图13是根据本发明示例性实施例的第三模型识别效果图;
24.图14是根据本发明示例性实施例的食物识别及食物重量检测流程图;
25.图15是根据本发明实施例的食物识别装置的结构框图。
具体实施方式
26.下文中将参考附图并结合实施例来详细说明本发明的实施例。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语
ꢀ“
第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序 或先后次序。
28.首先对本发明可能用到的术语进行说明:
29.单食物识别:待识别的图像中仅包含一道菜,通过相关技术识别图像 中食物名称的过程。
30.多食物识别:待识别的图像中至少包含一道菜,通过物体检测技术识 别图像中所有食物名称的过程。
31.食物重量估计:对图像中检测和识别出的食物进行重量估计获得图像 中的食物的重量的过程。
32.食物营养估计:基于图像中识别出的食物及其重量,根据食物营养数 据库的信息进行营养估计,获得图像中的食物包括的营养素的类别及其含 量的过程。
33.食物层级:通过归并食物的食材、烹饪方法构成的树状层级结构,树 的子节点食物类型是其父节点食物类型的某一具体小类。具体的食物实例 在树的叶节点。其中,在树状层级结构中,顶端的是父节点,末端的是叶 节点,中间的是子节点。
34.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或 者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施 例的一种食物识别方法的移动终端的硬件结构框图。如图1所示,移动终 端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可 以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置) 和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信 功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理 解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。 例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与 图1所示不同的配置。
35.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及 模块,如本发明实施例中的食物识别方法对应的计算机程序,处理器102 通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及 数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可 包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非 易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理 器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。 上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网 及其组合。
36.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体 实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输 装置106包括一个网络适配器(network interface controller,简称为nic), 其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例 中,传输装置106可以为射频(radio frequency,简称为rf)模块,其 用于通过无线方式与互联网进行通讯。
37.在本实施例中提供了一种食物识别方法,图2是根据本发明实施例的 食物识别方法的流程图,如图2所示,该流程包括如下步骤:
38.步骤s202,获取包含第一食物的第一图片;
39.步骤s204,使用第一模型对所述第一图片进行分析,确定所述第一 图片中包含的所述第一食物的第一区域信息,其中,所述第一模型为使用 多组第一数据通过机器学习对第一初始模型进行训练所得到的,所述多组 第一数据中的每组第一数据均包括:图片和图片中包含的食物的区域信息;
40.步骤s206,基于所述第一区域信息在所述第一图片中裁剪出所述第 一食物的图像,并将裁剪出的图像作为第二图片;
41.步骤s208,使用第二模型对所述第二图片进行分析,确定所述第二 图片中包含的所述第一食物的第一食物名,其中,所述第二模型为使用多 组第二数据通过机器学习对第二初始模型进行训练所得到的,所述多组第 二数据中的每组第二数据均包括:图片和图片中包括的食物的食物名,所 述食物名包括食材信息和用于指示烹饪食材的方式的烹饪信息;
42.步骤s210,输出所述第一区域信息和所述第一食物名。在上述实施 例中,第一模型可以为食物定位模型,第二模型可以为食物分类模型。其 中,第一模型和第二模型均是经过通过机器学习训练得到的。多组第一数 据和多组第二数据中包括的图片可以是网络图片爬取,例如,通过浏览器 搜索出来的图片、用于提供美食制作方法的app中加载的图片,餐食外卖 平台中加载的图片等;还可以是通过人工拍摄的食物图片等;还可以是部 分公开的数据集中的图片,例如,food-101、uec food-256等。多组第 一数据中包括的图片中包含的区域信息可以为人工标注的。第一模型的训 练数据可以包含多张(例如,7936张,该取值仅是一种示例性说明,本发 明第一数据的数量不做限制,还可以取7500张,10000张等)带有边框标 注信息(中心点坐标,边框长和宽)的多食物图片。其中,带有边框标 注信息的多食物图片示意图可参见附图3。第二模型的训练数据可以包含 408383张(该取值仅是一种示例性说明,本发明对第二模型训练数据的数 量不做限制)带有类别(例如,600类,该取值仅是一种示例性说明,本 发明对该类别的数量不做限制,还可以为580类,650类等)标注的单食 物(只包含一种食物)图片。其中,在一个更优选的实施例中,标注信息 可以经过两个以上标注人员标注,以进一步保证精确性。示例性的,上述 步骤的执行主体可以是后台处理器,或者其他的具备类似处理能力的设备, 还可以是至少集成有图像获取设备以及数据处理设备的机器,其中,图像 获取设备可以包括摄像头等图像采集模块,数据处理设备可以包括计算机、 手机等终端,但不限于此。
43.通过本发明,在获取包含第一食物的第一图片后,利用第一模型对第 一图片进行分析,确定第一图片中包含的第一食物的第一区域信息,根据 第一区域信息裁剪出第一食物的图像,并将其确定为第二图片,利用第二 模型对第二图片进行分析,确定出第二图片中包含的第一食物的第一食物 名,并将第一区域信息和第一食物名输出。利用通过机器学习得到的模型 对第一图片进行分析,识别出食物名,因此,可以解决相关技术中存在的 食物识别准确率低的问题,达到准确识别食物的效果,提高了食物识别的 准确率。
44.需要说明的是,在进行单食物识别中,第一图片包含的第一食物只有 一种食物,第一食物对应一个第一区域信息和对应一个食物名;在进行多 食物识别中,第一图片包含的第一食物为多种食物,因此,第一食物对应 多个第一区域信息(一种食物对应一种区域信息)和多个食物名(一种食 物对应一个食物名)。
45.在一个示例性实施例中,在基于所述第一区域信息在所述第一图片中 裁剪出所
述第一食物的图像,并将裁剪出的图像作为第二图片之后,所述 方法还包括:使用第三模型对所述第二图片进行分析,确定所述第二图片 中包含的所述第一食物的第一重量值;其中,所述第三模型为使用多组第 三数据通过机器学习对第三初始模型进行训练所得到的,所述多组第三数 据中的每组第三数据均包括:图片和图片中包括的食物的重量值;输出所 述第一重量值。在本实施例中,第三模型可以为食物重量估计模型,第三 模型的训练数据可以包含超过100000张带有重量和类别标签信息的单食 物图片,与食物分类数据集(对应于上述第二模型的训练数据)不同的是, 这部分数据可以都是通过人工拍摄产生的,根据食物层级的第一个层级 (例如,9个大类,该取值一种示例性说明,本发明对第一层级的类别数 不做限制,还可以分为8大类,12大类等),按照不同分支的类别数比例, 选择了100种(该取值仅是一种示例性说明,本发明对典型食物的数量不 做限制,例如,还可以选择80种,120种等)不同的典型食物,每一种食 物可以分别在不同的环境中进行拍摄。即,第三数据中的图片可以是在多 种不同拍摄环境中进行拍摄,一种类别的食物可以产生超过100张图片。 需要说明的是,第三数据通过上述采集方式,除了需要在变换质量时需要 重新称重,其他变换方式(如对同一质量的同一食物在不同角度、不同背 景等拍照时)不再需要称重,大大减低了数据采集难度。
46.在上述实施例中,可以利用数据划分模块将全部的数据集(即,多组 第一数据、多组第二数据、多组第三数据)分成三个部分:训练集、验证 集、测试集,三个部分图片的数量比例可为3:1:1,使用训练集数据训练 模型,验证集筛选模型,测试集评估模型的结果。其中,模型训练流程图 可参见附图4。
47.在一个示例性实施例中,使用第二模型对所述第二图片进行分析,确 定所述第二图片中包含的所述第一食物的第一食物名之前,所述方法还包 括:获取通过如下方式构建的所述第二初始模型:在xception模型的 globalaveragepooling的输出添加结构分支,以构建所述第二初始模型, 其中,所述结构分支用于识别输入的图片中包括的食物的层级类别,所述 层级类别中包括有对食物类型按照由大到小的顺序逐级划分的食物类型, 所述层级类别至少包括第一层级类别和第二层级类别,第一层级类别中至 少包括一个用于指示食材信息的层级类别,所述第二层级类别中包括用于 指示烹饪信息的层级类别,所述第一层级类别的等级高于所述第二层级类 别的等级,高等级的层级类别中的食物类型包括低等级的层级类别中的食 物类型;使用多组所述第二数据通过机器学习对所述第二初始模型进行训 练,得到所述第二模型。在本实施例中,第一模型可以采用xcepiton(deeplearning with depthwise separable convolutions),xception示意图可参见 附图5,该网络模型主要通过depthwise separable convolution来代替普通 的convolution对图片进行特征提取。其中,convolution示意图可参见附 图6,depthwise separable convolution示意图可参见附图7。具体而言, depthwise separable convolution有两个步骤,第一步:depthwise卷积, 对输入的每个channel,分别进行k
×
k(k表示卷积核大小,k取值可以 是3、5、7、9、11等)卷积操作,并将结果输入至concat(连接多 个数组的函数);第二步:pointwise卷积,对depthwise卷积中的concat 结果,进行1
×
1卷积操作。这种结构能够通道之间的相关性与空间相关 性分开处理,能够在不影响效果的情况下大大减少模型参数量和计算量。 在此基础上提出了层级结构,并将这种层级结构应用于网络中,让网络能 够自动学习这部分信息。针对中国人的饮食特征,可以从食物的食材对每 一种食物进
行层级结构划分,每个层级类别至少包括两个层级,第一层级 类别中至少包括第一个用于指示食材信息的层级列别,第二层级类别中包 括用于指示烹饪新鲜的层级类别。在上述实施例中,第二模型的训练流程 图可参见附图8,可以将输入图片缩放到299px(该取值仅是一种示例性 说明,本发明对输入的图片像素不做限制,例如,还可以取260px,350px 等)大小的正方形,对图像施加随机15度大小内的旋转,对亮度色彩度 进行 /-5%的数据增强处理。基于imagenet预训练权重进行微调,训练过 程中分为两个阶段,第一阶段设置batch_size=128,初始学习率lr=1e-3
, 冻结globalaveragepooling层前面的所有模型参数,只训练 globalaveragepooling层后面的模型参数,训练1个epoch;第二阶段,设 定batch_size=64,初始学习率lr=1e-4
,学习率每15个epoch衰减为0.5lr, 两个过程优化器均可以使用adabound(adaptive gradient methods withdynamic bound of learning rate)。
48.在一个示例性实施例中,所述结构分支还用于在所述第一层级类别包 括至少两个层级类别,所述第一层级类别中包括的各层级类别是按照食材 类型由大到小的顺序依次分布的,在识别出的食物所在层级为所述第一层 级类别中包括的第三层级类别,且所述第三层级类别的置信度低于第一阈 值的情况下,将所述第三层级类别中包括的食材信息对应的上一个层级类 别以及所述第二层级类别中包括的烹饪信息确定为所述识别出的食物的 层级类别,其中,所述第一层级类别中还包括第四层级类别,且所述第四 层级类别的等级高于所述第三层级类别的等级。在本实施例中,针对中国 人的饮食特征,可以从食物的食材对每一种食物进行层级结构划分。每一 种食物可以产生4个(该层级仅是一种示例性说明,本发明多层级数量不 做限制,例如,还可以是2个层级、3个层级、5个层级等)层级的信息, 包括3个层级的食材信息(level 1~3)和一个层级的烹饪信息(level 4), 越高的层级类别的颗粒度越大,越低的层级类别的颗粒度越小,具体层级 类别可参见表1。通过这种层级信息,能够将食物结构的先验信息(食材 和烹饪信息)结合进来,通过监督训练的方式让模型的预测更加准确,并 且能够根据实际情况返回不同的结果,如果某个类别的置信度太低(例如 小于0.3),可以返回上一个层级的类别,使颗粒度更粗,分类更加准确。 例如,当预测结果置信度最高的类别为红烧肉,但其置信度为0.2,我们 可以根据食材(猪肉)和烹饪(红烧)的输出结果进行组合,返回结果为 红烧猪肉类。在原有的网络结构中的globalaveragepooling的输出添加了 一个结构分支,与图片类别分支一起,对网络进行端到端的监督训练,其 中层级分支我们通过将所有层级信息融合为一个长向量,可以使用 sigmoid激活函数输出结果,损失函数可以采用binary_crossentropy(二分 类交叉熵损失函数)。类别分支可以采用一般的方式,使用softmax激活函 数输出结果,损失函数采用categorical_crossentropy(多类别交叉熵损失函 数)。最后,总的损失函数为l_
total
=25*l_
binary_crossentropy
l_
categorical_crossentropy

49.表1
[0050][0051]
在一个示例性实施例中,使用第一模型对所述第一图片进行分析,确 定所述第一图片中包含的所述第一食物的第一区域信息之前,所述方法还 包括:对yolov3模型做如下配置,以得到所述第一初始模型:配置所 述yolov3模型包括由后向前依次排列的第一数量的res_block分别输出 第二数量的特征层,其中,所述第二数量的特征层中包括用于确定食物的 边框坐标的特征层、用于确定边框置信度的特征层以及用于确定输入的图 片是第一食物类别的概率的特征层;将边框置信度的阈值配置为第二阈值, 将iou的阈值配置为
第三阈值,其中,在过滤掉置信度小于所述第二阈值 的边框之后,通过非极大值抑制nms的方法确定并保留iou大于所述第 三阈值的边框中置信度最大的边框;使用多组所述第一数据通过机器学习 对所述第一初始模型进行训练,得到所述第一模型。在本实施例中,食物 定位模型,即第一模型可以采用目标检测模型,例如,yolov3(you onlylook once version 3)、centernet(objects as points)等。以yolov3模型 为例,该模型采用darknet-53作为基础网络提取特征,其网络结构示意图 可参见附图9,darknet-53网络结构示意图可参见附图10。该网络主要由 5个res_block(即附图9中的res1、res2、res3、res4、res5,或者附图10 中的矩形框)堆叠而成,每经过一个res_block都会使用步长为2的卷积 层进行一次下采样、使特征图的长宽变为原来的二分之一,通道数变为原 来的两倍,每一个res_block又由不同数量的dbl (darknetconv2d_bn_leaky)和res_unit堆叠而成,形成一个高效稳定的 特征提取结构。其中,dbl可以包括conv卷积结构、batch_normalization(批 量归一化)以及leaky_relu,res_unit可以包括两个dbl和残差结构。为了 增加对不同大小食物的感知能力,在最后可以由3个res_block形成三个 分支(3个block仅是一种示例性说明,本发明对block的数量不做限制, 可以根据实际应用设置block的数量,例如,还可以为1个,4个,6个 等),分别运用9个先验框:(10x13),(16x30),(33x23),(30x61),(62x45), (59x119),(116x90),(156x198),(373x326)来预测食物位置。其中,9个 先验框可以分别应用在最后3个block的特征图上。每一个scale对应的 特征点均会产生3个先验框。不同于coco数据集,利用第一模型可以只 区分食物和背景,因此,对于每个分支我们最后输出的特征层数目可以为 4 1 1=6,即,每个分支可以得到六个数值:4个坐标数据,1个边框置信 度,以及对象类别的概率。其中,4个坐标数据可以是边框坐标(4个数 值)。边框置信度(1个数值),对象类别的概率(食物or非食物,0.5-1)。 边框坐标可以是由特征层确定的,即一个特征层可以确定一个顶点坐标, 边框可以是常规的矩形框,还可以是圆形框、椭圆形框或者其他形状的框 以及不规则图形框。对于res_block4分支,需要将res_block5分支的中 间结果进行上采样融合,同样,res_block3分支需要与res_block4和 res_block5融合后的特征图经过上采样后融合,具体可参见附图9中的两 个concat结构。
[0052]
在上述实施例中,可以将预测边框置信度的阈值,即第二阈值设置为 0.3,iou(intersection over union)阈值,即第三阈值设置为0.45,将所 有小于0.3置信度的预测框过滤后,通过nms(non maximum suppression, 非极大值抑制的方法)对于iou大于0.45的预测框,保留置信度最大的。
[0053]
在上述实施例中,第一模型的训练流程图可参见附图11,在每次生成 batch_size(例如,16、32、64、128)的数据时,即生成一次训练所选取的 样本数(对一张图片进行后续处理可以得到样本数)时,可以在将图片缩 放到416px大小的正方形大小后,对图像施加随机5度大小内的旋转,对 亮度和色彩度进行 5%~-5%变化的数据增强处理。其中,旋转和对亮度、 色彩增强处理是两种数据增强方式,为了增加模型鲁棒性,一般可以同时 采用。将处理后的图像输入到卷积层中。在训练过程中,可以基于coco 的预训练权重进行微调,设定batch_size=64,初始学习率lr=1e-4
,学习率 每8个epoch(一个完整的数据集通过一次神经网络并且返回一次称为一 个epoch)衰减为0.5lr,优化器可以使用adam(adaptive moment estimation)优化迭代30个epoch。最后预测的输出包含食物的矩形框坐 标及长宽
例中,拍摄条件可以包括不同颜色的餐桌背景(如黑色、白色、褐色等), 不同亮度的光照条件,不同角度但需拍得食物全貌(例如,拍摄角度相较 于桌面在30度~90度之间),不同餐具(例如,盘子、碗、玻璃碗、托盘 等),不同质量(例如,50g到1100g之间)。
[0059]
在一个示例性实施例中,所述方法还包括:基于所述第一食物名与所 述第一重量值从食物营养数据库中确定出所述第一食物的营养值;将所述 第一食物的营养值反馈给目标终端。在本实施例中,根据第一食物名和第 一重量值可以从食物营养数据库中确定出第一食物的营养值,将第一食物 的营养值反馈给目标终端。其中,目标终端可以是手机、平板电脑、智能 手环等带有摄像功能的智能终端,用户通过目标终端对食物进行拍摄,即 可知道该食物的营养值。其中,营养值可以包括微量元素的含量、卡路里 等。
[0060]
在一个示例性实施例中,在基于所述第一食物名与所述第一重量值从 食物营养数据库中确定出所述第一食物的营养值之后,所述方法还包括: 在确定所述第一食物的营养值与预先配置的目标对象的预期营养值的偏 差大于第四阈值的情况下,制定饮食方案,其中,所述饮食方案包括调整 所述第一食物的重量值和/或更换所述第一食物。在本实施例中,在确定第 一食物的营养值与预先配置的目标对象的预期营养值的偏差大于第四阈 值时,可以为用户指定饮食方案,例如,调整第一食物的重量值和/或更换 第一食物。其中,目标对象可以是人、动物等,第四阈值可以根据用户设 置不同的值,本发明对该阈值不做限定,并且,该阈值可以通过application (app)自定义。
[0061]
在前述实施例中,提出基于三个场景:盘碗,单盘多菜(如中式快餐), 混合食物(无明确边界)的食物定位模型,能够将一张图片中的不同食物 位置边框确定出来,进行下一步识别,达到识别多个食物的目的;基于一 个大数量、多类别中餐为主的食物数据集,通过对已有用户记录的分析, 能够在600种食物的前提下,尽量满足更多用户的需求,因此,最终选择 的食物种类能够覆盖中式食物、水果和西式食物。其中,中式食物覆盖了 中国各地区的常见食物,并创新性设计食物层级结构,提高了识别精度。 此外,采用一种特有的基于2d图片估计重量的方法,在没有参照物的情 况下,通过单张食物图片内容,实现一种端到端的重量预测模型。通过将 三个模型:食物定位模型、食物分类模型、食物重量估计模型将食物营养 计算结合在一起,形成一个更实用完整的功能。同时,优化食物识别准确 率与食物营养预测准确率,从而更好的服务于实际营养管理场景。解决了 在食物识别场景中,只能识别单一食物,类别识别效果差,且难以估计食 物的量的问题。
[0062]
在前述实施例中,依靠一套结合食材与烹饪方法的中餐食物层级结构, 基于此结构优化数据收集、清洗、模型训练,从而得到更好的食物数据库 与模型识别结果。通过人工智能方法,基于手机拍摄的食物图片,在没有 参照物的情况下,通过单张图片实现食物重量的估计;能够同时检测一张 图片中的多个食物,基于食物层级结构的辅助,更准确的识别其食物类型。 并通过比对食物营养数据库,进行简便、客观的食物与营养记录。
[0063]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根 据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当 然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理 解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软 件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如 rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可 以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所 述的方法。
[0064]
在本实施例中还提供了一种食物识别装置,该装置用于实现上述实施 例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语
ꢀ“
模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描 述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现 也是可能并被构想的。
[0065]
图15是根据本发明实施例的食物识别装置的结构框图,如图15所示, 该装置包括:
[0066]
第一获取模块1502,用于获取包含第一食物的第一图片;
[0067]
第一分析模块1504,用于使用第一模型对所述第一图片进行分析,确 定所述第一图片中包含的所述第一食物的第一区域信息,其中,所述第一 模型为使用多组第一数据通过机器学习对第一初始模型进行训练所得到 的,所述多组第一数据中的每组第一数据均包括:图片和图片中包含的食 物的区域信息;
[0068]
裁剪模块1506,用于基于所述第一区域信息在所述第一图片中裁剪出 所述第一食物的图像,并将裁剪出的图像作为第二图片;
[0069]
第二分析模块1508,用于使用第二模型对所述第二图片进行分析,确 定所述第二图片中包含的所述第一食物的第一食物名,其中,所述第二模 型为使用多组第二数据通过机器学习对第二初始模型进行训练所得到的, 所述多组第二数据中的每组第二数据均包括:图片和图片中包括的食物的 食物名,所述食物名包括食材信息和用于指示烹饪食材的方式的烹饪信息;
[0070]
第一输出模块1510,用于输出所述第一区域信息和所述第一食物名。
[0071]
在上述实施例中,第一模型可以为食物定位模型,第二模型可以为食 物分类模型。其中,第一模型和第二模型均是经过通过机器学习训练得到 的。多组第一数据和多组第二数据中包括的图片可以是网络图片爬取,例 如,通过浏览器搜索出来的图片、用于提供美食制作方法的app中加载的 图片,餐食外卖平台中加载的图片等;还可以是通过人工拍摄的食物图片 等;还可以是部分公开的数据集中的图片,例如,food-101、uec food-256 等。多组第一数据中包括的图片中包含的区域信息可以为人工标注的。第 一模型的训练数据可以包含多张(例如,7936张,该取值仅是一种示例性 说明,本发明第一数据的数量不做限制,还可以取7500张,10000张等) 带有边框标注信息(中心点坐标,边框长和宽)的多食物图片。其中, 带有边框标注信息的多食物图片示意图可参见附图3。第二模型的训练数 据可以包含408383张(该取值仅是一种示例性说明,本发明对第二模型 训练数据的数量不做限制)带有类别(例如,600类,该取值仅是一种示 例性说明,本发明对该类别的数量不做限制,还可以为580类,650类等) 标注的单食物(只包含一种食物)图片。其中,在一个更优选的实施例中, 标注信息可以经过两个以上标注人员标注,以进一步保证精确性。
[0072]
通过本发明,在获取包含第一食物的第一图片后,利用第一模型对第 一图片进行分析,确定第一图片中包含的第一食物的第一区域信息,根据 第一区域信息裁剪出第一食物的图像,并将其确定为第二图片,利用第二 模型对第二图片进行分析,确定出第二图片中包含的第一食物的第一食物 名,并将第一区域信息和第一食物名输出。利用通过机器学习得到的模型 对第一图片进行分析,识别出食物名,因此,可以解决相关技术中存在的 食物识别准确率低的问题,达到准确识别食物的效果,提高了食物识别的 准确率。
[0073]
需要说明的是,在进行单食物识别中,第一图片包含的第一食物只有 一种食物,
等)卷积操作,并将结果输入至concat(连接多个数组的函数);第二 步:pointwise卷积,对depthwise卷积中的concat结果,进行1
×
1卷 积操作。这种结构能够通道之间的相关性与空间相关性分开处理,能够在 不影响效果的情况下大大减少模型参数量和计算量。在此基础上提出了层 级结构,并将这种层级结构应用于网络中,让网络能够自动学习这部分信 息。针对中国人的饮食特征,可以从食物的食材对每一种食物进行层级结 构划分,每个层级类别至少包括两个层级,第一层级类别中至少包括第一 个用于指示食材信息的层级列别,第二层级类别中包括用于指示烹饪新鲜 的层级类别。
[0076]
在上述实施例中,第二模型的训练流程图可参见附图8,可以将输入 图片缩放到299px(该取值仅是一种示例性说明,本发明对输入的图片像 素不做限制,例如,还可以取260px,350px等)大小的正方形,对图像 施加随机15度大小内的旋转,对亮度色彩度进行 /-5%的数据增强处理。 基于imagenet预训练权重进行微调,训练过程中分为两个阶段,第一阶 段设置batch_size=128,初始学习率lr=1e-3
,冻结globalaveragepooling 层前面的所有模型参数,只训练globalaveragepooling层后面的模型参数, 训练1个epoch;第二阶段,设定batch_size=64,初始学习率lr=1e-4
,学 习率每15个epoch衰减为0.5lr,两个过程优化器均可以使用adabound (adaptive gradient methods with dynamic bound of learning rate)。
[0077]
在一个示例性实施例中,所述结构分支还用于在所述第一层级类别包 括至少两个层级类别,所述第一层级类别中包括的各层级类别是按照食材 类型由大到小的顺序依次分布的,识别出的食物所在层级为所述第一层级 类别中包括的第三层级类别,且所述第三层级类别的置信度低于第一阈值 的情况下,将所述第三层级类别中包括的食材信息对应的上一个层级类别 以及所述第二层级类别中包括的烹饪信息确定为所述识别出的食物的层 级类别,其中,所述第一层级类别中还包括第四层级类别,且所述第四层 级类别的等级高于所述第三层级类别的等级。在本实施例中,针对中国人 的饮食特征,可以从食物的食材对每一种食物进行层级结构划分。每一种 食物最高可以产生4个(该层级仅是一种示例性说明,本发明对层级数量 不做限制,例如,还可以为2个层级、3个层级、5个层级等)层级的信 息,包括3个层级的食材信息(level 1~3)和一个层级的烹饪信息(level4),越高的层级类别的颗粒度越大,越低的层级类别的颗粒度越小,具体 层级类别可参见表1。通过这种层级信息,能够将食物结构的先验信息(食 材和烹饪信息)结合进来,通过监督训练的方式让模型的预测更加准确, 并且能够根据实际情况返回不同的结果,如果某个类别的置信度太低(例 如小于0.3),可以返回上一个层级的类别,使颗粒度更粗,分类更加准确。 例如,当预测结果置信度最高的类别为红烧肉,但其置信度为0.2,我们 可以根据食材(猪肉)和烹饪(红烧)的输出结果进行组合,返回结果为 红烧猪肉类。在原有的网络结构中的globalaveragepooling的输出添加了 一个结构分支,与图片类别分支一起,对网络进行端到端的监督训练,其 中层级分支我们通过将所有层级信息融合为一个长向量,可以使用 sigmoid激活函数输出结果,损失函数可以采用binary_crossentropy(二分 类交叉熵损失函数)。类别分支可以采用一般的方式,使用softmax激活函 数输出结果,损失函数采用categorical_crossentropy(多类别交叉熵损失函 数)。最后,总的损失函数为l_
total
=25*l_
binary_crossentropy
l_
categorical_crossentropy

[0078]
在一个示例性实施例中,所述装置还包括:配置模块,用于使用第一 模型对所述
第一图片进行分析,确定所述第一图片中包含的所述第一食物 的第一区域信息之前,利于如下单元对yolov3模型做配置,以得到所 述第一初始模型:配置单元,用于配置所述yolov3模型包括由后向前 依次排列的第一数量的res_block分别输出第二数量的特征层,其中,所 述第二数量的特征层中包括用于确定食物的边框坐标的特征层、用于确定 边框置信度的特征层以及用于确定输入的图片是第一食物类别的概率的 特征层;将边框置信度的阈值配置为第二阈值,将iou的阈值配置为第三 阈值,其中,在过滤掉置信度小于所述第二阈值的边框之后,通过非极大 值抑制nms的方法确定并保留iou大于所述第三阈值的边框中置信度最 大的边框;第二训练单元,用于使用多组所述第一数据通过机器学习对所 述第一初始模型进行训练,得到所述第一模型。在本实施例中,食物定位 模型,即第一模型可以采用目标检测模型,例如,yolov3(you only lookonce version 3)、centernet(objects as points)等。以yolov3模型为例, 该模型采用darknet-53作为基础网络提取特征,其网络结构示意图可参见 附图9,darknet-53网络结构示意图可参见附图10。该网络主要由5个 res_block(即附图9中的res1、res2、res3、res4、res5,或者附图10中 的矩形框)堆叠而成,每经过一个res_block都会使用步长为2的卷积层 进行一次下采样、使特征图的长宽变为原来的二分之一,通道数变为原来 的两倍,每一个res_block又由不同数量的dbl(darknetconv2d_bn_leaky) 和res_unit堆叠而成,形成一个高效稳定的特征提取结构。其中,dbl 可以包括conv卷积结构、batch_normalization(批量归一化)以及leaky_relu, res_unit可以包括两个dbl和残差结构。为了增加对不同大小食物的感 知能力,在最后可以由3个res_block形成三个分支(3个block仅是一 种示例性说明,本发明对block的数量不做限制,可以根据实际应用设置 block的数量,例如,还可以为1个,4个,6个等),分别运用9个先验 框:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90), (156x198),(373x326)来预测食物位置。其中,9个先验框可以分别应用在 最后3个block的特征图上。每一个scale对应的特征点均会产生3个先 验框。不同于coco数据集,利用第一模型可以只区分食物和背景,因此, 对于每个分支我们最后输出的特征层数目可以为4 1 1=6,即,每个分支 可以得到六个数值:4个坐标数据,1个边框置信度,以及对象类别的概 率。其中,4个坐标数据可以是边框坐标(4个数值)。边框置信度(1个 数值),对象类别的概率(食物or非食物,0.5-1)。边框坐标可以是由特 征层确定的,即一个特征层可以确定一个顶点坐标,边框可以是常规的矩 形框,还可以是圆形框、椭圆形框或者其他形状的框以及不规则图形框。 对于res_block4分支,需要将res_block5分支的中间结果进行上采样融 合,同样,res_block3分支需要与res_block4和res_block5融合后的特 征图经过上采样后融合,具体可参见附图9中的两个concat结构。
[0079]
在上述实施例中,可以将预测边框置信度的阈值,即第二阈值设置为 0.3,iou(intersection over union)阈值,即第三阈值设置为0.45,将所 有小于0.3置信度的预测框过滤后,通过nms(non maximum suppression, 非极大值抑制的方法)对于iou大于0.45的预测框,保留置信度最大的。
[0080]
在上述实施例中,第一模型的训练流程图可参见附图11,在每次生成 batch_size(例如,16、32、64、128)的数据时,即生成一次训练所选取的 样本数(对一张图片进行后续处理可以得到样本数)时,可以在将图片缩 放到416px大小的正方形大小后,对图像施加随机5度大小内的旋转,对 亮度和色彩度进行 5%~-5%变化的数据增强处理。其中,旋转和
对亮度、 色彩增强处理是两种数据增强方式,为了增加模型鲁棒性,一般可以同时 采用。将处理后的图像输入到卷积层中。在训练过程中,可以基于coco 的预训练权重进行微调,设定batch_size=64,初始学习率lr=1e-4
,学习率 每8个epoch(一个完整的数据集通过一次神经网络并且返回一次称为一 个epoch)衰减为0.5lr,优化器可以使用adam(adaptive momentestimation)优化迭代30个epoch。最后预测的输出包含食物的矩形框坐 标及长宽信息的食物位置。需要说明的是,5度和 /-5%是一个连续变化的 值,是指在这个范围内变化,并不是固定的值。
[0081]
需要说明的是,上述用于确定输入的图片是第一食物类别的概率的特 征层可以将待识别的食物识别为某种类别食物,并确定将待识别食物确定 为该类别食物的可信度(概率)。在一个更优选的实施方式中,该特征层 在可以将待识别的食物识别为多种不同的类别的食物,并分别确定将其确 定为不同类别的食物的可信度,将可信度最高(概率最大)的食物类别及 其可信度(概率)确定为最终识别的食物类别及其概率。
[0082]
在一个示例性实施例中,所述装置还包括,第三获取模块,用于使用 第三模型对所述第二图片进行分析,确定所述第二图片中包含的所述第一 食物的第一重量值之前,获取通过如下单元构建的所述第三初始模型:第 二替换单元,用于在xception模型的globalaveragepooling的输出侧配置 回归分支和类别分支,以构建所述第三初始模型;第三训练单元,用于使 用多组所述第三数据通过机器学习对所述第三初始模型进行训练,得到所 述第三模型。在本实施例中,第三模型可以基于原始的xception模型,与 第二模型相似,globalaveragepooling层后输出有两个分支,回归分支和 类别分支,对于回归分支,最后的全连接层的神经元数为1,使用relu激 活函数来保证输出为正值,损失函数采用mse(均方误差);对于类别分 支,最后的全连接层的神经元数为100,使用softmax激活函数,损失函 数采用categorical_crossentropy。最后,总的损失函数为l_
total
=2*l_
mse
l_
categorical_crossentropy

[0083]
在上述实施例中,第三模型的训练流程图可参见附图12,将输入图片 缩放到299px大小的正方形,对图像施加随机15度大小内的旋转。我们 基于食物分类模型的训练权重进行微调,训练过程中分为两个阶段,第一 阶段设置batch_size=128,初始学习率lr=1e-3
,冻结globalaveragepooling 层前面的所有模型参数,只训练globalaveragepooling层后面的模型参数, 训练1个epoch;第二阶段,设定batch_size=64,初始学习率lr=1e-4
,学 习率每10个epoch衰减为0.5lr,两个过程优化器均使用adabound (adaptive gradient methods with dynamic bound of learning rate)。第三 模型识别效果图可参见附图13,如图13所示,针对每一张食物图片,定 位出食物位置,给出食物重量以及对应的食物类别名称。
[0084]
在上述实施例中,食物识别及食物重量检测流程图可参见附图14,将 待评估的食物图像输入到模型中,可以输出:a.食物的位置;b.食物的类别;c. 食物的重量。通过上述的信息,可以通过查找食物营养库,进一步计算食 物包含的营养元素,进而实现饮食录入和营养计算,指导用户控制营养摄 入。其中,输入的食物图片,可以是包含一个食物的图片,也可以是包含 多个食物的图片,经过食物定位模块(对应于上述第一模型)确定食物的 位置后,如果检测出食物,根据获得的食物框将食物裁剪出来,裁剪出来 的图片再分别输入到食物分类模型(对应于上述第二模型)和食物重量估 计模型(对应于上述第三模型)预
测结果,最终将获取到图片中的食物位 置框、食物名、重量值。
[0085]
在一个示例性实施例中,所述装置还包括:第四获取模块,用于在使 用多组所述第三数据通过机器学习对所述第三初始模型进行训练,得到所 述第三模型之前,获取在不同的拍摄条件下对同一食物进行拍摄所得到的 图片以及所述食物的重量值,得到所述第三数据;其中,不同的拍摄条件 包括以下至少之一:不同的用于放置所述食物的餐桌背景、不同亮度的光 照条件、不同的拍摄角度、不同的用于盛放食物的餐具以及同一食物的不 同的重量。在本实施例中,拍摄条件可以包括不同颜色的餐桌背景(如黑 色、白色、褐色等),不同亮度的光照条件,不同角度但需拍得食物全貌(例如,拍摄角度相较于桌面在30度~90度之间),不同餐具(例如,盘 子、碗、玻璃碗、托盘等),不同质量(例如,50g到1100g之间)。
[0086]
在一个示例性实施例中,所述装置还包括:确定模块,用于基于所述 第一食物名与所述第一重量值从食物营养数据库中确定出所述第一食物 的营养值;反馈模块,用于将所述第一食物的营养值反馈给目标终端。在 本实施例中,根据第一食物名和第一重量值可以从食物营养数据库中确定 出第一食物的营养值,将第一食物的营养值反馈给目标终端。其中,目标 终端可以是手机、平板电脑、智能手环等带有摄像功能的智能终端,用户 通过目标终端对食物进行拍摄,即可知道该食物的营养值。其中,营养值 可以包括微量元素的含量、卡路里等。
[0087]
在一个示例性实施例中,所述装置还包括:制定模块,用于在基于所 述第一食物名与所述第一重量值从食物营养数据库中确定出所述第一食 物的营养值之后,在确定所述第一食物的营养值与预先配置的目标对象的 预期营养值的偏差大于第四阈值的情况下,制定饮食方案,其中,所述饮 食方案包括调整所述第一食物的重量值和/或更换所述第一食物。在本实施 例中,在确定第一食物的营养值与预先配置的目标对象的预期营养值的偏 差大于第四阈值时,可以为用户指定饮食方案,例如,调整第一食物的重 量值和/或更换第一食物。其中,目标对象可以是人、动物等,第四阈值可 以根据用户设置不同的值,本发明对该阈值不做限定,并且,该阈值可以 通过application(app)自定义。
[0088]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于 后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器 中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0089]
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存 储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上 述任一项方法实施例中的步骤。
[0090]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于: u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器 (random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各 种可以存储计算机程序的介质。
[0091]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存 储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述 任一项方法实施例中的步骤。
[0092]
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入 输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述 处理器连接。
[0093]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所 描述的示例,本实施例在此不再赘述。
[0094]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤 可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者 分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序 代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并 且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或 者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤 制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件 和软件结合。
[0095]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于 本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原 则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。
再多了解一些

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

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

相关文献