/PyTorch-YOLOv3-Mask_Detection

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

PyTorch-YOLOv3-Mask_Detection

● 使用YOLOv3实现口罩佩戴检测

训练100个epochs,在验证集上效果:

class AP
‘0’:face_not_mask 0.845
‘1’:face_mask 0.995

mAP:0.920

检测效果图: image image image image

下载数据集

链接: https://pan.baidu.com/s/1SqjBKCO_IupeiCZYK3R73w 提取码: ftng

下载预训练模型

链接:https://pan.baidu.com/s/1mzt_o46gsa9_QllEAiVK4Q 提取码:7nx3
将预训练权重放在weights文件夹下。

创建模型配置文件

$ cd config/
$ bash create_custom_model.sh 2

修改类别名

将data/custom文件夹下的classes.names文件内容修改为:

face_not_mask
face_mask

数据处理

数据集解压后将JPEGImages中的图片放在data/custom/images下,Annotations文件夹放在data/custom/labels下,使用如下命令生成标签,(标签格式为[label_idx x_center y_center width height])。

$ cd data/
$ cd custom/
$ python3 label_processing.py

划分训练集和测试集

使用如下命令生成train.txt和valid.txt:

$ cd data/
$ cd custom/
$ python3 make_train_valid.py

训练

执行如下命令(训练好的权重存放在checkpoints文件夹下):

$ python3 train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data

加载预训练权重,执行如下命令:

$ python3 train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --pretrained_weights weights/yolov3_ckpt_99.pth

测试

执行如下命令:

$ python3 test.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --weights_path weights/yolov3_ckpt_99.pth --class_path data/custom/classes.names

注意权重路径。

检测

将需要检测的图片放在data/samples下,执行如下命令(输出图片存放在output文件夹下):

$ python3 detect.py --model_def config/yolov3-custom.cfg --weights_path weights/yolov3_ckpt_99.pth --class_path data/custom/classes.names

注意权重路径。