Python 20行代码检测人脸是否佩戴口罩
最近,口罩成为绝对热门的话题,在疫情之下,出门不戴口罩不仅对自己不负责,对他人而言也是一种潜在的威胁。所以许多小区都有保安在门口守着,谁要是不戴口罩就吼回去(吓死我了)。
尽管如此,人工检测总有可能漏掉人,而且无时无刻地盯着,保安叔叔也特别累。今天我们就来尝试用计算机自动检测人脸是否佩戴口罩的可行性,如果可行,那么根据我们以前的推送:人脸检测自动开机,就可以做一个实时摄像头,如果发现有人没戴口罩则发送警告给保安,以提高保安的工作效率。
当然,想要识别人脸是否佩戴口罩,需要做很多训练数据的收集,不过最近百度开源了他们的人脸口罩识别模型:PaddleHub 口罩检测。我们今天就来试试这个模型的效果。
要注意,如果你的Python3环境变量里的程序名称是Python,记得将语句改为Python xxx,如下进行安装:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
还需要安装paddlehub:
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
把我们需要测试的图片保存在该代码文件的同一目录下,命名为3.jpg:
import paddlehub as hub
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# 1.待预测图片
test_img_path = ["./3.jpg"]
# 2.载入模型
module = hub.Module(name="pyramidbox_lite_mobile_mask")
# 3.预测
input_dict = {"image": test_img_path}
results = module.face_detection(data=input_dict)
# 4.结果展示
img = mpimg.imread("detection_result/3.jpg")
plt.figure(figsize=(10, 10))
plt.imshow(img)
plt.axis('off')
plt.show()
没错,你没看错,就是这么简单。去掉空行和注释只有12行代码,再狠一点,把matplot展示部分全部去掉,只有6行代码。再再狠一点,把test_img_path和input_path变量以及module.face_detection语句合并,你会发现只有3行代码:
import paddlehub as hub
module = hub.Module(name="pyramidbox_lite_mobile_mask")
results = module.face_detection(data={"image": ["./3.jpg"]})
MASK:97.64% 代表这个人戴了口罩,可信度为97.64%。
NO MASK: 97.41% 代表这个人没戴口罩,可信度为97.41%
最后面那个大叔也是MASK,但是它的可信度只有54.31%,所以很可能是误判,在我们实际应用的时候,只需要把警告阈值(比如80%)提高,即可筛去这些不可信的分类。
不过,这个模型有一个缺点就是,对于远距离的人判断并不是很精确:
离镜头最近的这个人可能是因为侧脸的原因,脸部特征不明显识别不出来。但是远处的这些戴着口罩却被识别为没戴口罩的,就是这个模型的锅了。不过,通过阈值过滤和缩短摄像头摄影距离还是可以将这个模型用于实际生活中的。
相关文章
- python 火车票爬取代码
- 用PYTHON实现将电脑里的所有文件按大小排序,便于清理
- 详解Python编程中基本的数学计算使用
- Python 实现“嫦娥奔月“小动画,一起来看看这漂亮的嫦娥吧
- 15 个顶级 Python 库,你必须要试试!
- 【阶段四】Python深度学习05篇:深度学习项目实战:卷积神经网络的定义、卷积网络的结构与卷积层的原理
- python之dlib使用摄像头实时检测人脸
- 人生苦短,我用python实现人脸(口罩)识别(几十行代码搞定)
- Python编程:asyncio协程编程
- python XML文件解析:用ElementTree解析XML
- Python: 矩阵与线性代数运算
- python基础===新式类与经典类
- python爬虫 -掘金
- python----1
- 【Leetcode刷题Python】162. 寻找峰值
- 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三
- python摄像头实时人脸检测数据收集
- 人脸检测实战终极:使用 OpenCV 和 Python 进行人脸对齐
- 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测眼睛、鼻子、嘴唇和下巴等面部五官
- 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记
- Python爬虫基础学习案例