使用 Ultralytics YOLO 进行模型训练

简介
训练深度学习模型的过程,就是向模型输入数据并调整其参数,使其能够进行准确预测。Ultralytics YOLO26 的训练模式专为高效训练目标检测模型而设计,能够充分发挥现代硬件的性能优势。本指南旨在涵盖所有必要细节,助您利用 YOLO26 强大的功能集着手训练自己的模型。如果您尚未安装 Ultralytics,请先参阅快速入门指南。
为何选择 Ultralytics YOLO 进行训练?
选择 YOLO 训练模式的几大理由:
• 高效性:充分利用硬件性能,无论是单 GPU 配置还是多 GPU 扩展训练,都能游刃有余。
• 灵活性:既支持 COCO、VOC 和 ImageNet 等常用数据集,也支持自定义数据集的训练。
• 易用性:提供简洁而强大的 CLI(命令行界面)和 Python 接口,带来直观顺畅的训练体验。
• 超参数灵活配置:提供丰富的可调超参数,助您精细优化模型性能;若需更深层次的控制,还可自定义训练器本身。
• 云端训练:通过 Ultralytics 平台利用云端 GPU 进行训练,并支持实时指标监控与自动保存检查点(checkpoint)。
训练模式的主要特性
以下是 YOLO26 训练模式的一些显著特性:
• 自动下载数据集:对于包含下载源配置的数据集,系统会在首次使用时自动下载(例如执行 `yolo train data=coco8.yaml` 时)。请参阅“数据集概览”以了解支持的格式和数据集。
• 支持多 GPU:可跨多个 GPU 无缝扩展训练任务,从而加快训练进程。
• 超参数配置:支持通过 YAML 配置文件或命令行参数(CLI arguments)修改超参数。
• 可视化与监控:实时追踪训练指标并可视化学习过程,以便更深入地了解训练情况。
使用示例
在 COCO8 数据集上,以 640 的图像尺寸训练 YOLO26n 模型,训练轮数(epochs)设为 100。可通过 `device` 参数指定训练设备。若未指定该参数,系统将优先使用 GPU(设备编号为 0);若无可用 GPU,则使用 CPU(即 `device='cpu'`)。有关训练参数的完整列表,请参阅下方的“参数”部分。
单 GPU 与 CPU 训练示例
设备将自动确定。若有可用 GPU,则会使用该 GPU(默认使用 CUDA 设备 0);否则,训练将在 CPU 上进行。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
多 GPU 训练
多 GPU 训练通过将训练负载分配到多个 GPU 上,能够更高效地利用现有的硬件资源。该功能既支持 Python API,也支持命令行接口。若要启用多 GPU 训练,请指定您希望使用的 GPU 设备 ID。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Windows 平台多 GPU 支持问题
对于 torch>=2.4 版本,使用官方 PyTorch 安装包(wheels)在 Windows 上无法进行多 GPU 训练。Ultralytics 通过 `torch.distributed.run` 启动 DDP,其“集合(rendezvous)”步骤会构建一个 `TCPStore`;自 PyTorch 2.4 起,该组件默认使用 `libuv` 后端,而官方 Windows 安装包在构建时并未包含 `libuv` 支持。因此,训练会立即终止并报错:
RuntimeError: use_libuv was requested but PyTorch was built without libuv support
设置 `USE_LIBUV=0` 无法解决此问题,因为集合过程直接构建了 `TCPStore`,且该代码路径并未读取该环境变量。若需使用多 GPU,请在 Linux 或 WSL2 环境下进行训练;若在 Windows 上训练,则仅能使用单 GPU(设置 `device=0`)。
使用自定义代码进行多 GPU 训练
当指定多个设备(例如 `device=[0, 1]`)时,Ultralytics 会在内部创建一个新的训练器实例,并在底层执行 `torch.distributed.run`。这种方式对于标准的 CLI 使用和未修改的 Python 脚本均能无缝运行。然而,如果脚本中包含自定义组件(如自定义训练器、验证器、数据集或数据增强流水线),这些对象将无法自动序列化并传输到 DDP 子进程中。在这种情况下,您必须直接使用 `torch.distributed.run` 来启动脚本:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.py
在 AMD GPU 上进行训练时,需使用支持 ROCm 的 PyTorch 版本,并采用标准的 `device=0` 或 `device=cuda:0` 语法。关于 ROCm 安装、多 GPU 训练、AMP(自动混合精度)注意事项以及导出模型在 MIGraphX 上的推理,请参阅 AMD 集成指南。在 Intel GPU 上进行训练时,需使用 `device=xpu:0`(或指定多个 XPU ID),并使用支持 XCCL 的 PyTorch 版本。
华为昇腾(Ascend)NPU 训练
Ultralytics 支持通过 `torch_npu` 在华为昇腾 NPU 上进行训练和验证。请按照“Ascend Extension for PyTorch”安装指南安装相互兼容的 CANN、PyTorch 和 `torch_npu` 版本,并在启动 Ultralytics 之前加载 CANN 环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")
# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")
包括 AMP(自动混合精度)、验证、检查点保存(checkpointing)和断点续训在内的标准训练功能,均在当前活跃的 NPU 上运行。AutoBatch 功能适用于单 NPU 训练,而指定多个 NPU ID 则可通过 HCCL 启动分布式训练。关于训练后的模型导出与部署,请参阅华为昇腾(Ascend)集成指南。
空闲 GPU 训练
“空闲 GPU 训练”功能支持在多 GPU 系统中自动选择利用率最低的 GPU,从而优化资源利用,无需人工指定 GPU。该功能基于利用率指标和显存(VRAM)可用情况来识别可用的 GPU。
利用空闲 GPU 进行训练的示例
若要自动选择并使用最空闲的 GPU 进行训练,请将设备参数设置为 -1。这在共享计算环境或多用户服务器上尤为实用。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
自动选择算法会优先选择具备以下特征的 GPU:
当前利用率较低
可用显存(空闲 VRAM)较多
该功能在共享计算环境或同时针对不同模型运行多个训练任务时尤为实用。它能自动适应系统状况的变化,无需人工干预即可确保资源的最优分配。
基于 Apple Silicon MPS 的训练
随着 Ultralytics YOLO 模型对 Apple Silicon 芯片的支持,您现在可以在搭载 Apple 自研芯片的设备上,利用强大的 Metal Performance Shaders (MPS) 框架进行模型训练。MPS 提供了一种高性能方案,可在 Apple 自研芯片上执行计算和图像处理任务。若要在 Apple Silicon 芯片上进行训练,您需要在启动训练流程时将设备指定为 'mps'。以下是在 Python 代码和命令行中实现该操作的示例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
利用 Apple 芯片的算力,可以更高效地处理训练任务。如需更详细的指南和高级配置选项,请参阅 PyTorch MPS 文档。
恢复中断的训练
在使用深度学习模型时,从之前保存的状态恢复训练是一项至关重要的功能。这在多种场景下都非常有用,例如训练过程意外中断,或者您希望使用新数据或增加训练轮数(epoch)来继续训练模型。
恢复训练时,Ultralytics YOLO 会加载上次保存的模型权重,并恢复优化器状态、学习率调度器、轮数(epoch)以及数据集信息。这使您能够从上次中断的地方无缝继续训练。若希望使用与检查点(checkpoint)不同的数据集继续训练,可以在调用 `resume` 时显式指定 `data` 参数。
在 Ultralytics YOLO 中恢复训练非常简单:只需在调用 `train` 方法时将 `resume` 参数设置为 `True`,并指定包含部分训练模型权重的 `.pt` 文件路径即可。
以下是使用 Python 和命令行恢复中断训练的示例:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)
通过设置 `resume=True`,`train` 函数将利用存储在 `path/to/last.pt` 文件中的状态,从上次中断的地方继续训练。如果省略 `resume` 参数或将其设置为 `False`,`train` 函数将开启一个新的训练任务。
请注意,默认情况下,检查点(checkpoint)会在每个 epoch 结束时保存,或者通过 `save_period` 参数按固定间隔保存;因此,要恢复训练,必须至少完成一个 epoch 的训练。
训练设置
YOLO 模型的训练设置涵盖了训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确率。关键的训练设置包括批次大小(batch size)、学习率、动量(momentum)和权重衰减(weight decay)。此外,优化器、损失函数以及训练数据集的构成选择也会影响训练过程。针对这些设置进行仔细的调整和实验,对于优化模型性能至关重要。
MuSGD 优化器
在 YOLO26 中,MuSGD 是一种混合优化器,它结合了标准的 SGD 更新与 Muon 风格的正交化更新。对于较长时间的 YOLO26 训练任务和较大的数据集,推荐使用该优化器,因为正交化的 Muon 更新有助于稳定优化过程。
只有二维线性层权重和四维卷积核(会被重塑为二维形式)会同时接收 Muon 风格更新和 SGD 更新,而所有其他参数(如批归一化权重和偏置项)则继续使用标准的 SGD 更新。
当使用 `optimizer=auto` 时,Ultralytics 会自动为较长时间的训练任务(通常指迭代次数超过 10,000 次的情况)选择 MuSGD。对于较短的训练任务,训练器则会回退使用 AdamW。在自动模式下,训练器也会自动选择学习率,因此用户提供的 `lr0` 参数将被忽略。若需手动控制这些设置,请明确指定优化器,例如设置 `optimizer=AdamW lr0=0.001`。
使用示例:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD
请参阅 `ultralytics/optim/muon.py` 中的实现,以及 `BaseTrainer.build_optimizer` 中的优化器自动选择逻辑。
| 参数 | 类型 | 默认值 | 描述 |
| model | string | None | 指定用于训练的模型文件。接受 `.pt` 预训练模型或 `.yaml` 配置文件路径。对于定义模型结构或初始化权重至关重要。 |
| data | string | None | 数据集 YAML 文件路径(例如 `coco8.yaml`),其中包含训练和验证数据路径、类别名称及类别数量。 对于分类任务,也可指定数据集目录或内置数据集名称(例如 `imagenet10`)。 |
| epchs | int | 100 | 总训练轮数(epoch)。 每一轮代表对整个数据集进行一次完整遍历。调整此值会影响训练时长和模型性能。 |
| time | float | None | 最大训练时长(小时)。 若设置此参数,将覆盖 `epochs` 参数,使训练在指定时长后自动停止。适用于有时间限制的训练场景。 |
| patience | int | 100 | 在验证指标无提升的情况下,等待多少轮(epoch)后提前停止训练。 当性能停滞时停止训练,有助于防止过拟合。 |
| batch | int or float | 16 | 批次大小(batch size),支持三种模式:设为整数(如 `batch=16`);自动模式,占用 60% GPU 显存(`batch=-1`);或指定显存占用比例的自动模式(如 `batch=0.70`)。 |
| imgsz | int | 640 | 训练时的目标图像尺寸。 图像会被调整为边长等于该值的正方形(当 `rect=False` 时);YOLO 模型会保持纵横比,而 RT-DETR 模型则不会。此参数影响模型精度和计算复杂度。 |
| save | bool | True | 启用训练检查点(checkpoint)和最终模型权重的保存。 便于恢复训练或进行模型部署。 |
| save_period | int | -1 | 保存模型检查点的频率(以轮数/epoch 为单位)。 设为 -1 则禁用此功能。适用于在长时间训练过程中保存中间模型 |
| cache | bool or str | False | 启用数据集图像的缓存功能:缓存至内存(True 或 'ram')、磁盘('disk'),或禁用缓存(False)。 通过减少磁盘 I/O 来提高训练速度,但会增加内存占用。 |
| device | int or str or list | None | 指定用于训练的计算设备:单个 GPU (device=0)、多个 GPU (device=[0,1])、CPU (device='cpu')、Apple Silicon 上的 MPS (device='mps')、华为昇腾 NPU (device='npu:0' 或 device='npu:0,1')、Intel XPU (device='xpu:0'),或自动选择空闲 GPU (device=-1) / 多个空闲 GPU (device=[-1,-1])。 |
| workers | int | 8 | 数据加载的工作线程数(若进行多 GPU 训练,则为每个 RANK 的线程数)。影响数据预处理及向模型输送数据的速度,在多 GPU 设置中尤为重要。 |
| project | str | None | 保存训练输出的项目目录名称。 便于对不同实验结果进行分类存储。 |
| name | str | None | 训练运行的名称。用于在项目文件夹内创建子目录,以存储训练日志和输出结果。 |
| exist_ok | bool | False | 若为 True,则允许覆盖现有的项目/名称目录。 便于进行迭代实验,无需手动清理之前的输出。 |
| save_dir | str | None | 指定保存运行输出的具体目录,该设置将覆盖 project/name 的组合设定。 路径将按原样使用,不会自动递增,因此连续运行将复用同一目录。 |
| pretrained | bool or str | True | 决定是否基于预训练权重开始训练。可设置为布尔值或指向待加载权重的路径字符串。若设为 False,则在保持模型架构的同时,从随机初始化的权重开始训练。 |
| cls_remap | bool | True | 在跨数据集微调时,将预训练分类头(classification head)中类名匹配的行复制到新模型中;这样,重叠的类别既保留了已学习的偏置(bias),若分类头宽度未变,也保留了权重。 无论类别数量是否不同,或者类别顺序是否不一致,该设置均适用。 |
| optimizer | str | 'auto' | 训练时使用的优化器。 选项包括 SGD、MuSGD、Adam、Adamax、AdamW、NAdam、RAdam、RMSProp,或设为 'auto'(根据训练迭代次数自动选择 AdamW 或 MuSGD)。该设置会影响收敛速度和稳定性。 |
| seed | int | 0 | 设置训练的随机种子,确保在相同配置下多次运行的结果具有可复现性。 |
| deterministic | bool | True | 强制使用确定性算法,以确保结果可复现;但由于限制了非确定性算法的使用,可能会影响性能和速度。 |
| verbose | bool | True | 启用训练过程中的详细输出,在控制台中显示进度条、每个 epoch 的指标以及其他训练相关信息。 |
| single_cls | bool | False | 在训练期间将多类别数据集中的所有类别视为单一类别。 适用于二分类任务,或仅关注目标是否存在而非具体类别的情况。 |
| classes | list[int] | None | 指定用于训练的类别 ID 列表。 适用于在训练过程中过滤数据,仅关注特定类别。 |
| rect | bool | False | 启用最小填充(minimum padding)策略——批次中的图像仅进行最小程度的填充以达到统一尺寸,其中最长边等于 `imgsz`。可提高效率和速度,但可能影响模型精度。标准的 YOLO 训练器在进行检测(detect)、分割(segment)、姿态估计(pose)和 OBB 验证时,无论此设置如何,都会默认使用 `rect=True`。 |
| multi_scale | float | 0.0 | 在每个批次(batch)中,将 `imgsz` 在 `+/- multi_scale` 范围内随机调整(例如 0.25 表示在 0.75 倍到 1.25 倍之间变化),并舍入为模型步长(stride)的倍数;设为 0.0 则禁用多尺度训练。 |
| cos_lr | bool | False | 使用余弦学习率调度器,随训练轮次(epoch)按余弦曲线调整学习率。有助于管理学习率以实现更好的收敛效果。 |
| close_mosaic | int | 10 | 在最后 N 个 epoch 禁用 Mosaic 数据增强,以在训练结束前稳定模型。设为 0 则禁用此功能。 |
| resume | bool | False | 从上次保存的检查点(checkpoint)恢复训练。 自动加载模型权重、优化器状态和 epoch 计数,实现无缝继续训练。 |
| amp | bool or str | True | 设置训练精度:True 或 "fp16" 使用 FP16;"bf16" 在支持的 CUDA 设备上使用 BF16;False 或 "fp32" 使用 FP32。 |
| quantize | int or str | None | 设为 8(或 "int8")以进行 INT8 量化感知训练(QAT),该过程在训练循环中利用伪量化(fake-quantization)进行微调,使权重适应 INT8 导出。 详见“量化感知训练”相关文档。 |
| fraction | float, int,or list | 1.0 | 数据集子集,可表示为比例、数量或 `[train, val, test]` 列表。 1 表示使用完整数据集;大于 1 的整数表示图像数量;仅可选的 `test` 项支持设为 0/0.0 以表示不使用测试集。包含两项的列表将保留完整的测试集。 |
| profile | bool | False | 在训练期间启用 ONNX 和 TensorRT 速度分析(profiling),有助于优化模型部署 |
| freeze | int or list | None | 冻结模型的前 N 层,或通过索引或模块名称(例如 `23.cv2`,不带开头的 `model.`)指定要冻结的层,从而减少可训练参数的数量。 适用于微调或迁移学习。 |
| lr0 | float | 0.01 | 初始学习率(例如 SGD=1E-2,Adam=1E-3)。 在使用默认的 `optimizer='auto'` 时该参数会被忽略;需显式指定优化器才能使用此参数。 |
| lrf | float | 0.01 | 最终学习率占初始学习率的比例(即 `lr0 * lrf`),与学习率调度器配合使用,随训练过程调整学习率。 |
| momentum | float | 0.937 | SGD 优化器的动量因子或 Adam 优化器的 beta1 参数,影响当前参数更新中对历史梯度的利用程度。 |
| weight_decay | float | 0.0005 | L2 正则化项,通过惩罚较大的权重值来防止过拟合。 |
| warmup_epochs | float | 3.0 | 学习率预热(warmup)的轮数(epoch),在此期间将学习率从低值逐渐增加到初始学习率,以稳定训练初期的过程。 |
| warmup_momentum | float | 0.8 | 预热阶段的初始动量,在预热期间逐渐调整至设定的动量值。 |
| warmup_bias_lr | float | 0.1 | 预热阶段偏置(bias)参数的学习率,有助于稳定训练初期的模型训练。 在使用默认的 `optimizer='auto'` 时自动设为 0.0,因此需显式指定优化器才能使用此参数。 |
| distill_model | str | None | 用于知识蒸馏的教师模型检查点(checkpoint)路径(例如 `yolo26x.pt`)。 设置此参数后,学生模型将在训练中引入额外的蒸馏损失,该损失由冻结的教师模型引导。 |
| dis | float | 6.0 | 添加到标准检测损失中的蒸馏损失权重。 数值越高,教师模型的特征引导作用就越强 |
| box | float | 7.5 | 损失函数中边界框(box)损失分量的权重,决定了对准确预测边界框坐标的重视程度。 |
| cls | float | 0.5 | 总损失函数中分类(cls)损失的权重,影响正确类别预测相对于其他分量的重要性。 |
| cls_pw | float | 0.0 | 用于处理类别不平衡的类别加权幂次(基于类别频率的倒数)。 0.0 表示禁用类别加权,1.0 表示应用完全的频率倒数加权,0 到 1 之间的值表示部分加权。 |
| dfl | float | 1.5 | 边界框距离回归项的权重:当检测头使用 `reg_max > 1` 时为分布焦点损失(DFL);在不使用 DFL 的 YOLO26(`reg_max: 1`)模型中,则为归一化边界框距离上的 L1 损失。 |
| pose | float | 12.0 | 姿态估计模型中姿态损失的权重,影响对准确预测姿态关键点的重视程度。 |
| kobj | float | 1.0 | 姿态估计模型中关键点目标性(objectness)损失的权重,用于平衡检测置信度与姿态准确性。 |
| rle | float | 1.0 | 姿态估计模型中残差对数似然估计(RLE)损失的权重,影响关键点定位的精度。 |
| angle | float | 1.0 | OBB(旋转边界框)模型中角度损失的权重,影响旋转边界框角度预测的精度。 |
| dlog | float | 1.0 | 深度估计模型中尺度不变对数(SILog)损失的权重,这是决定深度准确性的主要项。 |
| dgrad | float | 0.5 | 深度估计模型中梯度损失的权重,用于惩罚深度边缘处的误差并促使表面边界更清晰。 |
| dlam | float | 1.0 | 深度估计模型中 SILog 损失的方差聚焦因子。 1.0 使损失完全具有尺度不变性。i而 0.0 则将其简化为普通的 log-RMSE。 |
| nbs | int | 64 | 用于损失归一化的标称批次大小(nominal batch size)。 |
| overlap_mask | bool | True | 决定在训练时是将物体掩码(masks)合并为单个掩码,还是为每个物体保留单独的掩码。 若发生重叠,合并时较小的掩码会覆盖在较大的掩码之上。 |
| mask_ratio | int | 4 | 分割掩码的下采样比例,影响训练时所用掩码的分辨率。 不改变预测掩码的分辨率。 |
| dropout | float | 0.0 | 分类任务中用于正则化的 Dropout 比率,通过在训练期间随机丢弃神经元单元来防止过拟合。 |
| val | bool | True | 启用训练期间的验证,允许在独立数据集上定期评估模型性能。 |
| nms | bool, optional | None | 选择用于 epoch 验证、检查点(checkpoint)选择和提前停止(early stopping)的推理头(inference head)。None 或 True 使用带 NMS 的“一对多”(one-to-many)模式;False 在可用时使用无 NMS 的推理头。两种推理头均保留其训练损失。 |
| plots | bool | True | 生成并保存训练与验证指标的图表以及预测示例,直观展示模型性能和学习进度。 |
| compile | bool or str | False | 启用 PyTorch 2.x 的 `torch.compile` 图编译功能,后端设为 `inductor`。 接受 True(映射为 "default")、False(禁用)或字符串模式(如 "default"、"reduce-overhead"、"max-autotune-no-cudagraphs")。若不支持,则回退到即时执行(eager mode)并发出警告。 |
| channels_last | bool | None | 在训练期间对卷积操作使用 `channels_last` (NHWC) 内存格式。 None 表示在 PyTorch 1.11 或更高版本的 CUDA 环境下自动启用(Windows 除外,因其在该系统上速度较慢)。False 禁用此功能,True 显式启用。在 CPU 或 MPS 上训练时始终保持 NCHW 格式(设为 True 时会被忽略并发出警告)。 |
| max_det | int | 300 | 训练验证期间每张图像的最大检测数量。 针对目标检测、分割、姿态估计及 OBB(带方向边界框)任务,默认值 300 仅在训练集或验证集中的标注对象数量超过 300 时,才会相应增加至该最大数量;其他数值保持固定,若超出限制则会触发警告。 |
关于 Batch Size(批大小)设置的说明
`batch` 参数可通过以下三种方式进行配置:
• 固定批大小:设置一个整数值(例如 `batch=16`),直接指定每个批次包含的图像数量。
• 自动模式(占用 60% GPU 显存):使用 `batch=-1`,系统会自动调整批大小,使 CUDA 显存利用率达到约 60%。
• 指定利用率比例的自动模式:设置一个比例值(例如 `batch=0.70`),根据指定的 GPU 显存使用比例来调整批大小。
• OOM 自动重试:如果在第一个 epoch 期间发生 CUDA 显存不足(OOM)错误,训练器会自动将批大小减半并重试(最多重试 3 次)。此机制仅适用于单 GPU 训练;多 GPU (DDP) 训练则会直接报错。
• 未找到合适配置:如果没有任何候选批大小能生成可用的性能分析结果,AutoBatch 会抛出明确的 `RuntimeError`,而不是静默回退到无关的默认值。
数据增强设置与超参数
数据增强技术对于提升 YOLO 模型的鲁棒性和性能至关重要;通过在训练数据中引入多样性,这些技术有助于模型在面对未见数据时实现更好的泛化。下表概述了各项数据增强参数的用途与作用:
| 参数 | 类型 | 默认值 | 支持的任务 | 范围 | 描述 |
| hsv_h | float | 0.015 | detect, segment, semantic,depth,classify, pose, obb | 0.0-1.0 | 根据色轮的一定比例调整图像色相,从而引入色彩变化。这有助于模型在不同光照条件下实现泛化。对于分类任务,此设置仅在 `auto_augment=None` 时生效。 |
| hsv_s | float | 0.7 |
detect, classify, | 0.0 - 1.0 | |
| hsv_v | float | 0.4 |
detect, classify, | 0.0 - 1.0 | |
| degrees | float | 0 | detect, segment, semantic, depth, pos,obb | 0.0 - 180 | |
| tranlate | float | 0.1 | detect, segment, semantic, depth, pos,obb | 0.0 - 1.0 | |
| scale | float|tuple | 0.5 |
detect, segment, semantic, depth, classify, pos,obb | 0 - 1, or an explicit (min, max)tuple (not for classify) | |
| shear | float | 0 |
detect, segment, semantic, depth, pos,obb | -180 - +180 | |
| perspective | float | 0 |
detect, segment, semantic, depth, pose, obb | ||
| flipud | float | 0 |
detect, segment, semantic, depth, classify, pose, obb | ||
| fliplr | float | 0.5 |
detect, segment, semantic, depth, classify, pose, obb | ||
| bgr | float | 0 |
detect, segment, semantic, depth, pos, obb | ||
| mosaic | float | 1 | detect, segment,semantic,pose,obb | ||
| mixup | float | 0 | detect, segment, semantic, pose,obb | ||
| cutmix | float | 0 | detect, segment, semantic, pose, obb | ||
| copy_paste | float | 0 | segment, segmantic, obb | ||
| copy_paste_mode | str | flip | segment, semantic, obb | ||
| auto_augment | str | randaument | classify | ||
| erasing | float | 0.4 | classify | ||
| augmentations | list | None | detect, segment, semantic, depth, pose, obb |
更多推荐



所有评论(0)