美文网首页
公共场合口罩目标检测模型

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

作者: yyj_c69a | 来源:发表于2020-02-06 13:07 被阅读0次

    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

    相关文章

      网友评论

          本文标题:公共场合口罩目标检测模型

          本文链接:https://www.haomeiwen.com/subject/ckaexhtx.html