这是笔者上学期大创的一个初期准备工作,觉得挺好玩的,分享一下操作过程。
ultralytics包的安装 链接到标题
yolo目前已经发展到了v11的版本,其中常用的v8和v11都是由ultralytics开发的,因此如果想要部署yolo算法最简便的就是下载ultralytics包。
前期准备 链接到标题
在完成下面步骤之前,请务必下载好 anaconda!
新建环境 链接到标题
为什么要新建环境呢?一句话,假如之后yolo部署失败或者玩坏了,不知道怎么样处理的话可以简单删除环境,再新建一个重来,也就是说——进行隔离, 运行下面命令激活环境并新建环境。
conda create -n myenv #创建环境
conda activate myenv #激活环境
然后你就会看到在命令行前端会有myenv的字样。
安装ultralytics包 链接到标题
(可能需要魔法环境)直接运行命令
pip install ultralytics
这一步相当的漫长,需要耐心等待,等到最后结束之后会自然跳出命令行提示符,中间不要打断!
检测是否安装成功 链接到标题
输入Python
,然后再弹出的“>”命令行中输入
from ultralytics import YOLO
如果不报错,就证明安装成功了,如果失败,最好的办法就是退出这个环境(conda deactivate
),删除环境(conda env remove -n myenv
),然后从头再来。
训练过程 链接到标题
下载数据 链接到标题
目前较完全的训练网站是kaggle,需要找到的数据一般是下面的形式 ,如果懒得找的话也可以直接使用下面这个安全帽系列的数据集。
看懂数据集 链接到标题
下载得来的数据中一般都包含下面三个文件夹
- train
- val
- test
分别是测试、验证以及检测用的,有的轻量级的数据包可能会只有train的数据,val和test的数据集是空的,不要惊慌,这种数据也是可以训练的。 不同的数据集里面可能会有比较复杂的文件夹构成,但是我们只需要认准image和label两个即可,image存放的是图片,label中存放的是是文件名与image中图片相同,但里面储存的是识别物体的坐标的txt文件,每一样物品有一行,有五个数(如果只有一行,可能只有一个数),
- 第一个数是序列号(相当于说明这是哪一类物体),
- 剩下四个数即组成识别框矩形两个点的二维坐标。
配置yaml文件 链接到标题
train: D:\YOLO11test\css-data\train\images\
val: D:\YOLO11test\css-data\valid\images\
test: D:\YOLO11test\css-data\test\images\
nc: 10
names: [Hardhat,Mask,No-Hardhat, No-Mask, No-Safety Vest, Person, Safety Cone, Safety Vest,machinery,vehicle]
- 这个文件相当于是一个指引训练的文件,train、val、test分别对应的就是刚刚数据集横纵对应图片的位置,这里强烈建议都填绝对位置,相对位置的话可能会因为默认环境在C盘而出bug,无法找到数据。
nc=10
代表将要识别的东西有十个names: [···]
代表分别给这十样东西的命名,注意,这需要自己对照label中每一行第一个数(即序列号),不要混淆。
如何在vscode中选择python环境 链接到标题
首先,你的vscode上面需要有python插件(对,插件名就叫做python),
打开一个.py
文件,按下面步骤进行:
- 点击右下角python旁边的版本号字样.
- 在上方弹出的框中选择编译环境,如果没有的话可以手动浏览
- 如果上面没有配置成功的同志也不用担心,选用在终端运行,方法是点击右上小三角的下拉图标选择,即可跳出终端,熟悉命令行的小伙伴就很熟悉了。选择对应环境下的
python.exe
进行运行就可以了对于不熟悉命令行的同学,记住Ctrl+C是强制退出命令,有事发生就使用!
训练代码 链接到标题
from ultralytics import YOLO
# Load a model
model = YOLO("D:/YOLO11test/Models/yolov8n.pt") # pretrained YOLO11n model
model.train(data="D:/YOLO11test/safehat.yaml",epochs=20)
model.val()
- 其中
yolov8n.pt
文件是从ultralytics官网上下载下来的预训练,根据需要选择,并且在这里也是给出存放位置的绝对路径。 - 而这里的
safehet.yaml
就是我们刚刚配置的yaml文件。 - epochs是训练轮数,如果只是想玩玩测试一下的的话调小一点,或者说在前面就找一个规模小一点的数据集。
因为……,接下来是非常漫长的训练过程!
使用训练结果进行推理 链接到标题
静待训练结束后运行终端会弹出训练成功的标志,并告知训练好的模型在哪里(一般在你创建的python环境的文件夹里某处),按照指引找到这个权重文件best.pt
,最后将其拷贝到一个自己熟悉的位置,然后编写下面的代码:
from ultralytics import YOLO
# Load a model
model = YOLO("D:/YOLO11test/best.pt") # pretrained YOLO11n model
model.predict("D:/YOLO11test/1.mp4",save=True,line_width=2)
其中best.pt
的位置就是你的best.pt
的位置,而1.mp4
是你将要拿来训练的视频(也可以是图片),接下来,见证奇迹的时刻就出现了!
运行,模型会对你的视频进行一帧一帧的切割,逐帧训练,在训练结束后你就可以得到加入了推理结果的视频了(其储存位置也是会在运行结束后在终端显示)