基于YOLOv5的口罩佩戴实时检测系统

基于YOLOv5的口罩佩戴实时监测系统

概述

基于YOLOv5的口罩检测系统,使用Flask进行开发,将检测压力分到各客户端侧进行端侧实时检测,对服务端性能需求小,可以部署在各种服务器甚至树莓派上。mAP达到0.96,检测结果较为准确。
本项目可以实现对实时网络视频流以及 本地摄像头的拉取检测,并实现了实时人群口罩佩戴率计算展示和统计,可以对统计图表结果进行下载存储。

工作流程

互联网搜集图片,筛选并手动标注获取数据集。
基于YOLOv5s训练模型
用Flask框架进行检测平台前后端开发
服务端部署在树莓派或其他服务器进行调试运行

开发概述

开发环境:Windows11 22H2 64bit
IDE:PyCharm
使用语言: Python、JavaScript
模型训练环境: NVIDIA V100 虚拟化 CPU 2核 内存 16G / CPU

项目效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据集概况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

模型性能

在这里插入图片描述

环境配置

YOLOv5官方项目拉取

依赖及其版本:

(tfjs) D:\yolov5>conda list
# packages in environment at D:\Software\Anaconda\envs\tfjs:
# Name                    Version                   Build  Channel
numpy                     1.24.1                   pypi_0    pypi
pandas                    1.5.3                    pypi_0    pypi
pillow                    9.4.0                    pypi_0    pypi
python                    3.8.5                h5fd99cc_1    defaults
seaborn                   0.12.2                   pypi_0    pypi
tensorboard               2.9.0                    pypi_0    pypi
tensorboard-data-server   0.6.1                    pypi_0    pypi
tensorboard-plugin-wit    1.8.1                    pypi_0    pypi
tensorflow-estimator      2.9.0                    pypi_0    pypi
tensorflow-hub            0.12.0                   pypi_0    pypi
tensorflow-io-gcs-filesystem 0.30.0                   pypi_0    pypi
tensorflowjs              3.19.0                   pypi_0    pypi
thop                      0.1.1-2209072238          pypi_0    pypi
tqdm                      4.64.1                   pypi_0    pypi

YOLO v5 & TensorFlow.JS - 模型部分环境配置:

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
conda create -n yolo5 python==3.8.5
conda activate yolo5

pip install -r requirements.txt


Flask(Conda/Python) - 服务端环境配置

conda create -n mask python==3.11.1
conda activate mask
pip install flask
pip install pymysql
pip install flask-sqlalchemy
pip install flask-migrate
pip install flask_mail
pip install wtforms
pip install email_validator
pip install flask-wtf

Node.js 配置

@tensorflow/tfjs
bootstrap
jquery
popper.js

flask-migrate使用方法

flask db init
flask db migrate
flask db upgrade

项目说明

config.py用来存储配置相关的信息。

exts.py用来管理扩展。exts.py存在的意义就是为了解决循环引用的问题。

blueprints包(Python Package)用来做模块化,存放视图,避免所有url视图全部写在app.py中导致臃肿。

模型训练方法

数据集划分:7:2:1,共300张(210,60,30),4批1轮,训练300轮次
训练方法:

conda activate yolo5
D:
cd Center\Code\MaskDetect-CPU

python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4 --device cpu


python detect.py --weights runs/train/exp3/weights/best.pt --source  data/dataset/images/test/test(1).jpg
"""
python自动检测脚本
"""


import os

cmd_prefix = 'python detect.py --weights runs/train/exp3/weights/best.pt --source  data/dataset/images/test/test('
cmd_after = ').jpg'

for i in range(1, 30):
    cmd = cmd_prefix + str(i) + cmd_after;
    print(cmd)
    print(os.system(cmd))

"""
所有检测结果移动到一个文件夹
"""


# coding=utf-8
import os
import shutil

#目标文件夹(最终要复制到的文件夹),此处为相对路径,也可以改为绝对路径
determination = './test'
if not os.path.exists(determination):
    os.makedirs(determination)

#源文件夹路径
path = './runs/detect'
folders = os.listdir(path)
for folder in folders:
    dir = path + '/' + str(folder)
    files = os.listdir(dir)
    for file in files:
        source = dir + '/' + str(file)
        deter = determination + '/' + str(file)
        shutil.copyfile(source, deter)

TFJS模型导出方法

命令如下:

conda activate mask
python export.py --weights export/exp3/weights/best.pt --include tfjs

# 可以调整NMS IoU阈值和NMS置信度阈值
python export.py --weights yolov5s.pt --include tfjs --iou-thres 0.5
python export.py --weights yolov5s.pt --include tfjs --conf-thres 0.6
python export.py --weights yolov5s.pt --include tfjs --iou-thres 0.5 --conf-thres 0.6

内网穿透方法:

命令如下:

D:\Software\Python\Scripts\flask.exe run --port=9000
cpolar http 9000



``````````````````````````````
cpolar by @bestexpresser     (Ctrl+C to quit)                                                                       Tunnel Status       online
Account             Hive (Plan: Free)
Version             3.12/3.15
Web Interface       127.0.0.1:4042
Forwarding          http://75c02076.r8.cpolar.top -> http://localhost:9000
Forwarding          https://75c02076.r8.cpolar.top -> http://localhost:9000
# Conn              0
Avg Conn Time       0.00ms    
``````````````````````````````

项目获取

QQ:1214038972
邮箱: 1214038972@qq.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alveus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值