yolov8入门
一、conda创建虚拟环境
python的版本要>=3.8才可以,这里我的环境名叫yolo8
conda create -n yolo8 python=3.8
二、安装YOLOv8依赖
yolov8没有requirement.txt文件了,所以直接安装ultralytics就行
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
三、官方DEMO
参考这个页面中的代码示例,里面训练、评估、检测的DEMO代码都有
https://docs.ultralytics.com/zh/modes/train/
四、参数
参考下面的文档:
https://docs.ultralytics.com/zh/usage/cfg/
五、yaml文件
在ultralytics\cfg里面
六、权重与数据集下载
ultralytics\data\scripts
七、训练(train)
加载模型和配置
YOLO8只支持txt格式的标签,所以如果是xml之类的格式需要进行转换
加载模型和配置
读取yaml,同时读取pt(迁移学习用)
注意这里如果需要更换不同的大小的模型,直接改模型配置文件名最后一个字母,比如想要s的YOLO8就写成yolov8s.yaml
model = YOLO('yolov8n.yaml').load('yolov8n.pt')
读取yaml直接开始训练
model = YOLO('yolov8n.yaml')
开始训练
参数见下面的文档
results = model.train(这里写参数)
我的训练DEMO
你没看错就是这么简洁
from ultralytics import YOLO
model = YOLO('weights//yolov8n.yaml').load("best.pt")
results = model.train(data='datasets//dataset.yaml',
epochs=100,
imgsz=640,
batch = 32)
八、检测(detect)
YOLO8输出检测框信息的时候,会有4种格式,比如一张图片检测出了3个框,那么就会输出以下的信息:
xywh:
x 和 y 表示边界框左上角的坐标(即左上角点的x和y位置)。
w 表示边界框的宽度。
h 表示边界框的高度。
xywhn:
这个属性类似于xywh,但它返回的坐标和尺寸是相对于原始图像尺寸归一化后的值。归一化通常意味着将值缩放到0到1的范围内,其中0代表图像的起始点,1代表图像的终点。归一化后的坐标和尺寸不依赖于图像的原始尺寸,这使得它们在不同尺寸的图像之间进行比较或处理时更加方便。
xyxy :
第一个x和y是边界框左上角的坐标。
第二个x和y是边界框右下角的坐标。
这个格式直接提供了边界框四个角的坐标信息。
xyxyn :
这个属性类似于xyxy,但它返回的坐标是相对于原始图像尺寸归一化后的值。与xywhn类似,归一化后的坐标使得边界框的表示在不同尺寸的图像之间具有更好的可比性。
我的检测DEMO
import cv2
from ultralytics import YOLO
results = model.predict(source=写传入的数据) # 对当前帧进行目标检测并显示结果
annotated_frame = results[0].plot() #画框
xyxy = results[0].boxes.xyxy.cpu() # 检测框列表,len(xyxy)==0 代表没有检测框
probs = results[0].boxes.conf.cpu() # 置信度列表
cls = results[0].boxes.cls.cpu() # 类别列表
names = results[0].names # 类别名列表
cv2.imshow('img', annotated_frame) # 在屏幕上面显示数据
假如我检测的图片上面有三个框,检测fire和smoke两个类别,那么与框相关的几个数据xyxy probs cls names就会有与下面这张图类似的格式:
九、其它
不同的检测任务
YOLO8支持:
1.detect:目标检测
2.segment:实例分割
3.classify:图片分类
4.pose:姿态检测
5.obb:转框目标检测
五种任务,每种任务都对应不同的权重文件。
从V5转换思路到V8
在YOLO5的开发过程中,我们都是直接在python的源码上进行编码,能够根据代码看到清晰的训练、检测逻辑。
在YOLO8中,YOLO开发人员把YOLO8的代码都封进了一个库,叫ultralytics,一般使用者使用YOLO8的方式就是直接安装一个叫ultralytics库,然后直接调这个库进行训练,而且像yaml这样的配置文件也是ultralytics库自动下载的。
那么,在哪里找到像YOLOV5开发时候的train.py detect.py export.py *.yaml文件呢?
下面是pip安装的ultralytics库代码和Github源码对比,可见他们完全一致,所以python导入的ultralytics库执行的文件在Github源码里面也可以找到,所以train.py detect.py export.py *.yaml也在Github源码中。(自己全局搜索能看到)
这里ultralytics.models.yolo.model是最顶部的类,这个类的对象就是一个模型。