概述
上节完成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目录下:
如下图