关键词:
导读
本文主要介绍如何使用OpenCV和PaddleHub实现一个实时人脸口罩检测系统。(公众号:OpenCV与AI深度学习)
背景介绍
从19年疫情爆发到现在,佩戴口罩对大家来说已是常态。应运而生的就有了很多相关应用,如病毒发展预测、口罩佩戴检测以及戴口罩的人脸识别等。
今天介绍的人脸口罩佩戴检测系统主要使用OpenCV和百度飞浆(PaddlePaddle)的PaddleHub提供的检测模型。PaddleHub提供了很多实用的模型,包括图像处理、文字处理、音频处理、视频处理和工业应用等。github地址:https://github.com/PaddlePaddle/PaddleHub
人脸口罩检测
人脸检测部分的模型如下:
红框内的两个模型支持人脸口罩检测,这里选择pyramidbox_lite_server_mask,实现详细步骤:
【1】安装PaddlePaddle、PaddleHub和OpenCV(opencv-python)
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn
pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn
本文使用的版本:
PaddlePaddle---2.3.0
PaddleHun---2.2.0
opencv-python---4.6.0.66
注意:安装PaddlePaddle可能会遇到一些问题,导致import paddle失败,大家根据报错信息搜索解决方法即可。
【2】图片人脸口罩检测
准备待测图,运行下面代码,修改图片路径即可:
import paddlehub as hub
import cv2
mask_detector = hub.Module(name="pyramidbox_lite_server_mask")
img_path = './imgs/A0.png'
img = cv2.imread(img_path)
input_dict = "data": [img]
result = mask_detector.face_detection(data=input_dict)
count = len(result[0]['data'])
if count < 1:
print('There is no face detected!')
else:
for i in range(0,count):
#print(result[0]['data'][i])
label = result[0]['data'][i].get('label')
score = float(result[0]['data'][i].get('confidence'))
x1 = int(result[0]['data'][i].get('left'))
y1 = int(result[0]['data'][i].get('top'))
x2 = int(result[0]['data'][i].get('right'))
y2 = int(result[0]['data'][i].get('bottom'))
cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
if label == 'NO MASK':
cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
else:
cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
cv2.imwrite('result.jpg',img)
cv2.imshow('mask-detection', img)
cv2.waitKey()
cv2.destroyAllWindows()
print('Done!')
代码开始第一次会先下载对应的模型到如下位置:
C:\\Users\\xxx\\.paddlehub\\modules,以后不用再下载
测试图1:
运行结果:
测试图2:
运行结果:
测试图3:
运行结果:
测试图4:
运行结果:
从上面测试结果来看,效果还不错!
【3】视频或摄像头实时人脸口罩检测
准备测试视频或直接打开摄像头检测,选择对应的代码即可:
cap = cv2.VideoCapture('2.mp4') #视频文件检测
# cap = cv2.VideoCapture(0) #摄像头检测
完整代码:
import paddlehub as hub
import cv2
mask_detector = hub.Module(name="pyramidbox_lite_server_mask")
def mask_detecion(img):
input_dict = "data": [img]
result = mask_detector.face_detection(data=input_dict)
count = len(result[0]['data'])
if count < 1:
#print('There is no face detected!')
pass
else:
for i in range(0,count):
#print(result[0]['data'][i])
label = result[0]['data'][i].get('label')
score = float(result[0]['data'][i].get('confidence'))
x1 = int(result[0]['data'][i].get('left'))
y1 = int(result[0]['data'][i].get('top'))
x2 = int(result[0]['data'][i].get('right'))
y2 = int(result[0]['data'][i].get('bottom'))
cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
if label == 'NO MASK':
cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
else:
cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
return img
if __name__ == '__main__':
cap = cv2.VideoCapture('2.mp4') #视频文件检测
#cap = cv2.VideoCapture(0) #摄像头检测
if(cap.isOpened()): #视频打开成功
while(True):
ret,frame = cap.read()#读取一帧
result = mask_detecion(frame)
cv2.imshow('mask_detection',result)
if cv2.waitKey(1)&0xFF ==27: #按下Esc键退出
break
else:
print ('open video/camera failed!')
cap.release()
cv2.destroyAllWindows()
测试结果:
下载1:Pytoch常用函数手册
在「OpenCV与AI深度」号后台回复:Pytorch函数手册,能够学习下载全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理等十四章内容。
下载2:145个OpenCV实例应用代码
在「OpenCV与AI深入」公众号后台回复:OpenCV145,能够学习下载145个OpenCV实例应用代码(Python和C++双语言实现)。
opencv4.5.4dnn人脸识别模块使用介绍--如何快速搭建一个人脸识别系统(代码片段)
点击下方卡片,关注“OpenCV与AI深度学习”视觉/图像重磅干货,第一时间送达导读本文主要介绍OpenCV4.5.4中人脸识别模块的使用和简易人脸识别系统的搭建,供大家参考。背景介绍前几天刚刚更新的OpenCV4.5.4版本将基... 查看详情
android实现戴口罩人脸检测和戴口罩识别(附android源码)(代码片段)
...on训练后的戴口罩识别模型移植到Android平台。我们将开发一个简易的、可实时运行的戴口罩人脸检测和戴口罩识别的AndroidDemo。目前项目开发的戴口罩识别(face-maskrecognition) 查看详情
戴口罩人脸检测和戴口罩识别(含pythonandroid源码)(代码片段)
戴口罩人脸检测和戴口罩识别(含PythonAndroid源码)目录戴口罩人脸检测和戴口罩识别(含PythonAndroid源码)1.戴口罩识别的方法(1)基于多类别目标检测的戴口罩识别方法(2)基于人脸检测+戴口罩分类识别方法2.戴... 查看详情
戴口罩人脸检测和戴口罩识别(含pythonandroid源码)(代码片段)
戴口罩人脸检测和戴口罩识别(含PythonAndroid源码)目录戴口罩人脸检测和戴口罩识别(含PythonAndroid源码)1.戴口罩识别的方法(1)基于多类别目标检测的戴口罩识别方法(2)基于人脸检测+戴口罩分类识别方法2.戴... 查看详情
android实现戴口罩人脸检测和戴口罩识别(附android源码)(代码片段)
Android实现戴口罩人脸检测和戴口罩识别(附Android源码)目录Android实现戴口罩人脸检测和戴口罩识别(附Android源码)1.戴口罩识别的方法(1)基于多类别目标检测的戴口罩识别方法(2)基于人脸检测+戴口罩分类识... 查看详情
android实现戴口罩人脸检测和戴口罩识别(附android源码)(代码片段)
Android实现戴口罩人脸检测和戴口罩识别(附Android源码)目录Android实现戴口罩人脸检测和戴口罩识别(附Android源码)1.戴口罩识别的方法(1)基于多类别目标检测的戴口罩识别方法(2)基于人脸检测+戴口罩分类识... 查看详情
mtcnn实时人脸检测网络详解与opencv+tensorflow代码演示(代码片段)
...整个模型分为三个阶段,第一阶段通过一个浅层的CNN网络快速产生一系列的候选窗口;第二阶段通过一个能力更强的CNN网络过滤掉绝大部分非人脸候选窗口;第三阶段通过一个能力更加强的网络找到人脸上面的五个标记点;完整... 查看详情
戴口罩的人脸识别
...的是难度最高的三人组,选题是鲁棒性人脸识别系统,另一个是新冠肺炎的图像检测,我们觉得自己能力有限,还是就选择了人脸识别。 (ps:建议小组展示早点讲掉,不然 查看详情
基于深度学习的口罩检测系统(python+清新界面+数据集)(代码片段)
口罩检测系统用于日常生活中检测行人是否规范佩戴口罩,利用深度学习算法可实现图片、视频、连接摄像头等方式的口罩检测,另外支持和结果可视化。在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面。口罩检测... 查看详情
github开源项目实践人脸口罩检测(代码片段)
昨天在GitHub上看到一个有趣的开源项目,它能检测我们是否有戴口罩,跑起程序测试后,发现识别率挺高的,也适应不同环境;于是分享给大家。首先感谢AIZOOTech 的开源项目--FaceMaskDetection 😀人脸口罩检... 查看详情
如何快速搭建智能人脸识别系统
作者|小白来源|小白学视觉网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一。这是为了确保我们的隐私得到维护,只有真... 查看详情
ai人脸检测/口罩检测/安全帽检测智能分析网关告警推送优化
...品,可支持AI视频智能分析功能,包括人体检测、人脸检测、区域入侵检测、安全帽检测、口罩检测等,可广泛应用于客流统计、安防监控、周界防范、企业安全生产、公共防疫等场景。目前我们仍在进一步拓展更多A... 查看详情
五分钟快速入门
本教程使用XML。注意,这个库不是专门绑定到XML的,而是可以使用任何其他支持的格式(如INI或JSON)。之所以选择XML,是因为作者认为很多人都熟悉XML。假设我们正在为某个应用程序编写一个日志系统,并且需要在程序启动时从文... 查看详情
分分钟自制人脸识别(如何快速识别心仪的小姐姐~)(代码片段)
文章目录环境使用的函数接口流程人脸检测部分图片读取/尺寸修改图片矩形标注人脸检测读取视频标注人脸人脸识别人脸信息录入数据训练人脸识别通过最近的学习感触颇多,大数据,人工智能,分布式,云计算... 查看详情
戴口罩人脸数据集和戴口罩人脸生成方法(代码片段)
戴口罩人脸数据集和戴口罩人脸生成方法目录戴口罩人脸数据集和戴口罩人脸生成方法1.戴口罩人脸数据集(1)开源数据集-戴口罩人脸数据集(2)生成戴口罩人脸的数据集2.戴口罩人脸生成方法(1)生成... 查看详情
戴口罩人脸数据集和戴口罩人脸生成方法(代码片段)
戴口罩人脸数据集和戴口罩人脸生成方法目录戴口罩人脸数据集和戴口罩人脸生成方法1.戴口罩人脸数据集(1)开源数据集-戴口罩人脸数据集(2)生成戴口罩人脸的数据集2.戴口罩人脸生成方法(1)生成... 查看详情
lamp-五分钟搭建个人论坛
LAMP-五分钟搭建个人论坛 系统版本:CentOS7 1.##安装lamp及依赖软件wgethttp://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmrpm-ivhmysql-community-release-el7-5.noarch.rpmyuminstall-yepel-releasehttpdphpph 查看详情
树莓派---人脸口罩识别智能监控(代码片段)
... 树莓派---开机自动发送IP到自己的QQ邮箱②send_pic.py封装一个send_mail(file_path)方法,只要传入图片路径file_path,就能实现图片发送到我的qq邮箱send_pic.py#coding=utf-8importsmtplibfromemail.mime.textimportMIMETextfromemail.utilsimportformatadd... 查看详情