基于YOLOv8的口罩检测项目

准备阶段

  • 下载源代码:https://github.com/ultralytics/ultralytics

  • 下载数据集:https://public.roboflow.com/object-detection/mask-wearing/4

命名为MaskDataSet置于D:\Pytorch\yolo\YOLOv8\ultralytics\ultralytics\yolo\v8\detect里
在这里插入图片描述
MaskDataSet内部
在这里插入图片描述
最重要的文件是data.yaml。data.yaml前几行
在这里插入图片描述
解释
1. trainval :分别指定训练集和测试集文件夹相对于v8的路径
2. nc:指定标签的个数一共两个
3. names:指定标签的名称分别为maskno-mask
(或者也可以用lableme,制作自己的数据集,使用方法不在这里说明)

  • 安装所需库:进入ultralytics文件夹,执行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --user
#“-i https://pypi.tuna.tsinghua.edu.cn/simple”:清华开源库加速下载
#“--user”:管理员模式
  • 下载预训练模型

在YOLOv8的GitHub开源网址上下载对应版:https://github.com/ultralytics/ultralytics
在这里插入图片描述

我下载了YOLOv8x,放到下面这个位置
在这里插入图片描述

模型训练阶段

在D:\Pytorch\yolo\YOLOv8\ultralytics\ultralytics\yolo\v8\detect路径下使用cmd,输入

yolo task=detect mode=train model=weights/yolov8x.pt data=data.yaml batch=16 epochs=50 imgsz=640 workers=16 device=0

【参数解释】
task:选择任务类型,可选[‘detect’, ‘segment’, ‘classify’, ‘init’]
mode:选择task的模式(训练、验证还是预测),可选[‘train’, ‘val’, ‘predict’]
model:选择不同的模型配置文件,可选yolov8s.yaml、yolov8m.yaml、yolov8l.yaml、yolov8x.yaml
data: 选择生成的数据集配置文件
epochs:指的就是训练过程中整个数据集将被迭代多少次(显卡差调小)
batch:梯度下降的mini-batch(显卡差调小)

由于我设备不行,OOM报错,转战Colab白嫖机器

(插图一个我菠萝菠萝的笔记本orz,哈哈哈上学之前要去换个好点的设备
在这里插入图片描述

扫描二维码关注公众号,回复: 17324884 查看本文章

(下面的操作需要科学上网噢)

  • 把整个文件夹上传至Google云盘:https://drive.google.com/drive/my-drive

  • 去Colab新建项目:https://colab.research.google.com/drive
    在这里插入图片描述

将上传到谷歌云盘中的文件夹,复制到我们此时左侧文件窗口中的主目录中
在这里插入图片描述

进入对应文件夹后开始训练
在这里插入图片描述

如果在运行train.py时提示:No found module:ultralytics,可以在训练前安装

pip install ultralytics

还有就是修改了“/content/YOLOv8/ultralytics/ultralytics/yolo/cfg/default.yaml”中的model和data
在这里插入图片描述

修改文件:/content/YOLOv8/ultralytics/ultralytics/yolo/v8/detect/train.py中model和data
在这里插入图片描述

然后就开始train了,下面是运行时的截图
在这里插入图片描述
在这里插入图片描述

  • 训练结果
    在这里插入图片描述

100个epochs用了0.432h(25.92min),训练生成的模型保存在了v8/detect/runs/detect/train7里(为什么是train7呢?因为之前失误了,要是第一次就成就是train)
weights文件夹里的best.pt和last.pt是权重文件,是训练好的模型,后面会使用best.pt来预测

我们可以看出来训练的结果挺糟糕的,尤其是no-mask和随机的概率也大差不差了,但先不优化模型了,先直接使用看看,后续再进行模型优化

模型验证阶段

Val :验证,在训练完YOLOv8模型后,用于验证其准确性。

我没进行验证,要验证的方法也很简单,修改一下任务模式和使用数据集就行了

yolo task=detect mode=val model=runs/detect/train7/weights/best.pt data=data.yaml batch=16 workers=16

模型预测阶段

  • 将训练好的文件下载至本地

由于无法在Colab上调用摄像头进行实操,使用我们将训练好的模型弄回本地,使用PyCharm进行预测

先备份到Google云盘
在这里插入图片描述

去Google云盘下载到本地
在这里插入图片描述

修改文件:ultralytics/ultralytics/yolo/v8/detect/predict.py
在这里插入图片描述

在终端输入

yolo task=detect mode=predict model=runs/detect/train7/weights/best.pt source=0 show=True

参数解释(补充):
source:待检测的图像源,“0”指调用摄像头;show:是否显示摄像头拍摄窗口
再补充一句:
在参考使用yolov5的项目时,大家都是用的detect.py,但是我在v8里没有找到(不知道是不是我的问题),但是有predict.py,所以我觉得predict.py就等效于v5里的detect.py的作用

开始运行后,桌面就会显示摄像头拍摄窗口了,命令框里也会一直刷新当前的检查结果
在这里插入图片描述

不用实测我都能知道效果很差(这里就不放摄像头拍摄画面啦),更糟的是有时候两种预测框还会一起出现,而且预测框的颜色也太接近了(一红一粉,正在尝试自定义预测框颜色,弄好后再加上来)

检测的结果会自动生成predict文件夹保存
在这里插入图片描述

模型导出

yolo task=detect mode=export model=runs/detect/train3/weights/best.pt format=onnx
# 俺模型结果不好,就先不导出了,后续再调一调,能见人了再导出,这里就不放演示了

碎碎念

距离上一次发博客都过去一个多月了,期间不是没有在学习,也保持着记笔记的习惯,但由于刚入门ML/DL的领域,能力也一般,现阶段学的很多东西都很基础,很多时间都在看各路大佬们的课、博文或是读论文,笔记里很多内容都是在收集别人的知识产物,整理时也没有很有条理,根本不是能作为博客发布的状态,所以就一直存放在本地了…害,希望接下来能多有自己的产出吧orz

再顺嘴提一下,Typora记笔记真的蛮舒服的,看论文用Zotero,安装英译中插件,真的nice,没试过的都去试试(别逼我求你)

猜你喜欢

转载自blog.csdn.net/Transfattyacids/article/details/131332954