让input和button同一行展示_用Python10行代码实现自动检测人脸是否佩戴口罩

649c9b85435c16927e4a245c3330e958.png

最近,口罩成为绝对热门的话题,在疫情之下,出门不戴口罩不仅对自己不负责,对他人而言也是一种潜在的威胁。所以许多小区都有保安在门口守着,谁要是不戴口罩就吼回去(吓死我了)。

尽管如此,人工检测总有可能漏掉人,而且无时无刻地盯着,保安叔叔也特别累。今天我们就来尝试用计算机自动检测人脸是否佩戴口罩的可行性,如果可行,那么根据我们以前的推送: 人脸检测自动开机 ,就可以做一个实时摄像头,如果发现有人没戴口罩则发送警告给保安,以提高保安的工作效率。

当然,想要识别人脸是否佩戴口罩,需要做很多训练数据的收集,不过最近百度开源了他们的人脸口罩识别模型: PaddleHub 口罩检测 。我们今天就来试试这个模型的效果。

准备

为了实现这个实验,Python是必不可少的,如果你还没有安装Python,建议阅读我们的这篇文章哦: 超详细Python安装指南 。

然后,我们需要安装百度的paddlepaddle, 进入他们的官方网站就有详细的指引:

9bee573744324e3a2e4ddb028734153f.png

根据你自己的情况选择这些选项,最后一个CUDA版本,由于本实验不需要训练数据,也不需要太大的计算量,所以直接选择CPU版本即可。选择完毕,下方会出现安装指引,不得不说,Paddlepaddle这些方面做的还是比较贴心的(就是名字起的不好)。

d9cf283a6ab55ea6062949a3f4783c11.png

要注意,如果你的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
编写代码

Paddlehub作为一个深度学习平台,用起来还是相当方便的,尤其是对于我这种非研究型应用者。一共就只有四个步骤:

1.引入模块和图片 2.载入模型 3.分类与预测 4.结果展示

把我们需要测试的图片保存在该代码文件的同一目录下,命名为3.jpg:

26fcc92f3ae77474686a07815b5b8a27.png

想看这个小姐姐摘下口罩的样子

代码如下:

import paddlehub as hubimport matplotlib.pyplot as pltimport 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 hubmodule = hub.Module(name="pyramidbox_lite_mobile_mask")results = module.face_detection(data={"image": ["./3.jpg"]}) 

执行完后的分类结果在同一目录下的 detection_result 目录下查看即可。所以说,说20行代码是谦虚,3行代码就够了。

结果展示

我们测试的那张图片,结果如下:

69e069d780fc1cb3459d1790eecbf956.png

MASK:97.64% 代表这个人戴了口罩,可信度为97.64%。

NO MASK: 97.41% 代表这个人没戴口罩,可信度为97.41%

最后面那个大叔也是MASK,但是它的可信度只有54.31%,所以很可能是误判,在我们实际应用的时候,只需要把警告阈值(比如80%)提高,即可筛去这些不可信的分类。

不过,这个模型有一个缺点就是,对于远距离的人判断并不是很精确:

bfd976fae00db72830711026b1c62a52.png

离镜头最近的这个人可能是因为侧脸的原因,脸部特征不明显识别不出来。但是远处的这些戴着口罩却被识别为没戴口罩的,就是这个模型的锅了。不过,通过阈值过滤和缩短摄像头摄影距离还是可以将这个模型用于实际生活中的。

最后,小编整理了全套Python零基础资料,都可以找我拿,什么都不要,拿的方式是:

领取方式:

转发本文,私信回复:资料,获取全套Python零基础资料。

来源:此文章为第三方转载,如有侵权请联系小编删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值