从人脸识别到行为检测:校园食堂后厨AI智能监控系统技术实践

发布时间:2026/8/10 21:03:15
从人脸识别到行为检测:校园食堂后厨AI智能监控系统技术实践
一、起因一次检查暴露出来的技术债我在一所高校信息中心负责数字化项目的技术对接。事情的起因是去年秋天市场监管局到学校食堂做例行检查查阅晨检记录时发现连续多天的体温数据完全相同检查组当场指出这属于记录造假。后勤处的同事后来找我吐槽说不是他们不想认真做晨检而是每天早上六点半几十号人排队等着进后厨一个人拿着体温枪一个一个测、一个一个登记后面的人就堵着到后面真的是应付了事。健康证管理更是头疼——几十个人的证件到期时间不一样全靠行政用Excel手动标记漏记是常态。更深层的问题在于后厨装了8个摄像头但全都是传统的DVR录像机。这些摄像头的唯一价值是出了事可以回查对于正在发生的违规行为——厨师摘口罩、忘记盖垃圾桶、灶台上开着火人走开了——完全没有预警能力。几百个小时的录像堆积在硬盘里根本没人会去看。校领导给信息中心下的任务很明确在两个食堂试点数字化改造把晨检从纸质变成电子化让后厨监控从被动录像变成主动预警。同时对接到市里的明厨亮灶监管平台。二、系统架构总览边缘计算 云端管理经过几轮方案对比我们最终选择的方案是边缘计算AI超脑 云端管理平台的两层架构。下面我把整体的技术架构梳理一下。2.1 感知层感知层由两类设备构成晨检终端部署在员工通道入口集成了RGB摄像头用于人脸识别、红外热成像模块用于测温和高清微距摄像头用于手部检测。设备运行的是嵌入式Linux系统内置了人脸识别SDK和轻量级的CNN模型用于手部伤口/异物检测。交互界面是一块10.1寸的触控屏引导员工完成打卡→测温→手检→健康问询的完整流程。AI摄像头集群部署在后厨的各个功能区——切配区、烹饪区、面点间、洗碗间、储物间。这些摄像头连接到部署在机房的一台AI超脑主机。摄像头本身是普通的网络高清摄像头我们用的是原有的设备利旧接入所有的AI识别计算都在超脑主机上完成。2.2 边缘计算层AI超脑这是整个系统最核心的部分。AI超脑是一台搭载了多块推理加速卡支持INT8量化推理的工控机运行Ubuntu Server上面部署了多个目标检测和行为识别的深度学习模型。单台超脑主机支持16路视频流的并发推理。16路是怎么算出来的我们实测下来基于YOLO系列的目标检测模型输入分辨率416×416单块加速卡跑INT8量化后的推理延迟大约在15-25ms。加上前后处理的图像解码和告警决策逻辑每路视频流的处理周期在60-80ms。16路视频流做轮询调度在25FPS的视频流下每路每秒可以推理大约12-15次足够覆盖行为检测的需求。如果摄像头数量超过16路就需要增加超脑节点。边缘计算的好处是显而易见的一是实时性——违规行为从发生到告警推送本地延迟控制在3秒以内不需要走公网上传到云端再分析二是带宽友好——只上传告警事件的缩略图和关键帧而不是完整的视频流三是即使外网断了本地告警依然正常工作。2.3 云端平台层云端负责告警汇聚、数据持久化、统计分析和多端推送。后端用的是Java Spring Boot微服务架构前端管理后台是基于Vue的SPA移动端有独立的APP。数据存储方面结构化数据告警记录、晨检记录、员工档案存在MySQL抓拍图片存在对象存储视频回放片段存在本地NVR云端只保存索引。需要特别提一下的是通信协议。边缘端和云端之间用的是MQTT协议做消息通道告警事件通过MQTT推送到云端云端做规则匹配后通过APP Push和短信通道下发到管理者手机。选用MQTT而不是HTTP轮询的原因是后厨网络环境不稳定WiFi信号穿墙衰减严重MQTT的QoS机制和断线重连能力在这种场景下比HTTP更可靠。三、核心模块技术细节3.1 晨检系统多模态身份核验晨检终端上的核心流程是人脸识别考勤 → 红外测温 → 手部AI检测 → 健康证核验 → 健康状态电子问询。人脸识别部分对接的是第三方的人脸识别SDK底库管理在本地设备上完成支持离线识别。食堂员工数量一般在30-50人规模1:N识别在这种量级下准确率非常高而且速度极快通常在200ms以内完成特征提取和比对。红外测温模块用的是医疗级红外传感器精度在±0.3度以内。需要注意的一个细节是环境温度对红外测温的影响比较大。冬天食堂入口温度低传感器需要一个预热过程。我们在部署时发现如果晨检终端安装在室外走廊冬天的测温偏差会达到0.5-0.8度。后来和后勤协商把晨检终端移到了室内缓冲区测温一致性就稳定了。手部AI检测是整个晨检流程中技术含量最高的环节。它需要在一个画面中同时检测多个目标手指上的创可贴、伤口包括已结痂的、戒指、手链、指甲长度异常等。我们用的模型是基于MobileNetV3 backbone的目标检测模型在晨检终端的嵌入式处理器上做INT8推理单次手部检测耗时约120ms。模型的训练数据有相当一部分来自实际食堂场景的采集——比如厨房常见的各种类型创可贴、不同角度和光照下的戒指、不同肤色手背上的新旧伤口。健康证管理在技术上不算复杂本质上是一个证件信息的CRUD加上基于到期时间的定时任务。系统每天凌晨跑一个定时Job扫描所有健康证记录筛选出距离到期30天以内的记录生成预警并推送。数据同步方面晨检终端每天早上开机时会从云端拉取最新的员工底库和健康证状态确保即使短暂断网也能正常完成晨检流程。3.2 AI明厨亮灶11类行为识别模型AI明厨亮灶在技术上有几个难点场景复杂后厨光照不均匀蒸汽烟雾干扰大、目标多样要同时检测人、物、行为、实时性要求高需要秒级响应。11类违规行为的检测在算法层面分为几个大类目标检测类未戴口罩、未穿厨师服、未戴厨师帽。这几个本质上都是在人体区域检测对应目标是否存在的问题。模型先做人体检测person detection然后在人体ROI区域内做口罩/帽子/工作服的二次检测two-stage detection。用YOLOv5-s作为backbone在后厨数据集上fine-tunemAP0.5能做到0.89以上。静态违规类垃圾桶未盖。这个在技术上比较有意思——我们最早尝试用目标检测直接识别打开的桶盖但效果不好因为桶盖在不同角度下的形态差异太大了。后来改用状态分类的思路先检测垃圾桶然后对桶口区域做一个二分类盖/未盖训练数据是从各种角度、各种光照下采集的垃圾桶图像。这个改动让准确率从不到六成提升到九成以上。行为检测类抽烟、打电话。这两个属于细粒度动作识别。抽烟的检测策略是先检测人体然后在人脸区域检测是否存在香烟目标检测同时融合手腕到嘴部区域的手势判断。打电话则检测手部靠近耳部手机目标的组合。为了降低误报我们加了一个时间窗口机制——单一画面检测到疑似抽烟不会立刻告警需要连续N帧约2-3秒检测到才触发这样可以过滤掉手擦嘴、喝水等误触发场景。区域逻辑类明火离岗、非法闯入、夜间人员闯入。这几个不单纯依赖图像识别而是结合了区域划定和时间逻辑判断。在系统初始化时每路摄像头都会划定检测区域ROI多边形比如灶台区域、仓库区域、夜间禁区等。当灶台ROI内检测到明火火焰在图像中的特征检测但人体检测在灶台ROI内超过设定阈值时间比如30秒没有结果时判定为明火离岗。夜间场景类鼠患识别。这个功能在技术上用的是运动检测小目标检测的组合。摄像头在红外夜视模式下持续采集画面先用帧差法检测运动区域背景建模用的是GMM高斯混合模型然后再对运动候选区域做鼠类目标检测。之所以用两阶段策略是因为老鼠在画面中占比通常很小可能只有10×20像素如果对全帧做目标检测计算量和误检率都太高。先做运动检测缩小搜索范围再做目标检测确认效率高很多。烟火检测基于颜色特征和运动特征综合判断。火焰检测利用HSV颜色空间中的红色-橙色范围加上动态纹理分析像素强度在时间维度上的波动模式烟雾检测则利用暗通道先验和运动方向分析。四、部署实战与踩坑记录方案设计只是第一步真正部署的时候遇到的问题才是大头。分享几个让我印象比较深的坑。坑1后厨蒸汽对口罩检测的干扰系统上线第一天口罩检测的误报率爆炸式增长——尤其是午餐高峰期炒菜区蒸汽弥漫的时候AI频繁判定未戴口罩。排查发现蒸汽水雾会在画面上形成一个半透明的白色遮挡恰好覆盖了下半张脸的区域模型就判断为口罩不存在。解决方案分两步短期方案是在告警逻辑里加了置信度阈值调整——蒸汽环境下的口罩检测置信度普遍偏低把该场景的告警阈值适当降低长期方案是在训练数据中加入了大量蒸汽、油烟环境下的样本让模型学会区分被蒸汽遮挡的脸和真正没戴口罩的脸。经过一轮模型迭代后高峰期的误报率降到了原来的不到两成。坑2晨检终端的网络稳定性食堂的网络环境比我预想的差很多。晨检终端部署在员工通道入口WiFi信号经过三道墙的衰减后基本不可用。一开始我们拉了网线但通道入口处只有电源没有网口。最后的方案是晨检终端的核心功能人脸识别、测温、手检全部在本地完成不依赖网络。每天凌晨通过4G模块从云端同步一次底库和健康证数据到本地存储。晨检记录也先暂存在本地SQLite里每5分钟批量上传一次到云端。这样即使网络不稳定晨检流程不受影响数据也不会丢失。坑3超脑主机的散热问题AI超脑主机在做16路并发推理时GPU温度会飙到85度以上。如果机柜通风不好长期运行可能导致降频甚至死机。我们食堂的弱电间是一个只有两平米的小隔间夏天室内温度能到38度散热条件极差。解决方案是在弱电间加了一个小型的机柜散热风扇几十块钱的那种向上排风同时在超脑主机的推理调度里加了温控策略——GPU温度超过80度时自动把部分非关键摄像头的推理帧率从25降到15温度回落后再恢复。实测效果不错一个夏天没再出现过死机。坑4数据对接的协议坑市里明厨亮灶监管平台的对接接口用的是国标GB/T 28181协议视频监控联网系统信息传输标准。我们的AI超脑主机原生支持RTSP拉流但要把带AI标记的告警视频推送到国标平台中间需要做协议转换。这个过程比预想的复杂——国标SIP信令的注册、心跳、保活机制和我们原有的MQTT架构完全不兼容。最后写了一个中间层服务跑在超脑上RTSP转GB/T 28181的媒体网关把AI告警事件转换成国标的报警XML消息格式推上去。这段代码不复杂但调试花了不少时间主要是国标文档写得比较简略很多细节需要抓包对照实现。五、效果评估与思考系统上线到现在接近一年用数据说话晨检方面每天两个食堂合计约70人次的晨检全部通过终端完成从排队等测温到刷脸通过人均耗时从原来的约两分钟降到了十秒左右。健康证逾期率从原来的约一成降到零——提前30天预警让后勤有充足的时间安排体检。手部检测发现过几次伤口未处理就上岗的情况都在第一时间拦截了。AI监控方面日均有十几条告警主要是未戴帽子和垃圾桶未盖属于高频低危类型高峰时段集中在上午十点到十一点。夜间鼠患识别触发了三次真实的鼠患活动都及时安排了专业消沙。系统上线后日常管理中的违规率呈现持续下降趋势——从上线第一个月的日均十几条到第三个月降到了日均不到十条这个变化说明AI监控的存在本身就在塑造员工的规范意识。从技术角度看这套系统本质上是一个典型的边缘AI 物联网 云平台的组合方案。技术栈本身并不前沿——YOLO、MobileNet、MQTT、Spring Boot都是成熟技术。挑战不在于技术本身而在于如何把成熟技术适配到复杂的真实场景中蒸汽干扰的光学问题、弱电间的散热问题、垃圾WiFi的网络问题、国标对接的协议问题——这些才是真正让人挠头的地方。未来优化的方向有这么几个一是引入时序行为分析比如用3D CNN或者Video Transformer目前的逐帧检测对复杂行为比如长时间离岗、渐进的违规判断不够精准二是多摄像头跨镜追踪ReID同一个员工从切配区走到烹饪区全程行为可以串联三是将食堂的环境传感器数据温湿度、燃气浓度和视频AI融合分析实现多模态的安全预警。如果有同行也在做类似的食堂数字化项目欢迎在评论区交流踩坑经验。特别是国标对接部分如果有更优雅的实现方式真心求教。