赞
踩
创建名称为yolov8的虚拟环境:
conda create --name yolov8 python
激活yolov8虚拟环境:
conda activate yolov8
使用pip下载yolov8所需要的第三方库:
pip install ultralytics
在官方网页中下载YoloV8的所有的代码:
官方网页:https://github.com/ultralytics/ultralytics
Yolov8的命令构成为:yolo TASK MODE ARGS
TASK(选择) 是[detect、segment、classification]中的一个。如果没有显式传递,YOLOv8将尝试从模型类型中猜测TASK。
MODE(必选) 是[train, val, predict, export]中的一个
ARGS(选择) 是任意数量的自定义arg=value对,如imgsz=320,覆盖默认值。
类型 | 用途 | 示例 | |
---|---|---|---|
TASK | detect | ||
segment | |||
classification | |||
MODE | train | 用于图片模型的训练 | yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01 |
训练10个时期的检测模型,初始学习率为0.01 | |||
val | yolo val model=yolov8n.pt data=coco128.yaml batch=1 imgsz=640 | ||
Val是批量大小为1和图像大小为640的预训练的检测模型: | |||
predict | 用于图片/视频的检测 | yolo predict model=yolov8n-seg.pt source=‘https://youtu.be/LNwODJXcvt4’ imgsz=320 | |
使用图像大小为320的预训练分割模型预测YouTube视频 | |||
export | yolo export model=yolov8n-cls.pt format=onnx imgsz=224,128 | ||
将YOLOv8n分类模型导出为ONNX格式,图像大小为224×128(不需要TASK) | |||
ARGS |
其他特殊命令:
yolo help
yolo checks
yolo version
yolo settings
yolo copy-cfg
yolo cfg
常用参数:
model 传入的model.yaml文件或者model.pt文件,用于构建网络和初始化,不同点在于只传入yaml文件的话参数会随机初始化 data 训练数据集的配置yaml文件 epochs 训练轮次,默认100 patience 早停训练观察的轮次,默认50,如果50轮没有精度提升,模型会直接停止训练 batch 训练批次,默认16 imgsz 训练图片大小,默认640 save 保存训练过程和训练权重,默认开启 save_period 训练过程中每x个轮次保存一次训练模型,默认-1(不开启) cache 是否采用ram进行数据载入,设置True会加快训练速度,但是这个参数非常吃内存,一般服务器才会设置 device 要运行的设备,即cuda device =0或Device =0,1,2,3或device = cpu workers 载入数据的线程数。windows一般为4,服务器可以大点,windows上这个参数可能会导致线程报错,发现有关线程报错,可以尝试减少这个参数,这个参数默认为8,大部分都是需要减少的 project 项目文件夹的名,默认为runs name 用于保存训练文件夹名,默认exp,依次累加 exist_ok 是否覆盖现有保存文件夹,默认Flase pretrained 是否加载预训练权重,默认Flase optimizer 优化器选择,默认SGD,可选[SGD、Adam、AdamW、RMSProP] verbose 是否打印详细输出 seed 随机种子,用于复现模型,默认0 deterministic 设置为True,保证实验的可复现性 single_cls 将多类数据训练为单类,把所有数据当作单类训练,默认Flase image_weights 使用加权图像选择进行训练,默认Flase rect 使用矩形训练,和矩形推理同理,默认False cos_lr 使用余弦学习率调度,默认Flase close_mosaic 最后x个轮次禁用马赛克增强,默认10 resume 断点训练,默认Flase lr0 初始化学习率,默认0.01 lrf 最终学习率,默认0.01 label_smoothing 标签平滑参数,默认0.0 dropout 使用dropout正则化(仅对训练进行分类),默认0.0
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
"model="后面所添加的是权重的位置。因为此权重才主目录故直接选择即可。
“soutce=”后面所添加的是需要检测照片的地址,如果自己想识别其他的文件,则可以在source=后面加入图片或视频的“地址+文件名”。
YoloV8和YoloV5一样,需要用到Yolo 格式的文件作为训练集。Yolo格式的数据标注文件主要分为5个数值中间用空格分开,保存在.txt格式的文件当中。文件内每个数分别是:
“[数据种类] [矩形左上X坐标] [矩形左上Y坐标] [矩形右下X坐标] [矩形右下Y坐标]”
数据集可以做为以下的文件夹结构:
datasets
images
img1.jpg
img2.jpg
labels
img1.txt
img2.txt
标签的标注的训练自己模型最重要的步骤。因为YoloV8和YoloV5一样,需要使用Yolo格式的文件,故我们可以使用Make Sense,来制作Yolo格式的标签。(网站点击下方蓝字即可)
首先打开网址,选择“Get Started”后导入图片,再选择“Objeck Detection”。点击“Start Progect”开始项目。选择矩形框,框选物品后在选择标签。效果如下图:
图片全部标注完毕后再“Actions”中点击“Export Annotations”。勾选Yolo后导出即可(注意导出的文件只有Yolo的标签,所以务必保存好自己的数据集),如下图:
这样我们的数据准备工作就已经全部结束了。
YoloV8和YoloV5相同,都需要制作一个“.yaml”格式的文件,但“.yaml”文件内部的构成发生了一定的变化。相关的“.yaml”实例在“ultralytics-main/ultralytics/cfg/datasets"内也有。“.yaml”文件可以保存在任意目录下,但需要再训练时输入路径,但放在“ultralytics-main”目录下可以不用再训练时写路径。
(下方内容为“.yaml”文件,不是在Anaconda Prompt运行)
path: ../datasets/XXX # dataset root dir
train: images # train images (relative to 'path') 39384 images
val: images # val images (relative to 'path') 15062 images
test: # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview
# Classes 每个序号后面所写的名称必须和标签中的数据所对应,中文英文均可。
names:
0: "苹果" #中文需加“引号”
1: Apple
训练模型前可以先执行官方给到的测试语句,这样可以自动下载“.pt”文件也可以检测程序是否可以正常运行。语句如下:
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
训练自己的模型时需要输入下列语句即可,其中XXX.yaml是前面写的.yaml文件,最好加对应的目录。epochs是所训练的代数,batch是每次训练的图片数,如果显存较小可以靠调整数据来减低对显存的需要。
yolo detect train data=XXX.yaml model=yolov8n.pt epochs=X batch=X
本人第一次写教程,若有错误请多包涵并指出,我及时修改。
“3.1命令解释”多为官方文档内的转载。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。