Ultralytics 训练与测试参数全解析:基于源码的完整梳理

发布时间:2026/6/6 20:23:11

Ultralytics 训练与测试参数全解析:基于源码的完整梳理 Ultralytics 没有单独的testmode所谓“测试”就是val如果你想在测试集上跑就用splittest。下面只统计“公开可传”的用户参数不把内部对象参数如trainer、validator、session、save_dir算进去。代码规则model.train(**kwargs)会把默认配置、模型已有 overrides、cfg文件和kwargs合并其中data/model/task会按代码补默认值。model.val(**kwargs)也会合并配置但代码额外把rect的默认值改成了True。val运行时如果confNone验证器会把它设成0.001若任务是 OBB则设成0.01。训练过程中的验证还会在非 CPU 且 AMP 开启时强制halfTrue。共享参数训练和验证都可传参数默认值说明model配置里NonePython API 通常继承当前已加载模型模型权重.pt或结构文件.yaml。data配置里None数据集配置文件路径训练时代码会在缺省时回退到当前任务的示例数据集。imgsz640输入图像尺寸训练影响精度/显存验证影响速度/精度。batch16批大小训练支持整数、-1自动批、或0~1显存占比自动批验证通常用整数。deviceNone运行设备如cpu、0、0,1、mps、npu。workers8DataLoader worker 数验证在 CPU/MPS 上代码可能自动改成0。projectNone结果保存的项目目录。nameNone本次运行名结果落到project/name。exist_okFalse若目标目录已存在是否允许直接复用/覆盖。verboseTrue是否输出详细日志。cfgNone自定义 YAML 配置文件其值会覆盖default.yaml但仍低于同次调用里的显式kwargs。compileFalse是否启用torch.compile也可传编译模式字符串。classesNone训练时表示“只训练这些类”验证时表示“只评估这些类”。single_clsFalse把多类问题按单类处理。rect训练False/ 验证True是否使用矩形批处理减少 padding验证默认由Model.val()代码改成了True。plotsTrue是否保存图表/可视化训练会保存 loss/metric 曲线验证会保存 PR 曲线、混淆矩阵等。训练专用参数参数默认值说明epochs100总训练轮数。timeNone最长训练时长单位小时一旦设置会覆盖epochs。patience100Early stopping 容忍轮数。saveTrue是否保存 checkpoint 和最终权重。save_period-1每隔多少个 epoch 保存一次 checkpoint小于1表示关闭。cacheFalse是否缓存数据可用True/ram/disk。pretrainedTrue是否从预训练权重开始也可直接给权重路径。optimizerauto优化器可选SGD、MuSGD、Adam、AdamW等。auto会按任务/训练规模自动选。seed0随机种子。deterministicTrue强制确定性算法复现更好但可能更慢。multi_scale0.0多尺度训练幅度按imgsz上下浮动。cos_lrFalse是否启用 cosine 学习率调度。close_mosaic10最后 N 个 epoch 关闭 mosaic。resumeFalse是否从中断 checkpoint 继续训练。ampTrue是否启用混合精度训练。fraction1.0训练时只使用多少比例的数据集。profileFalse训练中附带分析 ONNX / TensorRT 速度。freezeNone冻结前 N 层或传层索引列表。valTrue训练期间是否周期性做验证。max_det300训练内验证阶段每张图最多保留多少检测框。overlap_maskTrue分割任务专用是否把实例 mask 合并。mask_ratio4分割任务专用mask 下采样比例。dropout0.0分类任务专用分类头 dropout。augmentations无默认公开值Python API 专用自定义 Albumentations 变换列表。训练超参数 / loss 权重参数默认值说明lr00.01初始学习率。lrf0.01最终学习率比例最终 LR lr0 * lrf。momentum0.937SGD 的 momentum或 Adam 系列的beta1。weight_decay0.0005L2 正则。warmup_epochs3.0warmup 轮数。warmup_momentum0.8warmup 初始 momentum。warmup_bias_lr0.1warmup 阶段 bias 的学习率。box7.5检测框回归损失权重。cls0.5分类损失权重。cls_pw0.0类别不平衡加权强度0关闭1为完整逆频率加权。dfl1.5Distribution Focal Loss 权重。pose12.0姿态任务关键点损失权重。kobj1.0姿态任务 keypoint objectness 损失权重。rle1.0姿态任务 RLE 损失权重。angle1.0OBB 任务角度损失权重。nbs64名义 batch size用于 loss 归一化。训练数据增强参数参数默认值说明hsv_h0.015色相抖动强度。hsv_s0.7饱和度抖动强度。hsv_v0.4亮度抖动强度。degrees0.0随机旋转角度范围。translate0.1平移幅度。scale0.5缩放幅度代码注释允许浮点或(min,max)。shear0.0剪切角度。perspective0.0透视变换强度。flipud0.0上下翻转概率。fliplr0.5左右翻转概率。bgr0.0RGB/BGR 通道互换概率。mosaic1.0Mosaic 概率。mixup0.0MixUp 概率。cutmix0.0CutMix 概率。copy_paste0.0分割任务 copy-paste 概率。copy_paste_modeflip分割任务 copy-paste 策略常见为flip或mixup。auto_augmentrandaugment分类任务自动增强策略。erasing0.4分类任务随机擦除概率。验证 / 测试专用参数参数默认值说明save_jsonFalse保存验证结果检测/分割/姿态通常保存 COCO JSON语义分割保存 PNG mask。conf运行时默认0.001最低置信度阈值用于验证时生成 PR 曲线。OBB 任务代码默认0.01。iou0.7NMS 的 IoU 阈值。max_det300每张图最多保留的检测数。halfFalse是否使用 FP16 验证。dnnFalseONNX 路径下是否用 OpenCV DNN 推理。splitval选择跑val、test或train子集跑测试集就设splittest。save_txtFalse是否把预测结果写成每图一个.txt。save_confFalse与save_txt配合把置信度也写入文本。augmentFalse是否启用 TTAtest-time augmentation。agnostic_nmsFalse是否做类无关 NMS。visualizeFalse是否可视化 GT / TP / FP / FN。show_labelsTrue可视化时是否显示类别标签。show_confTrue可视化时是否显示置信度。end2endNone是否强制启用/关闭端到端无 NMS 头主要给 YOLO26 / YOLOv10 这类模型。几条容易忽略的代码级细节val的rectTrue不是default.yaml的原始默认值而是Model.val()在方法层硬塞进去的默认值。conf在default.yaml里是空值但验证器启动时会自动补成0.001OBB 为0.01。训练过程里的验证会强制把half设为“非 CPU 且 AMP 开启”。对非 PyTorch 或静态导出后端验证代码可能自动把rectFalse并把batch改成导出模型 metadata 里的值。show、save_frames、save_crop、line_width、show_boxes这些属于共享可视化/预测侧配置官方val参数表没有把它们列为正式验证参数所以我这里没有把它们算进“公开 val 参数集合”。

相关新闻