硬件环境(个人笔记本电脑)
软件环境
关于开发环境稍后我会专门写一篇博客详细介绍,帮助大家避雷。很多小白可能还没机会感受AI的快乐就被配置环境劝退了哈哈哈,想当初我也是踩了很多很多坑,说多了都是泪啊 ~
YOLOv3的原理不和大家讲了,毕竟不是一句两句话能说清的,对于初学者来说肯定有些难理解,不过没关系,大家一开始都是初学者,慢慢来别放弃,总有一天大家都能看懂原理 ~
但是要和大家展示一下下载下来的yolov3文件夹结构,为了方便描述,博主就称它为根目录吧 ~
就是下图,有一个大概的印象,便于后面我们复现。这个文件夹我在评论区给到大家 ~~
配置好环境后,我们要准备自己的人脸口罩数据集了!
要检测口罩佩戴情况,就要先获取一定数量的相关图片,放入设计好的神经网络中训练(本文是YOLOv3),这些相关图片就叫做数据集,啊当然不只是单纯的图片,我们还要对这些图片做一些处理,也就是本章内容。
笔者的数据集是从一位老前辈那里求来的,是一个非常完美非常OK的数据集,省的大家自己去爬虫了。
数据集包含6366张高质量图片,有戴口罩的人、不戴口罩的人、用手或其他物品遮挡脸的人等多种情况,确保样本的多样性和全面性。
数据集文件夹VOCdevkit在根目录里,结构见下图。其中,
我们使用labelImg手动标注,如下图:选择界面左侧的“Open”打开图像后,点击“Create RectBox”画框,就可以画矩形框并标记(类别会在画好目标框后自动弹出以供选择)。
labelimg这个工具能够在一张图片中标注多个目标,非常方便。关于labelimg的详细使用方法在此。
不过我知道你们都懒得亲自动手做,所以我把我的数据集分享给你们。
将所有生成的标签文件放入Annotations文件夹中,便完成了数据集制作的第一步,每个图片和生成的xml文件是一一对应的。
上一步制作出原始图像的.xml文件后,还需要将所有图像分类。
运行VOCdevkit->VOC2007下的voc2yolo3.py文件,记得检查一下其中的xmlfilepath和saveBasePath路径,xmlfilepath对应Annotations,saveBasePath对应ImageSets/Main
多说几句,下图是voc2yolo3.py中的主要代码,它的用途是:一般我们设训练验证集 : 训练集 = 1 : 9,训练验证集中10%用作验证集,90%用作测试集。
运行完voc2yolo3.py这个神奇的文件后,我们就得到了trainval.txt, test.txt, train.txt和val.txt这四个文件(在VOCdevkit\VOC2007\ImageSets\Main文件夹下),分类保存不同用途的图片名称。
完成训练集的划分之后,我们运行voc_annotation.py文件(文件位置在根目录)。这样一来,可以生成train.txt, val.txt和test.txt三个文件(也在根目录),分别保存着训练、验证和测试集的路径。
我随便打开一个比如train文件给大家瞅一眼,这些文本文档中每一行为一张图片的信息,依次是图片的路径、名称、尺寸和目标框的坐标及类别标签(0表示没口罩,1表示有口罩)。
如果一张图中有多个对象,则依次罗列各个对象的位置信息和类别。
还要再强调一下,路径问题是导致出错的主要原因,咱们大家每个人电脑的情况都不同,所以一定要仔细检查核对自己的路径哈 ~~
至此,我们的人脸口罩数据集和基本配置文件就已经准备完毕了,然后我们可以去睡觉了 ~ 其他的就听天命吧 ~
啊睡觉之前还有最后一步:在根目录下新建一个logs文件夹,然后运行train.py,再然后就是漫长的训练过程,训练好的模型存放在logs下。
博主第一次训练时batchsize设置为2,大概训练了五六个小时,效果比较差,于是把batchsize调整到10又训练了大概一天吧(害比较久远了我也记不太清,反正就是训练了很久很久),最后得到的模型效果就比较好了。如果大家有什么提高模型精度和速度的方法也欢迎分享~
这次真的可以去睡觉/吃火锅/吃瓜/玩耍了!
耍完了睡饱了,电脑也训练好了,接下来就是见证奇迹的时刻,鸡不鸡冻?超级鸡冻的!
好了淡定一下,然后去logs文件夹下,把“trained_weights_final.h5”文件名复制一下,是的没错它就是我们最终训练出的最优的模型(笑
复制了之后打开根目录下yolo.py文件,把第23行model_path改为logs/trained_weights_final.h5
然后第24行如果你想用轻量版那就model_data/tiny_yolo_anchors.txt,标准版就model_data/yolo_anchors.txt
改好之后保存。
然后正式开始检测。敲键盘win+r,如下图
输入cmd,点击确定,进入命令行
用“cd”命令切换到根目录下,比如在我的电脑上,这套代码的位置是C:\Users\13262\Desktop\graduationProject\yolov3_keras_GUI\yolov3_keras_GUI,那就在命令行中输入“cd C:\Users\13262\Desktop\graduationProject\yolov3_keras_GUI\yolov3_keras_GUI”如下图
然后运行yolo_video.py程序,分为以下3种情况 :
模型训练好了,效果也看到了,接下来如果能集成一个UI界面就显得超酷了!
博主采用PyQt5进行设计,首先看一下最后的效果GIF图,运行后的界面如下,因为csdn不允许上传太大的图片,所以我把界面的三个功能分成三张图片上传
2.上传本地图片检测
咳咳,我感觉自己讲的差不多了,最后祝福大家都能在基于深度学习的目标检测的道路上一路顺风 ~ 收获多多 ~
不过由于博主能力有限,上述步骤可能有些遗漏了细节的地方,希望大家热心指出 ~~
然后有什么问题大家可以留言或者私聊我,我们一起学习一起探讨一起进步 ~~
最后的最后,你们的点赞打赏和关注是博主最大的动力 ~ 大部分代码都免费分享给大家了,如果想要获取完整代码文件(包括我自己训练的权重,Gui界面代码等)欢迎私聊我 ,我会很快回复 ~~
创作和分享真是非常不易啦,希望大家多多理解和支持 ~~