一、任务、模式、模型与数据
| 参数 | 传参类型 | 作用 |
|---|---|---|
| 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 时统一方形填充。 |