1. 项目背景与核心问题:为什么我们需要一个“多感官”的食物数据集?
在计算机视觉和人工智能领域,食物识别已经不是一个新鲜话题。从早期的简单分类(“这是苹果还是香蕉?”)到后来的成分分析、卡路里估算,技术一直在进步。然而,作为一个长期关注AI应用落地的从业者,我越来越感觉到,当前绝大多数食物AI研究都“卡”在了一个瓶颈上:它们只解决了“看”的问题,却忽略了食物作为人类体验的核心——它是一种多感官的综合体验。
想想我们日常点外卖或者看美食博主的视频,仅仅知道“这是一盘宫保鸡丁”是远远不够的。我们真正关心的是:它尝起来是甜的还是辣的?口感是酥脆的还是软糯的?闻起来香不香?甚至,它吃起来会不会很油腻?这些关于味道、口感、气味和质地的感知,才是驱动我们做出饮食决策的关键。然而,现有的主流数据集,如Food-101、UEC-FOOD100,甚至更大规模的ImageNet,都只提供了视觉图像和类别标签。这就像只给了你一本没有味道、没有声音、没有触感的彩色画册,却指望你学会烹饪和品鉴。
这就是FoodSense项目试图解决的根本问题。它不再满足于做一个“更准的分类器”,而是旨在构建一个连接视觉与多感官属性的桥梁。其核心假设是:食物的外观与其内在的感官特性(味觉、嗅觉、触觉)之间存在深刻的、可学习的关联。通过大规模收集食物图像与人类对这些图像所代表食物的多维度感官评分,我们可以训练模型去“看见”味道,“预测”口感。这不仅仅是学术上的趣味,其应用场景极为广阔:智能餐饮推荐可以根据你的口味偏好(喜欢辣、讨厌油腻)推荐图片中的菜品;食品工业研发可以通过分析产品外观预测其可能被感知的口感,加速新品测试;健康管理应用可以更细致地评估食物的“感官健康度”(如油腻程度、甜度),而不仅仅是宏观的营养成分。
网络上关于“数据集”的搜索热度居高不下,从COCO、MNIST到训练自己的YOLO数据集,这反映了整个行业对高质量、任务特异性数据的渴求。FoodSense正是在这个背景下,针对“食物多感官预测”这一空白领域,提出的一套系统性解决方案——不仅提供了数据,更定义了一个评价模型能力的基准。
2. FoodSense数据集构建揭秘:从“一张图”到“一份感官报告”
构建FoodSense这样的数据集,其复杂度和工作量远超普通的图像分类数据集。它不是一个简单的“爬虫抓图+人工打标”的过程,而是一个涉及认知科学、实验心理学和数据科学的系统工程。下面,我将结合常见的数据集构建经验,拆解FoodSense可能的核心构建环节。
2.1 感官维度定义与评分量表设计
这是所有工作的基石。首先,需要确定预测哪些感官属性。这不能凭空想象,必须基于饮食心理学和食品科学的研究。通常,这些属性可以分为几个大类:
- 味觉:甜、咸、酸、苦、鲜(Umami),以及复合味型如辣(实质是痛觉)、麻等。
- 口感/质地:酥脆、软糯、筋道、顺滑、油腻、干燥、多汁等。
- 嗅觉:香、腥、膻、焦香、果香等。
- 整体感知:开胃程度、预估的热量/健康程度。
确定了维度后,需要为每个维度设计可靠的评分量表。直接问“有多甜?”是模糊的。通常采用李克特量表(例如1-7分,1代表“完全不甜”,7代表“极其甜”)或视觉模拟量表。更专业的方法可能会引入参照物校准,例如在评价“脆度”时,提供薯片(高脆度参照)和面包(低脆度参照)的图片或描述,帮助标注者统一标准。
注意:标注指南的撰写至关重要。必须用清晰、无歧义的语言描述每个属性分值的具体对应感受,并包含大量正例和反例图片进行说明,以最大限度地减少不同标注者之间的主观偏差。
2.2 数据采集与标注流程
这是最耗时耗力的部分,核心在于如何高效、可靠地获取海量图像所对应的感官评分。
图像来源:数据可能来自多个渠道,以确保多样性和真实性。包括:
- 公开数据集:整合现有食物数据集中的图像,但需重新标注感官属性。
- 烹饪网站与社交媒体:如食谱网站(下厨房、美食杰)的成品图,美食博主的高清图片。这些图片通常伴随文本描述,可作初始参考。
- 可控环境拍摄:为了研究光照、角度对感官预测的影响,可能需要部分在实验室可控环境下拍摄的标准食物图片。
标注者招募与筛选:标注者不是随便找的。理想的标注者应具备一定的“美食鉴赏”能力,可能需要通过简单的味觉敏感度测试进行筛选。此外,要覆盖不同的年龄、地域、饮食文化背景,以获取更具普适性的数据。考虑到工作量,很可能采用众包平台(如Amazon Mechanical Turk)结合专业评审小组的方式。
标注任务设计:不能一次性让标注者评价所有属性,会导致疲劳和评分质量下降。合理的做法是:
- 任务分解:将属性分组,同一张图片由不同的标注者子集评价不同组的属性。
- 质量控制:插入“黄金标准”问题(已知明确感官属性的控制图片),用于实时监测和筛选低质量标注者。
- 一致性校验:每张图片由多个标注者(通常3-5人)评价同一属性,最后取平均分或中位数作为真值,并计算评分者间信度(如科恩卡帕系数)以评估数据一致性。
2.3 数据清洗、整理与基准划分
原始标注数据是嘈杂的。清洗步骤包括:剔除标注时间过短或过长的极端记录;根据“黄金标准”问题的准确率剔除不可靠的标注者;对于评分差异过大的图片-属性对,进行复审。 整理后,每条数据样本将是一个三元组:<图像, 文本描述(可选), 多感官属性评分向量>。
最后,需要像划分COCO、ImageNet一样,将数据集划分为标准的训练集、验证集和测试集。这里的关键是确保数据分割的合理性:
- 类别平衡:测试集中应涵盖所有主要的食物类别。
- 感官评分分布平衡:确保测试集中各种感官属性(如甜度、脆度)的数值分布与训练集大致相同,避免模型只在某些分值上表现好。
- 来源隔离:严格确保同一道菜品的不同角度图片、或来自同一博主的相似图片,必须被划分到同一个集合(训练或测试)中,防止数据泄露导致评估结果虚高。
3. 视觉-语言模型如何“品尝”食物:核心技术路径解析
有了FoodSense数据集,我们如何利用它来训练一个能进行多感官预测的模型?核心在于设计一个能够理解图像内容并与人类语言描述的感官概念对齐的模型架构。当前的主流路径是视觉-语言模型,其核心思想是让模型在一个共享的语义空间里,同时理解图像和文本。
3.1 模型架构选型:从CLIP到定制化设计
最直接的起点是类似CLIP的模型。CLIP通过对比学习,让模型学会将图像和其对应的文本描述在特征空间中对齐。对于FoodSense,我们可以将食物的“文本描述”替换为“感官属性描述文本”。例如,一张炸鸡的图片,其配对文本可以是“这是一份看起来非常酥脆、可能有点油腻的油炸鸡肉”。通过大规模训练,模型会学习到“酥脆”、“油腻”这些文本概念与炸鸡图像中金黄焦脆的外皮、油光发亮的质感之间的关联。
然而,直接使用CLIP有局限。CLIP的文本编码器通常基于Transformer,擅长处理自然句子,但FoodSense的“标签”是一个结构化的评分向量(如[甜度: 2, 咸度: 6, 脆度: 7, 油腻度: 5])。一个更有效的设计是:
- 双编码器架构:保留图像编码器(如ViT)和文本编码器。但文本端输入的不再是句子,而是各个感官属性的独立提示词。例如,将“甜度”属性转化为一组可学习的提示向量,如
[V1][V2]...甜度,其中[V1][V2]...是可学习的上下文向量。模型为每个属性独立学习其视觉特征对应关系。 - 多任务预测头:在图像编码器的输出特征上,接多个并行的回归头(或分类头,如果将评分离散化)。每个头负责预测一个感官属性的分数。这种设计更直接,但需要模型从图像特征中解耦出不同属性的信息,对特征学习的要求更高。
- 融合架构:结合以上两者。先用图像和属性提示词进行对比预训练,让模型初步建立视觉-感官概念的联系,然后再用多任务头进行精细化的回归预测微调。这利用了对比学习在建立跨模态关联上的优势,也发挥了回归任务在精确预测数值上的优势。
3.2 训练策略与损失函数设计
训练这样的模型,损失函数是关键。它需要同时驱动模型学习多个目标。
- 对比损失:如果采用CLIP-like的架构,需要计算图像特征和所有属性文本特征的相似度矩阵,使用InfoNCE损失,让匹配的“图像-属性文本对”相似度更高。这里的挑战在于,一张图片对应多个属性,如何定义“正样本对”?一种方法是,将一张图片的所有属性文本拼接成一个长描述作为正样本,但这样会模糊单个属性的贡献。另一种更精细的方法是,将每个属性视为独立的对齐任务,计算多个对比损失。
- 回归损失:对于多任务预测头,最常用的是平滑L1损失或均方误差损失,直接最小化预测评分与真实评分之间的差距。由于不同属性的分值范围和方差不同,需要对每个属性的损失进行归一化加权,避免某个属性主导训练过程。
- 联合训练:最终的损失函数往往是对比损失和多个属性回归损失的加权和。如何设置这些权重是一个需要大量实验调参的“玄学”环节。我的经验是,可以先用对比损失进行预训练,让模型进入一个较好的初始化状态,然后以较低的权重引入回归损失进行微调,逐步让预测变得精确。
3.3 处理主观性与不确定性:从“预测分数”到“预测分布”
食物感官评价本质上是主观的。同一块黑巧克力,有人觉得苦度是7,有人觉得是5。FoodSense数据集中每个属性的真值通常是多个标注者的平均值,但这个平均值掩盖了背后的意见分歧。一个更先进的建模思路是,不预测一个确定的分数,而是预测一个分数分布。
例如,可以将每个属性的评分(如1-7分)视为7个类别,模型输出一个7维的概率分布。损失函数可以使用KL散度,让模型预测的分布与真实标注者评分所构成的经验分布(如,5个人中3人打6分,2人打5分,则分布为[0,0,0,0,0.4,0.6,0])尽可能接近。这样的模型不仅能给出“最可能的评分”,还能给出“意见的一致性程度”,例如预测“油腻度”的分布很集中(大家都认为很油),而“鲜味”的分布很分散(有人觉得鲜,有人没尝出来),这本身也是极具价值的信息。
4. 构建评估基准:如何公正地衡量模型的“品味”?
数据集有了,模型训了,接下来最关键的一步是:如何评价一个模型的好坏?这就是“基准”的意义。一个设计良好的基准,应该能全面、公正地衡量模型在多感官预测任务上的能力,而不仅仅是看一两个平均指标。
4.1 核心评估指标
必须摒弃单一准确率的思维。对于回归任务(预测1-7的连续值),常用指标包括:
- 均方根误差:衡量预测值与真值之间的平均偏差,对大的误差惩罚更重。
- 平均绝对误差:更直观,直接反映平均差了几分。
- 皮尔逊相关系数:衡量预测值与真值之间的线性相关程度。即使RMSE和MAE不低,但r很高,说明模型能正确判断趋势(哪个更甜、哪个更脆),这在很多推荐场景下已经很有用。
对于将评分视为分类任务的情况,可以使用准确率、宏平均F1分数(平等看待每个类别)等。
重要提示:必须分属性报告指标!一个模型可能在“甜度”上预测很准,但在“油腻度”上完全失败。只报告所有属性的平均指标会掩盖重要细节。基准报告应该像一张成绩单,列出模型在每个感官科目上的“分数”。
4.2 分层评估与鲁棒性测试
一个好的基准不应只在简单的测试集上跑一次就完事。它应该设计一系列挑战性的评估子集,以检验模型在不同条件下的鲁棒性。
- 类别外泛化:在训练集中完全未出现过的食物类别上进行测试。例如,用中餐训练的模型,去预测西餐或甜点的感官属性。这考验模型是死记硬背了“宫保鸡丁就是辣的”,还是真正学会了“红色油亮伴有干辣椒的菜肴通常较辣”这种跨类别的视觉-感官关联。
- 跨文化一致性评估:食物感知有文化差异。对于同一碗“麻婆豆腐”,四川人和上海人对“辣度”的评分可能有系统偏差。基准可以包含来自不同地域标注者子集的数据,评估模型预测结果与不同文化背景人群评价的相关性。一个强大的模型应该能捕捉或至少适应这种差异。
- 对抗性/困难样本集:包含一些容易混淆的图片。例如,一盘清炒藕片和一碗糖拌藕片,外观可能极其相似(都是白色片状),但甜度天差地别。模型能否通过细微的纹理、光泽差异(糖拌的可能更亮)做出正确判断?这类样本能有效区分“强力”模型和“投机”模型。
4.3 基准的延伸:超越静态预测
静态的图片评分预测只是第一步。一个更有野心的基准可以引入动态和交互式的任务:
- 基于感官约束的检索:“给我找一些看起来‘酥脆’但不‘油腻’的食物图片。” 这要求模型能将预测出的感官属性用于下游任务。
- 感官描述生成:不直接预测分数,而是让模型生成一段自然语言描述食物的感官特性。“这张图片里的蛋糕,看起来非常绵软,应该很甜,表面有光泽,可能带有奶油香气。” 这可以用文本生成指标(如BLEU, ROUGE)或人工评估来衡量。
- 食谱修改建议:“如何让这道菜在图片上看起来更‘清爽’(降低油腻感)?” 这需要模型理解视觉特征与感官属性的因果关系。
5. 实战中的挑战与应对策略
基于我过去处理多模态和主观数据项目的经验,在复现或应用FoodSense这类工作时,一定会遇到以下几个棘手问题,这里分享一些实用的解决思路。
5.1 数据标注成本与质量的平衡
这是最大的现实挑战。高质量的多感官标注极其昂贵且耗时。在资源有限的情况下,可以尝试以下策略:
- 主动学习:初始只用少量数据训练一个基础模型,然后用这个模型去预测未标注数据,挑选那些模型最“不确定”的样本(例如,预测分布熵值最高的图片)交给人类标注。这样可以用最少的标注次数,最大程度提升模型性能。
- 利用弱监督信号:社交媒体上的食物图片常伴有用户评论,如“太甜了”、“不够脆”。虽然这些文本不是结构化评分,但可以作为弱监督信号。通过情感分析或关键词提取,将其转化为近似的属性标签,用于模型的预训练或数据增强。
- 半自动化标注流程:对于某些与物理属性强相关的感官维度,可以探索自动化的替代方案。例如,“油腻度”可能与图像中高光区域的面积和分布有关;“酥脆度”可能与物体边缘的锐利度和纹理复杂度相关。可以先用这些视觉特征训练一个简单的预测器,作为人工标注的辅助工具或初筛工具。
5.2 模型偏差与公平性问题
模型很容易学习到数据中的偏见。例如,如果数据集中“深色酱汁”的菜肴普遍被标注为“咸”,模型可能会对所有深色酱汁的菜都预测高咸度,而忽略了可能是甜酱油或巧克力酱的情况。更严重的是,如果标注者群体以某一地区人群为主,模型学到的“辣度”标准可能完全不符合其他地区人群的感知。
应对策略:
- 数据审计:定期分析训练数据在不同属性、不同食物类别、不同来源上的分布。可视化模型在各类别上的误差,找出性能洼地。
- 对抗性去偏差:在模型训练中引入对抗性损失,试图从图像特征中抹去与特定偏见(如菜系)相关的信息,迫使模型专注于与感官真正相关的视觉特征。
- 明确说明局限性:在发布模型或研究结论时,必须明确指出其训练数据的构成,以及由此可能带来的预测偏差和应用范围限制。
5.3 从研究到落地:应用场景的适配
实验室里预测评分高,不等于实际应用效果好。将FoodSense模型集成到真实产品中,需要考虑:
- 计算效率:大型VL模型推理成本高。需要探索模型蒸馏、量化、剪枝等技术,在保证性能的前提下,将模型轻量化以适应移动端或实时应用。
- 领域自适应:如果你的应用场景是特定的(如只做奶茶的感官预测),那么用通用FoodSense数据集预训练的模型,必须在自己的、小规模的奶茶数据上进行微调,才能达到最佳效果。
- 交互设计:如何将模型的预测结果以用户能理解且不反感的方式呈现?直接显示“油腻度:6.5/7”可能让用户感到不适。可以转化为更温和的标签(“口感浓郁”)、表情符号(😋/😐/😖),或对比性描述(“比上一张图片的菜品更清淡”)。
FoodSense这类工作代表了AI感知从“识别是什么”向“理解感觉如何”的深刻转变。它打开了一扇新的大门,让机器能以一种更接近人类体验的方式理解世界。尽管在数据、模型和评估上都充满了挑战,但每一步推进都让我们离创造更具“常识”和“共情”能力的AI更近一步。对于从业者而言,深入理解其中每一个环节的设计权衡与实战陷阱,远比简单地调用一个模型接口更有价值。