news 2026/4/15 11:22:30

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谁说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++ 代码实现细节。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 15:54:56

Ansys Zemax|如何自定义优化操作数

附件下载 联系工作人员获取附件 概要 虽然Zemax OpticStudio有300多个内建优化操作数,但是还是会有一些特殊情况是这300多个操作数无法涵盖的。这就要求使用者根据要求计算出某些特定的数值,将这些数值返回到某个操作数,再对此操作数进行优…

作者头像 李华
网站建设 2026/4/14 0:55:00

LangFlow Rapid7漏洞扫描集成

LangFlow 与 Rapid7 漏洞扫描集成:构建可视化安全智能分析平台 在当今企业网络安全运营中,一个常见的困境是——漏洞数据堆积如山,但真正能转化为可执行决策的信息却寥寥无几。安全团队每天面对成百上千条扫描结果,手动筛选高风险…

作者头像 李华
网站建设 2026/4/12 21:15:59

LangFlow Thanos实现跨集群监控聚合

LangFlow Thanos:构建可观察的低代码AI系统 在当今生成式AI快速落地的浪潮中,企业面临的挑战早已不止于模型能力本身。如何让非工程背景的数据科学家高效参与应用开发?又如何在多集群、跨区域部署下统一掌控AI系统的运行状态?这两…

作者头像 李华
网站建设 2026/4/14 5:39:35

LangFlow vmstat内存使用情况查看

LangFlow 运行时内存监控实践:基于 vmstat 的轻量级诊断方案 在 AI 应用开发日益平民化的今天,LangFlow 正成为越来越多开发者构建大语言模型(LLM)工作流的首选工具。它通过图形化界面将 LangChain 的复杂组件抽象为可拖拽节点&am…

作者头像 李华
网站建设 2026/4/14 2:15:32

LangFlow Zipkin兼容模式降低迁移成本

LangFlow Zipkin兼容模式降低迁移成本 在AI应用从实验室走向生产线的过程中,一个反复出现的挑战是:如何让数据科学家设计的“聪明模型”在真实系统中依然表现可靠?许多团队都经历过这样的场景——原型阶段流畅运行的对话机器人,一…

作者头像 李华
网站建设 2026/4/14 1:02:44

LangFlow ELK栈整合教程:构建完整日志体系

LangFlow 与 ELK 栈整合:打造可观察的 AI 工作流日志体系 在企业级人工智能系统日益复杂的今天,一个核心挑战正摆在开发者面前:如何在快速构建 AI 应用的同时,确保其运行过程是透明、可控且可追溯的?传统的代码驱动开发…

作者头像 李华