配置
YOLO 设置和超参数对于模型的性能、速度和 精度 至关重要。这些设置会影响模型在不同阶段的表现,包括训练、验证和预测。
Watch: Mastering Ultralytics YOLO: Configuration
Ultralytics 命令使用以下语法:
yolo TASK MODE ARGS说明:
TASK(可选)是以下之一(detect, segment, classify, pose, obb)MODE(必选)是以下之一(train, val, predict, export, track, benchmark)ARGS(optional) arearg=valuepairs likeimgsz=640that override defaults.
默认的 ARG 值在此页面定义,并来自 cfg/default.yaml 文件。
任务
Ultralytics YOLO 模型可以执行多种计算机视觉任务,包括:
- Detect(检测):目标检测 用于识别图像或视频中的对象并进行定位。
- Segment(分割):实例分割 将图像或视频划分为对应不同对象或类别的区域。
- Classify(分类):图像分类 预测输入图像的类别标签。
- Pose(姿态):姿态估计 在图像或视频中识别对象并估计其关键点。
- OBB(旋转框):旋转边界框 使用旋转后的边界框,适用于卫星图像或医学图像。
| 参数 | 默认值 | 描述 |
|---|---|---|
task | 'detect' | 指定 YOLO 任务:detect 用于 目标检测,segment 用于分割,classify 用于分类,pose 用于姿态估计,obb 用于旋转边界框。每个任务都针对图像和视频分析中的特定输出和问题进行了定制。 |
模式
Ultralytics YOLO 模型在不同模式下运行,每种模式专为模型生命周期的特定阶段而设计:
- Train(训练):在自定义数据集上训练 YOLO 模型。
- Val(验证):验证训练好的 YOLO 模型。
- Predict(预测):使用训练好的 YOLO 模型对新图像或视频进行预测。
- Export(导出):导出 YOLO 模型以进行部署。
- Track(追踪):使用 YOLO 模型进行实时对象追踪。
- Benchmark(基准测试):对 YOLO 导出模型(ONNX、TensorRT 等)的速度和精度进行基准测试。
| 参数 | 默认值 | 描述 |
|---|---|---|
mode | 'train' | 指定 YOLO 模型的运行模式:train 用于模型训练,val 用于验证,predict 用于推理,export 用于转换为部署格式,track 用于对象追踪,benchmark 用于性能评估。每种模式都支持从开发到部署的不同阶段。 |
训练设置
YOLO 模型的训练设置包括影响模型性能、速度和 精度 的超参数和配置。关键设置包括 批量大小、学习率、动量和权重衰减。优化器、损失函数 和数据集构成等选择也会影响训练效果。调整和实验对于获得最佳性能至关重要。更多详细信息,请参阅 Ultralytics 入口函数。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | 指定用于训练的模型文件。接受 .pt 预训练模型路径或 .yaml 配置文件路径。这对于定义模型结构或初始化权重至关重要。 |
data | str | None | 数据集配置文件的路径(例如 coco8.yaml)。该文件包含数据集特定的参数,包括训练和 验证数据 的路径、类别名称和类别数量。 |
epochs | int | 100 | 训练总轮数。每个 epoch 代表对整个数据集进行一次完整遍历。调整此值会影响训练时长和模型性能。 |
time | float | None | 最大训练时长(以小时为单位)。如果设置,这将覆盖 epochs 参数,使训练在达到指定时长后自动停止。适用于有时间限制的训练场景。 |
patience | int | 100 | 在验证指标不再提升的情况下,等待早停的训练轮数。当性能趋于平缓时停止训练,有助于防止 过拟合。 |
batch | int 或 float | 16 | 批量大小,具有三种模式:设置为整数(例如 batch=16)、用于 60% GPU 显存利用率的自动模式(batch=-1),或具有指定利用率百分比的自动模式(batch=0.70)。 |
imgsz | int | 640 | 训练的目标图像尺寸。图像将被调整为边长等于该指定值的正方形(如果 rect=False),YOLO 模型会保持长宽比,但 RT-DETR 不会。这会影响模型的 精度 和计算复杂度。 |
save | bool | True | 启用训练检查点和最终模型权重的保存。这对恢复训练或 模型部署 非常有用。 |
save_period | int | -1 | 保存模型检查点的频率,以轮数为单位。设置为 -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 | 启用训练期间的详细输出,在控制台中显示进度条、每轮指标和其他训练信息。 |
single_cls | bool | False | 在训练期间将多类数据集中的所有类别视为单个类别。对于二分类任务或关注对象是否存在而非分类的任务非常有用。 |
classes | list[int] | None | 指定要训练的类别 ID 列表。对于过滤掉不需要的类、仅关注特定类别非常有用。 |
rect | bool | False | 启用最小填充策略——批次中的图像被最小程度地填充以达到统一大小,最长边等于 imgsz。可以提高效率和速度,但可能会影响模型精度。 |
multi_scale | float | 0.0 | 每批次随机变化 imgsz,幅度为 multi_scale(例如 0.25 -> 0.75x 到 1.25x),四舍五入到模型步长的倍数;0.0 禁用多尺度训练。 |
cos_lr | bool | False | 使用余弦 学习率 调度器,使学习率随轮数按照余弦曲线调整。有助于管理学习率以获得更好的收敛效果。 |
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 | 姿态估计模型中关键点目标性(Keypoint Objectness)损失的权重,平衡检测置信度与姿态准确性。 |
rle | float | 1.0 | 姿态估计模型中残差对数似然估计损失的权重,影响关键点定位的精度。 |
angle | float | 1.0 | OBB 模型中角度损失的权重,影响旋转边界框角度预测的精度。 |
nbs | int | 64 | 用于损失归一化的标称批次大小。 |
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"。如果不支持,将回退到 eager 模式并显示警告。 |
max_det | int | 300 | 指定训练验证阶段保留的对象最大数量。 |
batch 参数提供三种配置选项:
- 固定批次大小:使用整数指定每个批次的图像数量(例如
batch=16)。 - 自动模式 (60% GPU 内存):使用
batch=-1自动调整以占用约 60% 的 CUDA 内存。 - 带利用率分数的自动模式:设置一个比例(例如
batch=0.70)以根据指定的 GPU 内存使用量进行调整。
预测设置
YOLO 模型的预测设置包括超参数和配置,这些设置会影响推理期间的性能、速度和 准确率。关键设置包括置信度阈值、非极大值抑制 (NMS) 阈值以及类别数量。输入数据大小、格式和诸如掩码等补充功能也会影响预测结果。调整这些设置对于获得最佳性能至关重要。
推理参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
source | str 或 int 或 None | None | 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时馈送的设备 ID。如果省略,将记录警告,模型将回退到内置演示资产(ultralytics/assets 或 OBB 的演示 URL)。支持多种格式和来源,从而能在 不同类型的输入 上实现灵活应用。 |
conf | float | 0.25 | 设置检测的最低置信度阈值。置信度低于此阈值的检测对象将被忽略。调整此值有助于减少误报。 |
iou | float | 0.7 | 用于非极大值抑制 (NMS) 的 交并比 (IoU) 阈值。较低的值通过消除重叠框来减少检测结果,有助于减少重复。 |
imgsz | int 或 tuple | 640 | Letterbox 目标尺寸。整数表示正方形 N×N;元组表示 (height, width)。使用 rect=True 时,由于最小矩形填充,实际张量可能小于此目标。使用 rect=False 可获得固定尺寸。请参阅 固定形状与最小矩形。 |
rect | bool | True | 如果为 True,则在可能时使用最小矩形填充(相同形状的批次和支持的后端)。如果为 False,则始终填充到完整的 imgsz。请参阅 固定形状与最小矩形。 |
half | bool | False | 启用半 精度 (FP16) 推理,这可以在支持的 GPU 上加快模型推理速度,且对准确率的影响极小。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0、0、npu 或 npu:0)。允许用户在 CPU、特定 GPU、华为昇腾 NPU 或其他计算设备之间选择以执行模型。 |
batch | int | 1 | 指定推理的批次大小(仅当源为 目录、视频文件或 .txt 文件 时有效)。较大的批次大小可以提供更高的吞吐量,从而缩短推理所需的总时间。 |
max_det | int | 300 | 每张图片允许的最大检测数量。限制模型在单次推理中可以检测到的对象总数,防止在密集场景中输出过多结果。 |
vid_stride | int | 1 | 视频输入的帧步长。允许在视频中跳帧,以牺牲时间分辨率为代价加快处理速度。数值为 1 时处理每一帧,更高的数值则会跳过部分帧。 |
stream_buffer | bool | False | 确定是否为视频流对输入帧进行排队。如果设为 False,旧帧将被丢弃以容纳新帧(针对实时应用进行了优化)。如果设为 True,会将新帧放入缓冲区队列,确保不丢失任何帧,但在推理 FPS 低于视频流 FPS 时会导致延迟。 |
visualize | bool | False | 在推理过程中激活模型特征可视化,深入了解模型“看到”的内容。这对于调试和模型解释非常有用。 |
augment | bool | False | 为预测启用测试时增强 (TTA),这可能会提高检测的稳健性,但会牺牲一定的推理速度。 |
agnostic_nms | bool | False | 启用类别无关的非极大值抑制 (NMS),它会合并不同类别的重叠框。这在类别重叠常见的多类检测场景中非常有用。对于端到端模型(YOLO26、YOLOv10),这仅防止同一检测结果以多个类别标签出现(IoU=1.0 的重复项),而不会对不同框之间执行基于 IoU 阈值的抑制。 |
classes | list[int] | None | 将预测结果过滤为指定的一组类别 ID。仅返回属于指定类别的检测结果。对于在多类检测任务中专注于相关对象非常有用。 |
retina_masks | bool | False | 返回高分辨率分割掩码。如果启用,返回的掩码 (masks.data) 将与原始图像大小匹配。如果禁用,它们将具有推理过程中使用的图像大小。 |
embed | list[int] | None | 指定从中提取特征向量或 嵌入 的层。这对聚类或相似度搜索等下游任务非常有用。 |
project | str | None | 如果启用了 save,预测结果保存的项目目录名称。 |
name | str | None | 预测运行的名称。用于在项目文件夹内创建子目录,如果启用了 save,预测结果将存储在其中。 |
stream | bool | False | 通过返回 Results 对象的生成器而不是一次性将所有帧加载到内存中,为长视频或大量图像启用内存高效处理。 |
verbose | bool | True | 控制是否在终端显示详细的推理日志,提供有关预测过程的实时反馈。 |
compile | bool 或 str | False | 启用 PyTorch 2.x torch.compile 图编译,使用 backend='inductor'。接受 True → "default",False → 禁用,或字符串模式如 "default"、"reduce-overhead"、"max-autotune-no-cudagraphs"。如果不支持,将回退到 eager 模式并显示警告。 |
end2end | bool | None | 覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 可以让你使用传统的 NMS 流水线运行预测,并允许你利用 iou 参数。详见 端到端检测指南。 |
可视化参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
show | bool | False | 如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。 |
save | bool | False or True | 启用将标注后的图像或视频保存到文件。这对于文档记录、进一步分析或共享结果非常有用。使用 CLI 时默认为 True,在 Python 中使用时默认为 False。 |
save_frames | bool | False | 处理视频时,将单独的帧保存为图像。这对于提取特定帧或进行详细的逐帧分析非常有用。 |
save_txt | bool | False | 以 [class] [x_center] [y_center] [width] [height] [confidence] 格式将检测结果保存到文本文件中。这对于与其他分析工具集成非常有用。 |
save_conf | bool | False | 在保存的文本文件中包含置信度分数。增强了用于后期处理和分析的细节信息。 |
save_crop | bool | False | 保存检测结果的裁剪图像。这对于数据集增强、分析或为特定对象创建聚焦数据集非常有用。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签。提供对检测对象的即时了解。 |
show_conf | bool | True | 在标签旁边显示每个检测结果的置信度分数。让你可以洞察模型对每个检测的确定性。 |
show_boxes | bool | True | 在检测到的对象周围绘制边界框。这对于在图像或视频帧中进行视觉识别和定位对象至关重要。 |
line_width | int or None | None | 指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。 |
验证设置
YOLO 模型的验证设置包含用于评估 验证数据集 上性能的超参数和配置。这些设置影响性能、速度和 准确度。常见设置包括批次大小、验证频率和性能指标。验证数据集的大小和组成以及特定任务也会影响该过程。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
data | str | None | 指定数据集配置文件的路径(例如 coco8.yaml)。此文件应包含 验证数据 的路径。 |
imgsz | int | 640 | 定义输入图像的大小。所有图像在处理前都会调整为此尺寸。较大的尺寸可能会提高小对象的准确度,但会增加计算时间。 |
batch | int | 16 | 设置每个批次的图像数量。更高的值可以更有效地利用 GPU 内存,但需要更多 VRAM。根据可用的硬件资源进行调整。 |
save_json | bool | False | 如果设为 True,则将结果保存到 JSON 文件中,以便进行进一步分析、与其它工具集成或提交到 COCO 等评估服务器。 |
conf | float | 0.001 | 设置检测的最低置信度阈值。较低的值会增加召回率,但可能会引入更多的误报。在 验证 过程中用于计算查准率-召回率曲线。 |
iou | float | 0.7 | Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination. |
max_det | int | 300 | 限制每张图片的最大检测数量。在密集场景中很有用,可以防止过多的检测结果并管理计算资源。 |
half | bool | False | 启用半 精度 (FP16) 计算,减少内存使用量,并可能在对 准确度 影响最小的情况下提高速度。 |
device | str | None | 指定验证使用的设备(cpu、cuda:0、npu、npu:0 等)。当为 None 时,自动选择最佳可用设备。多个 CUDA 设备可以通过逗号分隔指定。 |
dnn | bool | False | 如果设为 True,则使用 OpenCV DNN 模块进行 ONNX 模型推理,提供了一种替代 PyTorch 推理方法的选择。 |
plots | bool | True | 当设为 True 时,生成并保存预测与真实标签的对比图、混淆矩阵和 PR 曲线,以便对模型性能进行视觉评估。 |
classes | list[int] | None | 指定要评估的类别 ID 列表。有助于在评估过程中过滤掉非相关类别并仅关注特定类别。 |
rect | bool | True | 如果设为 True,则使用矩形推理进行批处理,减少填充,并通过以图像的原始纵横比进行处理,从而潜在地提高速度和效率。 |
split | str | 'val' | 确定用于验证的数据集拆分(val、test 或 train)。允许灵活选择数据段进行性能评估。 |
project | str | None | 保存验证输出的项目目录名称。有助于组织来自不同实验或模型的结果。 |
name | str | None | 验证运行的名称。用于在项目文件夹内创建子目录,验证日志和输出将存储在其中。 |
verbose | bool | True | 如果设为 True,则在验证过程中显示详细信息,包括每类指标、批次进度以及额外的调试信息。 |
save_txt | bool | False | 如果设为 True,则将检测结果保存到文本文件中,每张图像一个文件,便于进行进一步分析、自定义后期处理或与其他系统集成。 |
save_conf | bool | False | 如果设为 True 且启用了 save_txt,则在保存的文本文件中包含置信度数值,为分析和过滤提供更详细的输出。 |
workers | int | 8 | 用于数据加载的工作线程数。较高的值可以加快数据预处理速度,但可能会增加 CPU 使用率。设为 0 表示使用主线程,在某些环境中可能更稳定。 |
augment | bool | False | 在验证期间启用测试时增强 (TTA),通过对输入图像的变换版本运行推理,从而在牺牲推理速度的情况下提高检测准确度。 |
agnostic_nms | bool | False | 启用类别无关的 非极大值抑制,无论预测类别如何,都会合并重叠的框。这对于以实例为中心的应用很有用。对于端到端模型(YOLO26、YOLOv10),这仅防止同一检测结果以多个类别标签出现(IoU=1.0 的重复项),而不会对不同框之间执行基于 IoU 阈值的抑制。 |
single_cls | bool | False | 在验证过程中将所有类别视为单一类别。这对于评估二分类任务的模型性能或当类别区分不重要时非常有用。 |
visualize | bool | False | 将每张图像的真实标签、真阳性、假阳性和假阴性可视化。对调试和模型解释很有用。 |
compile | bool 或 str | False | 启用 PyTorch 2.x torch.compile 图编译,使用 backend='inductor'。接受 True → "default",False → 禁用,或字符串模式如 "default"、"reduce-overhead"、"max-autotune-no-cudagraphs"。如果不支持,将回退到 eager 模式并显示警告。 |
end2end | bool | None | 覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 可以让你使用传统的 NMS 流水线运行验证,并允许你使用 iou 参数。 |
谨慎的调整和实验对于确保最佳性能以及检测和防止 过拟合 至关重要。
导出设置
YOLO 模型的导出设置包含用于保存或导出模型以在不同环境中使用。这些设置会影响性能、大小和兼容性。关键设置包括导出的文件格式(例如 ONNX、TensorFlow SavedModel)、目标设备(例如 CPU、GPU)以及掩码等功能。模型的任务和目标环境的约束也会影响导出过程。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
format | str | 'torchscript' | 导出模型的目标格式,例如 'onnx'、'torchscript'、'engine' (TensorRT) 等。每种格式都能与不同的 部署环境 兼容。 |
imgsz | int 或 tuple | 640 | 模型输入的期望图像大小。可以是正方形图像的整数(例如 640 表示 640×640),也可以是特定尺寸的元组 (height, width)。 |
keras | bool | False | 启用导出为 TensorFlow SavedModel 的 Keras 格式,提供与 TensorFlow 服务和 API 的兼容性。 |
optimize | bool | False | 在导出为 TorchScript 时应用针对移动设备的优化,这可以减小模型大小并提高 推理 性能。与 NCNN 格式或 CUDA 设备不兼容。对于 DeepX,启用更高级的编译器优化,这会减少推理延迟但会增加编译时间。 |
half | bool | False | 启用 FP16(半精度)量化,减小模型大小并可能加快支持硬件上的推理速度。与 INT8 量化或仅 CPU 导出不兼容。仅适用于特定格式,例如 ONNX(见下文)。 |
int8 | bool | False | 激活 INT8 量化,进一步压缩模型并以最小的 准确度 损失加速推理,主要用于 边缘设备。与 TensorRT 一起使用时,执行训练后量化 (PTQ)。 |
dynamic | bool | False | 允许 TorchScript、ONNX、OpenVINO、TensorRT 和 CoreML 导出支持动态输入大小,从而增强处理不同图像尺寸的灵活性。当在 TensorRT 中使用 INT8 时,此项自动设置为 True。 |
simplify | bool | True | 使用 onnxslim 简化 ONNX 导出的模型图,潜在地提高性能和与推理引擎的兼容性。 |
opset | int | None | 指定 ONNX opset 版本,以与不同的 ONNX 解析器和运行时兼容。如果未设置,则使用最新支持的版本。 |
workspace | float 或 None | None | 设置 TensorRT 优化的最大工作空间大小(以 GiB 为单位),从而平衡内存使用和性能。使用 None 可让 TensorRT 自动分配,最高可达设备上限。 |
nms | bool | False | 在支持的情况下(请参阅 导出格式),将非极大值抑制 (NMS) 添加到导出模型中,从而提高检测后处理效率。端到端模型不可用。 |
batch | int | 1 | 指定导出模型的批量推理大小,或者在 predict 模式下导出的模型将同时处理的最大图像数量。对于 Edge TPU 导出,此项自动设置为 1。 |
device | str | None | 指定用于导出的设备:GPU (device=0)、CPU (device=cpu)、Apple 芯片的 MPS (device=mps)、华为昇腾 NPU (device=npu 或 device=npu:0) 或 NVIDIA Jetson 的 DLA (device=dla:0 或 device=dla:1)。TensorRT 导出将自动使用 GPU。 |
data | str | 'coco8.yaml' | 数据集配置文件的路径,这对 INT8 量化校准至关重要。如果在启用 INT8 时未指定,将使用 coco8.yaml 作为校准的备选。 |
fraction | float | 1.0 | 指定用于 INT8 量化校准的数据集比例。允许在完整数据集的子集上进行校准,这对于实验或资源受限时非常有用。如果在启用 INT8 时未指定,将使用完整数据集。 |
end2end | bool | None | 覆盖支持无 NMS 推理的 YOLO 模型(YOLO26, YOLOv10)中的端到端模式。将其设置为 False,你可以将这些模型导出为兼容传统的基于 NMS 的后处理流水线。详情请参阅 端到端检测指南。 |
周全的配置可确保导出模型针对其用例进行了优化,并在目标环境中有效运行。
解决方案设置
Ultralytics 解决方案配置设置提供了灵活性,可针对目标检测计数、热图创建、健身追踪、数据分析、区域追踪、队列管理和基于区域的计数等任务自定义模型。这些选项支持轻松调整,以获得针对特定需求量身定制的准确且有用的结果。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
region | list | '[(20, 400), (1260, 400)]' | 定义计数区域的点列表。 |
show_in | bool | True | 用于控制是否在视频流中显示进入计数的标志。 |
show_out | bool | True | 用于控制是否在视频流中显示离开计数的标志。 |
analytics_type | str | 'line' | 图表类型,例如 line(折线图)、bar(柱状图)、area(面积图)或 pie(饼图)。 |
colormap | int | cv2.COLORMAP_DEEPGREEN | 用于热图的配色方案。 |
json_file | str | None | 包含所有停车坐标数据的 JSON 文件路径。 |
up_angle | float | 145.0 | “向上”姿势的角度阈值。 |
kpts | list[int] | '[6, 8, 10]' | 用于监控健身训练的三个关键点索引列表。这些关键点对应于身体关节或部位,例如肩部、肘部和腕部,适用于俯卧撑、引体向上、深蹲和腹部训练等动作。 |
down_angle | int | 90 | “向下”姿势的角度阈值。 |
blur_ratio | float | 0.5 | 调节模糊强度百分比,取值范围为 0.1 - 1.0。 |
crop_dir | str | 'cropped-detections' | 用于存储裁剪后的检测结果的目录名称。 |
records | int | 5 | 触发带有安全警报系统的电子邮件所需的总检测计数。 |
vision_point | tuple[int, int] | (20, 20) | 使用 VisionEye 解决方案追踪对象并绘制路径的点。 |
source | str | None | 输入源(视频、RTSP 等)的路径。仅可用于解决方案命令行界面 (CLI)。 |
figsize | tuple[int, int] | (12.8, 7.2) | 用于分析图表(如热图或统计图)的图形大小。 |
fps | float | 30.0 | 用于速度计算的每秒帧数。 |
max_hist | int | 5 | 用于速度/方向计算时,每个对象最大追踪的历史点数。 |
meter_per_pixel | float | 0.05 | 用于将像素距离转换为现实世界单位的比例因子。 |
max_speed | int | 120 | 视觉叠加层中的最高速度限制(用于警报)。 |
data | str | 'images' | 用于相似度搜索的图像目录路径。 |
增强设置
数据增强技术对于提高 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)。接受转换对象列表以满足特定的增强需求。 |
调整这些设置以满足数据集和任务需求。尝试不同的值有助于找到最佳的增强策略,以获得最佳模型性能。
日志、检查点和绘图设置
训练 YOLO 模型时,日志记录、检查点、绘图和文件管理非常重要:
- 日志记录:使用 TensorBoard 等库或通过写入文件来跟踪模型进度并诊断问题。
- 检查点:定期保存模型以恢复训练或尝试不同的配置。
- 绘图:使用 Matplotlib 或 TensorBoard 等库可视化性能和训练进度。
- 文件管理:整理训练期间生成的文件(如检查点、日志文件和图表),以便于访问和分析。
有效管理这些方面有助于跟踪进度,并使调试和优化变得更容易。
| 参数 | 默认值 | 描述 |
|---|---|---|
project | 'runs' | 指定保存训练运行的根目录。每次运行都保存在单独的子目录中。 |
name | 'exp' | 定义实验名称。如果未指定,YOLO 会为每次运行递增此名称(例如 exp、exp-2)以避免覆盖。 |
exist_ok | False | 确定是否覆盖现有的实验目录。True 允许覆盖;False 则防止覆盖。 |
plots | True | 控制训练和验证图表的生成与保存。设置为 True 可创建损失曲线、precision-recall 曲线和样本预测等图表,以便进行性能的视觉跟踪。 |
save | True | 启用保存训练检查点和最终模型权重。设置为 True 可定期保存模型状态,从而允许恢复训练或进行模型部署。 |
自定义配置文件
加载保存的 YAML 以重用整套参数,而无需内联传递它们。cfg 参数会覆盖 default.yaml 中的值,而同时传递的其他参数仍然具有优先权。
| 参数 | 默认值 | 描述 |
|---|---|---|
cfg | None | YAML 文件的路径,其值将替换 default.yaml 条目。请参阅 覆盖默认配置文件 以获取 CLI 示例。 |
常见问题 (FAQ)
如何提高我的 YOLO 模型在训练过程中的性能?
通过调整 batch size、learning rate、动量和权重衰减等超参数来提高性能。调整 data augmentation 设置,选择合适的优化器,并使用提前停止或 mixed precision 等技术。有关详细信息,请参阅 训练指南。
影响 YOLO 模型精度的关键超参数是什么?
影响精度的关键超参数包括:
- Batch Size (
batch):较大的尺寸可以稳定训练,但需要更多内存。 - Learning Rate (
lr0):较小的速率可以进行精细调整,但收敛速度较慢。 - Momentum (
momentum):加速梯度向量,抑制振荡。 - Image Size (
imgsz):较大的尺寸可提高精度,但会增加计算负载。
根据你的数据集和硬件调整这些参数。在 训练设置 中了解更多信息。
如何设置训练 YOLO 模型的学习率?
The learning rate (lr0) is crucial; start with 0.01 for SGD or 0.001 for Adam optimizer. Monitor metrics and adjust as needed. Use cosine learning rate schedulers (cos_lr) or warmup (warmup_epochs, warmup_momentum). Details are in the Train Guide.
YOLO 模型的默认推理设置是什么?
默认设置包括:
- Confidence Threshold (
conf=0.25):检测的最低置信度。 - IoU Threshold (
iou=0.7):用于 Non-Maximum Suppression (NMS)。 - Image Size (
imgsz=640):调整输入图像的大小。 - Device (
device=None):选择 CPU、GPU、Apple MPS 或 Huawei Ascend NPU (npu)。
为什么要对 YOLO 模型使用混合精度训练?
Mixed precision 训练 (amp=True) 使用 FP16 和 FP32 减少内存使用并加快训练速度。它对现代 GPU 有益,允许更大的模型和更快的计算,而不会显着降低精度。在 训练指南 中了解更多信息。