使用 Ultralytics YOLO 进行模型训练
简介
训练 深度学习 模型的过程,涉及向模型输入数据并调整其参数,以便使其能够进行准确的预测。Ultralytics YOLO26 中的训练模式(Train mode)专为高效地训练目标检测模型而设计,能够充分利用现代硬件的性能。本指南旨在涵盖你使用 YOLO26 强大的功能集来开始训练自己模型所需的所有细节。
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
为什么要选择 Ultralytics YOLO 进行训练?
以下是选择 YOLO26 训练模式的一些令人信服的理由:
- 效率: 充分利用你的硬件,无论你是使用单 GPU 设置还是跨多个 GPU 进行扩展。
- 通用性: 除了 COCO、VOC 和 ImageNet 等现成数据集外,还可以在自定义数据集上进行训练。
- 用户友好: 提供简单而强大的 CLI 和 Python 接口,带来直接的训练体验。
- 超参数灵活性: 提供广泛的可定制超参数,以微调模型性能。如需更深度的控制,你甚至可以 自定义训练器。
- 云端训练: 通过 Ultralytics Platform 在云端 GPU 上进行训练,并可实时获取指标和自动保存检查点。
训练模式的主要功能
以下是 YOLO26 训练模式的一些显著功能:
- 自动下载数据集: 首次使用时会自动下载 COCO、VOC 和 ImageNet 等标准数据集。
- 多 GPU 支持: 无缝地跨多个 GPU 扩展你的训练工作,以加快进程。
- 超参数配置: 可以选择通过 YAML 配置文件或 CLI 参数来修改超参数。
- 可视化与监控: 实时跟踪训练指标并可视化学习过程,从而获得更好的洞察。
- 像 COCO、VOC、ImageNet 等 YOLO26 数据集会在首次使用时自动下载,例如
yolo train data=coco.yaml
使用示例
在 COCO8 数据集上以图像大小 640 训练 YOLO26n 100 个 epoch。可以使用 device 参数指定训练设备。如果不传递任何参数,则在可用时会使用 GPU device=0;否则将使用 device='cpu'。请参阅下方的“参数”部分以获取训练参数的完整列表。
在 Windows 上,以脚本形式启动训练时可能会遇到 RuntimeError。在你的训练代码前添加一个 if __name__ == "__main__": 代码块即可解决。
设备会自动确定。如果 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。
要使用 2 个 GPU(CUDA 设备 0 和 1)进行训练,请使用以下命令。根据需要扩展至更多 GPU。
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])当你指定多个设备(例如 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空闲 GPU 训练
空闲 GPU 训练支持在多 GPU 系统中自动选择利用率最低的 GPU,从而在无需手动选择 GPU 的情况下优化资源使用。此功能会根据利用率指标和 VRAM 可用性来识别可用的 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 芯片支持的集成,现在可以在使用高性能 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 silicon 芯片的计算能力,可以更高效地处理训练任务。有关更详细的指导和高级配置选项,请参阅 PyTorch MPS 文档。
恢复中断的训练
从先前保存的状态恢复训练是处理深度学习模型时的一项关键功能。这在各种场景中都非常方便,例如当训练过程意外中断时,或者当你希望使用新数据或在更多 epoch 下继续训练模型时。
当恢复训练时,Ultralytics YOLO 会加载最后保存的模型权重,并恢复优化器状态、学习率 调度器以及 epoch 编号。这使你能够从上次中断的地方无缝地继续训练过程。
You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.
以下是使用 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 函数将开启一个新的训练会话。
请记住,默认情况下检查点会在每个 epoch 结束时保存,或者使用 save_period 参数按固定间隔保存,因此你必须至少完成 1 个 epoch 才能恢复训练。
训练设置
YOLO 模型的训练设置涵盖了训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和 准确率。关键的训练设置包括 batch size、学习率、动量和权重衰减。此外,优化器、损失函数 和训练数据集组成的选择也会影响训练过程。对这些设置进行仔细的调整和实验对于优化性能至关重要。
MuSGD 优化器
在 YOLO26 中,MuSGD 是一种混合优化器,它结合了标准的 SGD 更新与 Muon 式正交化更新。
它推荐用于更长的 YOLO26 训练任务和更大的数据集,其中正交化的 Muon 更新有助于稳定优化过程。
只有 param.ndim >= 2 的参数(如卷积权重)会连同 SGD 一起接收 Muon 式更新,而诸如批归一化层和偏置项等低维参数则保持使用标准的 SGD。
当使用 optimizer=auto 时,Ultralytics 会自动为较长的训练任务(通常迭代次数 > 10000 时)选择 MuSGD。对于较短的训练任务,训练器将回退到 AdamW。
使用示例:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD请参阅 ultralytics/optim/muon.py 中的实现,以及 BaseTrainer.build_optimizer 中的优化器自动选择逻辑。
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
model | str | None | 指定用于训练的模型文件。接受 .pt 预训练模型或 .yaml 配置文件路径。对于定义模型结构或初始化权重至关重要。 |
data | str | None | 数据集配置文件的路径(例如 coco8.yaml)。此文件包含特定于数据集的参数,包括训练和 validation data 的路径、类名和类别数量。 |
epochs | int | 100 | 训练的总 epoch 数。每个 epoch 代表对整个数据集的一次完整遍历。调整此值会影响训练持续时间和模型性能。 |
time | float | None | 以小时为单位的最大训练时间。如果设置,此参数将覆盖 epochs 参数,允许在指定时间后自动停止训练。对于有时间限制的训练场景非常有用。 |
patience | int | 100 | 在提前停止训练之前,验证指标没有提升的 epoch 数。通过在性能趋于平稳时停止训练,有助于防止 overfitting。 |
batch | int 或 float | 16 | Batch size,具有三种模式:设置为整数(例如 batch=16)、用于 60% GPU 显存利用率的自动模式(batch=-1)或具有指定利用率分数的自动模式(batch=0.70)。 |
imgsz | int | 640 | 训练的目标图像大小。图像被调整为边长等于指定值的正方形(如果 rect=False),对于 YOLO 模型保持长宽比,但对 RT-DETR 不适用。影响模型的 accuracy 和计算复杂度。 |
save | bool | True | 启用保存训练检查点和最终模型权重。对于恢复训练或 model deployment 非常有用。 |
save_period | int | -1 | 保存模型检查点的频率(以 epoch 为单位)。值为 -1 表示禁用此功能。对于在长时间训练期间保存中间模型非常有用。 |
cache | bool | False | 启用在内存(True/ram)或磁盘(disk)中缓存数据集图像,或禁用它(False)。通过减少磁盘 I/O 来提高训练速度,代价是增加内存使用量。 |
device | int 或 str 或 list | None | 指定用于训练的计算设备:单个 GPU(device=0)、多个 GPU(device=[0,1])、CPU(device=cpu)、Apple 芯片的 MPS(device=mps)、华为昇腾 NPU(device=npu 或 device=npu: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,则允许覆盖现有的项目/名称目录。对于不需要手动清除以前输出的迭代实验非常有用。 |
pretrained | bool 或 str | True | 确定是否从预训练权重开始训练。可以是布尔值或要加载的权重路径字符串。pretrained=False 将从随机初始化的权重开始训练,同时保留模型架构。 |
optimizer | str | 'auto' | 训练优化器的选择。选项包括 SGD、MuSGD、Adam、Adamax、AdamW、NAdam、RAdam、RMSProp 或用于根据模型配置自动选择的 auto。影响收敛速度和稳定性。 |
seed | int | 0 | 设置训练的随机种子,确保在相同配置下的运行结果具有可重复性。 |
deterministic | bool | True | 强制使用确定性算法,确保可重复性,但由于对非确定性算法的限制,可能会影响性能和速度。 |
verbose | bool | True | 在训练期间启用详细输出,在控制台中显示进度条、每个 epoch 的指标以及其他训练信息。 |
single_cls | bool | False | 在训练期间将多类数据集中的所有类别视为单个类别。对于二分类任务或关注对象存在而非分类时非常有用。 |
classes | list[int] | None | 指定要训练的类别 ID 列表。对于在训练期间过滤掉并仅关注某些类别非常有用。 |
rect | bool | False | 启用最小填充策略——批次中的图像被最小限度地填充以达到统一大小,最长边等于 imgsz。可以提高效率和速度,但可能会影响模型准确性。 |
multi_scale | float | 0.0 | 在每个 batch 中随机改变 imgsz,幅度为 +/- multi_scale(例如 0.25 -> 0.75x 到 1.25x),并四舍五入为模型步长的倍数;0.0 表示禁用多尺度训练。 |
cos_lr | bool | False | 使用余弦 学习率 调度器,根据余弦曲线在每个 epoch 之间调整学习率。这有助于管理学习率以实现更好的收敛。 |
close_mosaic | int | 10 | 在最后 N 个 epoch 中禁用马赛克 数据增强,以便在完成前稳定训练。设置为 0 可禁用此功能。 |
resume | bool | False | 从上一个保存的检查点恢复训练。它会自动加载模型权重、优化器状态和 epoch 计数,从而无缝继续训练。 |
amp | bool | True | 启用自动 混合精度 (AMP) 训练,以减少内存使用并可能在对精度影响极小的情况下加速训练。 |
fraction | float | 1.0 | 指定用于训练的数据集比例。允许在完整数据集的子集上进行训练,这对于实验或资源有限时非常有用。 |
profile | bool | False | 在训练期间启用 ONNX 和 TensorRT 的性能分析,这对于优化模型部署很有帮助。 |
freeze | int 或 list | None | 冻结模型的前 N 层或通过索引指定的层,从而减少可训练参数的数量。适用于微调或 迁移学习。 |
lr0 | float | 0.01 | 初始学习率(例如 SGD=1E-2,Adam=1E-3)。调整此值对于优化过程至关重要,它会影响模型权重更新的快慢。 |
lrf | float | 0.01 | 最终学习率占初始学习率的比例 = (lr0 * lrf),与调度器配合使用以随时间调整学习率。 |
momentum | float | 0.937 | SGD 的动量因子或 Adam 优化器 的 beta1 参数,影响当前更新中对过去梯度的融合程度。 |
weight_decay | float | 0.0005 | L2 正则化 项,通过惩罚较大的权重来防止过拟合。 |
warmup_epochs | float | 3.0 | 学习率预热的 epoch 数,将学习率从较低值逐渐提高到初始学习率,以在训练初期稳定过程。 |
warmup_momentum | float | 0.8 | 预热阶段的初始动量,在预热期间逐渐调整为设定的动量值。 |
warmup_bias_lr | float | 0.1 | 预热阶段偏差参数的学习率,有助于在初始 epoch 中稳定模型训练。 |
box | float | 7.5 | 损失函数 中框损失组件的权重,影响模型对准确预测 边界框 坐标的重视程度。 |
cls | float | 0.5 | 总损失函数中分类损失的权重,影响正确类别预测相对于其他组件的重要性。 |
cls_pw | float | 0.0 | 用于通过逆类频率处理类别不平衡的类别加权幂。0.0 禁用类别加权,1.0 应用完全逆频率加权。0 到 1 之间的值提供部分加权。 |
dfl | float | 1.5 | 分布焦点损失 (Distribution Focal Loss) 的权重,在某些 YOLO 版本中用于细粒度分类。 |
pose | float | 12.0 | 为姿态估计训练的模型中的姿态损失权重,影响对准确预测姿态关键点的侧重。 |
kobj | float | 1.0 | 姿态估计模型中关键点目标性损失的权重,平衡检测置信度与姿态准确性。 |
rle | float | 1.0 | 姿态估计模型中残差对数似然估计损失的权重,影响关键点定位的精度。 |
angle | float | 1.0 | OBB 模型中角度损失的权重,影响旋转边界框角度预测的精度。 |
nbs | int | 64 | 用于损失归一化的名义 batch size。 |
overlap_mask | bool | True | 确定在训练时是否应将对象掩码合并为单个掩码,还是为每个对象保持独立。如果存在重叠,合并时较小的掩码会覆盖在较大的掩码之上。 |
mask_ratio | int | 4 | 分割掩码的下采样比例,影响训练期间所用掩码的分辨率。 |
dropout | float | 0.0 | 分类任务中正则化的 Dropout 比率,通过在训练期间随机省略单元来防止过拟合。 |
val | bool | True | 在训练期间启用验证,允许在单独的数据集上定期评估模型性能。 |
plots | bool | True | 生成并保存训练和验证指标的图表以及预测示例,提供关于模型性能和学习进度的直观洞察。 |
compile | bool 或 str | False | 启用 PyTorch 2.x torch.compile 图编译,后端为 backend='inductor'。接受 True -> "default",False -> 禁用,或者字符串模式如 "default","reduce-overhead","max-autotune-no-cudagraphs"。如果不支持,会发出警告并回退到即时模式。 |
max_det | int | 300 | 指定训练验证阶段保留的对象最大数量。 |
batch 参数可以通过三种方式配置:
- 固定 Batch Size:设置一个整数值(例如
batch=16),直接指定每个 batch 的图像数量。 - 自动模式(60% GPU 内存):使用
batch=-1,自动调整 batch size 以达到约 60% 的 CUDA 内存利用率。 - 带利用率分数的自动模式:设置一个分数(例如
batch=0.70),根据指定的 GPU 内存使用分数来调整 batch size。 - OOM 自动重试:如果在第一个 epoch 期间发生 CUDA 内存不足(out-of-memory)错误,训练器会自动将 batch size 减半并重试(最多 3 次)。这仅适用于单 GPU 训练;多 GPU (DDP) 训练将直接抛出错误。
增强设置和超参数
增强技术对于通过在 训练数据 中引入变异性来提高 YOLO 模型的稳健性和性能至关重要,这有助于模型更好地泛化到未见数据。下表列出了每个增强参数的目的和效果:
| 参数 | 类型 | 默认 | 支持的任务 | 范围 | 描述 |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 按色相环的一小部分调整图像的色相,引入颜色变异性。有助于模型在不同的光照条件下进行泛化。 |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 按一小部分改变图像的饱和度,从而影响颜色的强度。有助于模拟不同的环境条件。 |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 按一小部分修改图像的值(亮度),帮助模型在各种光照条件下良好运行。 |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | 在指定的角度范围内随机旋转图像,提高模型识别不同方向物体的能力。 |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | 按图像大小的一小部分水平和垂直平移图像,有助于学习检测部分可见的物体。 |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | 通过增益因子缩放图像,模拟相机视角中距离不同的物体。 |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | 按指定的角度剪切图像,模拟从不同角度观察物体产生的效果。 |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | 对图像应用随机透视变换,增强模型理解 3D 空间中物体的能力。 |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 以指定的概率将图像上下翻转,在不影响物体特征的情况下增加数据变异性。 |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 以指定的概率将图像左右翻转,这对于学习对称物体和增加数据集多样性非常有用。 |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 以指定的概率将图像通道从 RGB 翻转为 BGR,这对于提高对通道顺序错误的稳健性非常有用。 |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | 将四张训练图像合并为一张,模拟不同的场景构图和目标交互。对于复杂场景理解非常有效。 |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 混合两张图像及其标签,创建一个合成图像。通过引入标签噪声和视觉多变性,增强模型的泛化能力。 |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 结合两张图像的部分内容,在保持不同区域的同时创建部分混合。通过创建遮挡场景增强模型的鲁棒性。 |
copy_paste | float | 0 | segment | 0.0 - 1.0 | 在图像间复制并粘贴对象,以增加对象实例。 |
copy_paste_mode | str | flip | segment | - | 指定要使用的 copy-paste 策略。选项包括 'flip' 和 'mixup'。 |
auto_augment | str | randaugment | classify | - | 应用预定义的增强策略('randaugment'、'autoaugment' 或 'augmix'),通过视觉多样性提高模型性能。 |
erasing | float | 0.4 | classify | 0.0 - 1.0 | 在训练期间随机擦除图像区域,以鼓励模型关注不太明显的特征。 |
augmentations | list | `` | detect, segment, pose, obb | - | 用于高级数据增强的自定义 Albumentations 变换(仅限 Python API)。接受一系列变换对象,以满足特殊的增强需求。 |
可以调整这些设置以满足数据集和当前任务的具体要求。尝试不同的值有助于找到能带来最佳模型性能的最优增强策略。
有关训练增强操作的更多信息,请参阅参考部分。
日志记录
在训练 YOLO26 模型时,跟踪模型随时间推移的性能非常有用。这就是日志记录发挥作用的地方。Ultralytics YOLO 支持三种类型的记录器 - Comet、ClearML 和 TensorBoard。
要使用记录器,请从上述代码片段的下拉菜单中选择它并运行。所选的记录器将被安装并初始化。
Comet
Comet 是一个允许数据科学家和开发人员跟踪、比较、解释和优化实验与模型的平台。它提供实时指标、代码差异和超参数跟踪等功能。
要使用 Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()记得在他们的网站上登录你的 Comet 账号并获取你的 API key。你需要将其添加到环境变量或脚本中以记录实验。
ClearML
ClearML 是一个开源平台,可自动化跟踪实验并帮助高效共享资源。它旨在帮助团队更高效地管理、执行和重现他们的 ML 工作。
要使用 ClearML:
# pip install clearml
import clearml
clearml.browser_login()运行此脚本后,你需要登录浏览器上的 ClearML 账号并验证你的会话。
TensorBoard
TensorBoard 是一个用于 TensorFlow 的可视化工具包。它允许你可视化 TensorFlow 图、绘制有关图执行的定量指标,并显示通过它的图像等附加数据。
要在 Google Colab 中使用 TensorBoard:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory要在本地使用 TensorBoard,请运行以下命令并在 localhost:6006 查看结果。
tensorboard --logdir ultralytics/runs # replace with 'runs' directory这将加载 TensorBoard 并将其定向到保存训练日志的目录。
设置好记录器后,你就可以继续进行模型训练了。所有训练指标将自动记录在所选平台中,你可以访问这些日志来监控模型随时间推移的性能、比较不同模型并确定改进领域。
常见问题
我可以不用本地 GPU 进行训练吗?
可以。Ultralytics Platform 支持云训练,并提供免费额度供你上手。上传数据集,选择模型和 GPU,然后直接从浏览器进行训练。有关详细信息,请参阅云训练指南。
如何使用 Ultralytics YOLO26 训练目标检测模型?
要使用 Ultralytics YOLO26 训练目标检测模型,你可以使用 Python API 或 CLI。以下是两者的示例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)有关更多详细信息,请参阅训练设置部分。
Ultralytics YOLO26 训练模式的主要功能是什么?
Ultralytics YOLO26 训练模式的主要功能包括:
- 自动下载数据集: 自动下载 COCO、VOC 和 ImageNet 等标准数据集。
- 多 GPU 支持: 在多个 GPU 上扩展训练以实现更快的处理速度。
- 超参数配置: 通过 YAML 文件或 CLI 参数自定义超参数。
- 可视化与监控: 实时跟踪训练指标以获得更好的见解。
这些功能使训练变得高效且可根据你的需求进行定制。有关更多详细信息,请参阅训练模式的主要功能部分。
如何恢复 Ultralytics YOLO26 中中断的训练会话?
要从中断的会话中恢复训练,请将 resume 参数设置为 True 并指定最后保存的检查点的路径。
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)查看关于恢复中断的训练的部分以获取更多信息。
如何对不平衡数据集进行模型训练?
当某些类别的样本明显少于训练数据中的其他类别时,就会出现类别不平衡。这会导致模型在罕见类别上的表现不佳。Ultralytics YOLO 通过 cls_pw 参数支持类别加权来解决此问题。
cls_pw 参数根据反向类别频率控制类别加权强度:
cls_pw=0.0(默认):禁用类别加权cls_pw=1.0:应用完全反向频率加权0.0和1.0之间的值:为中度不平衡提供部分加权
类别权重计算为 (1.0 / class_counts) ^ cls_pw,并进行归一化,使其均值等于 1.0。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)对于中度不平衡的数据集,从 cls_pw=0.25 开始,如果稀有类别的表现仍然不佳,则增加到 1.0。你可以在训练日志中检查计算出的类别权重,以验证权重分布。
我可以在 Apple 芯片上训练 YOLO26 模型吗?
可以,Ultralytics YOLO26 支持利用 Metal Performance Shaders (MPS) 框架在 Apple 芯片上进行训练。将 'mps' 指定为你的训练设备。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")有关更多详细信息,请参阅Apple Silicon MPS 训练部分。
常见的训练设置有哪些,我该如何配置它们?
Ultralytics YOLO26 允许你通过参数配置各种训练设置,如批处理大小、学习率、轮次等。以下是简要概述:
| 参数 | 默认 | 描述 |
|---|---|---|
model | None | 用于训练的模型文件路径。 |
data | None | 数据集配置文件路径(例如 coco8.yaml)。 |
epochs | 100 | 训练轮次总数。 |
batch | 16 | 批处理大小,可调整为整数或自动模式。 |
imgsz | 640 | 训练的目标图像尺寸。 |
device | None | 用于训练的计算设备,如 cpu、0、0,1 或 mps。 |
save | True | 启用保存训练检查点和最终模型权重。 |
有关训练设置的深入指南,请查看训练设置部分。