【项目015】口罩佩戴检测(学生版) 教学版 | 返回首页

作者:欧新宇(Xinyu OU)
当前版本:Release v1.0
开发平台:Paddle 2.3.2
运行环境:Intel Core i7-7700K CPU 4.2GHz, nVidia GeForce GTX 1080 Ti
本教案所涉及的数据集仅用于教学和交流使用,请勿用作商用。

最后更新:2022年2月4日


【实验目的】

  1. 基本学会使用PaddleDetection完成目标检测任务
  2. 能够使用PaddleDetection完成不同模型的训练(train.py)、验证(eval.py)和推理(infer.py)。
  3. 学会使用统计表记录训练结果,并初步学会对实验结果进行分析和总结

【数据集及任务要求】

本实验使用 口罩检测(Face)数据集 完成,目的是利用PaddleDetection工具包训练口罩检测模型,判断给定的人物图片是否正确佩戴口罩,该数据集包含with_mask、without_mask、mask_weared_incorrect三个目标类别,共计853张图片。本数据集已经按照7:1:2的比例进行划分, 其中训练验证集样本681个(80%),训练集样本595个(70%), 验证集样本86个(10%), 测试集样本172个(20%), 共计853个。

数据集下载地址:https://aistudio.baidu.com/aistudio/datasetdetail/127209

下面给出几个样图:

上图给出了5个人的检测结果,其中4个人佩戴了口罩(with_mask),1个人未佩戴口罩(without_mask)。

上图给出了5个人的检测结果,其中1个人佩戴了口罩(with_mask),2个人未佩戴口罩(without_mask),2个人佩戴不正确(mask_weared_incorrect)。由于模型并非很完善,因此被认定为佩戴不正确(mask_weared_incorrect)的人,同时也被检测为未佩戴(without_mask)口罩。

所有作业均在AIStudio上进行提交,提交时包含源代码和运行结果


【任务一】 实验结果统计表

【实验要求】 完成下列三个模型的训练,并完成下面的实验结果统计表(任务一);

序号 模型名称 Backbone主干网络 初始学习率 test mAP FPS with_mask without_mask mask_weared_incorred
A faster_rcnn_r34_fpn_1x_voc ResNet34
B ppyolo_mbv3_small_voc
C yolov3_mobilenet_v3_large_ssld_36e_voc

【任务二】 图像预测

【实验要求】 编写python代码,使用【任务一】中训练获得的模型中的一个,实现对下列三幅图片的推理(infer.py),并在本notebook中进行可视化。(图片可直接从本页面另存到本地)

####### 导入依赖库
import os
import matplotlib.pyplot as plt 
import cv2

####### 设置PaddleDetection工作路径
workspace = 'D:\\Workspace\\MyProjects\\PaddleDetection-release-2.3'
os.chdir(workspace)

####### 1. 执行预测Inference
# 1.1 设置图片路径
 

# 1.2 设置模型路径


# 1.3 设置Inference图像的输出和读取路径


# 1.4 执行预测脚本


####### 2. 可视化Inference结果
plt.figure(figsize=(30,12))
ax1 = plt.subplot(1,3,1)
infer_img_path1 = os.path.join(infer_path, img_file[0])
infer_img1 = cv2.imread(infer_img_path1)
ax1.set_title('Demo1')
plt.imshow(infer_img1)
ax2 = plt.subplot(1,3,2)
infer_img_path2 = os.path.join(infer_path, img_file[1])
infer_img2 = cv2.imread(infer_img_path2)
ax2.set_title('Demo2')
plt.imshow(infer_img2)
ax3 = plt.subplot(1,3,3)
infer_img_path3 = os.path.join(infer_path, img_file[2])
infer_img3 = cv2.imread(infer_img_path3)
ax3.set_title('Demo3')
plt.imshow(infer_img3)

【任务三】 训练日志

【实验要求】 提交模型的训练日志,直接将训练日志粘贴到如下 Markdown Cell 中【诚信考查】 注意每次训练结果均不可能完全一样