yolo --- 参数(训练、验证、预测)解释

模型训练参数

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data='coco8.yaml', epochs=100, imgsz=640, device=[0, 1])

model

model: 模型文件的路径。这个参数指定了所使用的模型文件的位置,例如 yolov8n.pt 或 yolov8n.yaml。

选择.pt和.yaml的区别
若我们选择 yolov8n.pt这种.pt类型的文件,其实里面是包含了模型的结构和训练好的参数的,也就是说拿来就可以用,就已经具备了检测目标的能力了,yolov8n.pt能检测coco中的80个类别。但如果你需要检测的类别不在其中,例如口罩检测,那么就需要重新训练。
训练自己的数据集,我们一般采用yolov8n.yaml这种.yaml文件的形式,包含模型的结构

data

data: 数据文件的路径。该参数指定了数据集文件的位置,例如 coco128.yaml。数据集文件包含了训练和验证所需的图像、标签。

epochs 

epochs: 训练的轮数。这个参数确定了模型将会被训练多少次,每一轮都遍历整个训练数据集。训练的轮数越多,模型对数据的学习就越充分,但也增加了训练时间。

选取策略
默认是100轮数。但一般对于新数据集,我们还不知道这个数据集学习的难易程度,可以加大轮数,例如300,来找到更佳性能。

batch 

batch: 每个批次中的图像数量。在训练过程中,数据被分成多个批次进行处理,每个批次包含一定数量的图像。这个参数确定了每个批次中包含的图像数量。特殊的是,如果设置为**-1**,则会自动调整批次大小,至你的显卡能容纳的最多图像数量。

  • 小 batch_size:适用于显存较小的 GPU,但训练速度可能较慢,梯度估计可能不稳定。
  • 大 batch_size:适用于显存较大的 GPU,训练速度较快,梯度估计较稳定,但可能会超出显存限制。

device 

device: 训练运行的设备。该参数指定了模型训练所使用的设备,例如使用 GPU 运行可以指定为 device=0,或者使用多个 GPU 运行可以指定为 device=0,1,2,3,如果没有可用的 GPU,可以指定为 device=cpu 使用 CPU 进行训练。

imgsz

训练的目标图像大小。所有图像在输入模型之前都会被调整到这个尺寸。影响模型准确性和计算复杂度

workers

在每个epoch加载数据时,dataloader一次性创建workers数量个工作进程,并且每个进行负责调度一个batch的数据,worker负责将batch加载到内存中,dataloader从RAM中找到这个epoch所需要的batch,如果找到就使用,如果没有就要继续加载batch到RAM。
如果workers设置的很大,优点是找batch的速度快,因为RAM中可能有好多个batch的数据在等待处理。缺点是CPU、内存开销大,因为是CPU负责调度进程加载数据到RAM中。

模型验证参数

复制代码
from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')

# Customize validation settings
validation_results = model.val(data='coco8.yaml',
                               imgsz=640,
                               batch=16,
                               conf=0.25,
                               iou=0.6,
                               device='0')
复制代码

模型预测参数

复制代码
from ultralytics import YOLO

# ---------- 加载模型 ----------
model = YOLO('runs/detect/train3/weights/best.pt')  

# ---------- 模型预测 ----------
model.predict(
    source='https://ultralytics.com/images/bus.jpg', 
    save=True
)
复制代码

source

输入源包括静态图像、视频流和各种数据格式

stream

对于处理长视频或大型数据集,为了有效地管理内存,请使用 stream=True。当 stream=False 时,所有帧或数据点的结果都存储在内存中,这对于大型输入来说会迅速增加并可能导致内存不足错误。相比之下,stream=True 使用生成器,它只保留当前帧或数据点的结果在内存中,显著减少内存消耗并防止内存不足问题。

save

启用将标注的图像或视频保存到文件。这对于文档、进一步分析或分享结果非常有用。

imgsz

imgsz 是指宽,如下图的2560

实测:640*640的图片,imgsz=640识别不到,imgsz=1280识别的到,不填默认是1280

 

posted @   流水灯  阅读(716)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2017-11-18 C++ ------ 创建对象 new 和不 new 的区别
点击右上角即可分享
微信分享提示