营养视界 NutriVision
基于深度学习的菜品识别与营养分析系统
上传菜品照片即可自动识别菜名、计算热量与营养成分,并生成个性化饮食建议与营养趋势分析。
系统架构
五大模块HTML5 + CSS3 + 原生 JavaScript,响应式布局、拖拽上传、SVG 图表绘制
Django 4.2 MVT 架构,视图处理上传、推理调用、营养查询与统计
SQLite + Django ORM,菜品表 / 营养表 / 识别记录表 / 用户资料表
MobileNetV2 迁移学习,冻结卷积层微调分类头,验证集准确率约 85%
Django Admin 后台,维护菜品、营养数据、识别记录与用户
识别引擎
四引擎融合9 类西式菜品,精度优先
3065 类中式菜品与果蔬单品,免训练扩展
glm-4v-flash · 前两路置信度不足时复核,可识别库外菜品
用户纠正过的图片特征做 kNN 比对,相似度 ≥ 0.90 时直接采用人工确认的类别(人工标注优先于模型输出,增量生效、无需重训)
技术流程
使用说明
上传单张或多张(最多 12 张)菜品图片,设置份量与餐次
按关键词、菜品、餐次、日期筛选,支持收藏与删除,可导出 CSV
查看近 7 天热量趋势、三大营养素供能比与常识别菜品排行
维护身高体重、每日热量目标与头像,自动计算 BMI 指标
模型说明
| 项目 | 说明 |
|---|---|
| 基础模型 | MobileNetV2(ImageNet 预训练权重) |
| 训练策略 | 冻结特征提取层,仅微调分类头 |
| 数据增强 | 随机翻转 / 旋转 / 裁剪 / 色彩抖动 |
| 数据集 | Food-101 子集,按类别分目录组织 |
| 评估指标 | 验证集准确率、Top-3 预测分布 |
| 零样本引擎 | Chinese-CLIP 图文对比学习,174 类免训练识别 |
| 大模型引擎 | glm-4v-flash 视觉问答,低置信度兜底 |
| 融合策略 | 置信度阈值 0.75 + Top-5 互相印证 + 0.55 触发大模型复核 |
模型可通过 python app_recognition/ml/train.py --data_dir data/dataset --epochs 10 重新训练,
新增类别只需在数据集目录中增加对应文件夹(英文标签需与营养库 label 一致)。