FoodVerse-494

0 downloads 0 likes on ModelScope updated

Model card

FoodVerse-494

项目简介

FoodVerse-494 是一个多菜系食物识别与营养知识查询系统,融合了图像识别模型与知识图谱能力,支持对 494 种常见菜品(涵盖中餐、西餐、日料、韩餐、印度菜、水果与甜品)的精准识别与营养查询。

项目包含:

  • 基于 YOLOv8n 的自定义图像识别模型
  • 针对 494 类菜品构建的 Nutrition 知识图谱
  • 支持识别 → 查询营养成分、卡路里、主要食材的完整流程

该模块已在真实数据构建的测试集中取得良好效果,可作为日常健康问诊场景的通用基础能力,用于辅助饮食管理、营养反馈与健康干预等任务。

项目亮点

智能疾病问诊具有以下亮点:

  • 覆盖全面:494 类菜品,包含 中餐、西餐、日料、韩餐、印度菜、水果、甜品

  • 高质量数据集:平均每类约 1000 张图片,均人工清洗与标注

  • 自定义训练策略:类别加权 + 自定义训练器 & 验证器,提升小样本类表现

  • 优于开源模型:实测性能优于同类开源食品识别模型(如 Qwen-VL, GPT-4o)

  • 知识增强能力:融合 Neo4j 图数据库,支持一键获取 dish 对应的营养、卡路里、食材等信息

模型效果验证与对比实验

作者对训练完成的 YOLOv8n 食物识别模型进行了系统性测试,并与多个通用多模态模型进行了对比实验,以验证在 真实多菜系任务下的通用性能。

实验设置

  • 评测数据构建

    从每个类别(共 494 类)中 随机选取 1 张图片,构成测试集,共计 494 张图像

  • 组织形式:

    所有测试图像被存放在以标签命名的文件夹中,例如 llm_test/麻婆豆腐/test.jpg,用于自动对比预测结果与真实标签

  • Prompt 设计(用于多模态模型):

    为每张图像输入固定格式 prompt,列出所有 494 个类别标签,提示模型进行分类选择

  • 稳定性处理:

    所有测试 重复 2–3 次,对每次的 Top-1 预测进行准确率统计,最终取平均作为模型 accuracy

评测结果

Model Accuracy(%)
Qwen-VL 54.00
OpenAI GPT-4o (Vision) 53.64
Baidu Image API -
Our trained YOLOv8n 65.84

关于 Baidu Image API:

  • 由于该接口将“水果”与“菜品”拆分为两个不同的模型,并通过不同参数调用,无法对通用测试集统一评测
  • 同时其 不支持 prompt 传入所有标签列表,因此无法构造公平的多类分类任务,因此未列入准确率统计

小结

作者提出的模型在真实混合菜系识别任务中展现出显著领先的准确率(65.84%),尤其在以下方面优于现有开放模型:

  • 更强的细粒度识别能力
  • 支持实际菜品数据集中完整分类(非人工聚类、非 prompt hack)
  • 推理快速,可落地使用

项目结构说明

.
├── Food/                                 # 主项目文件夹
│   ├── FoodKG/                           # 知识图谱相关模块
│   │   ├── medKG/                        # 图谱构建脚本与数据
│   │   │   ├── data/                     # 图谱构建所用的 json 数据(包含dish、ingredient、nutrition等信息)
│   │   │   └── build_graph.py            # 构建图谱的核心脚本(写入Neo4j)
│   │   ├── db.sqlite3                    # 如需本地备份,可选择导出图谱数据为sqlite(可选)
│   │   └── query.py                      # 图谱查询接口,支持按dish名称检索营养与成分信息
│
│   └── FoodRecongnize/                   # 图像识别相关模块
│       ├── model/
│       │   └── best.pt                   # 微调后的 YOLOv8n 权重文件(494类)
│       ├── ultralytics/                 # YOLOv8 训练框架(可包含自定义训练器等)
│       ├── test/
│       │   └── test1.jpg                 # 示例测试图片
│       └── query.py                      # 推理脚本,根据图片识别菜品标签
│
│   └── get_dish_info.py                 ## 主测试入口:融合识别与图谱查询的整合测试脚本
│
├── neo4j-community-5.20.0/              # 本地 Neo4j 社区版部署文件(或连接远程服务器)
├── README.md                            # 说明文档
├── requirements.txt                     # 环境依赖列表

快速体验

测试硬件信息:

  • OS: Ubuntu 22.04
  • Memory: 120GB
  • Storage: 255 GB(自定义yolov8n模型训练数据集较大)
  • Python: 3.12
  • CUDA Version: 12.7
  • GPU: RTX 4090(24GB) * 1
  • GPU Driver: 565.57.01
  • CPU: 16 vCPU Intel(R) Xeon(R) Gold 6430

安装依赖:

本项目建议使用 Python 3.12,建议使用虚拟环境或 Conda 环境进行安装

# 推荐使用 Conda 创建虚拟环境
conda create -n medqa python=3.12 -y
conda activate medqa

# 安装依赖
pip install -r requirements.txt

# 如果出现 faiss 或 torch 安装失败,请参考如下:
# conda install faiss-cpu -c conda-forge
# pip install torch==2.2.2+cu124 --index-url https://download.pytorch.org/whl/cu124

知识图谱使用说明

本项目使用 Neo4j 图数据库 构建了一个食物营养知识图谱,用于支持菜品识别后的营养查询功能。

构建图谱是图谱查询功能的前提,首次运行前必须完成

构建本地知识图谱

请先运行 build_graph.py 脚本,将食物、食材与营养成分等信息写入本地 Neo4j 图数据库中

构建前准备:

  • 请确保 Neo4j 服务已启动(默认地址:bolt://localhost:7687,图形界面访问:http://localhost:7474)

  • 修改图谱构建脚本Food/FoodKG/medKG/build_graph.py中的 用户名与密码,初始格式如下:

    graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password"))
    

    初始用户名和密码为 neo4j,首次登录后会要求修改密码,请根据实际密码修改脚本(忘记密码可在 Neo4j Desktop 或服务器端重设)

执行构建命令:

python Food/FoodKG/medKG/build_graph.py

成功后可通过 Neo4j 浏览器界面(http://localhost:7474)查看构建完成的图谱结构

使用图谱查询

使用图谱查询脚本(如 get_dish_info.py和 query.py)前,请确保:

  • Neo4j 服务正在运行(端口默认为 7687)

  • 密码设置正确,脚本中 auth=("neo4j", "your_password") 已更新为本地配置

    • 请分别修改以下两个文件中的 auth 字段:

      Food/FoodKG/query.py               # 图谱查询脚本
      Food/get_dish_info.py				# 综合测试脚本
      
  • 图谱已成功构建(执行过一次 build_graph.py)

License 和引用

本项目图像识别模型基于yolov8n训练:

  • AGPL-3.0 License: This OSI-approved open-source license is perfect for students, researchers, and enthusiasts. It encourages open collaboration and knowledge sharing. See the LICENSE file for full details.

本项目使用 Neo4j Community Edition 5.20.0 构建本地知识图谱,Neo4j 是一个高性能、面向属性图的开源图数据库系统

@manual{neo4j,
  title        = {Neo4j Graph Database},
  author       = {{Neo4j, Inc.}},
  year         = {2024},
  url          = {https://neo4j.com},
  note         = {Version 5.20.0, Community Edition}
}

本项目部分数据来源于ChineseFoodNet, Food-101, Food2K 开源数据集,仅用于学术研究目的,不用于任何商业用途,如用户需要整理后数据集,可联系作者本人。

@article{chen2017chinesefoodnet,
  title={ChineseFoodNet: A large-scale Image Dataset for Chinese Food Recognition},
  author={Chen, Xin and Zhou, Hua and Zhu, Yu and Diao, Liang},
  journal={arXiv preprint arXiv:1705.02743},
  year={2017}
}

 @inproceedings{bossard14,
  title = {Food-101 -- Mining Discriminative Components with Random Forests},
  author = {Bossard, Lukas and Guillaumin, Matthieu and Van Gool, Luc},
  booktitle = {European Conference on Computer Vision},
  year = {2014}
}

@article{min2021food2k,
  title     = {Large Scale Visual Food Recognition},
  author    = {Min, Weiqing and Wang, Zhiling and Liu, Yuxin and Luo, Mengjiang and Kang, Liping and Wei, Xiaoming and Wei, Xiaolin and Jiang, Shuqiang},
  journal   = {arXiv preprint arXiv:2103.16107},
  year      = {2021},
  doi       = {10.48550/arXiv.2103.16107},
  url       = {https://arxiv.org/abs/2103.16107},
  note      = {Accepted by IEEE Transactions on Pattern Analysis and Machine Intelligence}
}

如果你觉得我的工作有帮助的话,请考虑引用下列论文

@misc{smartdiet2025,
  title       = {FoodVerse-494},
  author      = {Li Xintong},
  year        = {2025},
  howpublished= {\url{https://modelscope.cn/models/codertt/FoodVerse-494}},
  note        = {Accessed: 2025-07-24}
}

您可以通过如下git clone命令,或者ModelScope SDK来下载模型

SDK下载

#安装ModelScope
pip install modelscope
#SDK模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('codertt/FoodVerse-494')

Git下载

#Git模型下载
git clone https://www.modelscope.cn/codertt/FoodVerse-494.git

如果您是本模型的贡献者,我们邀请您根据模型贡献文档,及时完善模型卡片内容。