跳转至

OmniFood8K: Single-Image Nutrition Estimation via Hierarchical Frequency-Aligned Fusion

会议: CVPR 2026 Highlight
arXiv: 2604.12356
代码: https://yudongjian.github.io/OmniFood8K-food/
领域: 食物计算 / 多模态融合
关键词: 食物营养估计, 多模态数据集, 深度估计, 频域融合, 中国菜

一句话总结

构建了涵盖 8036 个样本的中式食物多模态营养数据集 OmniFood8K 和 115K 合成数据集 NutritionSynth-115K,并提出端到端框架通过 Scale-Shift 深度适配器、频域对齐融合和掩码预测头从单张 RGB 图像预测营养信息。

研究背景与动机

领域现状:食物营养估计在公共健康中至关重要,深度学习方法在自动识别和估计食物质量、体积和营养方面展现潜力。

现有痛点:(1) 数据限制:现有数据集严重偏向西方菜系,对中式食物覆盖不足;(2) 算法限制:先进方法依赖深度相机获取深度信息,日常场景中食物照片通常用 RGB 相机拍摄。

核心矛盾:深度信息对准确估计食物体积和营养至关重要,但实际部署场景通常只有 RGB 图像。

本文目标:(1) 构建覆盖中式菜系的综合多模态食物数据集;(2) 提出仅需单张 RGB 图像的端到端营养预测框架。

切入角度:利用预训练深度估计模型从 RGB 图像预测深度,通过适配器校正和频域融合替代实际深度传感器。

核心 idea:预测深度图 → 适配器校正 → 频域对齐融合 RGB 和深度特征 → 掩码感知预测。

方法详解

整体框架

这篇论文要解决的是「日常场景只有单张 RGB 照片、却想拿到食物体积和营养」的矛盾——准确估营养离不开深度,但用户手机里没有深度相机。作者的思路是把深度"算出来"再用好:先用一个预训练深度估计模型从 RGB 图预测出深度图,但这张深度图尺度不准、局部还有失真,所以接一个适配器 SSRA 把它校正成可用的几何信号;校正后的深度特征再和 RGB 特征在频域里对齐融合(FAFM),让形状和纹理各走各的频段;最后由一个掩码感知的预测头 MPH 把注意力收到真正含食材的区域上,回归出热量与三大宏量营养素。整条链路端到端训练,推理时只吃一张 RGB 图。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["单张 RGB 图像"] --> B["预训练深度估计模型<br/>预测原始深度图"]
    A --> R["RGB 特征"]
    B --> C["SSRA 深度适配器<br/>全局仿射 sD+t + 逐像素残差 ΔD"]
    C --> D["FAFM 频域对齐融合<br/>低频形状 / 高频纹理 分频对齐"]
    R --> D
    D --> E["MPH 掩码感知预测头<br/>动态通道选择 + 区域感知注意力"]
    E --> F["营养预测<br/>热量 + 蛋白质 / 脂肪 / 碳水"]

关键设计

1. Scale-Shift Residual Adapter (SSRA):把"借来的"深度图改造成能用的几何信号

预训练深度模型是在通用场景上训的,搬到食物图上会出两类错——整体尺度对不上(同一盘菜估出的绝对深度可能整体偏大或偏小),以及盘沿、堆叠食材这些局部结构被估糊。SSRA 用两条互补的修正同时治这两类病:一条学一对全局参数 \(s,t\) 对原始深度 \(D\) 做仿射变换 \(sD+t\),把整张图的尺度和零点拉回正确量程;另一条用一个轻量残差网络预测逐像素的局部修正量 \(\Delta D\),补回被压平的边界和细节。最终校正深度为 \(\hat D = sD + t + \Delta D\)。全局仿射负责"对得准"、残差负责"看得清",两者叠加既不破坏整体量程又能保留精细几何,这也解释了消融里去掉 SSRA 后误差暴涨约 12 个点——原始预训练深度本身偏得很厉害。

2. Frequency-Aligned Fusion Module (FAFM):换个域融合,避开 RGB 和深度的模态冲突

RGB 携带颜色纹理、深度携带几何,直接在空间域拼接或相加容易让两种异质信号互相干扰。FAFM 改在频域里做:把 RGB 和深度特征变换到频域后按频段对齐再融合——低频成分对应食物的整体形状和体积轮廓,高频成分对应表面纹理和细节边界,于是"形状归形状、纹理归纹理"地分频对齐,每个频段只融合语义相容的部分,再变换回空间域。这样融合出的特征比空间域直接拼接更干净,消融中频域融合相比直接拼接把热量 MAE 从 175.6 降到 165.8,正是这个动机的验证。

3. Mask-based Prediction Head (MPH):让预测头只看含营养的地方

一张食物照里盘子、桌面、背景都是噪声,不同食材区域的营养密度也差很多,用一个普通 MLP 头在全图上回归等于把无关像素的信息也算进去。MPH 做两件事来收窄注意力:先用动态通道选择,按信息量给特征通道打分、筛掉贡献低的通道,只留下对营养判别最有用的那批;再叠一层区域感知注意力,对真正含食材的空间区域加权、压低容器和背景的响应。两步配合让预测头把容量集中在关键食材上,去掉 MPH 后误差上升约 5.5 个点说明这种"聚焦"确有收益。

损失函数 / 训练策略

训练用标准回归损失同时监督热量与蛋白质、脂肪、碳水三大宏量营养素的预测值。为缓解真实标注数据稀缺,先在合成数据集 NutritionSynth-115K(11.5 万样本)上预训练增强泛化,再在 OmniFood8K 上微调。

实验关键数据

主实验

方法 热量 MAE↓ 蛋白质 MAE↓ 脂肪 MAE↓ 碳水 MAE↓
Im2Calories 224.5 15.8 13.2 22.1
Nutrition5K 198.3 13.5 11.4 19.7
RoDE 185.7 12.8 10.6 18.3
FBFPN (RGB+D) 172.4 11.2 9.8 16.5
本文 (仅RGB) 165.8 10.5 9.2 15.8

消融实验

配置 热量 MAE↓ 说明
完整模型 165.8 SSRA + FAFM + MPH
无 SSRA 178.2 不校正深度
无 FAFM (直接拼接) 175.6 空间域拼接
无 MPH 171.3 标准MLP头
无深度分支 182.5 仅RGB

关键发现

  • SSRA 贡献最大:去掉深度校正后 MAE 增加约 12 个点,说明预训练深度的原始预测确实存在显著偏差
  • 频域融合优于空间域拼接,验证了 FAFM 的设计动机
  • 仅用 RGB 输入的性能超过了使用真实深度传感器的 FBFPN 方法

亮点与洞察

  • 用预训练深度估计替代深度传感器的思路具有实用价值:使得营养估计在日常场景中可部署
  • OmniFood8K 数据集覆盖完整烹饪流程(原料→食谱→烹饪视频→多视图成品),是该领域最全面的数据集之一
  • 合成数据集 NutritionSynth-115K 的构建方法对数据稀缺场景有借鉴价值

局限与展望

  • 仅覆盖中式菜系,跨文化泛化性未验证
  • 数据集规模(8036 样本)在深度学习标准下仍较小
  • 预训练深度模型在食物图像上的适用性需要更多分析
  • 可结合食材识别和份量估计进一步提升

相关工作与启发

  • vs Nutrition5K: Nutrition5K 以西方食物为主且需多视图,本文覆盖中式食物且仅需单视图
  • vs FBFPN: FBFPN 需要真实 RGB-D 输入,本文从单张 RGB 预测深度反而效果更好

评分

  • 新颖性: ⭐⭐⭐⭐ 数据集和频域融合框架都有新意
  • 实验充分度: ⭐⭐⭐⭐ 多数据集对比和详细消融
  • 写作质量: ⭐⭐⭐⭐ 结构清晰
  • 价值: ⭐⭐⭐⭐ 数据集贡献突出