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

谁说AI不懂吃?我用一盘小炒肉,跑通了YOLOv11 + RK3576菜品识别的全流程!

说真的,作为一个整天跟代码打交道的“程序猿”,最幸福的时刻莫过于下班后面对那一桌热气腾腾的家常菜。那天我看着盘子里的小炒肉,脑子里突然蹦出一个念头:要是我的开发板也能认出这些美味,那不就有意思了?

说干就干!我花了点时间,基于最新的YOLOv11框架,在RK3576板子上跑通了一个自定义菜品识别的小 Demo。今天不跟大家扯那些干巴巴的官方文档,咱们就聊聊我是怎么一步步教 AI “认菜”的。

1. 数据才是硬道理

很多人问我,训练模型最难的是什么?说实话,不是写代码,而是给 AI 准备“口粮”。为了让模型认出“小炒肉”、“西红柿炒蛋”和“米饭”,我那天下午简直成了职业摄影师。我左手拿铲子,右手拿手机,围着几盘菜转了不知多少圈。

我有几个私藏的避坑指南,你们一定要听:千万别拍一段视频直接抽帧。视频帧之间太像了,会导致模型“死记硬背”(过拟合)。我坚持手动抓拍,保证每一张照片的构图都有所不同。真实场景里哪有完美的柔光灯?我故意关掉大灯,只开个昏暗的抽油烟机灯,或者在菜吃到一半、盘子乱七八糟时拍摄。别因为爱吃肉就拍 500 张小炒肉,结果米饭只拍了 20 张。这样模型会“偏科”的,到时候它看啥都觉得是肉。最后我给每道菜都准备了大概 200 来张照片,涵盖了各种刁钻的角度,甚至还有吃到一半、只剩半盘的残羹冷炙。

2. 框到眼花:这活儿急不得

照片拍好了,接下来就是最考验耐心的“打标签”环节。我用的是Label Studio,这工具挺好使。

在那几个小时里,我的世界只剩下画框和点鼠标。每一个“西红柿炒蛋”我都仔细框好,心里还得默念:这是 Tomato_Eggs,那是 Chili_Pork。你知道吗?当你框到第 300 张的时候,看那些像素块都觉得在冒香气。

标签命名:建议用英文,比如 Chili_Pork、Tomato_Eggs、Rice。

细心程度:标注质量直接决定了天花板。如果框得太松,模型会把盘子也当成菜的一部分。

导出格式:直接选择 YOLO 格式,它会生成一堆 .txt 文件,里面记录了每个框的坐标。

3.从数据到 YOLOv11 模型的蜕变

有了照片和标签,接下来就是最激动人心的“闭关修炼”阶段。这一步,我们要把几百张散乱的照片,炼成一个懂吃的“数字大脑”。

训练 AI 需要消耗极大的算力和内存。在这次实操中,我用的是临滴的3576开发板,确保训练过程像德芙一样丝滑。

在 Linux 系统上使用 Conda 构建一个纯净的 Python 3.10 环境,并安装最新的 YOLOv11 框架。按照标准结构组织了目录,将训练的照片严格按照8:2的比例划分为训练集和验证集(注意标签文件名必须和图片名保持一样)。我们需要写一个 data.yaml 来指路。定义了 3 个类别:小炒肉 (Chili_Pork)、米饭 (Rice) 和西红柿炒蛋 (Tomato_Eggs)。再写一个train.py训练程序。

经过120轮耗时1.07小时的训练,训练去除了优化器参数后,得到的模型只有 5.5MB。对于 RK3576 这种嵌入式设备来说,这个体量非常友好,预示着它在板子上运行时会非常省内存。RK3576的6TOPS算力处理这种6.3GFLOPs的模型可以跑出非常高的帧率。mAP50-95 达到了惊人的 0.964! 这意味着模型对小炒肉、米饭和西红柿炒蛋的识别准确度已经达到了“职业食评人”的水准。

训练出的模型虽好,但直接塞给开发板并不是最优解。为了让 RK3576 的 NPU 跑得更丝滑,我用 Rockchip官方优化版 的工具(ultralytics_yolo11)进行了 ONNX 导出。验证ONNX模型(best.onnx)在 384x640 的分辨率下,单张图片推理仅需 59.3ms。

4.将模型转换翻译给RK3576

普通 YOLOv11 导出的 ONNX 带有大量的后处理(如 NMS 非极大值抑制、DFL 解码),这些算子在 NPU 上运行效率极低。使用RK官方转换Python程序 rknn_model_zoo,配置好量化数据,将ONNX模型文件转换成RKNN文件。核心逻辑:加载ONNX模型。

在目标板子上,使用 rknn_model_zoo 仓库中的 C/C++ 示例进行部署。修改类别数量: 编辑 postprocess.h 文件,将目标检测的类别数从默认的 80 类改为我们的 3 类;更新标签文件: 替换 coco_80_labels_list.txt 为我们的 3 个菜品标签;编译与执行: 编译推理程序,并使用 RKNN 模型和测试图片运行推理。顺便把标签文件里的名字也换成咱们的小炒肉和米饭。

看着那一碗白米饭被 AI 精准框住,我突然觉得,技术不应该是冰冷的。

如果你在折腾 RK3576 时也遇到了“环境配置难”、“转换模型报错”或者“识别率低”的问题,别灰心,这都是必经之路。你可以参考临滴Wiki1. Custom Food Detect Demo | Neardi,里面有更详尽的 C++ 代码实现细节。

http://www.cnnetsun.cn/news/192445.html

相关文章:

  • Ansys Zemax|如何有效地模拟散射
  • LangFlow John the Ripper密码破解测试
  • 精锋医疗通过上市聆讯:上半年营收1.49亿 亏损8909万 红杉是股东
  • LangFlow Dynatrace AI驱动运维洞察
  • 智能花瓶:AI Agent的插花艺术指导
  • 【毕业设计】SpringBoot+Vue+MySQL 家电销售展示平台平台源码+数据库+论文+部署文档
  • PMP每日五题汇总--截止到12月200日
  • LangFlow MITMProxy拦截修改HTTP流量
  • LangFlow Reaver WPS攻击检测
  • 新手教程:使用WinDbg分析x64蓝屏DMP文件
  • LangFlow Cacti流量图展示网络吞吐量
  • 面向工业控制的模拟电子技术基础入门必看指南
  • 65、利用组策略管理硬件访问与打印机分配全攻略
  • f1系列替换下载失败
  • LangFlow内置模板库发布,涵盖常见AI应用场景
  • Centos7安装Maven环境
  • 【Arbess】1、安装Arbess
  • 实战案例:Arduino Uno R3开发板读取加速度传感器数据
  • 集体好奇心与团队学习能力的正相关
  • 树莓派5安装ROS2快速理解操作流程
  • LangFlow企业文化宣传文案生成工具
  • Java SpringBoot+Vue3+MyBatis 太原学院商铺管理系统系统源码|前后端分离+MySQL数据库
  • LangFlow员工满意度调查问卷生成器
  • SpringBoot+Vue 网上宠物店系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 公考日记9
  • Screen to Gif帧率调整的正确姿势
  • LangFlow走失老人定位协助流程设计
  • 操作系统移植视角下的x64和arm64差异:核心要点
  • vivo X300系列凭什么更受欢迎?旗舰体验这次更到位
  • 新手避坑指南:multisim14.3下载安装时防病毒误删技巧