YOLOv8主要有三个常用命令,分别是:train(训练)、predict(预测)、export(转化模型格式),下面我将展开讲讲三个常用命令的常用参数与具体使用方法。
一、训练
通过自己标注的数据集,训练自己所需的模型,训练完成的模型存储在runs文件夹里面。
yolo train data=data/data.yaml model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=0
data:训练的参数文件,具体如下:
train: xxx/xxx/images/train xxx/xxx为训练集图片根目录地址,一定要是绝对路径
val: xxx/xxx/images/val
nc: 2 #训练集的标签名称数量,就是下面names列表参数数量
names: ["1","2"]#标签名称
model:预训练模型,可以是YOLOv8官方的模型,也可以是自己训练的模型,推荐使用yolov8s.pt
epochs:训练轮数,在数据集没问题的情况下,轮数多了,acc(精准度)会提高,loss会降低,但是他会有一个临界值,轮数超过一定数量acc和loss都不在变化,就可以停止了,这个临界值需要凭借经验和数据集数量自己去判断,可以跑个100000轮次看一下到多少停止变化。
imgsz:训练时图片大小,根据自己训练的图片尺寸和要识别的物体大小进行判断,训练的图片尺寸大的建议使用640,图片小的使用320。
batch:训练时每次传入GPU的图片数量,对显卡的显存要求高。数据集train里面的图片数量 / batch的大小即为每轮训练里面的读取图片特征值的轮数,batch越高精度会有所提升,训练也越快。
workes:数据装载时cpu所使用的线程数,可以查看自己的cpu的线程数量进行设置,越高给显卡传输图片速度越快,如果你的显卡性能很强,可以提高workes的值。
device:训练所使用的设备,默认为cpu,0为显卡,如果有多个显卡可以0,1,2…往后排开。
其中主要影响训练速度的有:epochs(轮数越大时间越长)、imgsz(图片尺寸越大时间越长)、batch(越小时间越长)、workes(越小时间越长) 可以打开任务管理器查看CPU和GPU的占用情况调节以上参数
二、预测
yolo predict model=yolov8n.pt source='ultralytics/assets/' device=0
对训练完成的模型,使用测试图片或视频进行测试,测试完成的数据保存在runs文件夹里面。
model:要测试的模型,可以是YOLOv8官方的模型,也可以是自己训练的模型
source:要测试的图片的地址,使用绝对路径和相对路径都可以
device:测试图片使用的设备
三、模型转化
使用该指令将YOLOv8的pt模型转化为onnx模型,可以进一步转化为自己所需的类型。
yolo export model=yolov8n.pt format=onnx
model:要转化的模型
format:要转化成的模型类型
下面是官方写的其他export参数