计算机视觉如何识别食物:AI 卡路里追踪背后的技术

了解卷积神经网络和图像分类如何驱动 AI 食物识别,使 Nutrola 等应用能够将一张简单的照片转化为精确的卡路里数据。

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

每当你将手机摄像头对准一盘食物并瞬间获得卡路里分析时,一系列复杂的人工智能处理过程正在幕后运行。看似简单的一次点击,实际上涉及卷积神经网络、多标签图像分类以及多年的计算机视觉研究。了解这项技术的工作原理有助于解释为什么 AI 驱动的卡路里追踪变得如此准确,以及为什么它还在持续改进。

本文将解析食物识别 AI 背后的核心技术,从神经网络的基本构建模块到识别你盘中食物的具体工程挑战。

什么是计算机视觉?它为何对营养追踪如此重要?

计算机视觉是人工智能的一个分支,它训练机器解读和理解来自现实世界的视觉信息。虽然人类可以毫不费力地区分一碗燕麦粥和一盘意面,但要教计算机做到同样的事情,需要处理数百万张标注图像并构建视觉模式的数学模型。

对于营养追踪来说,计算机视觉解决了饮食自我监测中最大的痛点:手动数据录入问题。发表在《美国营养与饮食学会杂志》上的研究表明,手动食物记录会导致卡路里摄入量少报 10% 至 45%。通过用一张照片替代手动输入,计算机视觉消除了导致大多数人在头两周内放弃食物追踪的阻力。

问题的规模

食物识别被认为是最困难的图像分类挑战之一,因为涉及的种类繁多:

  • 全球各地的菜系包含数千种不同的菜肴
  • 同一种食物根据烹饪方法的不同,外观可能截然不同
  • 光线、角度和摆盘都会影响外观
  • 多种食物经常共处一盘,需要同时识别
  • 份量大小是连续变化的,而非整齐的固定类别

尽管存在这些挑战,现代食物识别系统在标准基准测试中的 Top-5 准确率已超过 90%,这意味着正确的食物项目出现在系统前五个猜测中的概率超过十分之九。

卷积神经网络:食物识别的基础

几乎每个食物识别系统的核心都是一种称为卷积神经网络(CNN)的深度学习架构。理解 CNN 是了解你的手机如何看一张照片就能告诉你正在吃鸡肉提卡马萨拉配印度香米的关键。

CNN 如何处理图像

CNN 通过一系列层来处理图像,每一层都用于检测越来越复杂的视觉特征:

第 1 层 - 边缘检测: 第一个卷积层学习检测简单的边缘和颜色梯度。它可能识别出碗的弧形边缘或肉与酱汁之间的分界线。

第 2 层 - 纹理识别: 更深的层将边缘组合成纹理。网络开始区分糙米的颗粒纹理与白米的光滑表面,或烤鸡的纤维质感与炸鸡的光亮表面。

第 3 层 - 形状和模式识别: 更高层将纹理组装成可识别的形状和模式。具有特定纹理的圆形可能被分类为玉米饼,而具有不同纹理的长条形则变成面包棒。

第 4 层 - 物体识别: 最后的卷积层结合所有前面的信息来识别完整的食物项目。网络已经学会了特定的颜色、纹理、形状和上下文组合对应于特定的食物。

池化和特征图的作用

在卷积层之间,池化层减小数据的空间维度,同时保留最重要的特征。这有两个作用:使计算变得可控,并提供一定程度的平移不变性,这意味着网络可以识别食物项目,无论它出现在画面中的什么位置。

每个卷积层的输出称为特征图。早期的特征图捕获边缘和颜色等低级信息,而后期的特征图编码高级概念,如"该区域包含意大利面"。典型的食物识别模型在每一层生成数百个这样的特征图。

食物识别中常用的 CNN 架构

架构 年份 关键创新 在食物 AI 中的典型应用
AlexNet 2012 证明了深度 CNN 在大规模场景中的可行性 早期食物识别研究
VGGNet 2014 证明了深度的重要性 食物数据集的特征提取
GoogLeNet/Inception 2014 多尺度处理 高效的移动端食物识别
ResNet 2015 用于超深网络的残差连接 高精度食物分类
EfficientNet 2019 深度、宽度、分辨率的平衡缩放 现代移动端食物识别应用
Vision Transformers 2020 图像块的自注意力机制 最先进的食物识别研究

从分类到多标签检测

早期的食物识别系统将任务视为简单的分类问题:给定一张图像,预测一个食物标签。但真实的餐食很少这么简单。一顿典型的午餐可能包含主要蛋白质、配菜蔬菜、谷物和酱汁,全部在一个盘子里。

复杂餐盘的目标检测

现代食物识别系统使用目标检测框架,可以在单张图像中识别和定位多种食物项目。这些系统在每种不同的食物项目周围绘制边界框,并独立进行分类。

YOLO(You Only Look Once)和 Faster R-CNN 等架构已被改编用于食物检测。这些模型将图像分割成网格,同时预测食物项目的位置和类别,实现移动设备上的实时处理。

精确边界的语义分割

为了获得更高的精度,一些系统使用语义分割,将图像中的每个像素分类为属于特定的食物类别。这对于沙拉或炒菜等混合菜肴特别有用,因为不同的食材会重叠和混合在一起。

Nutrola 的 Snap & Track 功能结合使用了这些方法。当你拍摄你的餐食时,系统首先检测各个食物区域,然后对每个区域进行分类,最后估算每种食物的数量。这种多阶段流水线使系统能够处理从简单的香蕉到复杂的多道菜餐食的所有情况。

训练数据:精确食物识别的燃料

食物识别模型的好坏取决于其训练数据的质量。构建高质量的食物图像数据集是开发食物 AI 中最具挑战性和资源密集型的方面之一。

公开基准数据集

多个公开数据集推动了食物识别研究的进步:

  • Food-101: 包含 101 个食物类别中的 101,000 张图像,被广泛用作基准
  • ISIA Food-500: 涵盖 500 个食物类别中的 400,000 张图像,提供更广泛的覆盖
  • UEC Food-256: 一个包含 256 个类别的日本食物数据集,对亚洲菜系覆盖很重要
  • Nutrition5k: 将食物图像与实验室环境中的精确营养测量数据配对

现实世界多样性的挑战

公开数据集虽然对研究很有价值,但无法完全代表世界各地人们所吃食物的多样性。主要在西方菜系上训练的模型在处理东南亚菜肴时会遇到困难,反之亦然。这就是为什么生产级食物识别系统会用从用户群体收集的专有数据来补充公开数据集。

Nutrola 为超过 50 个国家的用户提供服务,这意味着系统每天都会遇到极其多样的菜系。这一全球用户群提供了源源不断的真实世界食物图像,帮助模型随着时间的推移提高对所有菜系的识别能力。

数据增强技术

为了人为扩展训练数据并提高模型的鲁棒性,工程师们应用了各种数据增强技术:

  • 旋转和翻转: 确保模型能从任何角度识别食物
  • 颜色抖动: 模拟不同的光线条件
  • 随机裁剪: 教模型识别食物的局部视图
  • Cutout 和 Mixup: 高级技术,迫使模型关注多个判别区域,而不是依赖单一的视觉线索

Nutrola 的 Snap & Track 技术如何运作

Nutrola 的 Snap & Track 功能将所有这些技术整合为无缝的用户体验。以下是从拍照到看到卡路里分析大约两秒钟内发生的事情:

  1. 图像预处理: 照片被调整大小并标准化为神经网络所需的格式。应用光线和颜色校正以标准化输入。

  2. 食物检测: 目标检测模型识别图像中不同的食物区域,并在每个区域周围绘制边界框。

  3. 分类: 每个检测到的区域通过分类网络传递,以识别具体的食物项目。系统考虑排名最靠前的候选项及其置信度分数。

  4. 份量估算: 另一个模型根据视觉线索和参考尺寸估算每种识别出的食物的体积和重量(更多内容请参阅我们关于份量估算的配套文章)。

  5. 营养查询: 识别出的食物和估算的份量与综合营养数据库进行匹配,以计算卡路里、宏量营养素和微量营养素。

  6. 用户验证: 结果呈现给用户,用户可以确认或纠正识别结果。这个反馈循环持续改进模型。

整个流水线在两秒内完成,比在搜索栏中输入"烤鸡胸肉"并在数十个结果中滚动查找要快得多。

食物识别 AI 面临的挑战

尽管取得了显著进展,食物识别 AI 仍然面临研究人员和工程师正在积极解决的几个挑战。

外观相似的食物

有些食物在照片中看起来几乎相同,但营养成分却大不相同。白米饭和花椰菜米饭、普通意面和全麦意面、全脂奶酪和低脂奶酪都是外观相似但在卡路里和宏量营养素上差异显著的例子。

目前的系统通过结合上下文线索(盘中还有什么其他食物)、用户历史(某人通常吃什么)以及在置信度较低时请求用户确认来处理这个问题。

混合和分层菜肴

墨西哥卷饼、三明治或分层砂锅菜带来了一个根本性问题:大部分食材都隐藏在视线之外。AI 可以看到玉米饼,但看不到里面的豆子、奶酪、酸奶油和米饭。

为了解决这个问题,模型学习常见菜肴的典型组成。当系统识别出一个墨西哥卷饼时,它可以根据可见的外观和常见的制作方法推断出可能的内部食材。然后用户可以根据需要调整具体的馅料。

光线和环境条件

昏暗的餐厅灯光、刺眼的闪光灯和带色调的环境光都会影响食物的外观。黄色灯光可以使白米饭看起来像藏红花米饭,而蓝色调灯光可以使红肉看起来像棕色。

现代系统通过训练数据增强以及构建颜色不变特征来解决这个问题,这些特征更注重纹理和形状,而非绝对颜色值。

食物识别技术的未来

食物识别 AI 正在快速发展。几个新兴趋势预示着在不久的将来会出现更强大的系统:

基于视频的识别: 未来的系统可能不再分析单张照片,而是分析一段餐食的短视频,捕捉多个角度以提高准确性。

增强现实叠加: AR 可以在你浏览自助餐或餐厅菜单时提供实时营养信息,帮助你在用餐前做出明智的选择。

多模态模型: 将视觉识别与文本(菜单、配料表)甚至音频(询问用户"你加了调味酱吗?")相结合,以更全面地理解餐食。

设备端处理: 随着移动处理器变得更加强大,更多的 AI 处理可以直接在手机上完成,无需将图像发送到服务器,从而提高速度和隐私保护。

食材级别识别: 超越菜肴级别的分类,识别单个食材及其大致数量,实现更精确的营养计算。

为什么准确性在不断提高

食物识别 AI 最令人鼓舞的方面之一是其内置的改进机制。每当用户拍摄照片并确认或纠正结果时,系统就会获得一个标注数据点。每天有数百万用户记录餐食,像 Nutrola 这样的生产系统积累训练数据的速度是学术研究无法匹敌的。

这创造了一个良性循环:更高的准确性带来更多的用户,更多的用户产生更多的数据,更多的数据实现更高的准确性。这就是为什么你今天体验到的食物识别比一年前的版本显著改善,而且它将继续进步。

常见问题

AI 食物识别与手动记录相比有多准确?

研究表明,AI 食物识别对常见食物的准确率可达 90% 以上,这与经过训练的营养师手动估算份量的准确率相当甚至更好。非专业人士的手动记录通常会少报 10% 至 45% 的卡路里摄入量,因此对于大多数人来说,AI 辅助记录更加可靠。

AI 食物识别能识别世界各地的菜系吗?

可以,不过准确性因可用训练数据的不同而因菜系而异。像 Nutrola 这样为 50 多个国家的用户提供服务的系统,随着从世界各地用户收集更多数据,会持续改进对多样化菜系的识别能力。一种菜系在训练数据中的代表性越高,识别的准确性就越好。

食物识别 AI 可以离线工作吗?

这取决于具体的实现方式。一些应用使用优化模型在设备上处理图像,这可以离线工作但可能牺牲一些准确性。其他应用将图像发送到云服务器进行处理,这需要互联网连接但可以使用更大、更准确的模型。许多现代应用使用混合方法,在设备上进行初始识别,并在网络可用时通过云处理来优化结果。

AI 如何处理与餐厅菜品不同的自制餐食?

现代食物识别系统同时在餐厅和自制食物图像上进行训练。它们识别单个组成成分,而不是试图将完整的菜肴与数据库条目进行匹配。因此,一份自制炒菜会被分解为其可见的组成部分(鸡肉、西兰花、米饭、酱汁),而不是与单一的菜单项目进行匹配。

我的食物照片数据是否保持私密?

隐私政策因应用而异。Nutrola 致力于保护用户隐私,仅将食物图像用于营养分析和模型改进。图像经过安全处理,不会与第三方共享。用户可以查阅隐私政策以了解有关数据处理做法的完整详情。

当 AI 识别食物出错时会怎样?

当 AI 错误识别食物时,用户可以通过从列表中选择正确的食物项目或输入正确的食物名称来纠正结果。这种纠正作为宝贵的训练数据,帮助模型随时间改进。系统收到某种特定食物的纠正越多,该食物的识别准确性提高得就越快。

准备好改变您的营养追踪方式了吗?

加入成千上万已通过 Nutrola 改变健康之旅的用户!