Git Product home page Git Product logo

maskdetect's Introduction

MaskDetect

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

Preview

nomask_sample

rightmask_sample

测试

下载模型文件

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

模型文件对应说明如下:

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

下载后,请将模型文件放在 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

在此表示感谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.