基于M5Stack的UnitV2实现的口罩检测系统(边缘计算+上位机+网站前后端)
硬件介绍及实现的功能
本项目实现了一个口罩检测的系统,采用M5Stack提供的M5Stack UnitV2设备,并以该设备为核心。UnitV2设备以Sigmstar SSD202D为核心,通过GC2145摄像头采集图像信息,使用OpenCV和腾讯的开源NCNN库实现了包括但不限于目标检测、图像分类等多个功能。
项目实现了在办公室/宿舍等情景下,通过视觉处理实现对出现人员是否佩戴口罩的检测。当检测到人员后,无论人员是否戴口罩,数据均被发送至PC上位机,由上位机解析数据并调用服务器API实现数据新增,最后可以访问服务器网页查看报表。服务器如接收到有人员为戴口罩,则发出警报。
实现思路及实现功能的具体介绍
项目实现的口罩检测系统主要依赖设备内置的AI识别算法(Object Recognition)实现,通过连接PC机(基于Python)向服务器发送数据,并由服务端(基于B/S架构)生成报表和发送警报信息(HTML+PHP)。经过近二十日的测试,该系统功能稳定,数据正常,符合验收标准。该项目的结构图如下:
图2.1 系统结构图
UnitV2设备使用内置的Object Recognition功能(已通过API设置为开机自启),通过串口输出实时检测结果,PC上位机使用Python语言开发,实现的功能如下:
图2.2 上位机工作流程图
服务器采用PHP设计,基于B/S架构,用户可以通过浏览器访问我们的网站查看实时数据。当服务器接收到数据后,首先使用函数将Json数据转换为对象数据,紧接着根据上一次提交的时间和设备信息判断当前数据是否发生变化,以及是否过去超过2.7秒,如果是,则更新SQL数据。此处的2.7秒数据来自统计,即总计统计了1000位同学进出的数据,除去多个人同时进出的情况,发现98%以上的情况下,进出人员之间相距至少2.7秒。在对网络进行测试后发现,本地至服务器的平均网络时延在62ms,使用2.7秒能够相对有效地统计数据。后期将更换面向人脸的统计算法,解决多人同时出现的问题。
图2.3 服务端工作流程图
各个模块之间均采用了高内聚、低耦合的开发原则,相互之间相互独立,均采用了接口的方式。方便后期升级改造,或适应更多项目需求。
推荐您访问当前的网页链接(内含实时报表信息):https://open.myfpga.cn/unitv2/
功能展示图 - 3~5张
图3.1 未佩戴口罩检测图
图3.2 佩戴口罩检测图
图3.3 PC处理图
图3.4 网页截图1
图3.5 网页截图2
图3.6 未佩戴口罩警报图
遇到的主要难题
未来的计划建议等
本项目可以被简单修改成为例如火灾检测系统,并将警报的QMSG API修改为SMS API向管理员手机发送警报信息(或接入联网火警系统)。相比较传统的被动式检测系统,基于视觉的新系统可以在火灾刚刚发生的时候即发出警报,而不是整体温度升高了才进行报警。
可编译下载的代码
unitv2.zip (包括yolo_bin,pc的python代码,服务端的PHP代码)
为了防止PHP代码公开导致的SQL注入和白盒审计问题,服务端的PHP代码为加密和混淆后的结果。