小白学AI – YOLOv8目标检测 – 训练自己的数据集(Windows环境)

mac环境训练自己的数据集,这训练时间可闹心了,500张素材,训练400轮,训练了12个小时,才训练100轮,这时间真真是太久了,所以找一台闲置的Windows电脑试试,。弄完发现跟电脑没关系,跟cpu,还是gpu有关系,看样子,后面还得找一台可以gpu训练的机器试试。

概要步骤

环境安装,python及YOLOv8安装数据准备,准备和标注自己的数据集训练模型,修改配置并开始训练自己的数据集目标检测,图片或视频检测目标

环境安装

这台Windows电脑没有python环境,所以得先安装python环境

下载python安装包,要注意版本,这里我下载了python3.8.10版本,试过python3.11.2版本,但后面与yolo依赖的torch库冲突了。官网下载:Download Python | Python.org下载完成后,点击安装,记得勾选pip和添加环境变量哪个选项验证是否安装成功,终端输入python,若显示了版本号并进入了一个交互模式,说明安装成功了.要替换镜像源,不然安装依赖实在是慢。

安装完python环境后,就可以按照下面的步骤继续按照yolo环境了。

# 初次安装python, 记得要配置下安装源。windows10环境python更改pip全局源为清华镜像源,终端输入下面命令就可以了 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 重启终端,然后看安装速度,可以见到速度有个很大的提升。 # 镜像源替换后,然后再装yolo环境就比较快了。 # yolo环境安装 yolov8发布之后,环境安装非常简单,就下面一句话就行,python版本>=3.7 pip install ultralytics # 判断是否安装成功, 终端输入如下命令,若有版本号输出说明安装成功 yolo -v # 注意,安装过程中,可能会出现一些错误,所以需要留意飘红的提示,按照提示去搜索解决问题

数据准备

创建工作目录,后面都在这个目录下操作,后面的数据,配置数据文件,模型配置文件都在这个目录下, 我的工作目录为:F:\yolov8数据集的准备和标注,弄完之后,按比例分配训练(0.7)、验证(0.2)、测试(0.1)数据集。(这里不细说了,用labelimg标注就好,支持yolo格式的)修改修改数据配置mydata.yaml,这里我是拷贝了官方训练样例coco128.yaml,然后修改了path,train,val,test和Classes,完整配置如下:# Ultralytics YOLO , GPL-3.0 license # COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics # Example usage: python train.py –data coco128.yaml # parent # ├── yolov5 # └── datasets # └── coco128 ← downloads here (7 MB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: F:\yolov8\kobe_dataset # dataset root dir train: images\train # train images (relative to path) 128 images val: images\val # val images (relative to path) 128 images test: images\test # test images (optional) # Classes names: 0: kobe

修改模型配置yolov8n_mymodel.yaml,这里我是拷贝了官方的yolov8n.yaml模型配置,修改了nc, 其它没动,完整配置如下:

# Ultralytics YOLO , GPL-3.0 license # Parameters nc: 1 # number of classes depth_multiple: 0.33 # scales module repeats width_multiple: 0.25 # scales convolution channels # YOLOv8.0n backbone backbone: # [from, repeats, module, args] [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 [-1, 3, C2f, [128, True]] [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 [-1, 6, C2f, [256, True]] [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 [-1, 6, C2f, [512, True]] [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 [-1, 3, C2f, [1024, True]] [-1, 1, SPPF, [1024, 5]] # 9 # YOLOv8.0n head head: [-1, 1, nn.Upsample, [None, 2, nearest]] [[-1, 6], 1, Concat, [1]] # cat backbone P4 [-1, 3, C2f, [512]] # 12 [-1, 1, nn.Upsample, [None, 2, nearest]] [[-1, 4], 1, Concat, [1]] # cat backbone P3 [-1, 3, C2f, [256]] # 15 (P3/8-small) [-1, 1, Conv, [256, 3, 2]] [[-1, 12], 1, Concat, [1]] # cat head P4 [-1, 3, C2f, [512]] # 18 (P4/16-medium) [-1, 1, Conv, [512, 3, 2]] [[-1, 9], 1, Concat, [1]] # cat head P5 [-1, 3, C2f, [1024]] # 21 (P5/32-large) [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)

训练模型

开始训练模型,在终端执行如下命令就可以了。

# 训练模型,注意youdata.yaml 和 yolov8n_youmodel.yaml 要替换自己的 yolo detect train data=mydata.yaml model=yolov8n_mymodel.yaml epochs=400 # 训练这一步是漫长的… # 等训练完,就可以进行下一步目标检测测试了

目标检测

目标检测测试的代码,官方就已经提供了,你只需要改改路径就行,完整代码如下:

from ultralytics import YOLO from PIL import Image # 注意模型路径:训练完成后, best.pt的路径,这个我是把best.pt拷贝到当前目录了 model = YOLO(“best.pt”) # 检测视频中的目标: target_video.mp4替换你自己要测试的视频 model.predict(source=“target_video.mp4”, show=True) # Display preds. Accepts all YOLO predict arguments # 检测图标中的目标: target_pic替换你自己要测试的图片 im1 = Image.open(“target_pic.jpg”) model.predict(source=im1, save=True) # save plotted images

    THE END
    喜欢就支持一下吧
    点赞13 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容