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

选取策略

  • 数据集大小:
    • 小数据集:通常需要较少的epochs(如50-100),因为模型容易快速过拟合。
    • 大数据集:可能需要更多的epochs(如200-500),以充分学习数据的多样性。
  • 模型复杂度:
    • 复杂模型(如YOLOv5、YOLOv8的较大版本)通常需要更多epochs来收敛。
    • 简单模型(如YOLOv5s)可能需要较少的epochs。

batch 

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

  • 梯度估计的稳定性:
    • 较大的batch size:梯度估计更稳定(基于更多样本),训练过程更平滑,但可能陷入局部最优。
    • 较小的batch size:梯度估计噪声更大,可能跳出局部最优,但训练过程波动较大。
  • 内存与计算效率:
    • 较大的batch size:可以更高效地利用GPU并行计算能力,减少梯度更新次数,但需要更大的显存。
    • 较小的batch size:显存占用小,但可能无法充分利用GPU的并行计算能力。
  • 泛化能力:
    • 较大的batch size:可能导致模型泛化能力下降(尤其是在数据不足时)。
    • 较小的batch size:可能增强模型的泛化能力,因为噪声梯度可以作为一种正则化手段。

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 @ 2024-11-18 22:22  流水灯  阅读(1755)  评论(1)    收藏  举报