1. 项目背景与核心需求
食堂排队监控系统是高校信息化建设中的经典课题。每到用餐高峰期,我校食堂总是人满为患,学生端着餐盘在各个窗口间来回走动却找不到合适的队伍。去年冬天,我亲眼看见有位同学因为找不到短队伍,最后只能吃冷掉的饭菜。这个场景让我萌生了开发智能排队监控系统的想法。
这个毕设要解决三个核心痛点:一是学生无法预知各窗口实时排队情况,二是食堂管理人员缺乏数据支撑来优化窗口配置,三是传统人工观察方式效率低下且不准确。系统需要实现三个核心功能:实时采集各窗口排队人数、可视化展示排队情况、生成历史数据分析报表。
2. 技术方案选型
2.1 图像识别方案对比
最初考虑过三种技术路线:
- 红外传感器:成本低但精度差,无法区分人和物体
- RFID射频识别:需要学生佩戴标签,实施成本高
- 摄像头+AI识别:综合成本适中,识别准确率可达95%以上
最终选择OpenCV+YOLOv5的方案,在树莓派4B上部署。测试发现,用640x480分辨率、15fps的摄像头,配合轻量级YOLOv5s模型,单帧处理时间仅35ms,完全满足实时性要求。
2.2 系统架构设计
整个系统采用三层架构:
- 边缘层:树莓派负责视频采集和实时分析
- 服务层:Flask后端提供RESTful API
- 展示层:Vue.js前端+食堂大屏展示
特别设计了双缓存机制:当网络波动时,边缘设备可以本地缓存最近5分钟数据,待网络恢复后自动同步到云端。这个设计让系统在校园网不稳定的午餐高峰时段仍能可靠工作。
3. 核心算法实现细节
3.1 人流检测优化
直接使用原始YOLOv5模型会出现两个问题:一是误将餐盘识别为人,二是对密集人群计数不准。我们做了三项改进:
- 数据增强:收集2000张包含各种角度、光照条件的食堂场景图片进行再训练
- 添加过滤规则:当检测框宽高比<0.7时(餐盘通常较扁),自动过滤该检测结果
- 采用DeepSORT算法进行跨帧追踪,解决遮挡问题
经过优化后,在测试集上的mAP从82%提升到91%,尤其是在晚餐时段的低光照条件下,准确率仍保持在85%以上。
3.2 排队长度计算
创新性地提出"虚拟排队线"算法:
- 在监控画面中预设各窗口的排队方向向量
- 对每个检测到的人体框计算中心点
- 计算中心点到窗口的距离在排队方向上的投影
- 设置1.2米的安全距离阈值(实测大学生平均肩宽)
- 采用滑动窗口算法消除瞬时波动
这个算法比简单的区域人数统计更符合实际排队体验,经实地验证与人工计数结果的相关系数达到0.93。
4. 系统部署实战
4.1 硬件安装要点
在二食堂实地部署时遇到几个关键问题:
- 摄像头高度:最终确定2.8米是最佳安装高度(兼顾视野和识别精度)
- 光照补偿:东侧窗口在上午会有强逆光,加装偏振镜后解决
- 网络布线:采用PoE供电解决取电难题,一根网线同时传输数据和电力
特别提醒:一定要提前测量食堂吊顶的承重!我们最初用的云台支架就因承重不足发生过坠落事故。
4.2 软件配置参数
关键配置项备忘:
python复制# 摄像头参数
CAP_PROP_FRAME_WIDTH = 640
CAP_PROP_FRAME_HEIGHT = 480
CAP_PROP_FPS = 15
# YOLOv5参数
conf_thres = 0.6 # 置信度阈值
iou_thres = 0.45 # NMS阈值
classes = [0] # 只检测person类
# 网络传输
MAX_RETRY = 3 # 网络重试次数
BUFFER_SIZE = 300 # 本地缓存帧数
5. 效果验证与数据分析
5.1 实地测试结果
在为期两周的试运行期间,系统采集到一些有趣发现:
- 11:45-12:15是绝对高峰,平均排队时间8分23秒
- 面食窗口排队时间是快餐窗口的1.7倍
- 靠墙窗口的利用率比中间窗口低30%
这些数据帮助食堂做出了三项改进:
- 在高峰时段增开两个面食临时窗口
- 将最受欢迎的麻辣香锅窗口调整到中间位置
- 实行错峰下课制度,将部分班级的下课时间提前10分钟
5.2 用户反馈
随机访谈50名学生的结果显示:
- 87%的学生表示会参考显示屏选择窗口
- 平均排队时间减少23%
- 最受欢迎的改进是增加了预估等待时间功能
有个意外发现:显示实时排队人数反而会导致人群集中冲向短队伍,后来改为用"拥挤程度"(红/黄/绿)显示效果更好。
6. 常见问题排查指南
6.1 图像识别异常
问题现象:突然大量误识别餐盘为人
解决方法:
- 检查镜头是否被蒸汽模糊(食堂常见问题)
- 确认没有强光直射镜头
- 重启图像处理服务
重要提示:每天开餐前要用酒精棉片清洁镜头,这是血泪教训
6.2 数据传输中断
问题现象:前端显示"数据获取中"
排查步骤:
- ping边缘设备确认网络连通性
- 检查树莓派SD卡剩余空间(<10%会导致异常)
- 查看系统日志确认是否触发熔断机制
我们后来增加了心跳检测机制,每30秒检查一次设备在线状态。
7. 项目演进方向
这套系统已经稳定运行6个月,下一步计划:
- 增加人脸识别功能,统计常客的用餐习惯
- 开发微信小程序,让学生可以远程查看排队情况
- 引入LSTM模型预测未来30分钟的排队趋势
最让我自豪的是,这个项目已经被学校后勤处采纳,准备推广到所有食堂。通过这次实践,我深刻体会到:好的技术方案不在于用了多先进的算法,而在于是否真正解决了实际问题。