食堂人流预测系统,你了解多少?

发布时间:2021-07-29浏览次数:1057

在中国,“吃”可能是我们日常最关心的事情。生活在上科大,我们拥有尚科餐厅、白玉兰餐厅和丝路餐厅,有着各种各样的美食。然而,每到饭点,所有同学都不约而同涌向食堂,不可避免地造成了排队拥挤、等待时间长、体验不佳等问题。

鉴于此问题,信息学院智能视觉中心组织多名本硕博学生充分发挥专业优势,利用计算机视觉和机器学习等相关知识,开发了上海科技大学食堂人流预测系统,实时地展示每个餐厅窗口当前的排队人数和预计等待时间,供广大师生参考,合理选择就餐时机和窗口,既为师生个体节省时间,又从全局角度平衡几个食堂多窗口的服务负载。这套系统创新性地从分流角度去解决改善食堂排队难的问题,是同学们学以致用的重要表现。

继今年222日“就餐等候查询系统(1.0版)”上线公测、运行稳定后,4月下旬学校公众号校园服务栏目正式上线“就餐候时”智能信息服务啦!

下面我们就来看看这个“吃饭小助手”长什么样子?

打开微信,进入“上海科技大学”公众号,点击下方“校园服务”弹出应用列表,第四个就是我们今天的主角“就餐候时”应用啦!

(图1 左:应用入口;右:应用首页)

点击该项即可进入应用。页面布局十分简洁,标题栏下侧有三个菜单选项,分别对应不同的餐厅。选择不同的选择,即可在下方的内容栏查看当前餐厅的各个窗口排队人数和预计等待时间。目前菜单栏有白玉兰食堂、教工食堂和丝路餐厅三个选项,其他餐厅正在进行设备调整,完成后将接入系统。

清清爽爽的界面,不由得让人好奇这背后究竟是如何实现的~ 为此我们特意联系了此项目的开发团队和课题组人员:博士研究生吴旻烨、硕士研究生张晟源和本科生吴绍迅。让我们一起来揭秘这套系统背后的设计逻辑和故事

(图2 “就餐候时”项目团队)

整体上看,本系统可分为四大部分:(1)图像采集,(2)图像存储,(3)目标检测和(4)数据展示。首先采集食堂现场的实时视频流,并按一定频率保留图像帧并安全稳定地存储到数据库中,紧接着再从数据库中取出图像,识别图像中的目标,并进行计数,最后将识别结果等传给前端进行展示。

(图3 系统框架)


1. 图像采集

细心的同学们可能会注意到,在食堂窗口的排队区,布置了不少的相机。本项目采用大华相机,采集的图像分辨率为1268*714,基本保证对一个窗口的排队人员的完全捕捉。一般地,对于每一个窗口,都有一台专门的相机负责在此窗口排列的队伍。为了扩大视野,减少视野中人物的遮挡,相机都被设置在队伍排列方向的侧面较高处。

事实上,所有相机同时采集的数据量比较大,并且网络时有波动。为了保证数据传输的稳定性,团队使用了双层处理结构。程序为每个相机生成了一个子线程,根据相机的IP与其连接并用于数据IO。而上层主线程轮询负责查看各个子线程是否运行,并重启死亡的子线程。

2. 图像存储

在本项目中,使用Redis数据库作为中间件。Remote DIctionary Server(Redis) 是流行的 key-value 存储系统,是跨平台的非关系型(NoSQL)数据库。与每次更改写入磁盘的数据库系统相比,Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候再次加载进行使用。因此,Redis的内存特性使其性能更好,即读写速度更快。另一方面,它使用的原子操作保证了数据读写的安全性和单次使用的可靠性。

3. 目标检测

从数据库中获取原始数据后,首要的是清洗数据。由于相机视野中存在与目标检测队伍邻近甚至重叠的队伍,以及无关区域等,需要预先使用Mask对这些部分进行消除,保留目标区域。

本项目采用了Fast R-CNN模型(图1)来实现检测任务。训练数据集包括COCO数据集,并在和团队自行标定的真实环境数据集和Cityscape数据集上进行了测试。

(图4 R. Girshick, 'Fast R-CNN,' 2015 IEEE International Conference on Computer Vision (ICCV), 2015, pp. 1440-1448, doi: 10.1109/ICCV.2015.169.

5是人物识别模型的误判率关于置信度阈值的变化曲线,当置信度阈值超过0.7时,在Cityscape上的识别准确率基本上超过80%。一方面队伍前部靠近窗口区队伍汇聚,人物变多;另一方面,相机一般布置在队伍中后方,拍摄队伍前部的倾斜角度更大,距离更远,导致在图像中目标较小,重合较多,所以检测效果不理想,整体准确率上仍有一定的提升空间。但在团队自己的数据集上,模型的表现良好,准确率可超过95%

(图5 False Postive Per Window(FFPW)关于置信度变化曲线)

4. 数据展示

下面是一个测试的例子。为了防止旁边窗口排队的人员影响,预先对图像进行了Mask处理,再检测目标队伍中的人员数量。所有检测到的人员均用黑色方框标出。

(图6 检测实例。左:采集原图;右:检测结果)

团队成员经过多次试验,记录在一段时间内的排队人数,计算得到了每人次的平均花费时间。结合检测到的排队人数,即可得到预估排队时间。目前,考虑到实际需求,系统设置15-20秒更新一次。


以上就是这个系统的内部细节啦。事实上,此项目也是计算机视觉在生活中的具体应用。该系统的顺利上线得到了学校公共服务处、图信中心和各个食堂等相关部门给予的大力支持。信息学院研发团队将继续努力,提高系统的准确率和稳定性,推出更精准、更高效的版本,让广大师生开心用餐、舒心用餐、放心用餐。