万同学 · 四年级 · 零一优创学员
万同学在食堂值日时观察到,很多同学每天都只挑自己爱吃的菜,蔬菜剩很多。他想:能不能让设备「看见」餐盘里有什么、提醒一下营养是否均衡?
他先查了《中小学生膳食指南》,把“四菜一汤”的搭配模式整理出来;然后开始想怎么让设备真的能识别。一开始想训练自己的模型,但发现学校食堂菜品几乎每天都不一样,自训模型很难覆盖。最后他选择用通义千问 qwen-vl-max 大模型——把拍到的餐盘图丢给它,让模型直接说出菜品名和大概重量。
硬件这边他选了行空板 M10(带触摸屏),底座下方装一个 HX711 + 5kg 称重传感器,摄像头装在 30-40cm 高的 3D 打印支架上。每加一道菜重量变化超过 30g 就自动触发拍照识别。
把“打饭一道道增量识别”做成可重复触发的工程闭环,让大模型视觉真正落到校园食堂场景。
— 项目亮点
称重传感器读数有噪声,叠一筷子菜也可能算成新菜。万同学加了三层判断:重量必须大于 60g(避免无餐盘误触)、相比上次稳定值变化必须超过 30g、然后再等待 2 秒重量稳定(5g 阈值内)才触发拍照。这一套阈值是他自己反复用饭盒、纸团测出来的。
每次拍照大模型会把整个餐盘都识别一遍,但热量累加只能加新菜。他设计了一套“识别结果差分”算法:保留上一次识别的菜名集合,本次识别出来的菜品和上次比对,找出新增的那道菜并把它的预估重量加入总热量。这套差分逻辑写在 ai_recognition.py 里,调试了很多轮。
qwen-vl-max 返回的是一段自由文本,包含菜名、估算重量和热量。万同学写了一个解析器把它拆成结构化字段,再用行空板自带的 unihiker 库画到屏幕上——左边显示新增菜品图、右边显示菜名+重量+热量+一句营养建议。整个屏幕 UI 他自己一格一格调过位置。











