Nutrola食品识别技术背后的研究
Nutrola如何在三秒内通过照片识别食物?深入探讨支撑我们人工智能的计算机视觉、深度学习和营养科学研究。
当你拍下晚餐的照片,Nutrola在三秒内返回完整的营养成分分析时,背后是数十年计算机视觉研究、营养科学和人工智能工程的成果。看似瞬间的识别过程,实际上是多个专门模型的协同工作,每个模型解决一个特定的科学问题。从相机快门按下的那一刻起,到宏量营养素值在屏幕上显示,图像经过了一个基于斯坦福大学、麻省理工学院、谷歌DeepMind和苏黎世联邦理工学院计算机视觉实验室等机构的基础研究构建的处理流程。
本文将逐步追溯这一流程,引用使Nutrola食品识别成为可能的真实研究和技术概念。
计算机视觉处理流程
Nutrola的食品识别并不是一个单一的模型,而是一个多阶段的处理流程,每个阶段处理一个独立的任务,前一个阶段的输出作为下一个阶段的输入。
第一阶段——图像预处理。 在任何神经网络看到你的照片之前,原始图像会经历标准化处理。这包括调整为标准输入分辨率、白平衡和曝光变化的调整,以及在训练过程中应用数据增强变换。Krizhevsky、Sutskever和Hinton在他们2012年发表的《ImageNet》论文中证明,预处理和增强显著提高了深度卷积神经网络(CNN)的泛化能力。现代流程还扩展了CutMix(Yun等,2019)和RandAugment(Cubuk等,2020)等技术,教会模型对食物摄影中常见的遮挡和颜色变化具有鲁棒性。
第二阶段——食物检测与分割。 一旦预处理完成,图像将通过一个物体检测模型,该模型识别并定位盘子上的每个独立食物项。此阶段大量依赖于区域卷积神经网络的研究。Faster R-CNN(Ren等,2015)建立了区域提议网络的范式,而Facebook AI Research的DETR(Carion等,2020)等更近期的架构则使用基于变换器的注意力机制,完全消除了手动设计的组件,如锚框。为了实现像素级的精确度,基于DeepLab(Chen等,2017)等架构的语义分割模型将图像中的每个像素分配给一个食物类别,这在成分重叠的混合菜肴中至关重要。
第三阶段——食物分类。 每个检测到的食物区域随后被分类。现代食物分类器的基础源自于在ImageNet(Deng等,2009)上验证的架构,该数据集包含1400万张标记图像,催生了深度学习的革命。像Food-101(Bossard等,2014)这样的食物特定数据集,包含101个类别的101,000张图像,以及UECFOOD-256(Kawano和Yanai,2015),涵盖256个以日本料理为主的食物类别,提供了对这些通用架构进行微调所需的领域特定训练数据。
第四阶段——份量估算。 在识别出盘子上的食物后,系统会估算每种食物的份量。这是食品识别研究中最难解决的问题,涉及从单张2D图像中进行深度估算和体积推理。
第五阶段——营养映射。 最后,将分类的食物项及其估算的份量映射到经过验证的营养数据库,以生成卡路里、蛋白质、碳水化合物、脂肪和微量营养素的数值。
每个阶段都代表了一个活跃的研究领域。以下部分将详细探讨最具技术挑战性的阶段。
食物分类:超越“那是一份沙拉”
对于任何现代分类器来说,区分沙拉和牛排是简单的。然而,当系统必须区分视觉上相似的菜肴时,真正的挑战才开始:鸡肉咖喱与黄油鸡、泰式炒河与醉面条,或希腊沙拉与法图什。这些菜肴共享颜色、纹理和结构模式,但在成分和卡路里密度上却有显著差异。
迁移学习与领域适应
食物分类的标准方法依赖于迁移学习,这是一种由Yosinski等(2014)正式化的技术,其中一个在像ImageNet这样的大型通用数据集上预训练的模型会在食物特定数据上进行微调。网络的低层能够很好地跨领域转移,检测边缘、纹理和基本形状。而高层则重新训练以学习食物特定特征,如油炸表面的光泽与蒸制表面的哑光之间的区别。
Hassannejad等(2016)的研究表明,在Food-101上微调InceptionV3达到了88.28%的顶级准确率,相较于早期手工特征方法有了显著提升。最近,使用视觉变换器(Dosovitskiy等,2020)及其食物特定变体的研究将Food-101上的准确率提升至93%以上。
复杂盘子的多标签分类
真实的餐食很少只包含单一项。一个典型的晚餐盘可能包含烤三文鱼、烤芦笋、藜麦和柠檬黄油酱。多标签分类允许单张图像接收多个独立标签,从而解决了这个问题。Wang等(2016)关于多标签图像分类的CNN-RNN架构的研究建立了捕捉标签共现模式的框架。在食物领域,这意味着模型学习到米饭和咖喱经常一起出现,这作为上下文信号提高了单个食物项的准确性。
Nutrola在此基础上扩展了一个分层分类系统。系统首先对广泛的食物类别(谷物、蛋白质、蔬菜、酱料)进行分类,然后再缩小到该类别内的具体项。这种两阶段的方法减少了不同类别之间视觉上相似项的混淆,并反映了营养数据库的组织方式。
份量估算:三维挑战
识别盘子上的食物仅解决了一半的问题。100克的鸡胸肉含有165卡路里,而250克的鸡胸肉则含有412卡路里。如果没有准确的份量估算,即使完美的食物识别也会导致不可靠的卡路里计算。
单目深度估算
从单张2D照片中估算食物的体积需要系统推断深度,这被称为单目深度估算。Eigen、Puhrsch和Fergus(2014)发表了基础性研究,证明CNN可以从单张图像预测像素级深度图。Ranftl等(2021)的最新研究推出了MiDaS,一个在混合数据集上训练的模型,能够在多种场景中产生稳健的相对深度估算。
对于食物应用,深度估算使系统能够区分薄薄一层酱料涂抹在盘子上与深碗汤之间的区别。结合已知的常见参考物体(如盘子、碗和餐具)的几何形状,深度图可以转换为近似体积估算。
体积估算的几何方法
东京大学的研究(Okamoto和Yanai,2016)表明,可以通过将几何原型(如圆柱体、半球体和长方体)拟合到分割的食物区域来估算食物体积。一堆米饭近似为半椭球体,一杯牛奶近似为圆柱体,一片面包近似为长方体。
这些几何近似结合学习到的密度先验(系统知道给定体积的土豆泥比同体积的爆米花重),产生的重量估算研究表明,对于大多数常见食物,其误差在15%到20%之间。Nutrola进一步通过一种专有的集成方法来精细化这些估算,该方法结合了几何推理和在数万张已知重量的食物图像上训练的回归模型。
参考物体校准
一些食物识别系统使用场景中的已知参考物体进行尺度校准。标准的晚餐盘直径约为26厘米,信用卡的尺寸为85.6 x 53.98毫米。当系统检测到这些物体时,可以建立一个现实世界的尺度,从而显著提高体积和重量的估算。普渡大学的Fang等(2016)研究表明,基于盘子的校准将份量估算误差降低了约25%,相比于未校准的方法。
验证数据库层
仅靠AI识别不足以提供准确的卡路里计数。即使模型在识别烤鸡胸肉方面达到99%的准确率,最终的营养输出完全依赖于其映射的数据库质量。
这就是Nutrola的方法与许多竞争对手的不同之处。大多数食品追踪应用依赖于众包数据库,任何用户都可以提交营养信息。研究发现,众包食品数据库的错误率在15%到30%之间,有些条目与实验室验证的值相差超过50%。
Nutrola维护一个100%经过验证的营养数据库。每个条目都与包括USDA FoodData Central、英国国家健康服务使用的McCance和Widdowson成分表以及同行评审的营养分析等权威来源进行交叉验证。这意味着,即使AI识别层在食物识别或份量估算中引入了小的误差,其映射的营养数据也是可靠的。
验证层还处理了纯AI方法所忽视的一个细节:准备方法会影响营养成分。150克的烤鸡胸肉大约含有165卡路里,但同样的鸡胸肉用橄榄油煎炸后大约含有230卡路里。Nutrola的数据库捕捉这些依赖于准备方法的变化,而识别模型在视觉线索存在时(如烤制表面与油炸表面之间的区别)被训练以区分烹饪方法。
持续学习与改进
食品识别并不是一个一劳永逸的问题。菜系不断演变,新菜肴层出不穷,用户期望也在不断提高。Nutrola的系统设计为通过多种基于机器学习研究的机制进行持续改进。
主动学习
主动学习由Settles(2009)正式化,是一种策略,模型识别出其信心最低的示例,并优先考虑这些示例进行人工审核和标记。当Nutrola的系统遇到无法高信心分类的菜肴时,该图像会被标记以供专家审核。一旦标记完成,它将进入训练流程,模型在其最薄弱的地方得到提升。
这种方法比随机收集更多训练图像更具数据效率。研究一致表明,主动学习可以在比随机抽样少30%到60%的标记数据的情况下实现相同的模型准确性。
处理新食物和地方菜系
食品识别中最显著的挑战之一是覆盖地方和文化特定的菜肴。一个主要在西方菜系上训练的模型可能会在东南亚甜点、西非炖菜或斯堪的纳维亚发酵食品上遇到困难。Nutrola通过针对性的数据收集活动,专注于代表性不足的菜系,结合少样本学习技术(Wang等,2020),使模型能够从相对少量的示例中学习新的食物类别。
用户反馈是这一过程的重要输入。当用户纠正错误识别的食物时,该纠正信息会反馈到训练流程中。通过全球数百万餐食的记录,这些纠正信息形成了一条持续的真实数据流,涵盖了人们日常生活中实际食用的食物。
这如何转化为你的餐盘
上述研究带来了具体的好处,每次你打开Nutrola时都能体验到。
三秒记录。 从图像预处理到营养查找的整个流程,在现代智能手机上执行时间不到三秒。模型优化技术,包括量化(Jacob等,2018)和神经架构搜索(Zoph和Le,2017),使复杂模型能够在移动硬件上高效运行,而不牺牲准确性。
复杂餐食处理。 多标签检测和语义分割意味着你不需要单独拍摄每个食物项。一张装满食物的晚餐盘照片就能为每个成分生成单独的营养分析。
跨菜系准确性。 持续学习和针对性的数据收集确保系统在你吃寿司时、在墨西哥城吃玉米饼时、在亚的斯亚贝巴吃因杰拉时,或在伦敦享用周日烤肉时都能正常工作。模型在Nutrola全球用户基础上每次记录的餐食中不断改进。
逐步提高准确性。 你使用Nutrola的次数越多,它就越聪明,无论是对你个人还是对所有用户。主动学习确保模型在最需要的地方进行改进。
经过验证的营养数据。 与依赖于众包数据库且错误率未知的应用不同,Nutrola返回的每个卡路里计数都得到实验室验证的营养数据支持。AI识别食物;经过验证的数据库确保数据的准确性。
常见问题解答
Nutrola的AI如何通过照片识别食物?
Nutrola使用多阶段计算机视觉处理流程。你的照片首先经过图像预处理,然后通过深度学习检测模型识别和分割盘子上的每个食物项。每个食物项使用在食物特定数据集上微调的卷积神经网络进行分类,份量通过深度和体积推理进行估算,结果映射到Nutrola的经过验证的营养数据库,以生成卡路里和宏量营养素值。
Nutrola的食品识别技术有多准确?
Nutrola的分类模型在标准食品识别基准上实现了超过90%的顶级准确率,前五名准确率超过95%。在份量估算方面,系统通常在实际重量的15%到20%之内,这与训练有素的营养师的估算准确性相当或更好。结合Nutrola的经过验证的数据库,这产生的卡路里估算显著比手动记录更可靠,研究表明手动记录通常低报摄入量10%到45%。
Nutrola的食品识别AI背后有哪些研究和数据集?
Nutrola的技术建立在基础的计算机视觉研究之上,包括在ImageNet上验证的卷积神经网络、如Faster R-CNN和DETR的物体检测架构,以及Food-101和UECFOOD-256等食物特定数据集。该系统还借鉴了单目深度估算研究用于份量测量和主动学习研究用于模型的持续改进。所有营养数据都与USDA FoodData Central等权威来源进行验证。
Nutrola能否识别单个盘子上的多种食物?
可以。Nutrola使用多标签检测和语义分割来识别并单独分析单张照片中的每个独立食物项。无论你的盘子包含两种食物还是八种食物,系统都能隔离每一项,独立分类,估算份量,并返回每项的营养分析以及整体餐食的总计。
Nutrola如何处理来自不同菜系和文化的食物?
Nutrola结合广泛覆盖的训练数据与针对性的数据收集,专注于代表性不足的菜系,并使用少样本学习技术,使模型能够从相对少量的示例中学习新的食物类别。来自Nutrola全球用户基础的用户纠正反馈不断反馈到训练流程中,确保准确性在各个地区和饮食文化中提高。
Nutrola的食品识别会随着时间改进吗?
会的。Nutrola使用主动学习,这是一种机器学习策略,系统识别出其信心最低的图像,并优先考虑这些图像进行专家审核和再训练。结合来自全球数百万餐食记录的用户反馈,这意味着模型会不断改进。每次你记录的餐食都为Nutrola的识别准确性做出贡献。