在如今面临的新冠疫情的大危机下,每个人带上口罩不仅是对自己负责,同时也是对他人负责,但总有一些人确反而其道,不想戴,极有可能造成感染,为此口罩检测的作用就发挥出来了,以确保每个人都应该戴上口罩,否则施以惩戒措施,还社会一个安全的环境。
对于该paddleHub的口罩检测,有一下步骤:
1、定义待预测数据
2、加载预训练模型
3、预测
4、部署服务器
5、移动端部署
定义待预测数据
# 待预测图片
test_img_path = ["./test_mask_detection.jpg"]
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread(test_img_path[0])
# 展示待预测图片
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 os
import cv2
imgs = [cv2.imread(test_img_path[0])]
# 口罩检测预测
# visualization=True 将预测结果保存图片可视化
# output_dir='detection_result' 预测结果图片保存在当前运行路径下detection_result文件夹下
results = module.face_detection(images=imgs, use_multi_scale=True, shrink=0.6, visualization=True, output_dir='detection_result')
for result in results:
print(result)
# 预测结果展示
path = os.path.join('detection_result', 'test_img.jpg')
img = mpimg.imread(path)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
效果图
部署服务器
$ hub serving start -m pyramidbox_lite_server_mask -p 8866
部署移动端
// 读取图片
cv::Mat img = imread(img_path, cv::IMREAD_COLOR);
// 加载人脸检测或者口罩佩戴判别模型
MobileConfig config;
config.set_model_dir(model_dir);
PaddlePredictor* predictor =
CreatePaddlePredictor(config);
// 设置输入
Tensor* input_tensor = predictor->GetInput(0);
input_tensor->Resize({1, 3, img.rows,img.cols});
set_input(img, input_tensor); //调用自定义函数
// 执行
predictor->Run();
// 输出结果
Tensor* output_tensor = predictor->GetOutput(0);
show_output(img, output_tensor); //调用自定义函数