使用Python实现戴口罩人脸识别

YOLOV3:You Only Look Once 目标检测模型在 Pytorch 当中的实现 2021 年 10 月 12 日更新: 进行了大幅度的更新

本文包含相关资料包-----> 点击直达获取<-------

YOLOV3:You Only Look Once 目标检测模型在 Pytorch 当中的实现


2021 年 10 月 12 日更新: 进行了大幅度的更新,对代码的模块进行修改,加了大量注释。

目录

  1. 性能情况 Performance
  2. 所需环境 Environment
  3. 文件下载 Download
  4. 训练步骤 How2train
  5. 预测步骤 How2predict
  6. 评估步骤 How2eval
  7. 参考资料 Reference

性能情况

训练数据集 权值文件名称 测试数据集 输入图片大小 mAP 0.5:0.95 mAP 0.5
COCO-Train2017 yolo_weights.pth COCO-Val2017 416x416 38.0 67.2

所需环境

torch == 1.2.0 详情请看 requirements.txt,文件具有一定兼容性,已测试 pytorch1.7 和 1.7.1 可以正常运行。

文件下载

训练所需的 yolo_weights.pth 可以在百度云下载。 链接: https://pan.baidu.com/s/1ncREw6Na9ycZptdxiVMApw 提取码: appk

VOC 数据集下载地址如下,里面已经包括了训练集、测试集、验证集(与测试集一样),无需再次划分: 链接: https://pan.baidu.com/s/1YuBbBKxm2FGgTU5OfaeC5A 提取码: uack

训练步骤

a、训练 VOC07+12 数据集

  1. 数据集的准备 本文使用 VOC 格式进行训练,训练前需要下载好 VOC07+12 的数据集,解压后放在根目录
  2. 数据集的处理 修改 voc_annotation.py 里面的 annotation_mode=2,运行 voc_annotation.py 生成根目录下的 2007_train.txt 和 2007_val.txt。
  3. 开始网络训练 train.py 的默认参数用于训练 VOC 数据集,直接运行 train.py 即可开始训练。
  4. 训练结果预测 训练结果预测需要用到两个文件,分别是 yolo.py 和 predict.py。我们首先需要去 yolo.py 里面修改 model_path 以及 classes_path,这两个参数必须要修改。 model_path 指向训练好的权值文件,在 logs 文件夹里。 classes_path 指向检测类别所对应的 txt。 完成修改后就可以运行 predict.py 进行检测了。运行后输入图片路径即可检测。

b、训练自己的数据集

  1. 数据集的准备 本文使用 VOC 格式进行训练,训练前需要自己制作好数据集, 训练前将标签文件放在 VOCdevkit 文件夹下的 VOC2007 文件夹下的 Annotation 中。 训练前将图片文件放在 VOCdevkit 文件夹下的 VOC2007 文件夹下的 JPEGImages 中。
  2. 数据集的处理 在完成数据集的摆放之后,我们需要利用 voc_annotation.py 获得训练用的 2007_train.txt 和 2007_val.txt。 修改 voc_annotation.py 里面的参数。第一次训练可以仅修改 classes_path,classes_path 用于指向检测类别所对应的 txt。 训练自己的数据集时,可以自己建立一个 cls_classes.txt,里面写自己所需要区分的类别。 model_data/cls_classes.txt 文件内容为:

python cat dog ...

修改 voc_annotation.py 中的 classes_path,使其对应 cls_classes.txt,并运行 voc_annotation.py。

  1. 开始网络训练 训练的参数较多,均在 train.py 中,大家可以在下载库后仔细看注释,其中最重要的部分依然是 train.py 里的 classes_path。 classes_path 用于指向检测类别所对应的 txt,这个 txt 和 voc_annotation.py 里面的 txt 一样!训练自己的数据集必须要修改! 修改完 classes_path 后就可以运行 train.py 开始训练了,在训练多个 epoch 后,权值会生成在 logs 文件夹中。
  2. 训练结果预测 训练结果预测需要用到两个文件,分别是 yolo.py 和 predict.py。在 yolo.py 里面修改 model_path 以及 classes_path。 model_path 指向训练好的权值文件,在 logs 文件夹里。 classes_path 指向检测类别所对应的 txt。 完成修改后就可以运行 predict.py 进行检测了。运行后输入图片路径即可检测。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载 yolo_weights.pth,放入 model_data,运行 predict.py,输入

python img/street.jpg

  1. 在 predict.py 里面进行设置可以进行 fps 测试和 video 视频检测。

b、使用自己训练的权重

  1. 按照训练步骤训练。
  2. 在 yolo.py 文件里面,在如下部分修改 model_path 和 classes_path 使其对应训练好的文件; model_path 对应 logs 文件夹下面的权值文件,classes_path 是 model_path 对应分的类

python _defaults = { #--------------------------------------------------------------------------# # 使用自己训练好的模型进行预测一定要修改model_path和classes_path! # model_path指向logs文件夹下的权值文件,classes_path指向model_data下的txt # 如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改 #--------------------------------------------------------------------------# "model_path" : 'model_data/yolo_weights.pth', "classes_path" : 'model_data/coco_classes.txt', #---------------------------------------------------------------------# # anchors_path代表先验框对应的txt文件,一般不修改。 # anchors_mask用于帮助代码找到对应的先验框,一般不修改。 #---------------------------------------------------------------------# "anchors_path" : 'model_data/yolo_anchors.txt', "anchors_mask" : [[6, 7, 8], [3, 4, 5], [0, 1, 2]], #---------------------------------------------------------------------# # 输入图片的大小,必须为32的倍数。 #---------------------------------------------------------------------# "input_shape" : [416, 416], #---------------------------------------------------------------------# # 只有得分大于置信度的预测框会被保留下来 #---------------------------------------------------------------------# "confidence" : 0.5, #---------------------------------------------------------------------# # 非极大抑制所用到的nms_iou大小 #---------------------------------------------------------------------# "nms_iou" : 0.3, #---------------------------------------------------------------------# # 该变量用于控制是否使用letterbox_image对输入图像进行不失真的resize, # 在多次测试后,发现关闭letterbox_image直接resize的效果更好 #---------------------------------------------------------------------# "letterbox_image" : False, #-------------------------------# # 是否使用Cuda # 没有GPU可以设置成False #-------------------------------# "cuda" : True, }

  1. 运行 predict.py,输入

python img/street.jpg

  1. 在 predict.py 里面进行设置可以进行 fps 测试和 video 视频检测。

评估步骤

a、评估 VOC07+12 的测试集

  1. 本文使用 VOC 格式进行评估。VOC07+12 已经划分好了测试集,无需利用 voc_annotation.py 生成 ImageSets 文件夹下的 txt。
  2. 在 yolo.py 里面修改 model_path 以及 classes_path。 model_path 指向训练好的权值文件,在 logs 文件夹里。classes_path 指向检测类别所对应的 txt。
  3. 运行 get_map.py 即可获得评估结果,评估结果会保存在 map_out 文件夹中。

b、评估自己的数据集

  1. 本文使用 VOC 格式进行评估。
  2. 如果在训练前已经运行过 voc_annotation.py 文件,代码会自动将数据集划分成训练集、验证集和测试集。如果想要修改测试集的比例,可以修改 voc_annotation.py 文件下的 trainval_percent。trainval_percent 用于指定(训练集 + 验证集)与测试集的比例,默认情况下 (训练集 + 验证集):测试集 = 9:1。train_percent 用于指定(训练集 + 验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1。
  3. 利用 voc_annotation.py 划分测试集后,前往 get_map.py 文件修改 classes_path,classes_path 用于指向检测类别所对应的 txt,这个 txt 和训练时的 txt 一样。评估自己的数据集必须要修改。
  4. 在 yolo.py 里面修改 model_path 以及 classes_path。 model_path 指向训练好的权值文件,在 logs 文件夹里。classes_path 指向检测类别所对应的 txt。
  5. 运行 get_map.py 即可获得评估结果,评估结果会保存在 map_out 文件夹中。

Reference

https://github.com/qqwweee/keras-yolo3 https://github.com/eriklindernoren/PyTorch-YOLOv3 https://github.com/BobLiu20/YOLOv3_PyTorch

参考文献

  • 基于深度学习的人脸口罩佩戴正确性检测研究(重庆邮电大学·卢玥蒙)
  • 局部遮挡三维人脸识别系统设计与实现(北京邮电大学·邓宇)
  • 基于web的人脸识别登陆和管理系统设计与实现(郑州大学·王哲)
  • 视频中人脸表情识别关键技术与应用(电子科技大学·黄弋)
  • 基于MQTT的智能门禁物联平台设计与实现(华中科技大学·库博)
  • 智慧社区人脸识别系统的设计与实现(华中科技大学·刘合鑫)
  • 人脸识别布控系统的设计与实现(武汉邮电科学研究院·邓锋)
  • 基于大余量余弦损失函数的口罩人脸识别算法研究(太原理工大学·冯子坚)
  • 人脸识别算法及其在视频剪切中的应用研究(辽宁科技大学·刘旭)
  • 基于改进YOLOv5的公共场景下口罩佩戴检测算法(广西民族大学·陈云)
  • 基于深度学习口罩佩戴检测算法的研究与系统实现(青岛科技大学·宋金秋)
  • 基于深度学习的戴口罩人脸识别研究(青岛科技大学·苏海涛)
  • 视频中人脸表情识别关键技术与应用(电子科技大学·黄弋)
  • 基于web的人脸识别登陆和管理系统设计与实现(郑州大学·王哲)
  • 基于人脸聚类的图片管理系统的设计与实现(首都经济贸易大学·王子涛)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码工坊 ,原文地址:https://bishedaima.com/yuanma/35785.html

相关推荐

发表回复

登录后才能评论