基于Yolov5的目标检测(以口罩检测为例)

口罩数据集:GitHub - X-zhangyang/Real-World-Masked-Face-Dataset: Real-World Masked Face Dataset,口罩人脸数据集

yolov5 源码:GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

一.深度学习目标检测算法分类

1. 基于区域提取的两阶段目标检测

1.1 SPP-Net

1.2 R-CNN

基于Yolov5的目标检测(以口罩检测为例)_第1张图片

 1.3 FAST R-CNN

基于Yolov5的目标检测(以口罩检测为例)_第2张图片

 1.4 FASTER-CNN

基于Yolov5的目标检测(以口罩检测为例)_第3张图片

2. 基于回归的单阶段为目标检测

2.1 YOLO系列(YOLO,YOLOv1,2,3,4,5,7)

基于Yolov5的目标检测(以口罩检测为例)_第4张图片

2.2 OverFeat

二.YOLO系列目标检测算法介绍

  1. YOLOv1YOLOv1是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。
  2. YOLOv2YOLOv2相较v1版本,预测更准确速度更快识别对象更多这三个方面进行了改进
  3. YOLOv3YOLOv3的Bounding Box由YOLOv2又做出了更好的改进
  4. YOLOv4:YOLOv4结合了大量前人研究技术,加以组合并进行适当创新的算法,实现了速度和精度的完美平衡。 
  5. YOLOv5:YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。在COCO数据集上面的测试效果较好。

三 .Yolov5介绍

 3.1 YOLOv5网络模型主要包括:Yolov5s、Yolov5m、Yolov5l、Yolov5x

基于Yolov5的目标检测(以口罩检测为例)_第5张图片

 3.2 Yolov5s网络为Yolov5系列中深度最小,特征图的宽度最小的网络。而后面的3种则是在此基础上不断加深,不断加宽,速度的消耗也在不断增加

3.3 YOLOv5主要部分

基于Yolov5的目标检测(以口罩检测为例)_第6张图片

 四、基于yolov5的人脸口罩识别检测

4.1 受新型冠状病毒的影响,人脸口罩佩戴检测成为了当前急需的应用,而YOLOv5作为目前检测能力较强的目标检测技术,因此,结合本次专业认识实习以及所学知识,我使用了YOLOv5来实现人脸口罩佩戴的检测。实践的内容包括:运用网络爬虫爬取一定量的数据集,运用MakeSense对数据集进行打标签,然后在云服务器上利用YOLOv5网络模型训练数据集得到最佳模型,最后利用其实现人脸口罩佩戴的一定精度的检测。

4.2 实现过程:

4.2.1:获取并准备数据集(此数据集较小,需要大数据集的可参考我上传的资源或者开源数据集)

Part2:包括100张(不佩戴口罩)

Part3:包括100张(佩戴口罩)

4.2.2:利用MakeSense进行逐个打标签 (也可以使用labelme进行打标签)

MaskSense上手快,使用较为容易

链接: Make Sense

基于Yolov5的目标检测(以口罩检测为例)_第7张图片

 基于Yolov5的目标检测(以口罩检测为例)_第8张图片

 基于Yolov5的目标检测(以口罩检测为例)_第9张图片

4.2.3. 为后期的训练

需要将数据集mydata首先划分为两个部分(一个存放图片,一个存放标签)

1.image, 2.labels

并划分为训练集,测试集与验证集

1.test, 2.train, 3train_2

 基于Yolov5的目标检测(以口罩检测为例)_第10张图片

4.2.4 文件目录介绍

data:主要是存放一些超参数的配置文件,是用来配置训练集和测试集还有验证集的路径,其中还包括目标检测的种类数和种类的名称;还有官方提供测试的图片。训练自己的数据集需要修改其中的yaml文件

models:里面主要是一些网络构建的配置文件和函数,其中包含了该项目的四个不同的版本,分别为是s、m、l、x

utils:存放的是工具类的函数,里面有loss函数,metrics函数,plots函数等等

weights:放置训练好的权重参数

detect.py:利用训练好的权重参数进行目标检测,可以进行图像、视频和摄像头的检测

train.py:训练自己的数据集的函数

test.py:测试训练的结果的函数

4.2.5 yaml文件配置

在开始训练前还需要对项目里的相关文件进行修改,一个是数据配置文件,另一个是模型配置文件首先是数据配置文件,在data下找到coco.yaml,将其复制一份再重命名为mydata.yaml,修改路径以及类的个数与标签名称

基于Yolov5的目标检测(以口罩检测为例)_第11张图片

4.2.6 train.py文件中的路径以及参数

修改模型的配置文件,train.py中默认使用的yolov5s.pt这个权重,可以修改为yolov5m等,或自己训练出来的best.pt

基于Yolov5的目标检测(以口罩检测为例)_第12张图片修改

基于Yolov5的目标检测(以口罩检测为例)_第13张图片

4.2.7 开始训练

基于Yolov5的目标检测(以口罩检测为例)_第14张图片

 基于Yolov5的目标检测(以口罩检测为例)_第15张图片

4.2.7 训练300轮 一共用时3.1h

训练结果分析

训练结束后,会产生一个runs/exp的文件夹

基于Yolov5的目标检测(以口罩检测为例)_第16张图片

 1.Weights下将会产生两个权重文件 分别是best.pt以及last.pt(代表最好的模型和最后的模型)

val.py文件可以对best.pt进行单独验证,需要给出数据集的配置文件和权重文件的配置文件

2.F1_curve.png F1是衡量指标,可以看到all class1.0 at 0.629,即所有类别的判断精度大约是在1.0左右

基于Yolov5的目标检测(以口罩检测为例)_第17张图片基于Yolov5的目标检测(以口罩检测为例)_第18张图片

  1. result.png

基于Yolov5的目标检测(以口罩检测为例)_第19张图片

可视化了数值的结果,可以大体看出误差在不断下降,准确在不断提高

你可能感兴趣的:(深度学习项目,目标检测,深度学习,计算机视觉)