fastfood-nutrition-estimation

FastFood Nutrition Prediction

基于深度学习的食物营养信息预测系统,支持从食物图像和配料信息中预测卡路里、脂肪、碳水化合物和蛋白质等营养成分。

主要特性

环境配置

使用Conda(推荐)

conda env create -f conda.yml
conda activate nutrition5k

手动安装

pip install torch torchvision
pip install clip-by-openai
pip install pyyaml pandas numpy scikit-image
pip install torchmetrics tensorboard tqdm

项目结构

FastFood/
├── train.py                    # 统一的训练脚本
├── test.py                     # 统一的测试脚本
├── preprocess_dataset.py       # 数据集预处理脚本
├── configs/                    # 配置文件目录
│   ├── config_train_*.yml      # 训练配置文件
│   └── config_test_*.yml       # 测试配置文件
└── nutrition5k/                 # 核心代码模块
    ├── model.py                # 基础模型(Nutrition5kModel)
    ├── model_inceptionv3.py    # InceptionV3+CLIP模型
    ├── model_vit.py            # ViT+CLIP模型
    ├── model_resnet.py         # ResNet+CLIP模型
    ├── model_utils.py          # 公共工具函数
    ├── dataset.py              # FastFood数据集(基础版)
    ├── fastfood_dataset.py     # FastFood数据集(支持ingredients)
    ├── n5k_dataset.py          # Nutrition5k数据集
    ├── n5k_dataset_generated_ingr.py  # Nutrition5k数据集(支持生成ingredients)
    ├── train_utils.py          # 训练工具函数
    └── utils.py                # 工具函数和评估指标

快速开始

1. 准备数据集

数据集应包含以下结构:

dataset/
├── train.json          # 训练集图像路径列表
├── val.json            # 验证集图像路径列表
├── test.json           # 测试集图像路径列表
├── nutrition.xlsx      # 营养信息表格
└── images/             # 图像文件目录

2. 训练模型

python train.py --config_path configs/config_train_inceptionv3.yml

3. 测试模型

python test.py --config_path configs/config_test_inceptionv3.yml

任务列表

task_list: [‘calorie’, ‘fat’, ‘carb’, ‘protein’]

模型特定配置(可选,会根据backbone和文件名自动推断)

fusion_stage: ‘early’ # InceptionV3融合阶段:early, mid, late use_aux: true # 是否使用辅助分类头 use_ingredients: true # 是否使用配料信息 layer: 2 # ResNet融合层:1, 2, 3, 4


### 测试可选配置
model_for_predicting_ingredients: 'LLAVA'  # 配料预测模型
ingredient_path: '/path/to/ingredients.txt'  # 配料文件路径
output_file_path: '/path/to/results.txt'    # 结果输出路径

训练流程

  1. 根据配置文件自动选择模型架构
  2. 加载数据集和数据增强
  3. 初始化优化器和学习率调度器
  4. 训练循环:前向传播、损失计算、反向传播、模型保存
  5. 验证循环:评估模型性能
  6. TensorBoard记录训练指标

本项目仅供学术研究使用。