15分钟速通yolo12,从环境搭建到推理图片,最后训练自己的数据集

项目演示视频:

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到环境搭建,到图片预测,最终训练自己数据集的完整过程,中间细节难免有些疏漏,如有问题,可以评论区进行讨论。