当前位置:首页 > AI > 正文内容

基于M5Stack的UnitV2实现的口罩检测系统(边缘计算+上位机+网站前后端)

chanra1n3年前 (2021-07-17)AI6516

硬件介绍及实现的功能

    本项目实现了一个口罩检测的系统,采用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 未佩戴口罩警报图

遇到的主要难题

    1、没能成功使用UnitV2设备内置的WIFI与服务器直接通信,考虑是因为网络优先级的问题导致数据优先从Type-C引入的有线网络通信。为了降低开发难度,缩短项目周期,最终采用了基于串口的通信方式。
    2、由于SSD202的散热量很大,设备自带的风扇和散热片难以使得设备持续稳定工作,我对设备更换了铜片,增加了大风量的散热风扇,目前可以在24小时工作的情况下稳定70°左右。

未来的计划建议等

    本项目可以被简单修改成为例如火灾检测系统,并将警报的QMSG API修改为SMS API向管理员手机发送警报信息(或接入联网火警系统)。相比较传统的被动式检测系统,基于视觉的新系统可以在火灾刚刚发生的时候即发出警报,而不是整体温度升高了才进行报警。

可编译下载的代码

unitv2.zip (包括yolo_bin,pc的python代码,服务端的PHP代码)

为了防止PHP代码公开导致的SQL注入和白盒审计问题,服务端的PHP代码为加密和混淆后的结果。


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/206.html

分享给朋友:

“基于M5Stack的UnitV2实现的口罩检测系统(边缘计算+上位机+网站前后端)” 的相关文章

PHP使用SOCKET调用TensorFlow服务器实现图片鉴黄

PHP使用SOCKET调用TensorFlow服务器实现图片鉴黄

PHP代码<?php define("UNIX_DOMAIN","/socks/tfserver.sock"); $socket = socket_create(AF_UNIX, SOCK_STREAM, 0)...

基于CycloneV使用Paddle Lite,并分别使用单独HPS和FPGA加速对比效果。

基于CycloneV使用Paddle Lite,并分别使用单独HPS和FPGA加速对比效果。

第一部分、仅使用HPS进行计算第一步、通过ssh链接至开发板第二步、解决apt-get存在的问题chmod 644 /usr/lib/sudo/sudoers.so && chown -R root /usr/li...

ZYNQ7010在PYNQ环境下使用NPU加速神经网络推理

ZYNQ7010在PYNQ环境下使用NPU加速神经网络推理

步骤一、链接ssh并上传NPU SDK 步骤二、插入NPU,并给NPU赋予权限sudo chmod 666 /dev/sg*步骤三、修改最大字节数find /sys/devices/ -name max_sectors -exec sh -c 'ech...

使用PaddleX对大量图片进行分类(仅包含预测的内容)

使用PaddleX对大量图片进行分类(仅包含预测的内容)

# -*- coding: UTF-8 -*- import os import cv2 from shutil import copyfile import numpy as&...

使用爱快Docker安装Paddle对Paddle生成的模型进行预测

使用爱快Docker安装Paddle对Paddle生成的模型进行预测

文头先放上要使用的Python推理脚本。 # -*- coding: UTF-8 -*- import os import cv2 import time import threading from&nb...