基于深度学习的食物营养信息预测系统,支持从食物图像和配料信息中预测卡路里、脂肪、碳水化合物和蛋白质等营养成分。
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 # 工具函数和评估指标
数据集应包含以下结构:
dataset/
├── train.json # 训练集图像路径列表
├── val.json # 验证集图像路径列表
├── test.json # 测试集图像路径列表
├── nutrition.xlsx # 营养信息表格
└── images/ # 图像文件目录
python train.py --config_path configs/config_train_inceptionv3.yml
python test.py --config_path configs/config_test_inceptionv3.yml
task_list: [‘calorie’, ‘fat’, ‘carb’, ‘protein’]
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' # 结果输出路径
本项目仅供学术研究使用。