代码示例
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明显下降的位置越晚越好)
精确率曲线(面积越大越好,precision升到1越早越好)
F1率是综合评价召回率和精确率的曲线(面积越大越好)