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

基于MRS2的嵌入式AI产品开发实践——水果识别与营养分析案例

一、项目介绍

MounRiver Studio 2(MRS2)内置 TFLite Micro 边缘 AI 推理框架,支持TFLite 模型一键导入、可视化模型结构解析、模型文件转嵌入式源码、算子自动匹配与初始化,并可实现嵌入式 AI 工程一键搭建及模型数据自动挂载。同时,MRS2 配套专用优化算子库,支持AI模型在MCU平台上的开发与部署,实现从模型分析、工程搭建、编译、调试到下载运行的全流程开发。

本案例主要包含以下开发流程:

  • AI 图像分类模型训练;
  • TFLite 模型生成与量化;
  • MRS2 AI 工程创建;
  • 模型导入与 TFLite Micro 部署;
  • MCU 端 AI 推理调用;
  • 云端大模型接口连接;
  • 识别结果与营养信息显示。

最终实现效果:

  • MCU 本地完成水果图像识别;
  • 云端大模型提供水果营养数据分析;
  • 设备端实时显示识别结果和营养信息。

二、准备水果识别模型

在进行MCU部署前,需要准备适用于嵌入式运行的水果识别模型。本项目基于 TensorFlow/Keras 完成模型训练与量化。

针对 MCU 资源有限的特点,模型采用轻量化网络结构,并加入非水果拒识功能。实际应用中,当摄像头采集到桌面、手掌等非水果目标时,模型可以避免强制分类,提高识别可靠性。

最终模型设计为“水果分类 + 非水果检测”的双输出结构,并转换为 INT8 量化 TFLite 模型,通过MRS2部署到 CH32V407 MCU 平台运行。

2.1 数据准备与训练

数据集包含苹果、香蕉、菠萝三类水果的 64×64 的 RGB888 图像,每类共 700 张,其中 560 张用于模型训练,140 张用于模型验证。非水果图像涵盖室内桌面、墙壁、手掌、键盘等常见背景场景,共计为700张,按 8:1:1 比例划分为训练集、验证集和测试集。

2.2 输入处理与数据增强

训练过程中采用随机翻转、缩放、对比度调整等数据增强方式扩充样本分布,提高模型对不同拍摄角度、光照条件以及背景变化的适应能力。

考虑到实际嵌入式设备通常使用低成本摄像头采集图像,而MCU摄像头常输出RGB565格式数据,为减少训练数据与端侧输入之间的分布差异,训练阶段以 95% 概率对输入图像进行RGB565量化模拟,将RGB888图像压缩至RGB565色彩精度后再还原,使模型提前适应实际运行环境,提高部署后的识别稳定性

class RandomRgb565(layers.Layer): def __init__(self, prob=0.95, **kwargs): super().__init__(**kwargs) self.prob = prob def call(self, x, training=None): if training is False: return x return tf.cond( tf.random.uniform([]) < self.prob, lambda: simulate_rgb565_tensor(x), lambda: x ) class LightColorJitter(layers.Layer): def __init__(self, brightness=0.07, saturation=0.10, **kwargs): super().__init__(**kwargs) self.brightness = brightness self.saturation = saturation def call(self, x, training=None): if training is False: return x x = tf.clip_by_value(x, 0.0, 255.0) / 255.0 x = tf.image.random_brightness(x, max_delta=self.brightness) x = tf.image.random_saturation( x, lower=1.0 - self.saturation, upper=1.0 + self.saturation ) x = tf.clip_by_value(x, 0.0, 1.0) return x * 255.0

2.3 模型结构设计

本项目采用轻量化卷积神经网络结构,以满足 MCU 平台运行需求。模型输入为 64×64×3 RGB 图像,通过 Conv2D 卷积层和深度可分离卷积模块提取水果特征,在降低参数量和计算量的同时提升嵌入式运行效率。

模型采用双输出结构,其中水果检测分支通过Sigmoid判断当前目标是否为水果,实现非水果拒识;水果分类分支通过 Softmax 输出具体水果类别,如苹果、香蕉和菠萝。系统运行时先进行水果检测,再进行类别识别,从而降低背景物体误识别,提高实际应用稳定性。

2.4 模型量化与部署格式

完成训练后,将模型转换为INT8量化TFLite 模型。生成的TFLite模型可以直接导入MRS2,通过TFLite Micro 框架部署到MCU工程中运行。

三、MRS2 AI工程创建与模型部署

第一步:打开MRS2开发环境,创建对应MCU工程。

第二步:导入训练好的INT8的TFLite 模型。

导入过程中,MRS2 会自动完成:模型文件解析、模型格式检测、输入输出节点识别、Tensor 信息读取、全整型模型判断以及算子库的导入。

同时,MRS2 内置 Netron 模型分析功能,可直接查看网络结构、节点连接关系以及 Tensor 参数信息,方便快速了解模型结构。

第三步:导入模型后,MRS2会新建一个包含此模型和推理框架的CH32V407应用工程,用户可以直接进行编译,无需进行多余的配置。其中Model_date文件夹为模型转换后的代码,TFLM文件夹为TFLite Micro推理框架代码。

当后续需要替换模型时,只需点击 "Export Model as Source File",将导出的模型源文件直接替换 model_data 文件夹即可。

第四步:TFLite Micro推理框架配置

在MCU运行TFLite Micro模型时,需要提前配置推理所需内存(内存大小需要根据实际模型推理情况进行调整)并注册模型运行所需算子。MRS2 导入模型后,会自动分析网络结构,识别模型中使用的算子,并完成对应初始化配置,用户可直接基于生成的运行环境进行应用代码开发。

四、MCU端AI识别与云端大模型营养分析

完成模型部署后,设备通过 OV5640 摄像头采集水果图像,并经过预处理后输入本地 AI 模型进行推理。模型同时输出水果检测结果和类别信息,通过置信度判断、类别过滤以及多帧投票机制,提高识别稳定性,降低误识别。

整体识别流程如下:

确认水果类别后,MCU 通过 MQTT 将结果发送至云端大模型服务,由大模型进一步解析水果营养信息,包括热量、维生素含量等数据,并返回设备端显示。

http://www.jsqmd.com/news/1337849/

相关文章:

  • 部署 MHA 高可用
  • 从加密Godot项目中恢复源代码与资源的完整技术指南
  • Linux 网络服务架设学习笔记(第三期)——文件共享服务(上篇):NFS 与 Rsync——网络文件系统与数据同步
  • 2026年怎么从抖音提取视频?收藏学习向实用教程 - 免费软件工具方法教程
  • 本地AI助理moltbot/Clawdbot:从RAG原理到私有化部署实战
  • 正余弦优化算法(SCA)原理详解与Python实现:从数学到工程优化
  • 拼多多批量开票为什么还要一张张点?我做了个“多多开票助手”
  • DRF视图与路由进阶:从基础CRUD到复杂API架构设计
  • Thanos多集群监控聚合平台在分布式测试中的应用
  • Windows SAM文件与NTLM Hash解密原理及攻防实战
  • C++与OpenCV实现多视图逆透视变换生成鸟瞰图完整指南
  • 修复Rocky Linux MobaXterm SSH 反复断开问题
  • 优化AI推理:针对AI工作负载的实时Node Balancers指标
  • 界首市外墙漏水怎么处理_2026皖西北黄淮平原城市漏水维修避坑指南与精选 - 雨婺虹修缮
  • 无源带通滤波器设计:从LC谐振原理到工程实践
  • C++游戏开发入门:从语言核心到实战避坑指南
  • 为什么ChatGPT查文献总被编造DOI误导?聊聊MedPeer依托真实数据解决AI幻觉的方案
  • 基于ddddocr与BurpSuite的验证码自动化识别与绕过实战
  • S905L电视盒子刷机实战:打造Android TV与EmuELEC双系统娱乐中心
  • 天文数据处理:Python实现FITS文件频率基准转换与重网格化
  • 永磁直驱海上风电仿真建模与Matlab实践
  • DDD领域驱动设计:从业务建模到微服务落地的核心思想与实践
  • 统信UOS专业版root权限开启:三种安全方案与深度管理指南
  • 别急着上 Agentic AI,成本、边界和兜底方案没算清,团队只会翻车
  • Codex 工具调用报 400,问题到底出在哪?
  • TLS流量解密实战:从Wireshark配置到Flag提取全解析
  • 2026 年更新:香坊本地钢套钢外滑动保温管源头厂家联系方式,埋在地下30年的热力管道,居然还能这么稳?原来是靠这玩意儿撑着-友元管道 - 行业甄选官
  • ROS 2数据记录与回放:从ros2 bag工具到工程化调试实践
  • 《c# 实现p2p文件分享与传输系统》 一、 模型
  • 操作系统进程管理实战:从CPU调度到死锁排查,解决程序无法运行与资源占用问题