YOLO训练参数-分享给你这些

1,617 阅读2分钟

代码示例

from ultralytics import YOLO

config_yaml  = "./model/yolo11n.yaml"
pt_model = "./model/yolo11n.pt"
data_yaml = "./model/myConfig.yaml"

def train():
    model = YOLO(config_yaml).load(pt_model)
    model.train(
            data=data_yaml,
            batch_size=4,
            epochs=120,
            learning_rate=0.01,
            imgsz=640,
            angle=1.5,
            saturation=1.5,
            exposure=1.5,
            hue=0.1,
            random=1
     )

参数解释

模型加载

在yolo11的路径下,./ultralytics/cfg/models下存有不同yolo版本的yaml文件,子文件夹分别为11、v10、v9、v8...在11文件夹中,有 ①yolo11.yaml ②yolo11-cls.yaml ③yolo11-obb.yaml ④yolo11-pose.yaml ⑤yolo11-seg.yaml 需要根据不同的检测需求,加载不同的yaml,这会影响结果生成的效果和字段。常用的目标检测采用yolo11.yaml,分类采用yolo11-cls.yaml,分割采用yolo11-seg.yaml。seg会额外生成掩膜的轮廓。

pt文件在yolo原始的安装包中并没有存放,需要自行去下载,一般能够下载到的版本有 ①yolo11s.pt ②yolo11m.pt ③yolo11n.pt ④yolo11n-seg.pt ⑤yolo11n-cls.pt 等 可以看出,模型除了有使用场景的不同,还有大小的区别(n, s, m)。当需求是速度优先于精度,建议采用n,其次是s,精度最好的是m。

模型训练

batch_size: 每次迭代中使用的样本数量。较大的批量可以提高GPU利用率,但可能需要更多的内存。 epochs 或 max_batches: 训练的轮数或最大批次数。这定义了整个数据集将被遍历多少次。 learning_rate: 学习率是梯度下降过程中更新权重的速度。初始学习率通常较小,并可以在训练期间进行调整。 width 和 height: 输入图像的宽度和高度。YOLO通常使用固定的输入尺寸,如416x416或608x608。 angle, saturation, exposure, hue: 数据增强参数,分别对应旋转角度、饱和度、曝光度和色调的变化范围。 classes: 类别数量。你的数据集中有多少不同的类别。 filters: 卷积层滤波器的数量。对于最后的卷积层,它通常是(classes + 5)*3,因为每个预测框有五个坐标值(中心点、宽高以及置信度)加上类别的概率。 random: 如果设置为1,则会在训练时随机缩放图像。

结果分析

train结束后,能够在控制台看到训练日志;自动在执行文件夹内./run/train里会以图片文件形式自动一些曲线数据。

召回率曲线(面积越大越好,recall从1明显下降的位置越晚越好) image.png 精确率曲线(面积越大越好,precision升到1越早越好) image.png F1率是综合评价召回率和精确率的曲线(面积越大越好) image.png