YOLO训练参数详解
首页文章工具搜索

YOLO训练参数详解

2026.09.13 [YOLO] [机器视觉] 129 浏览


一、任务、模式、模型与数据

参数 传参类型 作用
task 字符串 指定任务类型。可选 detect 表示目标检测,输出边界框和类别;segment 表示实例分割,输出边界框、类别和像素级掩码;classify 表示图像分类,输出整图类别;pose 表示姿态估计,输出关键点;obb 表示旋转框检测,输出带角度的旋转边界框。
mode 字符串 指定运行模式。可选 train 表示训练;val 表示验证评估;predict 表示推理预测;export 表示导出;track 表示多目标跟踪;benchmark 表示基准测试。
model 字符串 指定模型结构文件路径或预训练权重路径。可传入 .pt 权重文件、.yaml 模型结构文件、.onnx 模型文件。
data 字符串 指定数据集配置文件路径。通常为 YAML 文件,用于定义训练集路径、验证集路径、测试集路径、类别数量、类别名称。
project 字符串或空值 指定输出项目目录。传入字符串时结果保存到该目录;传入空值时使用默认输出根目录。
name 字符串 指定本次运行名称。结果通常保存到 project/name 目录下。
exist_ok 布尔 指定输出目录已存在时是否覆盖或复用。传入 true 时覆盖或复用已有目录;传入 false 时自动创建递增目录。
cfg 字符串或空值 指定额外配置文件路径,用于覆盖默认参数。传入空值时不加载额外配置。
tracker 字符串 指定多目标跟踪器配置文件路径。可用于指定 BoT-SORT 跟踪器配置或 ByteTrack 跟踪器配置。
save_dir 字符串 指定或记录本次运行的实际保存目录。通常由 project 和 name 组合生成。

二、训练规模、设备与保存

参数 传参类型 作用
epochs 整数 指定总训练轮数。每一轮表示完整遍历一次训练集。
time 空值或数值 指定最长训练时间,单位通常为小时。传入数值时达到该时间后停止训练;传入空值时不限制训练时间。
patience 整数 指定早停耐心值。验证指标连续若干轮未提升时停止训练。
batch 整数 指定每批处理的图像数量。显存不足时可降低该值。
imgsz 整数 指定输入图像尺寸。训练和验证通常按该尺寸缩放或填充。
save 布尔 指定是否保存模型检查点和最终模型。传入 true 时保存;传入 false 时不保存。
save_period 整数 指定每若干轮保存一次中间权重。传入负值时不进行周期保存。
cache 布尔或字符串 指定是否缓存图像以加速数据读取。传入 true 时缓存到内存;传入 false 时不缓存;传入 ram 时缓存到内存;传入 disk 时缓存到磁盘。
device 字符串或空值 指定训练或推理设备。传入空值时自动选择;传入 cpu 时使用 CPU;传入 0 时使用第一块 GPU;传入 0,1 时使用第一块和第二块 GPU;传入 mps 时使用 Apple MPS。
workers 整数 指定 DataLoader 工作进程数,用于并行加载数据。传入 0 时在主进程加载数据。
pretrained 布尔或字符串 指定是否使用预训练权重。传入 true 时使用默认预训练权重;传入 false 时不使用预训练权重;传入字符串时指定预训练权重路径。
resume 布尔或字符串 指定是否从上次中断的检查点继续训练。传入 true 时从默认检查点继续;传入 false 时不继续;传入字符串时指定检查点路径。
amp 布尔 指定是否启用自动混合精度训练。传入 true 时启用;传入 false 时关闭。
fraction 浮点数 指定使用训练集的比例。传入 1.0 时使用全部训练数据;传入小于 1.0 的数值时按比例使用训练数据。
profile 布尔 指定是否进行性能分析。传入 true 时启用;传入 false 时关闭。
freeze 空值、整数、列表、字符串 指定要冻结的层。传入空值时不冻结;传入整数时冻结前若干层;传入列表时冻结指定层索引;传入字符串时冻结指定层名称。
multi_scale 浮点数 指定多尺度训练强度。传入 0.0 时关闭;传入大于 0.0 的数值时训练中随机改变输入尺寸。
compile 布尔 指定是否使用 torch.compile 编译模型。传入 true 时启用;传入 false 时关闭。
channels_last 布尔 指定是否使用 channels-last 内存格式。传入 true 时启用;传入 false 时关闭。
seed 整数 指定随机种子,用于复现实验。
deterministic 布尔 指定是否启用确定性训练。传入 true 时尽量保证可复现;传入 false 时允许非确定性操作。
verbose 布尔 指定是否打印详细训练日志。传入 true 时打印;传入 false 时减少输出。

三、优化器与学习率

参数 传参类型 作用
optimizer 字符串 指定优化器类型。可选 auto 表示自动选择;SGD 表示随机梯度下降;Adam 表示自适应矩估计;AdamW 表示带权重衰减的 Adam;NAdam 表示带 Nesterov 动量的 Adam;RAdam 表示整流 Adam;RMSProp 表示均方根传播。
lr0 浮点数 指定初始学习率。
lrf 浮点数 指定最终学习率因子。最终学习率通常由初始学习率与该因子共同决定。
momentum 浮点数 指定 SGD 动量或 Adam 类优化器的 beta1。
weight_decay 浮点数 指定权重衰减系数,用于抑制过拟合。
warmup_epochs 浮点数 指定学习率预热轮数。
warmup_momentum 浮点数 指定预热阶段的初始动量。
warmup_bias_lr 浮点数 指定预热阶段偏置参数的学习率。
cos_lr 布尔 指定是否使用余弦学习率调度。传入 true 时启用;传入 false 时使用线性调度。
nbs 整数 指定名义 batch size,用于损失归一化。

四、损失函数权重与任务相关参数

参数 传参类型 作用
box 浮点数 指定边界框回归损失权重。
cls 浮点数 指定分类损失权重。
dfl 浮点数 指定 Distribution Focal Loss 权重,常用于 YOLOv8 检测头。
cls_pw 浮点数 指定分类正样本权重或类别权重,用于调整分类损失。
pose 浮点数 指定姿态估计关键点损失权重,主要用于 pose 任务。
kobj 浮点数 指定关键点目标性损失权重,主要用于 pose 任务。
angle 浮点数 指定旋转框角度损失权重,主要用于 obb 任务。
rle 浮点数 指定旋转框或特定分支中的损失权重。
overlap_mask 布尔 指定分割任务中掩码是否允许重叠。传入 true 时允许;传入 false 时不允许。主要用于 segment 任务。
mask_ratio 整数 指定分割掩码下采样比例。主要用于 segment 任务。
dropout 浮点数 指定分类头 dropout 概率。传入 0.0 时不启用 dropout。
single_cls 布尔 指定是否将所有类别视为一个类别进行训练。传入 true 时视为单类;传入 false 时按多类处理。
cls_remap 布尔 指定是否进行类别重映射。传入 true 时处理预训练类别与自定义类别不一致的情况;传入 false 时不重映射。
distill_model 空值或字符串 指定知识蒸馏教师模型路径。传入空值时不启用蒸馏;传入字符串时使用该路径模型作为教师模型。
dis 浮点数 指定蒸馏相关损失权重。
dlog 浮点数 指定蒸馏 logits 损失权重。
dgrad 浮点数 指定蒸馏梯度损失权重或特征损失权重。
dlam 浮点数 指定蒸馏 lambda 权重。

五、验证、预测、NMS、显示与保存

参数 传参类型 作用
val 布尔 指定训练过程中是否进行验证。传入 true 时进行;传入 false 时不进行。
split 字符串 指定验证使用数据集的哪个划分。可选 train 表示使用训练集划分;val 表示使用验证集划分;test 表示使用测试集划分。
save_json 布尔 指定是否保存 COCO 格式 JSON 结果。传入 true 时保存;传入 false 时不保存。
conf 空值或浮点数 指定置信度阈值。传入空值时按不同模式的默认策略处理;传入浮点数时按该值过滤检测结果。
iou 浮点数 指定 NMS 的 IoU 阈值。
max_det 整数 指定每张图像最多保留的检测框数量。
quantize 空值、字符串、整数 指定导出或推理量化设置。传入空值时不启用量化;传入 16 时表示 16 位量化;传入 int8 时表示 8 位整数量化;传入 half 时表示半精度浮点量化。
dnn 布尔 指定是否使用 OpenCV DNN 后端进行推理。传入 true 时使用;传入 false 时不使用。
plots 布尔 指定是否保存训练曲线、混淆矩阵、PR 曲线图。传入 true 时保存;传入 false 时不保存。
end2end 空值或布尔 指定是否使用端到端模型或端到端导出。传入空值时按默认策略处理;传入 true 时启用;传入 false 时关闭。
source 空值或字符串 指定预测输入源。传入空值时不指定;传入字符串时可为图片文件路径、视频文件路径、目录路径、摄像头编号、RTSP 流地址、HTTP 流地址。
vid_stride 整数 指定视频预测时每隔多少帧取一帧。
stream_buffer 布尔 指定视频流推理时是否缓冲帧。传入 true 时缓冲;传入 false 时不缓冲。
visualize 布尔 指定是否可视化特征图或注意力中间结果。传入 true 时可视化;传入 false 时不可视化。
augment 布尔 指定预测时是否使用测试时增强。传入 true 时启用;传入 false 时关闭。
agnostic_nms 布尔 指定 NMS 是否类别无关。传入 true 时不同类别之间也会互相抑制;传入 false 时按类别分别抑制。
classes 空值、整数、列表 指定只保留或处理的类别索引。传入空值时不过滤;传入整数时只保留该类;传入列表时保留多个指定类。
retina_masks 布尔 指定是否输出高分辨率分割掩码。传入 true 时输出;传入 false 时不输出。主要用于 segment 预测。
embed 空值、整数、列表 指定输出嵌入特征。传入空值时不输出;传入整数时输出指定层;传入列表时输出多层。
show 布尔 指定是否实时显示预测结果。传入 true 时显示;传入 false 时不显示。
save_frames 布尔 指定视频预测时是否保存每一帧。传入 true 时保存;传入 false 时不保存。
save_txt 布尔 指定是否把预测结果保存为 txt 文件。传入 true 时保存;传入 false 时不保存。
save_conf 布尔 指定保存 txt 结果时是否包含置信度。传入 true 时包含;传入 false 时不包含。
save_crop 布尔 指定是否保存检测目标的裁剪图。传入 true 时保存;传入 false 时不保存。
show_labels 布尔 指定显示结果时是否绘制类别标签。传入 true 时绘制;传入 false 时不绘制。
show_conf 布尔 指定显示结果时是否绘制置信度。传入 true 时绘制;传入 false 时不绘制。
show_boxes 布尔 指定显示结果时是否绘制检测框。传入 true 时绘制;传入 false 时不绘制。
line_width 空值或整数 指定绘制框线宽。传入空值时自动确定;传入整数时按该值绘制。

六、导出相关参数

参数 传参类型 作用
format 字符串 指定导出格式。可选 torchscript 导出 TorchScript;onnx 导出 ONNX;openvino 导出 OpenVINO;engine 导出 TensorRT;coreml 导出 CoreML;saved_model 导出 TensorFlow SavedModel;pb 导出 TensorFlow GraphDef;tflite 导出 TensorFlow Lite;edgetpu 导出 Edge TPU;tfjs 导出 TensorFlow.js;paddle 导出 PaddlePaddle;ncnn 导出 NCNN;rknn 导出 RKNN;imx 导出 IMX;mighty 导出 Mighty。
keras 布尔 指定是否导出 TensorFlow Keras 格式。传入 true 时导出;传入 false 时不导出。
optimize 布尔 指定导出时是否优化模型。传入 true 时优化;传入 false 时不优化。
dynamic 布尔 指定是否导出动态 batch 或动态尺寸。传入 true 时启用;传入 false 时使用固定尺寸。
simplify 布尔 指定导出 ONNX 时是否简化图结构。传入 true 时简化;传入 false 时不简化。
opset 空值或整数 指定 ONNX opset 版本。传入空值时自动选择;传入整数时使用该版本。
workspace 空值或数值 指定 TensorRT 最大工作空间大小。传入空值时自动设置;传入数值时按该值设置。
nms 布尔 指定导出时是否把 NMS 集成进模型。传入 true 时集成;传入 false 时不集成。

七、数据增强参数

参数 传参类型 作用
hsv_h 浮点数 指定 HSV 色调扰动幅度。
hsv_s 浮点数 指定 HSV 饱和度扰动幅度。
hsv_v 浮点数 指定 HSV 亮度扰动幅度。
degrees 浮点数 指定随机旋转角度范围。
translate 浮点数 指定随机平移比例。
scale 浮点数 指定随机缩放比例。
shear 浮点数 指定随机剪切变换幅度。
perspective 浮点数 指定随机透视变换幅度。
flipud 浮点数 指定上下翻转概率。
fliplr 浮点数 指定左右翻转概率。
bgr 浮点数 指定 BGR 通道交换概率。
mosaic 浮点数 指定 Mosaic 增强概率。
mixup 浮点数 指定 MixUp 增强概率。
cutmix 浮点数 指定 CutMix 增强概率。
copy_paste 浮点数 指定 Copy-Paste 增强概率,常用于分割任务。
copy_paste_mode 字符串 指定 Copy-Paste 增强模式。可选 flip 表示翻转模式;mixup 表示混合模式。
auto_augment 字符串 指定自动增强策略。可选 randaugment 表示随机增强;autoaugment 表示自动增强;augmix 表示增强混合。
erasing 浮点数 指定随机擦除概率,常用于分类任务。
close_mosaic 整数 指定最后多少轮关闭 Mosaic 增强,以帮助稳定收敛。
rect 布尔 指定是否使用矩形训练。传入 true 时按 batch 最小填充;传入 false 时统一方形填充。