从研究实验室到手机:现代食品识别背后的计算机视觉
识别您午餐的人工智能起源于一篇研究论文。本文讲述了从学术计算机视觉突破到您口袋中的食品识别技术的旅程。
让您拍摄晚餐照片并立即查看其卡路里分解的技术,并非凭空而来。这是数十年学术研究、无数发表论文和计算机视觉与深度学习不断突破的结果。最初在大学实验室中作为一个小众研究问题的探索,如今已成为数百万人每天使用的功能。
本文将追溯食品识别人工智能的完整旅程,从基础计算机视觉研究的根源到您手机上运行的实时食品识别。在此过程中,我们将关注关键论文、基准数据集、持续挑战以及将实验室成果转化为可靠消费产品所需的工程技术。
改变一切的火花:ImageNet与深度学习革命
要理解今天的食品识别如何运作,您需要从一个与食品无关的比赛开始。
ImageNet大规模视觉识别挑战
2009年,斯坦福大学的李飞飞及其团队发布了ImageNet,一个包含超过1400万张图像、分为超过20,000个类别的数据集。相关的ImageNet大规模视觉识别挑战(ILSVRC)要求研究人员构建能够将图像分类为1,000个对象类别的系统,从飞机到斑马。几年来,最佳系统使用手工设计的特征和传统机器学习技术,达到前五名错误率约为25%到28%。
然后,2012年来了。
亚历克斯·克里兹赫夫斯基、伊利亚·苏茨克维尔和杰弗里·辛顿提交了一个名为AlexNet的深度卷积神经网络。它的前五名错误率为15.3%,比第二名高出10个百分点以上。这不是一次渐进的改进,而是一个范式转变,标志着深度学习作为计算机视觉主流方法的到来。
论文《使用深度卷积神经网络进行ImageNet分类》(Krizhevsky et al., 2012)是计算机科学中被引用最多的论文之一。它的影响远远超出了ImageNet挑战。计算机视觉各个子领域的研究人员,包括食品识别,立即开始探索如何将深度卷积神经网络应用于他们的特定问题。
为什么2012年的ImageNet对食品重要
在AlexNet出现之前,食品识别系统依赖于手工设计的特征:颜色直方图、局部二值模式(LBP)等纹理描述符,以及使用SIFT(尺度不变特征变换)等算法提取的形状特征。这些方法难以泛化。一个训练识别比萨饼的系统,如果遇到一个有陌生配料或特殊光照的比萨饼,就会失效。
深度卷积神经网络从根本上改变了这一局面。它们不再要求研究人员手动定义哪些视觉特征重要,而是直接从数据中学习判别特征。这意味着,只要有足够的训练图像,卷积神经网络就能在各种条件下识别食品,处理光照、角度、摆盘和准备方式的变化,这些变化会使手工设计的方法失效。
改进的级联:2013年至2020年
在AlexNet之后的几年中,出现了一系列快速的架构创新,每一次都推动了准确性的提升,使得部署变得更加实用:
| 年份 | 架构 | 关键贡献 | ImageNet前五名错误率 |
|---|---|---|---|
| 2012 | AlexNet | 证明了深度卷积神经网络的可扩展性 | 15.3% |
| 2014 | VGGNet | 显示深度(16-19层)提高了准确性 | 7.3% |
| 2014 | GoogLeNet(Inception) | 多尺度特征提取与高效计算 | 6.7% |
| 2015 | ResNet | 残差连接使152层网络成为可能 | 3.6% |
| 2017 | SENet | 通道注意机制 | 2.3% |
| 2019 | EfficientNet | 复合缩放实现最佳准确性/效率权衡 | 2.0% |
| 2020 | Vision Transformer(ViT) | 自注意力应用于图像块 | 1.8% |
这些架构迅速被食品识别研究人员采纳,作为食品特定模型的基础。
Food-101数据集:为研究人员提供共同基准
通用图像分类器在ImageNet上训练,可以区分比萨饼和汽车,但区分玛格丽特比萨饼和白比萨饼需要更精细的视觉辨别。食品识别研究社区需要自己的大规模数据集。
Bossard等人和Food-101的诞生
2014年,来自苏黎世联邦理工学院的卢卡斯·博萨德、马修·吉约曼和卢克·范·古尔在欧洲计算机视觉会议(ECCV)上发表了《Food-101 -- 使用随机森林挖掘判别成分》。他们介绍了Food-101数据集:101,000张图像,涵盖101个食品类别,每个类别1,000张图像。这些图像是从真实世界来源(Foodspotting,一个社交食品分享平台)收集的,而不是在受控实验室环境中收集的,意味着它们包含了真实食品照片的噪声、变化和不完美。
Food-101建立了一个共同的基准,使研究人员能够直接比较他们的方法。原始论文使用随机森林方法和手工设计的特征实现了50.76%的前一名准确率。在一年内,深度学习方法的准确率超过了70%。到2018年,基于Inception和ResNet等架构构建的模型在Food-101上的前一名准确率超过了90%。
其他重要的食品数据集
Food-101是最广泛使用的基准,但研究社区还产生了几个其他数据集,推动了该领域的发展:
UEC-Food100和UEC-Food256(2012, 2014): 由日本电气通信大学开发,这些数据集专注于日本料理,并引入了多食品检测的边界框注释。UEC-Food256扩展到256个类别,涵盖多种亚洲美食。
VIREO Food-172(2016): 由香港城市大学创建,该数据集包含172个中国食品类别及其成分注释,支持成分级别的识别研究。
Nutrition5k(2021): 由谷歌研究开发,该数据集将食品图像与通过热量测定获得的精确营养测量相匹配。Nutrition5k提供了5,006个真实餐盘和实验室验证的卡路里计数,为训练和评估份量估计系统提供了真实数据集。
Food2K(2021): 一个大规模基准,包含2,000个食品类别和超过一百万张图像,旨在推动食品识别达到通用物体识别的规模。
MAFood-121(2019): 专注于多属性食品识别,包括菜系类型和准备方法,反映了现实世界中需要理解食品不仅是什么,还包括如何准备的需求。
这些数据集的可用性至关重要。在机器学习中,训练数据的质量和规模往往比模型架构更为重要。每个新数据集扩展了模型可以学习的食品、菜系和视觉条件的范围。
为什么食品识别比“常规”物体检测更难
从事食品识别的研究人员很快发现,食品呈现出独特的挑战,这些挑战在一般物体检测中并不常见。理解这些挑战可以解释为什么一个能够可靠识别汽车、狗和建筑物的系统可能在识别一盘食物时遇到困难。
类内变异问题
金毛猎犬无论是坐着、奔跑还是睡觉,看起来都像金毛猎犬。但沙拉几乎可以看成任何东西。希腊沙拉、凯撒沙拉、沃尔多夫沙拉和羽衣甘蓝藜麦沙拉都属于“沙拉”这一标签类别,但在视觉上几乎没有共同点。这种类内变异在食品类别中极为明显,远远超过大多数物体识别任务中的情况。
相反,类间相似性也很高。一碗番茄汤和一碗红咖喱从上方看起来几乎相同。炒饭和米饭共享视觉特征。一根蛋白棒和一块布朗尼在照片中可能难以区分。食品类别之间的视觉边界通常模糊,而汽车和卡车之间的边界则没有这种模糊性。
食品的可变形特性
大多数计算机视觉系统训练识别的对象具有一致的几何结构。一把椅子有腿、座位和靠背。相比之下,食品是可变形的、无定形的,并且在视觉呈现上不可预测。一份土豆泥没有一致的形状。意大利面可以以无数种方式摆盘。即使是两个人制作的同一食谱,看起来也可能大相径庭。
这种可变形性意味着,基于形状的特征在刚性物体检测中非常有效,但对食品识别的贡献相对较小。模型必须更多地依赖颜色、纹理和上下文线索。
遮挡和混合菜肴
在典型的餐食照片中,食物相互重叠并遮挡。酱汁覆盖肉类。奶酪融化在蔬菜上。米饭位于炖菜下面。这些遮挡模式不仅常见,而且是常态。食品识别系统必须在部分可见性方面表现出强大的鲁棒性,这与检测街景中的行人等任务相比,要求更高。
混合菜肴则呈现出更大的挑战。一份卷饼将其配料包裹在玉米饼内,使其不可见。一杯冰沙将水果和其他成分混合成均匀的液体。一份砂锅菜将多种成分结合成一个视觉整体。对于这些食物,识别必须依赖整体外观和学习到的关联,而不是识别单个成分。
光照和环境变化
食品照片在极为多变的条件下拍摄。餐厅的光线从明亮的荧光灯到昏暗的烛光不等。家庭厨房的色温不一致。闪光摄影改变了食品的显色。阳光明媚的户外拍摄的照片与在昏暗办公室拍摄的照片看起来完全不同。这种成像条件的变化会显著影响基于颜色的特征,而颜色是食品识别中最强的线索之一,因此造成了相当大的挑战。
份量估计问题:研究变得真正困难的地方
识别盘子上的食物仅仅是问题的一半。为了对营养跟踪有用,系统还必须估计每种食物的数量。这就是份量估计问题,它仍然是食品计算研究中最活跃和最具挑战性的领域之一。
为什么份量估计根本上是困难的
一张二维照片丢失了深度信息。如果不知道相机与盘子之间的距离、盘子的大小或食物堆的高度,仅凭像素测量无法恢复食物的真实物理体积。这不是当前人工智能的局限,而是投影几何的数学现实。一个靠近相机的小碗和一个远离相机的大碗会产生相同的图像。
研究人员探索了几种方法来规避这一限制:
参考物体方法: 一些系统要求用户在画面中包含一个已知的参考物体(如硬币、信用卡、特定的盘子)。通过测量已知物体的像素尺寸与其真实世界大小的比例,系统可以估计比例。普渡大学开发的TADA(三维自动饮食评估)系统使用了一个标记物(棋盘图案)来实现这一目的。虽然准确,但这种方法增加了摩擦,使其在日常消费者使用中不够实用。
单目图像的深度估计: 神经网络可以通过利用对典型场景的学习先验,从单张图像中估计深度图。匹兹堡大学和乔治亚理工学院的研究小组将单目深度估计应用于食品图像,在受控条件下实现了与真实值相差15%到25%的体积估计。
多视角重建: 一些研究系统要求用户从多个角度拍摄食物,以实现三维重建。虽然更准确,但这同样增加了摩擦。Fang等人(2019)的研究表明,即使是两个视角也能显著提高体积估计的准确性。
学习的份量先验: 一些系统不再试图恢复确切的物理体积,而是学习每种食品类别的典型份量大小的统计分布。如果系统知道煮熟的白米的中位数份量约为158克,它可以结合视觉线索和相对大小来产生合理的估计。
关键的份量估计论文
几篇论文推动了份量估计的最新进展:
- Meyers等人(2015)《Im2Calories:朝着自动化移动视觉食品日记的方向》,来自谷歌研究,提出使用卷积神经网络直接从食品图像估计卡路里含量,绕过明确的体积估计。
- Fang等人(2019)《基于学习的能量分布图的端到端图像自动食品能量估计技术》,引入了预测每像素卡路里密度的能量分布图。
- Thames等人(2021)《Nutrition5k:朝着自动化理解通用食品的方向》,提供了第一个具有热量测定验证的营养真实值的大规模数据集,使得对份量估计系统的更严格评估成为可能。
- Lu等人(2020)证明,将食品分割与深度估计结合可以使常见食品类别的份量估计平均绝对误差低于20%。
研究准确性与实际表现之间的差距
食品识别人工智能中一个最重要且最少讨论的话题是基准表现与实际表现之间的差距。理解这一差距对于设定关于食品识别技术能做什么和不能做什么的现实期望至关重要。
基准条件与现实
研究论文通常报告在与训练数据相同分布的策划测试集上的准确性。Food-101的93%准确率听起来令人印象深刻,但这意味着模型是在与其训练图像相同来源和相似条件下的图像上进行测试。当在现实世界中部署时,准确率因多种原因下降:
分布转移: 用户拍摄的照片与训练数据中所代表的相机、光线、角度和构图不同。一个主要在食品博客上训练的模型在用户在昏暗餐厅用手机闪光灯拍摄倾斜照片时表现不佳。
长尾食品: 基准数据集覆盖的类别有限。Food-101有101个类别;Food2K有2,000个。但真正的全球食品识别系统必须处理成千上万的菜肴。对于稀有或文化特定的食品,性能通常低于报告的平均水平。
复合餐: 大多数基准评估单一食品分类。真实的餐食通常包含多种食物在同一盘子上,这需要同时进行检测、分割和分类。多食品的准确性通常低于单一食品的准确性。
份量估计误差叠加: 即使是小的食品识别错误在与份量估计结合时也会叠加。如果系统将藜麦误认为是库斯库斯(视觉上可能混淆),则它将错误的营养密度应用于其体积估计,导致在宏观营养成分分解和卡路里计数上都出现错误。
量化差距
已发布的研究表明以下大致性能范围:
| 任务 | 基准准确率 | 现实世界准确率 |
|---|---|---|
| 单一食品分类(前一名) | 88-93% | 70-82% |
| 单一食品分类(前五名) | 96-99% | 88-94% |
| 多食品检测每项 | 75-85% | 60-75% |
| 份量估计(与真实值相差20%以内) | 65-75% | 45-60% |
| 端到端卡路里估计(与真实值相差20%以内) | 55-65% | 35-50% |
这些数字突显了一个重要的真相:食品识别人工智能表现良好且在不断进步,但仍不能替代仔细的测量。它是一种工具,显著减少了摩擦,同时接受已知的误差范围。
关键突破的时间线
以下时间线总结了从通用计算机视觉研究到您手机中食品识别技术的主要里程碑:
2009年 -- 发布ImageNet数据集。 李飞飞及其团队在斯坦福大学发布ImageNet数据集,为深度学习革命提供了大规模基准。
2012年 -- AlexNet赢得ILSVRC。 克里兹赫夫斯基、苏茨克维尔和辛顿展示了深度卷积神经网络在图像分类中显著超越传统方法。深度学习时代开始。
2012年 -- 发布UEC-Food100。 第一个大型食品图像数据集之一,专注于日本料理,确立了食品识别作为一个独特的研究问题。
2014年 -- 发布Food-101数据集。 博萨德等人在苏黎世联邦理工学院发布了将成为食品识别研究标准评估数据集的基准。
2014年 -- GoogLeNet和VGGNet。 两个影响力架构展示了更深和更复杂的网络设计显著提高分类准确性。两者迅速被食品识别研究人员采纳。
2015年 -- 引入ResNet。 微软研究院的何恺明等人引入残差连接,使得100层以上的网络成为可能。ResNet在接下来的几年中成为食品识别系统中使用最广泛的基础。
2015年 -- 发布Im2Calories论文。 谷歌研究展示了从食品图像中进行端到端卡路里估计,确立了直接图像到营养管道作为可行的研究方向。
2016年 -- 实时物体检测成熟。 YOLO(Redmon等,2016)和SSD(刘等,2016)实现了实时多物体检测,使得在不到一秒的时间内检测盘子上的多种食物成为可能。
2017年 -- 迁移学习成为标准实践。 研究社区趋向于一种共同的方法论:在ImageNet上预训练,然后在食品数据集上微调。这种方法使Food-101的准确率超过88%。
2019年 -- 发布EfficientNet。 谷歌的Tan和Le引入复合缩放,产生了比前代模型更准确且更高效的模型。这使得在移动硬件上无需云推理即可实现高准确度的食品识别成为可能。
2020年 -- 发布Vision Transformers(ViT)。 谷歌的Dosovitskiy等人展示了最初为自然语言处理开发的变换器架构可以在图像分类中匹敌或超越卷积神经网络。这为食品识别研究开辟了新的途径。
2021年 -- 发布Nutrition5k数据集。 谷歌研究发布了一个具有热量测定验证的营养真实值的数据集,为评估端到端营养估计提供了第一个严格的基准。
2022-2024年 -- 基础模型出现。 大型预训练的视觉-语言模型如CLIP(Radford等,2021)及后续模型使得零样本和少样本食品识别成为可能,使系统能够识别从未明确训练过的食品类别。
2025-2026年 -- 设备端推理成为标准。 模型压缩、量化和移动神经处理单元(NPU)的进步使得食品识别模型能够完全在设备上运行,消除了与云处理相关的延迟和隐私问题。
Nutrola如何弥合研究与实践之间的差距
上述学术研究是必要的,但不足以构建一个在真实条件下可靠工作的食品识别系统。从发表论文时在Food-101上获得93%准确率到推出一个用户信任的日常营养跟踪产品之间的差距是巨大的。这就是工程、数据策略和以用户为中心的设计变得与模型架构同样重要的地方。
在真实用户数据分布上训练
学术数据集通常来自食品博客、社交媒体和受控摄影会。真实用户照片则更为杂乱:部分吃掉的餐食、杂乱的背景、光线不足、角度不一、多个盘子在画面中。Nutrola在反映实际使用模式的数据分布上训练其模型,包括用户实际拍摄的那些不完美的真实世界图像。这缩小了分布转移的显著部分。
持续学习和反馈循环
一次性训练并部署的静态模型会随着用户行为和食品趋势的变化而退化。Nutrola实施了持续学习管道,结合用户的纠正和反馈。当用户纠正错误识别时,该信号会被聚合(并保护隐私),用于提高模型在特定食品和错误最常见条件下的表现。
结合多种信号
Nutrola并不单纯依赖视觉分类,而是结合基于图像的识别与上下文信号来提高准确性。时间、地理区域、近期餐食历史和用户偏好等都作为先验,帮助区分视觉上相似的食品。一碗在北美早餐时拍摄的红色液体更可能是番茄汁而非冷汤,系统可以利用这种上下文做出更好的预测。
诚实的信心沟通
最重要的设计决策之一是如何传达不确定性。当模型信心较高时,Nutrola直接呈现其识别结果。当信心较低时,系统会提供多个选项并要求用户确认。这种互动模式尊重了技术的固有局限,同时仍然比手动记录减少了摩擦。系统并不假装完美,而是在需要帮助时保持透明。
优化营养准确性,而不仅仅是分类准确性
学术基准测量的是分类准确性:模型是否正确识别了食品?但对于营养跟踪而言,相关指标是营养准确性:估计的卡路里和宏观营养成分含量与真实值的接近程度。Nutrola优化这一下游指标。视觉上相似但营养成分相似的食品(如白米与茉莉香米)之间的混淆远不如视觉上相似但营养成分差异很大的食品(如普通松饼与蛋白质松饼)之间的混淆重要。系统被调优以最小化对营养估计影响最大的错误。
研究前沿:接下来会发生什么
食品识别研究仍在不断进步。几个活跃的研究方向有潜力进一步缩小实验室准确性与现实世界表现之间的差距:
成分级别识别: 超越菜肴级别分类,识别菜肴中的单个成分。这使得对复合食品的营养估计更为准确,并支持饮食限制检查(例如过敏原检测)。
从单张图像重建三维食品: 神经辐射场(NeRF)和单目三维重建的进展表明,未来将能够从单张照片重建出相对准确的餐食三维模型,从而显著改善份量估计。
个性化食品模型: 训练适应个别用户典型餐食、偏好餐厅和烹饪风格的模型。一个知道您每周工作日吃同样早餐的模型可以通过个性化实现近乎完美的准确性。
多模态推理: 将视觉识别与文本(菜单描述、食谱名称)和音频(餐食描述的语音)结合,构建更强大的食品理解系统。
食品的联邦学习: 在许多用户的设备上训练食品识别模型,而不集中处理原始数据,保护隐私的同时仍然从多样化的真实世界训练数据中受益。
常见问题解答
今天的AI食品识别与人类营养师相比有多准确?
对于在良好条件下拍摄的常见食品,AI食品识别的速度与人类营养师相当,且识别准确性相当。注册营养师通常可以以85%到95%的准确率从照片中识别食品。当前的AI系统在表现良好的食品类别中达到了类似的准确率。然而,营养师在稀有或模糊食品、文化特定菜肴和份量估计方面仍然优于AI。AI的实际优势在于速度和可用性:它提供了24/7的即时估计,而营养师的咨询则有限且费用高昂。
什么是Food-101数据集,为什么它重要?
Food-101是一个包含101,000张图像、涵盖101个食品类别的基准数据集,由苏黎世联邦理工学院的研究人员于2014年发布。它的重要性在于提供了第一个广泛采用的食品识别模型评估标准。在Food-101之前,研究人员在私有或小规模数据集上测试他们的系统,使得结果无法比较。Food-101使得可重复的研究成为可能,并推动了食品分类准确性的快速进步,从2014年的约50%提升至2020年的93%以上。
为什么食品比其他物体更难识别?
食品呈现出几种在一般物体识别中罕见的挑战:同一食品类别内的极端视觉变异(想想所有称为“沙拉”的东西)、不同食品类别之间的高视觉相似性(番茄汤与红咖喱)、可变形和无定形的形状、因酱汁和配料而频繁遮挡,以及跨文化的准备方式广泛变化。此外,食品不仅需要被识别,还需要量化(份量估计),这为大多数物体识别任务增加了一个维度。
迁移学习如何帮助食品识别?
迁移学习涉及将一个在大型通用数据集(通常是ImageNet)上预训练的神经网络进行微调,以适应较小的食品特定数据集。这是有效的,因为从ImageNet学习到的低级视觉特征(边缘、纹理、颜色、形状)是广泛有用的,并且能够很好地迁移到食品图像上。只有更高层次的、食品特定的特征需要从头开始学习。迁移学习显著减少了对食品特定训练数据的需求,通常提高了10%到20%的准确率,相比从头开始训练。
AI能否从单张照片估计份量大小?
AI可以从单张照片估计份量大小,但存在一定的不确定性。没有深度信息,二维照片无法精确确定食品的体积。现代系统结合了学习的份量先验(典型份量大小的统计知识)、相对大小线索(将食物与盘子或其他物体进行比较)和单目深度估计,产生的估计通常在真实份量的15%到30%以内。这对于日常跟踪来说足够准确,但对于临床饮食评估来说则不够精确。
食品分类和食品检测有什么区别?
食品分类为整个图像分配一个标签(这张图像包含比萨饼)。食品检测识别并定位图像中的多个食品项,为每个项目绘制边界框并独立分类(这张图像左上角有比萨饼,右下角有沙拉,上方有面包棒)。检测是一项更困难的任务,但对于真实的餐食照片是必要的,因为这些照片几乎总是包含多种食品项。
Nutrola如何利用这些研究?
Nutrola建立在本文所述的全面学术食品识别研究基础上,结合了最先进的架构,在多样化的真实世界数据上进行训练,并优化营养准确性而不仅仅是分类准确性。该系统结合了视觉识别与上下文信号和用户反馈,以提供超越任何单一研究论文在孤立状态下所能达到的准确性。Nutrola还通过发布关于真实世界食品识别性能和在大规模部署中面临的挑战的发现,回馈研究社区。
食品识别AI是否会达到100%准确?
完美准确性不太可能实现,原因有几个。一些食品在视觉上确实难以区分(例如白糖和盐)。从二维图像进行份量估计存在根本性的数学限制。全球菜肴的多样性意味着总会有长尾食品,训练数据有限。然而,相关的问题不是技术是否完美,而是它是否有用。在当前的准确性水平下,AI食品识别已经将食品记录的摩擦减少了70%到80%,并且随着每一代模型和训练数据的进步,准确性仍在不断提高。
结论
您手机中的食品识别人工智能是一个跨越十多年研究旅程的成果。它始于2012年ImageNet挑战中的图像分类突破,通过Food-101等食品特定数据集获得关注,面对食品作为视觉领域的独特挑战,并逐渐弥合学术基准与现实表现之间的差距。
这段旅程远未结束。份量估计仍然是一个开放的研究问题。长尾食品类别需要更好的覆盖。现实世界的准确性仍然明显低于基准准确性。但轨迹是明确的:每年都带来更好的模型、更丰富的训练数据和更复杂的解决方案来应对这些困难问题。
Nutrola存在于这项研究与人们试图理解他们饮食之间的交汇点。通过紧跟学术研究的前沿,同时保持对现实表现的持续关注,我们致力于让轻松、准确的营养跟踪承诺成为每个人的现实。