公共场合口罩目标检测模型

2020-02-06  本文已影响0人  yyj_c69a

2020春节,新型冠状病毒肆虐华夏大地,中华儿女举国防止疫情扩散蔓延,为防止疫情扩散,做好个人防护是每个公民的义务,特别是公共场合,火车站、飞机场和汽车站,人流量大的密集地区,做好人员口罩监控相当有必要,针对网友提供的口罩检测数据集,做了一个公共场合人员是否带口罩得到检测模型,检测模型效果还不错。话不多说,先上图。

本模型的数据集来源于知乎防疫口罩佩戴识别的目标检测模型

本模型是基于keras-yolov3算法开发,yolov3的优势是识别速度快,但是准确率有待提高。

1、VOC数据集处理。

制作VOC数据集

VOC全称Visual Object Classes,出自The PASCAL Visual Object Classes(VOC)Challenge,这个挑战赛从2005年开始到2012年,每年主办方都会提供一些图片样本供挑战者识别分类。

PASCAL VOC官网:http://host.robots.ox.ac.uk/pascal/VOC/

2.1 格式介绍

可以在官网中下载每一年的数据集,也可以自己仿照VOC的格式制作。

其文件格式如下图:

下面是本人对每个文件功能的总结和理解:

我们可以把官方下载的VOC数据集里面的内容删除,只保留各个文件夹;或者按照这个格式建立一个文件夹集。

这个文件夹我们直接放到前面的工程文件keras-yolo3-master中(以便之后的训练不用更改路径)。

2、生成索引

VOC2007文件夹中新建一个**.py文件**(名字随意)

在py文件中输入以下代码并运行,用以生成索引

之后就会在ImageSets\Main文件夹中生成几个索引文件

{class}_train.txt 保存类别为 class 的训练集的所有索引

{class}_val.txt 保存类别为 class 的验证集的所有索引

{class}_trainval.txt 保存类别为 class 的训练验证集的所有索引

3. YOLO模型训练

3.1 生成训练索引

在工程文件keras-yolo3-master中,修改voc_annotation.py文件

主要是把里面classes的内容改成要训练的对象(要和前面标记的一致,这里我只有三个对象"classes = ["未戴口罩","已戴口罩"]",后两个没加上,图片是老的了)

运行这个py程序,生成三个文件"2007_test.txt", “2007_train.txt”, “2007_val.txt”,把前缀"2007_"去掉,得到 “test.txt”, “train.txt”, “val.txt”。

3.2 修改配置文件

首先要修改一下 model_data 文件夹中的coco_classes.txt和voc_classes.txt,将里面的对象改成自己要训练的对象名称

3.3 执行训练

直接将model_data文件夹中原版的yolo.h5复制,改名为yolo_weights.h5,将其作为预训练权重。

PS: 对于这个预训练权重,其实是迁移学习的方法,有些博文其实是让修改yolo3.cfg文件,然后重新生成权重文件,但是我发现这样的做法最后训练时会出现val_loss:nan的情况,所以我建议直接用原来官方的权重文件yolo.h5。还有一些博文修改了原来train.py的训练代码,不预加载训练权重,重头开始训练,但是我发现由于样本量少,这样训练出来的结果很不稳定,所以我也不推荐。

完成yolo_weights.h5文件之后,在keras-yolo3-master工程文件夹中找到train. py,根据需要,可以更改里面的迭代次数epochs 等参数。如果显存小的话,可以改小batch_size。

之后运行这个python程序,下面是我的运行效果

训练结束后,会生成很多过程的h5文件,最后只需要保留trained_weights_final.h5就行。

训练样本约400多张,最后两种loss都降到15左右。

4. 模型验证

参照前面1.3节内容,可以在yolo. py 中把权重文件的名字改成 trained_weights_final.h5 ,也可以直接把 trained_weights_final.h5名字改成 yolo. h5,总之就是之后要加载新的权重文件。

同样地,则在cmd中的工程文件路径下输入:

python yolo_video.py --image

1  输入图片路径(这里是将图片直接放在工程文件里,所以直接输入名字就行)

效果如下:

附上github的代码链接。https://github.com/huxian123/mask_detecting.git

上一篇下一篇

猜你喜欢

热点阅读