YOLO图像识别训练参数
1、训练代码中参数
代码示例:
yaml_yolov8 = 'ultralytics/cfg/models/v8/yolov8m.yaml'
model = YOLO(yaml_yolov8)
data_path = r'config\traindata.yaml'
name = os.path.basename(yaml_yolov8).split('.')[0]
# 文档中对参数有详细的说明
model.train(data=data_path, # 数据集
imgsz=640, # 训练图片大小
epochs=200, # 训练的轮次
batch=2, # 训练batch
workers=0, # 加载数据线程数
device=device, # 使用显卡
optimizer='SGD', # 优化器
project='runs/train', # 模型保存路径
name=name, # 模型保存命名
)
1.1、yolov8m.yaml
选择yolov8m作为超参传入。网络层数在295层
1.2、model.train:data=data_path
定义了数据集路径,包括了根路径(path)、训练集(train)、验证集(val)、测试集(test)如:
path: D://python//ultralytics-main//dataset//yolo
train: # train images (relative to 'path') 16551 images
- train
val: # val images (relative to 'path') 4952 images
- val
test: # test images (optional)
- test
定义了分类的详细情况:如
names:
0: helmet
1: head
1.3、model.train:igmsz=640
定义了训练的图片大小。
1.3.1 、常见设置
小目标检测用igmsz=1024(如遥感图像中的车辆、行人等)
通用目标检测用igmsz=640(如交通监控中的车辆)
实时检测用416或320(如无人机或摄像头实时检测)
1.3.2、imgsz的作用
- 影响模型性能:大的imgsz会保存图片更多细节,有助于小目标检测,同理小的imgsz会导致小目标丢失使效果变差
- 影响推理速度:imgsz 越大,模型的计算量越大,推理速度越慢。实时性:对于实时检测任务(如视频流处理),通常需要较小的 imgsz 以保证推理速度。
- 影响内存占用大小:显存占用:imgsz 越大,输入图像占用的显存越多,可能导致 GPU 内存不足(OOM)。批量大小:较大的 imgsz 会减少单次推理或训练的批量大小(batch size)。
1.3.3 模型性能
验证集表现:在验证集上测试不同 imgsz 的模型性能(如 mAP),选择性能最佳的 imgsz。
推理速度:测试不同 imgsz 的推理速度(FPS),选择满足实时性要求的 imgsz。
1.3.4、 imgsz 的调整策略
(1)从默认值开始
初始可以使用 YOLO 的默认 imgsz(如 640),观察模型性能和推理速度。
如果默认值无法满足需求,再逐步调整。
(2)逐步调整
如果需要更高的检测精度,可以逐步增加 imgsz(如从 640 增加到 1024)。
如果需要更快的推理速度,可以逐步减小 imgsz(如从 640 减小到 416)。
(3)验证集测试
在验证集上测试不同 imgsz 的模型性能(如 mAP),选择性能最佳的 imgsz。
1.4、model.train:epochs=100
1.4.1、epochs 的作用
定义:1