当前位置: 首页 > article >正文

NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统

NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统

NutriJarvis 是一个基于深度学习的菜品识别与营养计算系统,旨在通过计算机视觉技术自动识别餐盘中的食物,并估算其营养成分,为用户提供便捷、智能的饮食健康管理支持。

核心优势

  • 📸 AI视觉识别,告别手动输入:

    • 采用先进的深度学习模型,自动识别中西餐常见菜品,准确标记,省时省力。
    • 实时画面捕捉,即刻反馈识别结果。
  • 📊 精准营养计算,健康心中有数:

    • 详细分析每种菜品的热量、蛋白质、脂肪、碳水化合物、膳食纤维等关键营养素。
    • 一键汇总整餐营养摄入,清晰了解饮食结构。
  • 💡 个性化智能建议,您的专属营养顾问:

    • 对比显示“已摄入”与“建议摄入”量,助您达成健康目标。
    • 独家集成 GPT-4 Turbo: 生成针对您当餐饮食的个性化、深度健康分析报告,提供切实可行的改进建议。
    • 内置“健康小贴士”,培养科学饮食习惯。
  • 🖥️ 友好界面设计,体验流畅直观:

    • 简洁清晰的界面,实时展示识别过程与营养数据。
    • 跨平台应用,随时随地轻松使用。

项目架构

在这里插入图片描述

  • 前端 (Front-end):

    • 技术栈: 使用 Electron 构建跨平台桌面应用,结合 Vue3 框架开发用户界面 (UI/UX)。
    • 功能: 负责用户交互、展示摄像头画面、显示识别结果和营养信息。直接与同一网络下的树莓派通信获取视频流。
    • 客户端: 运行在用户的电脑上。
  • 图像采集端 (Hardware Input):

    • 设备: 使用 Webcams 连接到 Raspberry Pi (树莓派)。
    • 功能: 树莓派运行一个基于 Python 的 API,负责捕获摄像头图像/视频流,然后通过网络传输给前端或其他需要图像数据的组件。
  • 后端 (Back-end):

    • 技术栈:
      • Web 框架: Flask 及 Flask-RESTful 构建 RESTful API。
      • WSGI 服务器: Gunicorn 部署 Flask 应用,提供高性能服务。
      • ORM: SQLAlchemy 用于与数据库交互,实现对象关系映射。
      • 数据库: MySQL 存储用户信息、菜品库、营养数据、历史记录等。
    • 功能: 处理前端的业务逻辑请求 (如用户管理、历史记录查询等 CRUD 操作),接收前端发送的待识别图像,调用 AI 模型服务进行识别,整合识别结果与营养数据库信息,最终计算并返回营养成分给前端。
  • AI 模型服务 (Model Serving):

    • 技术栈:
      • 模型部署: TorchServe 用于高效部署 PyTorch 深度学习模型。
      • 核心模型: 基于 MMDetection 训练的菜品识别模型。
      • 训练资源: 利用 GPUSHARE.COM 等云 GPU 资源进行模型训练。
    • 功能: 接收后端发送的图像数据,利用部署在 TorchServe 上的深度学习模型进行菜品目标检测与识别,并将识别出的菜品类别、位置等结果返回给后端。
  • 组件间通信:

    • 前端与后端通过 HTTP/RESTful API 进行交互。
    • 前端与树莓派通过本地网络 API 获取视频流。
    • 后端与 AI 模型服务通过 API 调用进行图像识别请求与结果返回。
    • 后端通过 SQLAlchemy 与 MySQL 数据库进行数据读写。

效果图

在这里插入图片描述

  • 实时菜品识别: 系统通过摄像头实时捕捉餐盘画面,利用深度学习模型自动检测并识别出画面中的多种菜品(如截图中的米饭、汤、炒菜等),并在图像上用边界框标示。
  • 营养成分计算: 识别出菜品后,系统结合内置的营养数据库,估算每种菜品的营养成分(如水分、蛋白质、脂肪、碳水化合物、膳食纤维等)和热量。
  • 整餐营养汇总: 系统能汇总一餐中所有识别出的食物的总营养摄入量(总卡路里、总碳水、总蛋白、总脂肪等)。
  • 个性化营养建议:
    • 显示单项菜品的识别置信度(“识别度”)和主要营养素含量。
    • 提供整餐的“已摄入”与“建议摄入”热量对比,并可视化展示主要营养素的摄入情况。
    • 提供“健康小贴士”,给出通用的饮食建议。
    • 亮点功能: 集成了 GPT-4 Turbo,能够根据用户当餐的饮食情况,生成个性化的餐后健康建议报告。
  • 用户交互与展示: 提供友好的用户界面,清晰展示摄像头画面、识别结果、详细的营养数据分析和健康建议。

代码示例(尚在开发中…)

🥰 通过网盘分享的文件:NutriJarvis_tosend_20250124.zip
链接: https://pan.baidu.com/s/1VxVLvnYqT6bhL1GixGbVTA?pwd=9w96 提取码: 9w96

相关文章:

NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统

NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统 NutriJarvis 是一个基于深度学习的菜品识别与营养计算系统,旨在通过计算机视觉技术自动识别餐盘中的食物,并估算其营养成分&…...

作为一名java技术博主如何突围

作为一位Java开发和技术博主,想要在抖音上快速提升粉丝数量和视频播放量,可以结合以下策略进行优化: 1. 明确目标受众与技术方向 细分领域:技术领域广泛,可以专注于Java开发、算法、框架解析(如Spring Boo…...

【LaTeX】

基本使用 \documentclass 类型:文章(article)、报告(report)、书(book) 中文的文章是ctexart,中文字体是UTF8 \documentclass[UTF8]{ctexart} []说明可以省略不写的意思&#xf…...

细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法

目录 一、FreeRTOS任务管理相关函数 1、FreeRTOS函数 2、FreeRTOS宏函数 3、主要函数功能说明 (1)创建任务osThreadNew() (2)删除任务vTaskDelete() (3)挂起任务vTaskSuspend() (4&…...

uniapp微信小程序基于wu-input二次封装TInput组件(支持点击下拉选择、支持整数、电话、小数、身份证、小数点位数控制功能)

一、 最终效果 二、实现了功能 1、支持输入正整数---设置specifyTypeinteger 2、支持输入数字(含小数点)---设置specifyTypedecimal,可设置decimalLimit来调整小数点位数 3、支持输入手机号--设置specifyTypephone 4、支持输入身份证号---设…...

VLM-R1GRPO微调,强化学习训练, 实战训练教程(2)

https://www.dong-blog.fun/post/2013 VLM-R1GRPO微调, 实战训练教程(1): https://www.dong-blog.fun/post/1961 本博客这次使用多图进行GRPO。 官方git项目:https://github.com/om-ai-lab/VLM-R1?tabreadme-ov-f…...

系统弹出消息功能,且保证用户只能获取弹出一次消息

要实现系统弹出消息功能,且保证用户只能获取弹出一次消息,你可以借助 Redis 来达成。基本思路是:把消息存于 Redis 的列表中,同时用 Redis 的集合记录用户是否已接收过该消息。下面是一个示例工具类,其中包含推送消息和…...

Python代码解释

文章目录 代码解析执行过程等价写法其他类似操作 这段代码使用了 Python 的 map() 函数和 lambda 表达式来对列表中的每个元素进行平方运算。让我详细解释一下: 代码解析 numbers [1, 2, 3, 4] squared list(map(lambda x: x**2, numbers))numbers [1, 2, 3, …...

GPIO_ReadInputData和GPIO_ReadInputDataBit区别

目录 1、GPIO_ReadInputData: 2、GPIO_ReadInputDataBit: 总结 GPIO_ReadInputData 和 GPIO_ReadInputDataBit 是两个函数,通常用于读取微控制器GPIO(通用输入输出)引脚的输入状态,特别是在STM32系列微控制器中。它们之间的主要…...

MySQL数据库编程总结

MySQL数据库编程总结 一、数据库概述 数据库定义 • 数据库是管理数据的软件系统,用于高效存储、管理和检索数据,减少冗余。 • 核心功能:通过SQL语言定义、操作数据,维护完整性和安全性。 常见数据库 • MySQL、Oracle、SQL Ser…...

leetcode-419.棋盘上的战舰

leetcode-419.棋盘上的战舰 文章目录 leetcode-419.棋盘上的战舰一.题目描述二.第一次代码提交三.第二次代码提交 一.题目描述 二.第一次代码提交 class Solution { public:int countBattleships(vector<vector<char>>& board) {int m board.size(); //列数i…...

使用uglifyjs对静态引入的js文件进行压缩

前言 因为有时候js文件没有npm包&#xff0c;或者需要修改&#xff0c;只能引入静态的js&#xff0c;那么这个时候就可以对js进行压缩了。我其实想通过vite、webpack等插件进行压缩的&#xff0c;可是他都不能定位到public目录下面的文件&#xff0c;所以我只能自己压缩了。编…...

ecovadis评分要求,如何提高ecovadis分数,未来展望

EcoVadis评分要求、提升方法及未来展望 1. EcoVadis评分概述 EcoVadis是全球领先的企业可持续发展评级平台&#xff0c;评估企业在环境&#xff08;E&#xff09;、劳工与人权&#xff08;L&#xff09;、商业道德&#xff08;B&#xff09;、可持续采购&#xff08;S&#x…...

程序加壳脱壳原理和实现

理论 一个可运行的执行文件&#xff0c;至少会有一个代码段&#xff0c;程序的入口点指向代码段&#xff0c;程序运行的时候&#xff0c;从入口点开始执行代码段指令 为了将一个正常的程序进行加壳保护&#xff0c;至少要三部分逻辑配合 1、待加壳保护的程序 2、加壳逻辑 3…...

【数据分析实战】使用 Matplotlib 绘制折线图

1、简述 在日常的数据分析、科研报告、项目可视化展示中&#xff0c;折线图是一种非常常见且直观的数据可视化方式。本文将带你快速上手 Matplotlib&#xff0c;并通过几个实际例子掌握折线图的绘制方法。 Matplotlib 是 Python 中最常用的数据可视化库之一&#xff0c;它能够…...

数据仓库标准库模型架构相关概念浅讲

数据仓库与模型体系及相关概念 数据仓库与数据库的区别可参考&#xff1a;数据库与数据仓库的区别及关系_数据仓库和数据库-CSDN博客 总之&#xff0c;数据库是为捕获数据而设计&#xff0c;数据仓库是为分析数据而设计 数据仓库集成工具 在一些大厂中&#xff0c;其会有自…...

亚洲区域健康人群免疫细胞marker

最近发现一篇文献&#xff0c;作者来自新加坡基因研究所&#xff0c;这篇文章大概是整理了619个亚洲人群的免疫多样性图集&#xff08;AIDA&#xff09;&#xff0c;跨越了7个国家&#xff0c;最终使用了1,265,624个免疫细胞的单细胞数据&#xff0c;并最终确定了8种主要的免疫…...

tree-sitter的grammar.js解惑

❓问题1&#xff1a;grammar.js 不是用正则表达式 /.../ 吗&#xff1f;为什么有 print 这样的字符串&#xff1f; ✅ 回答&#xff1a; grammar.js 分成两类“终结符”表示法&#xff1a; 表达方式含义xxx直接匹配该字符串字面量/regex/匹配符合正则的文本 &#x1f4a1; …...

三极管以及mos管

三极管与mos管的高低电平导通判断 &#xff08;1&#xff09;三极管的高低电平导通判断 三极管中有2个PN结&#xff0c;分别称为发射结和集电极结&#xff0c;按材料划分为硅材料三极管&#xff08;硅管&#xff09;&#xff0c;锗材料三极管&#xff08;锗管&#xff09;&am…...

第十七天 - Jenkins API集成 - 流水线自动化 - 练习:CI/CD流程优化

前言 在DevOps实践中&#xff0c;持续集成与持续交付&#xff08;CI/CD&#xff09;是现代软件工程的核心支柱。作为业界使用最广泛的自动化服务器&#xff0c;Jenkins凭借其强大的插件生态和灵活的流水线配置能力&#xff0c;成为企业级CI/CD落地的首选工具。本文将深入解析J…...

PPT模板之--个人简历

还在为制作 PPT 时毫无头绪、对着空白页面抓耳挠腮而烦恼吗&#xff1f;别担心&#xff0c;这里就是你的 PPT 灵感补给站&#xff01;在这个快节奏的信息时代&#xff0c;一份吸睛又高效的 PPT 至关重要&#xff0c;它能在商务汇报中助你赢得先机&#xff0c;在课堂展示时让你脱…...

【远程工具】1.1 时间处理设计与实现(datetime库lib.rs)

一、设计原理与决策 时间单位选择 采用**秒&#xff08;s&#xff09;**作为基准单位&#xff0c;基于以下考虑&#xff1a; 国际单位制&#xff08;SI&#xff09;基本时间单位 整数秒&#xff08;i64&#xff09;方案优势&#xff1a; 精确无误差&#xff08;相比浮点数&am…...

Nginx常用工具

Nginx常用工具 Nginx常用工具vscode配置Nginx插件在线生成Nginx配置文件Nginx可视化配置工具 Nginx常用工具 编写Nginx配置时,使用VSCodeNginx插件,能实现自动补全格式化配置. vscode配置Nginx插件 Nginx代码高亮插件&#xff1a; nginx-formatter Nginx代码格式化插件&#…...

应用安全系列之四十五:日志伪造(Log_Forging)之三

1、简介 针对Java的日志系统有多种&#xff0c;本文主要描述如何通过修改配置文件来解决logback和log4j的日志伪造问题。 2、logback 2.1、系统提供的解决方案 在logback.xml中配置编码器自动转义特殊字符&#xff1a; 复制 <configuration><appender name"C…...

springboot--页面的国际化

今天来实现页面中的国际化 首先&#xff0c;需要创建一个新的spring boot项目&#xff0c;导入前端模板&#xff0c;在我的博客中可以找到&#xff0c;然后将HTML文件放在templates包下&#xff0c;将其他的静态资源放在statics包下&#xff0c;如下图结构 页面的国际化主要在首…...

前端学习10—Ajax

1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大优势为&#xff1a;无刷新获取数据 AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方…...

list的常见接口使用

今天&#xff0c;我们来讲解一下C关于STL标准库中的一个容器list的常见接口。 在我们之前c语言数据结构中&#xff0c;我们已经了解过了关于链表的知识点了&#xff0c;那么对于现在理解它也是相对来说比较容易的了。 数据结构--双向循环链表-CSDN博客 1. 定义与包含头文件 …...

一维差分数组

2.一维差分 - 蓝桥云课 问题描述 给定一个长度为 n 的序列 a。 再给定 m 组操作&#xff0c;每次操作给定 3 个正整数 l, r, d&#xff0c;表示对 a_{l} 到 a_{r} 中的所有数增加 d。 最终输出操作结束后的序列 a。 ​​Update​​: 由于评测机过快&#xff0c;n, m 于 20…...

再次重拾jmeter之踩坑

1.添加“csv数据文件设置”&#xff0c;运行时提示 java.lang.IllegalArgumentException: Filename must not be null or empty检查多次后才发现因为我运行的是整个线程组&#xff0c;所以对应http请求下不能包括空的csv文件 2. 填写ip时不能加/&#xff0c;要在路径里加&…...

Flink的 RecordWriter 数据通道 详解

本文从基础原理到代码层面逐步解释 Flink 的RecordWriter 数据通道&#xff0c;尽量让初学者也能理解。 1. 什么是 RecordWriter&#xff1f; 通俗理解 RecordWriter 是 Flink 中负责将数据从一个任务&#xff08;Task&#xff09;发送到下游任务的组件。想象一下&#xff0c;…...