上一篇中我们讲了怎么用PyQT做一个人脸检测的用户交互界面,在里面我们假设你已经有了训练好的yolo算法,很多同学私信我说不知道从哪里搞来.pt文件,这此我就主要分享一下,怎么用自己的数据集,训练处一个合适的yolo算法!
忘记了GUI是什么样子的同学,可以点击下面的链接回顾一下:
yolo算法实战(1):人脸检测+实时界面显示GUI
虽然yolo算法感觉已经烂大街了,但是我相信还有很多本科同学对这个算法不是很熟悉。
不过压力也不用太大,直接跟着我这一篇,半天就能学会,甚至还能换一个场景直接应用。
这个文章的介绍是使用PyCharm进行的
1. 步骤
1.1 PyCharm中操作
1、新建虚拟环境:在 PyCharm 中打开你的项目,然后点击右下角 Python 环境 ➜ Add Interpreter ➜ New environment using venv
2、打开 PyCharm 的终端(Terminal),输入:pip install ultralytics
。这个命令是用来给你的电脑安装ultralytics这个包
3、安装完成后可以进行测试,输入下面的代码
from ultralytics import YOLO
只要运行一下没有出错,就说明包已经安装好了,可以进行下一步
1.2 数据集
首先你的数据集文件夹要有这样的格式,这里先不用管数据集从哪里来,先看要求
my_dataset/
├── images/
│ ├── train/ # 放训练图像
│ └── val/ # 放验证图像
├── labels/
│ ├── train/ # 放训练标签 .txt
│ └── val/ # 放验证标签 .txt
└── data.yaml # 数据配置文件
上面出现的images
是用来放置自己的图像的,这里面分为训练和验证。相应地,下面的labels
文件夹要用来放置图像对应的标签,也就是.txt文件。
这里的.txt文件需要有如下格式:
<类别ID> <x_center> <y_center> <width> <height>
还有最后一个文件,data.yaml。它是 YOLO v8 训练时必须要读取的配置文件,它告诉模型:你的数据在哪里(图片和标签的路径),有多少个类别,每个类别叫什么名字,这个文件相当于 训练的说明书📄,YOLO v8训练模型前会先读取它来了解你数据集的结构。通常长这个样子:
path: my_dataset # 数据集的根目录(可选)
train: images/train # 训练图像的路径(相对或绝对路径)
val: images/val # 验证图像的路径
nc: 2 # 类别数(number of classes)
names: ['fire', 'smoke'] # 每个类别的名称(按顺序写,索引就是类别ID),这里假设用的火情检测数据集
那么很重要的一个问题就是,我没有数据集怎么办???
别怕,给你几种获取数据集的办法
✅ 方式一:使用开源火情数据集(推荐)
🔥 开源火情数据集推荐
FIRESENSE Dataset
含有大量野外火灾图像和视频帧
下载地址:https://zenodo.org/record/3765790
Flame Dataset by Kaggle
URL:https://www.kaggle.com/datasets/phylake1337/fire-dataset
✅ 方式二:自己收集数据 + 标注(适合长期项目)
📷 1. 收集图像
用百度/谷歌搜索“forest fire”, “building fire”, “smoke in sky”等关键词
或在视频网站(如YouTube)下载火灾视频并截图
✍️ 2. 标注图像
下载并打开 LabelImg
标注火焰或烟雾区域 ➜ 导出为 YOLO 格式
1.3 训练 YOLOv8 模型(附代码)
那么有了数据集以后,下一步要做的就是开始训练
首先,我这里直接提供一个脚本文件用于训练,命名为train_yolo.py
from ultralytics import YOLO
# 加载预训练模型(s=small,m=medium)
model = YOLO("yolov8s.pt") # 或 yolov8m.pt, yolov8n.pt 等
# 开始训练
model.train(
data="my_dataset/data.yaml", # 数据配置路径
epochs=50, # 训练轮数
imgsz=640, # 图片尺寸
batch=16, # 每批图像数量
name="my_yolo_model" # 训练项目名称(保存目录)
)
点击右上角的运行按钮,可以直接训练了。训练完成后的日志文件会保存在
runs/detect/my_yolo_model/
1.4 模型测试
这里再次新建一个.py文件,命名为prediction_yolo.py
from ultralytics import YOLO
# 加载训练好的模型
model = YOLO("runs/detect/my_yolo_model/weights/best.pt")
# 预测图片
results = model("test.jpg", save=True) # 将结果保存在runs目录
这里面出现了best.pt文件,可能有同学会有疑问,之前的过程中一次没出现,怎么现在突然出现了,
🎯best.pt 是什么?
.pt 是 PyTorch 模型的保存格式。best.pt 是训练过程中,在验证集上表现最好的那一版模型。这个文件包含了模型的权重参数(也就是模型“学到的知识”)
他的位置在
runs/
└── detect/
└── my_yolo_model/
└── weights/
├── best.pt
└── last.pt
到了这里呢,整个流程就已经完成了,相信同学们只要 跟着一步步走下来,都能基本掌握这个流程。
结合上一篇里面讲到的PyQT搭建用户界面,相信聪明的兄弟们一天就能直接搭出来一个可以推广的软件产品了。
2. tips
在PyCharm终端打开终端可以点击左下角的图标,也可以直接使用快捷键
Alt+F12
3. 预告
我计划,把能用到yolo算法的场景都做一遍,目标100个
同学们可以关注我,到时候,将100个训练好的模型无偿分享给大家使用!