Method Article
本文介绍的工作目标是开发从移动设备拍摄的图像中自动识别食品和饮料物品的技术。该技术由两种不同的方法组成 - 第一种方法执行食物图像识别,而第二种方法执行食物图像分割。
由于与人工饮食评估方法相关的问题和成本,需要自动化的解决方案来缓解和加快工作速度,提高工作质量。如今,自动化解决方案能够以更简单的方式记录一个人的饮食摄入量,例如使用智能手机摄像头拍摄图像。在本文中,我们将重点讨论这种基于图像的饮食评估方法。对于食品图像识别问题,近年来,深度神经网络已经达到了最先进的水平,我们介绍了我们在这一领域的工作。特别是,我们首先使用一种称为 NutriNet 的深度神经网络架构来描述食品和饮料图像识别方法。与早期基于深度学习的食品图像识别所做的大多数研究一样,此方法仅限于每个图像的一个输出,因此不适合具有多个食品或饮料项目的图像。这就是为什么执行食物图像分割的方法要强大得多,因为它们能够识别图像中任意数量的食品或饮料项目。因此,我们还提出了两种食物图像分割方法 - 一种基于完全卷积网络 (FCN),另一种基于深残余网络 (ResNet)。
饮食评估是确定个人饮食可操作区域的关键一步。然而,使用传统的手工方法进行饮食评估与相当大的成本相关。这些方法也容易出错,因为它们往往依赖于个人的自我报告。自动饮食评估通过提供更简单的方法来量化和验证食物摄入量来解决这些问题。这种方法还可以减轻手动方法中存在的一些错误,例如误餐、无法准确评估食物量等。因此,通过开发解决方案,识别不同的食物和饮料,并量化食物摄入量1,自动饮食评估有明显的好处。这些解决方案还可用于估算食品和饮料项目的营养价值(从现在起为"食品项目")。因此,自动饮食评估对于多种应用是有用的 - 从严格的医疗用途,如允许营养师更轻松、更准确地跟踪和分析患者的饮食,到针对普通人群的内部健康应用程序的使用。
从图像中自动识别食物是一个具有挑战性的计算机视觉问题。这是由于食物通常是可变形的对象,也由于食品在准备过程中可能会丢失大量的视觉信息。此外,不同的食物可能看起来非常相似,相同的食物可以看起来有很大的不同,在多个图像2。此外,识别的准确性取决于更多的因素,如图像质量,食品项目是否被另一个项目阻碍,图像拍摄的距离等。识别饮料项目会带来一系列自己的挑战,主要的挑战是图像中可用的视觉信息数量有限。这些信息可以是饮料的颜色,饮料容器的颜色和结构,并在最佳的图像条件下,饮料密度2。
要从图像中成功识别食品,必须了解每个食品和饮料类的功能。传统上,这是使用手动定义的功能提取器3、4、5、6 执行基于特定项目功能(如颜色、纹理、大小等)的识别,或这些功能的组合。这些功能提取器的示例包括多个内核学习4、对对本地功能5和功能袋模型6。由于食物图像的复杂性,这些方法大多实现了低分类精度 - 10%至40%之间3,4,5。原因是手动方法不够坚固,不够准确。由于食品在外观上可能差异很大,因此手动包含所有这些差异是不可行的。当食物类别减少5个,或者将不同的图像特征组合6时,手动定义的功能提取器可以实现更高的分类精度,从而表明需要更复杂的解决方案来解决这个问题。
这就是为什么深度学习被证明是如此有效的食物图像识别问题。深度学习,或深度神经网络,灵感来自生物大脑,并允许由多个处理层组成的计算模型通过对一组输入图像7,8的培训自动学习功能。正因这样,深度学习大大改善了各种研究领域的技术水平7,计算机视觉,以及随后的食物图像识别,成为其中2。
特别是,深度卷积神经网络(DCNN)是最受欢迎的食物图像识别 - 这些网络的灵感来自动物的视觉系统,其中个别神经元试图通过对视觉领域9的重叠区域作出反应来了解视觉输入。卷积神经网络采用输入图像,并在每个网络层中执行一系列操作,其中最常见的是卷积层、完全连接层和聚合层。卷积层包含可学的过滤器,这些滤波器响应输入数据中的某些功能,而完全连接的层则组成来自其他层的输出数据,以便从中获取更高层次的知识。汇集图层的目的是向下采样输入数据2。有两种方法可以使用深度学习模型,证明很受欢迎:采取现有的深度神经网络定义10,11,在本文中称为深度学习架构,或定义一个新的深度学习架构12,13,并在食品图像数据集上培训其中任何一个。这两种方法都有优点和缺点 - 在使用现有的深度学习架构时,可以选择并微调用于其他问题的架构,从而节省时间并确保选择经过验证的架构。另一方面,定义新的深度学习架构则更加耗时,但允许开发专门考虑问题细节的架构,从而在理论上更好地处理该问题。
在本文中,我们介绍了这两种方法。对于食品图像识别问题,我们开发了一种名为NutriNet2的新型DCNN架构,这是著名的AlexNet架构14的修改。与 AlexNet 相比,主要有两个区别:NutriNet 接受 512x512 像素图像作为输入(与 AlexNet 的 256x256 像素图像相反),而 NutriNet 在神经网络的开头具有额外的卷积层。引入这两个更改是为了从识别数据集图像中提取尽可能多的信息。拥有更高分辨率的图像意味着图像上有更多的信息,并且有更多的卷积层意味着可以从图像中提取更多的知识。与 AlexNet 的大约 6000 万个参数相比,NutriNet 包含的参数更少:大约 3300 万。这是因为第一个完全连接的层的尺寸差异是由额外的卷积层2引起的。 图 1 包含 NutriNet 架构的图表。用于训练 NutriNet 模型的食品图像是从互联网上收集的 - 协议文本中描述了该过程。
对于食物图像分割问题,我们使用了两种不同的现有架构:完全卷积网络 (FCN)15和深度残余网络 (ResNet)16,这两种结构都代表了图像分割的先进状态,当我们使用它们来开发各自的食品图像分割解决方案时。朗等人引进了多种FCN变种:FCN-32、FCN-16和FCN-815。FCN-32s 根据 FCN 最后一层的预测输出像素地图,而 FCN-16s 变种则将这些预测与较早一层的预测相结合。FCN-8s考虑了另一层的预测,因此能够做出最好的谷物预测,这就是为什么它适合食品图像识别。我们使用的 FCN-8s 在 PASCAL 视觉对象类 (PASCAL VOC) 数据集17上进行了预先培训,并在食品复制品图像(从今以后为"假食物")18上进行了训练和测试,原因是它们与真实食品的视觉相似性,并且由于像素水平上缺乏真实食物的注释图像。假食物用于不同的行为研究,所有研究参与者的所有菜肴都使用假食物。由于这些图像的食物内容是已知的,它使图像数据集可用于深度学习模型培训。协议文本中描述了数据集处理步骤。
基于 ResNet 的解决方案是在食品识别挑战 (FRC)19的范围内开发的。它使用混合任务级联 (HTC)20 方法与 ResNet-10116 骨干。这是用于图像分割问题的最先进的方法,可以使用不同的功能提取器或骨干。我们也考虑了其他骨干网络,特别是其他 ResNet 变种,如 ResNet-5016,但 ResNet-101 最合适,因为它的深度和能力足以以足够复杂的方式表示输入图像。用于培训 HTC ResNet-101 模型的数据集是附加增强图像的 FRC 数据集。这些增强在协议文本中呈现。
本文旨在为机器学习专家寻找深度学习架构和数据增强步骤在食品图像识别和分割问题方面表现良好的信息,以及希望利用我们的方法实现食品图像识别自动化用于饮食评估的营养研究人员提供资源。在下面的段落中,介绍了来自食品图像识别领域的深度学习解决方案和数据集。在协议文本中,我们详细说明了这三种方法中的每一种方法是如何用于训练可用于自动饮食评估的深度神经网络模型的。此外,每个协议部分都包含用于培训和测试的食品图像数据集的获取和处理方式的描述。
DCNN 通常比其他食品图像识别和分割方法取得更好的结果,这就是为什么该领域近期的绝大多数研究都基于这些网络的原因。川野等人使用DCNN来补充手动方法21,并在UEC-FOOD100数据集22上实现了72.26%的分类精度。克里斯托多利迪斯等人专门使用它们,在自获取的数据集23上达到84.90%的更高精度。Tanno等人开发了DeepFoodCam-一款用于食品图像识别的智能手机应用程序,使用DCN24。刘等人提出了一个系统,使用DCN25进行基于物联网的饮食评估。Martinel等人推出了一种基于DCNN的方法,利用食品图像26的细节,并报告了食品-101数据集27的准确率为90.27%。周等人撰写了一篇关于食品领域深度学习解决方案的回顾。
最近,赵等人提出了一个专门用于移动应用中食品图像识别的网络29。此方法使用较小的"学生"网络,从更大的"教师"网络中学习。通过它,他们成功地在 UEC-FOOD25630 上实现了 84% 的准确率,在 Food-101 数据集 27 上实现了91.2%的准确率。哈菲兹等人利用DCNN开发出饮料专用图像识别解决方案,报告精度高达98.51%31。Shimoda等人描述了一种在食品图像中检测板区而不使用像素注释32的新方法。Ciocca等人推出了一个新的数据集,包含来自11个不同州(固体,切片,奶油糊等)的20种不同食品类别的食品,并介绍了他们的方法,培训识别模型,能够识别食品状态,除了食品类33。Knez等人评估了移动设备34的食品图像识别解决方案。最后,Furtado等人对人类视觉系统与DCN的性能进行了比较研究,发现人类识别的精度仍然优于DCN,精度为80%,而DCMN为74.5%。作者指出,在少量的食物类中,DCNN表现良好,但在有数百个类的数据集上,人类识别精度更高,突出了问题的复杂性。
尽管其最新成果,深度学习有一个主要缺点 - 它需要一个大的输入数据集来训练模型。在食品图像识别的情况下,需要一个大型的食品图像数据集,此数据集需要包含尽可能多的不同真实场景。在实践中,这意味着对于每个单独的食品或饮料项目,需要大量的图像集合,并且需要在数据集中显示尽可能多的不同项目。如果数据集中没有足够的图像用于特定项目,则不太可能成功识别该项目。另一方面,如果数据集只涵盖少量项目,解决方案的范围将受到限制,并且只能识别少数不同的食品和饮料。
过去提供了多个数据集。匹兹堡快餐图像数据集 (PFID)3被引入,以鼓励在食品图像识别领域的更多研究。电子通信食品大学100(UEC-FOOD100)22和电子通信大学食品256(UEC-FOOD256)30个数据集包含日本菜,在UEC-FOOD256数据集的情况下,与一些国际菜一起扩展。Food-101数据集包含从网站27获得的流行菜肴。Food-5036和视频检索组食品 172 (VireoFood-172)37个数据集是基于中国的食品图像集合。米兰-比科卡大学 2016 (UNIMIB2016) 数据集由来自意大利食堂38的食品托盘图像组成。食谱1M是烹饪食谱和食物图像39的大型数据集。Food-475 数据集40收集了以前发布的四个食品图像数据集 27、30、36、37 成一。北京理工大学食品60(BTBUFood-60)是用于食品检测的图像数据集41。最近,ISIA 食品-500 数据集42的杂项食品图像被提供。与其他公开的食品图像数据集相比,它包含大量的图像,分为500个食品类,旨在推动多媒体食品识别解决方案42的发展。
1. 食品图像识别与营养网
2. 食品图像与FCN的分割
3. 食品图像细分与 HTC ResNet
NutriNet 测试了当时流行的三种深度学习架构:亚历克斯网14、古格莱网51和 ResNet16。还对所有架构测试了多个训练参数,以确定最佳值2。其中包括解算器类型的选择,它决定了如何最大限度地减少损失功能。此功能是培训神经网络的主要质量指标,因为它更适合在培训期间进行优化,而不是分类精度。我们测试了三个解答器:随机梯度下降 (SGD)52,涅斯特罗夫的加速梯度 (NAG)53和自适应梯度算法 (AdaGrad)54。第二个参数是批次大小,它定义同时处理的图像数量。深度学习架构的深度决定了这一参数的价值,因为深层结构在 GPU 内存中需要更多的空间 - 此方法的后果是,无论深度如何,所有架构的内存都完全充满了图像。第三个参数是学习速率,它定义了训练期间神经网络参数的改变速度。此参数与批次大小一致设置,因为并发处理的图像数量决定了收敛速率。AlexNet 模型采用 256 张图像的批量大小和 0.02 的基本学习速率进行培训:NutriNet 使用了 128 张图像的批次大小和 0.01 的速率:古格莱网 64 张图片,速率 0.005:和 ResNet 16 图像和 0.00125 速率。为所有架构修复了另外三个参数:学习速率策略(逐步降低)、步幅(30%)和伽玛(0.1)。这些参数共同描述了每个时代的学习率是如何变化的。这种方法背后的理念是,学习速率正在逐渐降低,以微调模型,使其更接近最佳损失值。最后,所有深度学习架构2的训练时代也固定在150个。
在 NutriNet 测试的所有参数中,最好的结果是识别数据集的分类精度为 86.72%,比 AlexNet 的最佳结果高出 2% 左右,略高于 GoogLeNet 的最佳结果。整体表现最好的架构是 ResNet(约 1%),但与 NutriNet 相比,ResNet 的训练时间要高得多(大约 5 倍),如果模型不断重新训练以提高准确性和可识别食品的数量,这一点很重要。NutriNet、亚历克斯网和古格莱网使用AdaGrad解求器取得了最佳效果,而瑞斯网的最佳型号使用了NAG解解器。NutriNet 还在公开的 UNIMIB2016 食品图像数据集38上进行了测试。此数据集包含 73 种不同食品的 3,616 张图像。NutriNet 在此数据集上实现了 86.39% 的识别精度,略高于数据集作者的基线识别结果,即 85.80%。此外,NutriNet 在 115 种不同食品和饮料项目的 200 张真实图像的小型数据集上进行了测试,其中 NutriNet 获得了 55% 的前 5 个精度。
为了训练 FCN-8s 假食品图像分割模型,我们使用 Adam55 作为解解器类型,因为我们发现它为此任务执行得最佳。基础学习率设置非常低 - 到 0.0001。数字低的原因是一次只能处理一个图像,这是像素级分类过程的结果。此方法的 GPU 内存要求明显大于图像级别分类。因此,必须把学习速率定得很低,这样参数就不会变化太快,并趋同到最优值。培训时间设置为 100,而学习速率策略、步数大小和伽马设置为步进,分别为 34% 和 0.1,因为这些参数生成了最准确的模型。
FCN-8s模型的精度测量采用像素精度度测量15,类似于传统深度学习网络的分类精度,主要区别在于精度是在像素水平上计算的,而不是在图像水平上计算的:
其中PA是像素精度度,nij是我预测属于类j和t i=Σ j nij是从类在地面真相标签1的像素总数。换句话说,像素精度测量是通过将正确预测的像素除以像素总数来计算的。训练有素的FCN-8s模型的最终准确率为92.18%。图 2显示了来自假食品图像数据集的三个示例图像(每个培训、验证和测试子集各一个),以及相应的地面真相和模型预测标签。
用于食品图像分割的 HTC20 ResNet-101 模型的培训参数设置如下:使用的解压器类型为 SGD,因为它优于其他解压器类型。基础学习速率设置为 0.00125,批次大小设置为 2 个图像。每个训练阶段的训练时间设置为 40 个,并执行多个训练阶段 - 首先在原始 FRC 数据集上,没有增强图像,然后在 8 倍增强和 4 倍增强的 FRC 数据集上多次交替进行,每次采取性能最佳的模型,并在下一个训练阶段进行微调。有关培训阶段的更多详细信息,请见协议文本第 3.3 节。最后,采用了逐步下降的学习政策,为学习率下降规定了固定时间(第一个培训阶段为28和35)。需要注意的一点是,虽然这一系列培训阶段在 FRC 范围内的测试中取得了最佳结果,但使用另一个数据集可能需要不同的序列才能产生最佳结果。
此基于 ResNet 的食品图像分割解决方案使用以下精度测量19进行评估:
在 P 精度方面 ,TP 是食品图像分割模型中真实正预测的数量 ,FP 是误报预测的数量 ,IoU 是"联盟"的交集,该等式与此方程计算:
重叠区域表示模型与地面真实性重叠的预测数量,而联盟区域表示模型的预测总数以及地面真实性,无论是像素级别还是每个食物类别。召回用作次要测量,使用以下公式19以类似方式计算:
其中R是召回和FN是由食品图像分割模型的虚假负面预测的数量。然后,在地面真相中,所有类别的精度和召回措施均为平均值。使用这些措施,我们的模型平均精度达到59.2%,平均召回82.1%,在食品识别挑战赛第二轮19中排名第二。这一结果比第一名落后4.2%,在平均精度测量方面领先第三名5.3%。表 1包含竞赛前 4 名参赛者的结果。
图1:NutriNet深度神经网络架构图。 这个数字已经发表在《梅兹盖克等人》上。 请点击这里查看此数字的较大版本。
图2:来自假食品图像数据集的图像。 原始图像(左)、手动标记的地面真相标签(中)和FCN-8s模型的预测(右)。这个数字已经发表在《梅兹盖克等人》上。 请点击这里查看此数字的较大版本。
团队名称 | 位置 | 平均精度 | 平均召回 |
斯费特 | 1 | 63.4% | 88.6% |
simon_mezgec | 2 | 59.2% | 82.1% |
阿里姆布尔 | 3 | 53.9% | 73.5% |
潜伏 | 4 | 48.7% | 71.1% |
表1:食品识别挑战赛第二轮的前4名成绩。 平均精度作为主要性能衡量标准,平均召回作为次要指标。比赛结果取自19日正式比赛排行榜。
补充文件。请点击这里下载此文件。
近年来,深度神经网络已多次被验证为识别食物图像10、11、12、21、23、25、26、29、31、33的合适解决方案。我们在这篇文章中提出的工作有助于进一步证明这一点1,2。单输出食品图像识别方法简单明了,可用于简单的应用,其中图像只有一个食品或饮料项目预计2。
食品图像分割方法似乎特别适合识别一般食品图像,而对食品数量没有任何限制。因为它通过对图像的每个像素进行分类来工作,它不仅能够识别图像中任意数量的食品,还可以指定食品物品的位置以及它有多大。然后,后者可用于执行食物重量估算,特别是如果用于参考对象或固定距离摄像头。
有关食物图像数据集3、22、27、30、36、37、38、39、40、41、42的可用性,我们已做一些工作,我们希望日后能做更多工作,特别是收集世界各地地区的食物图像数据集,以发展更有力的解决方案。目前,食品图像自动识别解决方案的精度尚未达到人体水平35,这在很大程度上是由于食品图像数据集的使用规模和质量不足。
今后,我们的目标将是进一步评估关于真实世界图像的已开发程序。一般来说,此字段中的数据集通常包含在受控环境中拍摄的图像或手动优化以进行识别的图像。这就是为什么收集一个大型和多样化的现实世界的食品图像数据集,以涵盖所有不同的食品和饮料项目,个人可能想要识别。实现这一点的第一步是由食品识别挑战赛提供的,其中包括一组真实世界的食品图像19,但还需要做进一步的工作来验证这种方法,从世界各地的食物图像和营养师合作。
作者没有什么可透露的。
作者要感谢澳大利亚纽卡斯尔大学的塔玛拉·布彻提供假食品图像数据集。这项工作得到了欧盟"地平线2020"研究与创新计划(赠款编号863059 -FNS-Cloud,769661-SAAM)的支持:和斯洛文尼亚研究机构(赠款编号P2-0098)。欧洲联盟和斯洛文尼亚研究机构在这篇文章的设计、分析或写作方面没有作用。
Name | Company | Catalog Number | Comments |
HARDWARE | |||
NVIDIA GPU | NVIDIA | N/A | An NVIDIA GPU is needed as some of the software frameworks below will not work otherwise. https://www.nvidia.com |
SOFTWARE | |||
Caffe | Berkeley AI Research | N/A | Caffe is a deep learning framework. https://caffe.berkeleyvision.org |
CLoDSA | Jónathan Heras | N/A | CLoDSA is a Python image augmentation library. https://github.com/joheras/CLoDSA |
Google API Client | N/A | Google API Client is a Python client library for Google's discovery-based APIs. https://github.com/googleapis/google-api-python-client | |
JavaScript Segment Annotator | Kota Yamaguchi | N/A | JavaScript Segment Annotator is a JavaScript image annotation tool. https://github.com/kyamagu/js-segment-annotator |
MMDetection | Multimedia Laboratory, CUHK | N/A | MMDetection is an object detection toolbox based on PyTorch. https://github.com/open-mmlab/mmdetection |
NVIDIA DIGITS | NVIDIA | N/A | NVIDIA DIGITS is a wrapper for Caffe that provides a graphical web interface. https://developer.nvidia.com/digits |
OpenCV | Intel | N/A | OpenCV is a library for computer vision. https://opencv.org |
Python | Python Software Foundation | N/A | Python is a programming language. https://www.python.org |
PyTorch | Facebook AI Research | N/A | PyTorch is a machine learning framework. https://pytorch.org |
Ubuntu OS | Canonical | N/A | Ubuntu 14.04 is the OS used by the authors and offers compatibility with all of the software frameworks and tools above. https://ubuntu.com |
请求许可使用此 JoVE 文章的文本或图形
请求许可This article has been published
Video Coming Soon
版权所属 © 2025 MyJoVE 公司版权所有,本公司不涉及任何医疗业务和医疗服务。