README

该博客介绍了基于Keras的YOLOv3模型在口罩佩戴检测上的应用。作者提供了训练和测试模型的详细步骤,包括数据集的准备、模型训练和使用。训练数据集包含27374个样本,分为有口罩、无口罩和错误佩戴口罩三类。模型在预训练的YOLO权重上进一步训练,并针对正负样本不平衡问题进行了处理。尽管存在漏测现象,但该模型为口罩检测提供了一个实用的解决方案。
摘要由CSDN通过智能技术生成

MaskDetect

基于深度学习的口罩佩戴检测,Keras-YOLOv3 实现。

Preview

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2rDUwnJ-1651304219361)(VOC_data/VOC_mask/test_img/01_out_show.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSC3mjLa-1651304219363)(VOC_data/VOC_mask/test_img/02_out.jpg)]

测试

下载模型文件

模型文件存储在百度云上:MaskDetect_model(提取码: yphs)

模型文件对应说明如下:

模型文件说明
trained_weights_final_12385.h5在大数据集上训练的模型
trained_weights_final_147.h5在初代数据集上训练的模型 *
yolo_weights.h5YOLO 官方预训练模型

下载后,请将模型文件放在 model_data 目录下。

* 使用初代模型,请注意修改 voc_annotation.pymodel_data/voc_classes.txt 中类名为 rightmask wrongmask nomask

开始测试

对于图片:python3 yolo_video.py [OPTIONS...] --image

对于视频:python3 yolo_video.py [video_path] [output_path (optional)]

yolo_video.py 完整的选项可以通过 python3 yolo_video.py --help 查看。

训练

准备数据集

你需要按照 VOC 数据集的格式准备数据集,VOC_data/VOC_mask 目录用于存放数据。

VOC_mask  
    ├─data_list # 存放数据集列表文件,建议由 create_dataset.py 生成  
    ├─img # 存放图片文件  
    ├─label # 存放图片标签,xml 格式  
    └─test_img # 存放了两个样例,与训练无关。  

修改类名

修改根目录下的 voc_annotation.py 中第 7 行的 classes 数组为数据对应类别。
修改 model_data 目录下的 voc_classes.txt 为数据对应类别。

处理数据并生成索引

VOC_data/VOC_mask 目录下的 data_proc.py 可以帮助处理数据集,完成统一命名和数据对应,如果数据集格式本身就规范,则没有必要使用它。

将图片放入 img 目录,将标签放入 label 目录之后,运行 VOC_data/VOC_mask 目录下的 create_dataset.py,该程序将在 data_list 目录下生成 test.txt train.txt trainval.txt val.txt 这四个列表文件。

在根目录下,运行 voc_annotation.py,程序将在根目录下生成用于训练的数据列表。

开始训练

在根目录下,运行 train.py 进行训练。可以根据情况修改 train.py 中的参数。

细节

环境

训练及测试的环境如下:

  • Python: 3.6.9
  • Keras: 2.2.0
  • TensorFlow: 1.6.0

数据集

更新数据集(12385 张)

我们使用了新的更大的数据集进行训练,新的数据集的组成如下:

人脸样本类别数量
有口罩人脸样本7056 个
无口罩人脸样本20318 个
共计27374 个
图片类别数量
仅包含有口罩样本的图片3943 张
仅包含无口罩样本的图片8110 张
包含有口罩、无口罩样本的图片329 张
共计 *12385 张

* 包含 3 张未处理的无效样本(03580 05301 06124

新的数据集是下面三个开源数据集的联合数据集,在这里向他们的贡献表示感谢:

初代数据集(147 张)

训练使用的数据集:hikariming/virus-mask-dataset
数据集分为三个类:正确佩戴口罩(rightmask)、错误佩戴口罩(wrongmask)、未佩戴口罩(nomask)。经过数据清洗后,剩余 147 个有效样本用于训练和评估。

训练

考虑正负样本不均衡的问题,应用了 oversampling。

考虑迁移学习,在 YOLO 官方预训练的权重上继续训练 100 轮,loss 降至 22 左右。

不足

实测对于单张照片存在漏测的现象。

引用及致谢

训练使用了 hikariming, AIZOO, hamlinzheng 公开的口罩检测数据集

Keras-YOLOv3 框架来自:qqwweee/keras-yolo3

在此表示感谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值