1. 基于区域提取的两阶段目标检测
1.1 SPP-Net
1.2 R-CNN
1.3 FAST R-CNN
1.4 FASTER-CNN
2. 基于回归的单阶段为目标检测
2.1 YOLO系列(YOLO,YOLOv1,2,3,4,5,7)
2.2 OverFeat
- YOLOv1:YOLOv1是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。
- YOLOv2:YOLOv2相较v1版本,预测更准确,速度更快,识别对象更多这三个方面进行了改进
- YOLOv3:YOLOv3的Bounding Box由YOLOv2又做出了更好的改进
- YOLOv4:YOLOv4结合了大量前人研究技术,加以组合并进行适当创新的算法,实现了速度和精度的完美平衡。
- YOLOv5:YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。在COCO数据集上面的测试效果较好。
3.1 YOLOv5网络模型主要包括:Yolov5s、Yolov5m、Yolov5l、Yolov5x
3.2 Yolov5s网络为Yolov5系列中深度最小,特征图的宽度最小的网络。而后面的3种则是在此基础上不断加深,不断加宽,速度的消耗也在不断增加
3.3 YOLOv5主要部分
4.1 受新型冠状病毒的影响,人脸口罩佩戴检测成为了当前急需的应用,而YOLOv5作为目前检测能力较强的目标检测技术,因此,结合本次专业认识实习以及所学知识,我使用了YOLOv5来实现人脸口罩佩戴的检测。实践的内容包括:运用网络爬虫爬取一定量的数据集,运用MakeSense对数据集进行打标签,然后在云服务器上利用YOLOv5网络模型训练数据集得到最佳模型,最后利用其实现人脸口罩佩戴的一定精度的检测。
4.2 实现过程:
4.2.1:获取并准备数据集(此数据集较小,需要大数据集的可参考我上传的资源或者开源数据集)
Part2:包括100张(不佩戴口罩)
Part3:包括100张(佩戴口罩)
4.2.2:利用MakeSense进行逐个打标签 (也可以使用labelme进行打标签)
MaskSense上手快,使用较为容易
链接: Make Sense
4.2.3. 为后期的训练
需要将数据集mydata首先划分为两个部分(一个存放图片,一个存放标签)
1.image, 2.labels
并划分为训练集,测试集与验证集
1.test, 2.train, 3train_2
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,修改路径以及类的个数与标签名称
4.2.6 train.py文件中的路径以及参数
修改模型的配置文件,train.py中默认使用的yolov5s.pt这个权重,可以修改为yolov5m等,或自己训练出来的best.pt
4.2.7 开始训练
4.2.7 训练300轮 一共用时3.1h
训练结果分析
训练结束后,会产生一个runs/exp的文件夹
1.Weights下将会产生两个权重文件 分别是best.pt以及last.pt(代表最好的模型和最后的模型)
val.py文件可以对best.pt进行单独验证,需要给出数据集的配置文件和权重文件的配置文件
2.F1_curve.png F1是衡量指标,可以看到all class1.0 at 0.629,即所有类别的判断精度大约是在1.0左右
可视化了数值的结果,可以大体看出误差在不断下降,准确在不断提高