这是笔者上学期大创的一个初期准备工作,觉得挺好玩的,分享一下操作过程。

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是你将要拿来训练的视频(也可以是图片),接下来,见证奇迹的时刻就出现了! 运行,模型会对你的视频进行一帧一帧的切割,逐帧训练,在训练结束后你就可以得到加入了推理结果的视频了(其储存位置也是会在运行结束后在终端显示)

参考的教程 链接到标题