02手把手学会yolov8模型之模型训练

0 阅读4分钟

概述

上节完成YOLOv8在window环境部署安装,安装YOLOv8分两种方式:

  • 通过命令行方式安装,无法修改源码,通过命令训练
  • 通过源码安装,优先选择,以可编辑模式(-e)安装,这样修改源代码会立即生效

YOLOv8是基于PyTorch库开发的,而PyTorch则使用python语言开发。由于实际开发中,python版本更新,存在多版本同时安装在电脑,需要一个python虚拟环境管理工具Miniconda。YOLO的安装以下步骤

  • Miniconda安装
  • PyTorch安装
  • YOLO安装

在这里插入图片描述

环境搭建成功后,直接在github下载YOLOv8源码。使用vs code 打开源码,打开cmd窗口,进入conna虚拟环境,输入

conda activate yolov8

编译源码

# 以可编辑模式(-e)安装,这样修改源代码会立即生效
pip install -e .

安装过程,需要网络支持,若遇到网络问题,可技术支持。测试安装完成,在yolov8源码目录下,以命令的方式运行yolov8输入

yolo predict model=yolov8n.pt source='./ultralytics/assets/bus.jpg'

运行结果详见下图 在这里插入图片描述

模型预测

源码方式运行yolov8

使用vs code打开yolov8 源码,在根目录下 ,创建demo.py如下图:

在这里插入图片描述

编辑demo.py源码文件,如下

from ultralytics import YOLO
yolo=YOLO("yolov8n.pt","detect")
result=yolo("./ultralytics/assets/bus.jpg") 

源码三行,与命令行yolo predict model=yolov8n.pt source='./ultralytics/assets/bus.jpg'效果一样。

  • 第一行从ultralytics导入YOLO

  • 第二行创建YOLO对象yolo

  • 第三行yolo构造传递图片地址,开始检测

运行demo.py,有两种方式。

  • 用vscode cmd窗口,python demo.py运行

  • 点击vs code 运行按钮

vs code菜单,终端(T) > 新建终端

在这里插入图片描述

在终端中进入conda虚拟环境,而后运行demo.py

conda activate yolov8
python demo.py

如下图:

在这里插入图片描述

通过点击vs code 按钮,运行demo.py文件。首选设置vs code 的conda虚拟环境,若不设置后报一下错误

Traceback (most recent call last):
  File "c:/wamp64/www/yolov8/demo.py", line 1, in <module>
    from ultralytics import YOLO
  File "c:\wamp64\www\yolov8\ultralytics\__init__.py", line 13, in <module>
    from ultralytics.utils import ASSETS, SETTINGS
  File "c:\wamp64\www\yolov8\ultralytics\utils\__init__.py", line 24, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'

点击vscode 右下角,如下图:

在这里插入图片描述

箭头处是python版本,应根据自己环境而定。点击切换,如下图

在这里插入图片描述

切换结果如下:

在这里插入图片描述

而后点击运行按钮,演示如下:

在这里插入图片描述

至此,以源码的方式运行完成。

# yolov8默认配置文件

默认配置文件在源码目录ultralytics > cfg > default.yaml文件,打开文件,内容很多。如下部分内容:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Global configuration YAML with settings and hyperparameters for YOLO training, validation, prediction and export
# For documentation see https://docs.ultralytics.com/usage/cfg/

task: detect # (str) YOLO task, i.e. detect, segment, classify, pose, obb
mode: train # (str) YOLO mode, i.e. train, val, predict, export, track, benchmark

# Train settings -------------------------------------------------------------------------------------------------------
model: # (str, optional) path to model file, i.e. yolov8n.pt or yolov8n.yaml
data: # (str, optional) path to data file, i.e. coco8.yaml
epochs: 100 # (int) number of epochs to train for
time: # (float, optional) max hours to train; overrides epochs if set
patience: 100 # (int) early stop after N epochs without val improvement
batch: 16 # (int | float) batch size as int (e.g. 16), or float 0.0–1.0 for AutoBatch fraction of GPU memory
imgsz: 640 # (int | list) train/val use int (square); predict/export may use [h,w]
save: True # (bool) save train checkpoints and predict results
save_period: -1 # (int) save checkpoint every N epochs; disabled if < 1
cache: False # (bool | str) cache images in RAM (True/'ram') or on 'disk' to speed dataloading; False disables
device: # (int | str | list) device: 0 or [0,1,2,3] for CUDA, 'cpu'/'mps', or -1/[-1,-1] to auto-select idle GPUs
workers: 8 # (int) dataloader workers (per RANK if DDP)
project: # (str, optional) project name for results root

参看[配置文件文档地址](配置 | Ultralytics 文档)

  • task: detect 目标检测

  • mode: train 训练模式

  • model训练模型,如yolov8n.pt,yolov8s.pt

  • data数据集配置文件

  • epochs训练轮数

  • patience加入超过100轮没有提升就停止

  • 最长训练时间(以小时为单位)

  • batch每次训练的图片数

  • imgsz图片尺寸

  • save保存模型

  • save_period: -1不定期保存模型

  • cache不缓存图片

  • device,cpu还是显卡

配置参数source详解

yolov8在目标检测,需要指定检测目标,可以是图片、视频、桌面、摄像头。

from ultralytics import YOLO
yolo=YOLO("yolov8n.pt","detect")
# 目标检测图片
# result=yolo( source="./ultralytics/assets/bus.jpg")
# 目标检测视频
# result=yolo( source="./5.mp4")
# 目标检测桌面
# result=yolo( source="screen")
# 目标检测摄像头
result=yolo( source=0)

若要保存模型检测结果,可以传递save参数,如下:

from ultralytics import YOLO
yolo=YOLO("yolov8n.pt","detect")
# 目标检测source="./5.mp4"视频文件,source="screen"电脑桌面,source=0,摄像头
result=yolo( source="./ultralytics/assets/bus.jpg",save=True)

会将检测结果存在run目录下:

如下图

在这里插入图片描述

目标检测source="./5.mp4"视频文件,source="screen"电脑桌面,source=0,摄像头

result=yolo( source="./ultralytics/assets/bus.jpg",save=True)

会将检测结果存在run目录下:

如下图

在这里插入图片描述