基于百度paddlehub的人脸口罩检测

Posted ZHW_AI课题组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于百度paddlehub的人脸口罩检测相关的知识,希望对你有一定的参考价值。

作者介绍

陈锡伟,男,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:18956019342@163.com

下载paddlepaddle以及paddlehub框架

进入自己的环境,分别输入下面的代码下载paddlepaddle和paddlehub

pip install paddlehub==1.7.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddlepaddle==1.7.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

口罩检测

获取图片

方法一

从网上下载一张戴口罩/不带口罩的人脸图片放到项目文件中:复制图片,选中项目文件ctrl+v直接粘贴即可(如下图我的项目文件是红框标出的pythonProject,选中之后粘贴)
在这里插入图片描述

将代码中方法1的图片名称替换成自己的图片名称

test_img_path = ["./自己的图片名称1","./自己的图片名称2"]

方法二

在桌面新建一个txt文件,将图片路径写入(不要带有中文否则会报错注意换行),保存
在这里插入图片描述
复制TXT文件,选中项目文件ctrl+v直接粘贴即可
在这里插入图片描述
将方法2代码中的txt文件名称替换成自己的txt文件名称

with open('自己的txt文件名称.txt', 'r') as f:   #r:以只读方式打开文件。文件的指针将会放在文件的开头。
    test_img_path=[]
    for line in f:
        print(f)
        test_img_path.append(line.strip())
print(test_img_path)

运行口罩检测程序

运行方法1或者2时记得把另一个方法注释掉,这里注释的是方法2,运行时需要联网


import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 方式1,待预测图片
test_img_path = ["./自己的图片名称1.jpg","./自己的图片名称2.jpg"]

'''方式2,读取txt文件形式导入待测图片
with open('自己的txt文件名称.txt', 'r') as f:  
    test_img_path=[]
    for line in f:
        print(f)
        test_img_path.append(line.strip())
print(test_img_path)
'''
#展示图片
for i in range(len(test_img_path)):

    img = mpimg.imread(test_img_path[i])

    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()

import paddlehub as hub

module = hub.Module(name="pyramidbox_lite_mobile_mask")


import cv2

imgs = [cv2.imread(test_img_path[0])]
input_dict = {"image": test_img_path}
results = module.face_detection(data=input_dict, images=imgs, use_multi_scale=True, shrink=0.6, visualization=True, output_dir='detection_result')
#print(results)
for result in results:
    print(result)

结果

运行完之后,项目中会出现一个detection_mask文件夹用来保存结果图片,同时会输出一个字典值
在这里插入图片描述
{‘data’: [{‘label’: ‘NO MASK’, ‘confidence’: 0.9999990463256836, ‘top’: 38.667025310886594, ‘bottom’: 177.9998655084175, ‘left’: 218.0001344915825, ‘right’: 327.99991630045133}], ‘path’: ‘./2.jpg’}
其中,label有’MASK’和’NO MASK’两种结果:'MASK’表示戴了口罩,'NO MASK表示没有佩戴口罩。‘left’/‘rigth’/‘top’/'bottom’表示口罩在图片当中的位置。'confidence’表示预测为佩戴口罩’MASK’或者不佩戴口罩’NO MASK’的概率大小。

以上是关于基于百度paddlehub的人脸口罩检测的主要内容,如果未能解决你的问题,请参考以下文章

五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)

口罩人脸检测与分类开源代码汇总

试了下百度PaddleHub开源的mask detection项目

基于Opencv-python人脸口罩检测(附完整代码)

基于Opencv-python人脸口罩检测(附完整代码)

基于Opencv-python人脸口罩检测