项目演示视频:
https://www.bilibili.com/video/BV127YXz4Eto/
1 环境搭建
1.1 python安装
python我们这里使用了3.10,python的下载地址:Python Release Python 3.10.11 | Python.org
双击运行python安装包,执行安装流程,记得勾选环境变量。
1.2 VsCode安装
我们编写python代码使用的ide环境是vscode,当然使用pycharm也是没问题的。
vscode的下载地址:Visual Studio Code - Code Editing. Redefined
根据安装提示安装即可:
1.3 Yolo框架代码
yolo官网github网址:https://github.com/ultralytics/ultralytics
我们提前电脑上新建一个存放我们工程的文件夹。
解压代码后,把框架代码中的ultralytics文件夹放到我们的工程文件夹中。
1.4 下载Yolo12的权重文件
打开yolo的官网网站:主页 - Ultralytics YOLO 文档
点击"模型页面"后,再点击左侧的"YOLO12"菜单
页面下滑后,找到YOLO12n,点击后下载yolo12n的权重文件,将权重文件存放到工程文件夹的根目录里。
1.5 pip依赖下载
先验证下python和pip是否安装并配置成功,运行cmd后,依次输入python和pip,检查是否有信息正确输出,如下图所示。
如果已经安装过了python后,输入python或者pip没有输出相关信息,则大概率是因为环境变量没有配置好,自行检查下环境变量问题,本文这里不对这个问题进一步展开叙述。
然后cmd通过cd命令把工作目录切换到之前所创建的工程目录的根目录下,创建虚拟环境,输入:
python -m venv myyolo12
创建之后我们进一步通过cd命令进入虚拟环境下的mylolo12/Scripts目录下
命令行中输入activate,激活虚拟环境,如果命令行前面出现小括号括起来的(myyolo12),则表明虚拟环境激活成功
激活成功后在通过cd命令切换回到工程目录的根目录下。
然后可以通过pip命令来安装所依赖的插件,输入:
pip install ultralytics
经过一段时间的等待,速度取决于网络情况,最终安装完所需要的插件。
1.6 vscode安装python插件
在vscode的扩展中,搜索python,找到python插件后,点击右侧的安装按钮。
2 图片预测
这里用yolo框架中提供的两张图像作为测试图像,测试图像存放于ultralytics/assets下的bus.jpg和zidane.jpg
图像预测的代码:
from ultralytics import YOLO
import cv2
img = cv2.imread("zidane.jpg")
#初始化模型
model = YOLO("yolo12n.pt")
#预测
results = model.predict(img)
#提取检测结果的图像
results_image = results[0].plot()
#展示检测结果图像
cv2.imshow("YOLOv12n Detection", results_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码并不复杂,先读取图像,然后初始化yolo模型,初始化模型中载入我们前面下载的yolo12的权重文件,然后调用predict进行图像预测,然后拿到预测的结果进行展示。
检测结果如下:
3 训练自己的数据集
3.1 数据集介绍
数据集是检测石头、剪刀、布的手势,如下图所示。
数据集分为:训练集、验证集、测试集,每个种类的数据集都有对应的图像和标注文件
标注文件
训练集有6455张图像
验证集有576张图像
测试集有304张图像
下面是数据集的yaml文件信息
train: train/images
val: valid/images
test: test/images
nc: 3
names: ['Paper', 'Rock', 'Scissors']
将数据集和yaml文件复制到ultralytics/cfg/datasets目录下
3.2 数据集训练
数据集训练代码:
from ultralytics import YOLO
def main():
# 载入yolo12的预训练权重文件
model = YOLO("yolo12n.pt")
# 调用训练函数
model.train(
data="data.yaml", #数据集说明文件
epochs=100, #训练次数
batch=16, #训练批次
)
if __name__ == "__main__":
main()
执行后,会进行训练,训练的速度取决于电脑的配置,也可以把代码托管到服务器上进行训练,具体方法本文不细展开。
训练过程如下
训练结束后,会在根目录的runs/detect下生成以train作为前缀的文件夹,里面保存了训练中产生的训练结果和最终产生的训练的权重文件。如下图所示
里面的weights文件夹存放了权重文件
其中:
best.pt表示训练过程中保存的训练效果最好的一次权重。
last.pt表示训练最后一次的训练结果的权重。
以上就是我们从0到环境搭建,到图片预测,最终训练自己数据集的完整过程,中间细节难免有些疏漏,如有问题,可以评论区进行讨论。