最近,口罩成了绝对的热门话题。疫情之下,出门不戴口罩,不仅是对自己的不负责任,也是对他人的潜在威胁。所以很多小区门口都有保安,谁不戴口罩就吼回去(吓死我了)。即便如此,人工巡检总有漏人的可能,保安大叔也因为一直盯着他们看的很累。今天我们就来试试用电脑自动检测人脸是否戴口罩的可行性。如果可行,那么根据我们之前的推送:人脸检测自动开启,可以做一个实时摄像头,如果有人没有戴口罩,会发出警告给保安,提高保安的工作效率守卫。当然,如果要识别人脸是否戴口罩,需要收集大量的训练数据,不过最近百度开源了他们的人脸口罩识别模型:PaddleHub口罩检测。今天我们来试试这个模型的效果。一、准备为了实现这个实验,Python是必不可少的。如果你还没有安装Python,推荐阅读我们的文章:超级详细的Python安装指南。然后,我们需要安装百度的paddlepaddle。进入他们的官网有详细的说明:https://www.paddlepaddle.org.cn/install/quick根据自己的情况选择这些选项。最后一个CUDA版本,由于这个实验不需要训练数据,也不需要大量的计算,所以直接选择CPU版本就可以了。选择完成后,下方会出现安装指南。不得不说,Paddlepaddle在这些方面还是挺用心的(只是名字不好听)。注意,如果你的Python3环境变量中的程序名是Python,记得把语句改成Pythonxxx,安装如下:python-mpipinstallpaddlepaddle-ihttps://mirror.baidu.com/pypi/simple需要的安装paddlehub:pipinstall-ihttps://mirror.baidu.com/pypi/simplepaddlehub2。写代码Paddlehub作为一个深度学习平台,使用还是蛮方便的,尤其是对我(换包小王子)非研究用户。一共只有四步:1.导入模块和图片2.加载模型3.分类预测4.结果展示将我们需要测试的图片保存在代码文件的同目录下,并命名为3.jpg:want看这位小姐姐是如何摘下面具的。代码如下:importpaddlehubashubimportmatplotlib.pyplotaspltimportmatplotlib.imageasmpimg#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行代码:(data={"image":["./3.jpg"]})执行后的分类结果可以在同目录下的detection_result目录下查看。所以,说20行代码是适度的,3行代码就足够了。3.结果为我们测试的图片,结果如下:MASK:97.64%表示此人戴着口罩,可靠性为97.64%。NOMASK:97.41%表示此人没有戴口罩,可靠性为97.41%。最后一位大叔也是MASK,但是其可靠性只有54.31%,所以很可能是误判。在我们的实际应用中,只需要提高警告阈值(比如80%)就可以筛掉这些不可靠的分类。不过这个模型有一个缺点,就是在远距离判断人的时候不是很准确:离摄像头最近的人可能因为是侧脸,五官不明显,无法识别。但是,远处戴口罩的人被识别为没有戴口罩,这是这个模型的错误。但是,通过阈值滤波和缩短相机拍摄距离,该模型仍然可以在现实生活中使用。这是我们文章的结尾。如果你今天想要我们的Python教程,请继续关注我们。如果对您有帮助,请点击下方的赞/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实用书(pythondict.com)不只是一本书欢迎关注公众号:Python实用书原文来自Python实用书:Python20行代码检测人脸是否戴口罩
