Link to this section配置#
YOLO 设置和超参数对模型的性能、速度和 accuracy 起着至关重要的作用。这些设置会影响模型在训练、验证和预测等各个阶段的行为。
Watch: Mastering Ultralytics YOLO: Configuration
Ultralytics 命令使用以下语法:
yolo TASK MODE ARGS其中:
TASK(可选) 是 (detect, segment, semantic, classify, pose, obb) 之一MODE(必需) 是 (train, val, predict, export, track, benchmark) 之一ARGS(可选)是arg=value对,例如imgsz=640,它们会覆盖默认值。
默认的 ARG 值在此页面定义,并来自 cfg/default.yaml file。
Link to this section任务#
Ultralytics YOLO 模型可以执行多种计算机视觉任务,包括:
- Detect:Object detection 用于识别和定位图像或视频中的对象。
- Segment:Instance segmentation 将图像或视频分割为对应于不同对象或类别的区域。
- Semantic segmentation (
semantic):Semantic segmentation 为图像中的每个像素分配类别标签,以实现密集的场景理解。 - Classify:Image classification 预测输入图像的类别标签。
- Pose:Pose estimation 在图像或视频中识别对象并估计其关键点。
- OBB:Oriented Bounding Boxes 使用旋转边界框,适用于卫星或医学影像。
| 参数 | 默认值 | 描述 |
|---|---|---|
task | 'detect' | 指定 YOLO 任务:detect 用于 object detection,segment 用于实例分割,semantic 用于语义分割,classify 用于分类,pose 用于姿态估计,obb 用于旋转边界框。每项任务都针对图像和视频分析中的特定输出和问题进行了调整。 |
Link to this section模式#
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 用于性能评估。每种模式支持从开发到部署的不同阶段。 |
Link to this section训练设置#
YOLO 模型的训练设置包括影响模型性能、速度和 accuracy 的超参数和配置。关键设置包括 batch size、learning rate、动量和权重衰减。优化器、loss function 和数据集组成的选择也会影响训练。调优和实验对于获得最佳性能至关重要。有关更多详细信息,请参阅 Ultralytics entrypoint function。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | 指定用于训练的模型文件。接受 .pt 预训练模型或 .yaml 配置文件的路径。这对于定义模型结构或初始化权重至关重要。 |
data | str | None | 数据集配置文件的路径(例如 coco8.yaml)。该文件包含特定于数据集的参数,包括训练和 验证数据的路径、类别名称以及类别数量。 |
epochs | int | 100 | 总训练 epoch 数。每个 epoch 代表对整个数据集的一次完整遍历。调整此值会影响训练持续时间和模型性能。 |
time | float | None | 以小时为单位的最长训练时间。如果设置,它将覆盖 epochs 参数,允许训练在指定持续时间后自动停止。这对于有时间限制的训练场景非常有用。 |
patience | int | 100 | 在验证指标没有改善的情况下等待的 epoch 数,之后将提前停止训练。通过在性能停滞时停止训练,有助于防止 过拟合。 |
batch | int 或 float | 16 | Batch size,具有三种模式:设置为整数(例如 batch=16)、用于 60% GPU 内存利用率的自动模式(batch=-1),或带有指定利用率分数的自动模式(batch=0.70)。 |
imgsz | int | 640 | 训练的目标图像尺寸。图像被调整为边长等于指定值的正方形(如果 rect=False),这保留了 YOLO 模型的长宽比,但 RT-DETR 不会。这会影响模型 准确率 和计算复杂度。 |
save | bool | True | 启用保存训练检查点和最终模型权重。这对于恢复训练或 模型部署 非常有用。 |
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 Silicon 的 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 | 每批次随机改变 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 | 用于损失归一化的标称批次大小。 |
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 显存使用率进行调整。
Link to this section预测设置#
YOLO 模型的预测设置包括在推理过程中影响性能、速度和 accuracy 的超参数和配置。关键设置包括置信度阈值、Non-Maximum Suppression (NMS) 阈值和类别数量。输入数据大小、格式以及掩码等补充功能也会影响预测。调整这些设置对于获得最佳性能至关重要。
推理参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
source | str 或 int 或 None | None | 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时流的设备 ID。如果省略,将记录警告,模型将回退到内置的演示资源(ultralytics/assets,或用于 OBB 的演示 URL)。支持多种格式和来源,能够在 不同类型的输入 间灵活应用。 |
conf | float | 0.25 | 设置检测的最低置信度阈值。置信度低于此阈值的检测对象将被忽略。调整此值有助于减少误报。 |
iou | float | 0.7 | Intersection Over Union (IoU) 非极大值抑制 (NMS) 阈值。较低的值通过消除重叠框来减少检测数量,有助于减少重复项。 |
imgsz | int 或 tuple | 640 | Letterbox 目标。整数给出方形 N×N;元组给出 (height, width)。设置 rect=True 时,由于最小矩形填充,实际张量可能小于此目标。使用 rect=False 可获得固定大小。请参阅 Fixed shape vs minimum rectangle。 |
rect | bool | True | 如果为 True,则在可能时使用最小矩形填充(相同形状的批次和支持的后端)。如果为 False,则始终填充至完整的 imgsz。请参阅 Fixed shape vs minimum rectangle。 |
half | bool | False | 启用半precision (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 | 指定从中提取特征向量或 embeddings 的层。适用于聚类或相似度搜索等下游任务。 |
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 参数。有关详细信息,请参阅 End-to-End Detection guide。 |
可视化参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
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,则线条宽度会根据图像尺寸自动调整。提供用于清晰度的视觉自定义功能。 |
Link to this section验证设置#
YOLO 模型的验证设置涉及用于评估 validation dataset 性能的超参数和配置。这些设置会影响性能、速度和 accuracy。常见设置包括批次大小、验证频率和性能指标。验证数据集的大小和组成以及特定任务也会影响该过程。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
data | str | None | 指定数据集配置文件的路径(例如 coco8.yaml)。此文件应包含 validation data 的路径。 |
imgsz | int | 640 | 定义输入图像的大小。所有图像在处理前都会调整为此尺寸。较大的尺寸可能会提高小对象的精度,但会增加计算时间。 |
batch | int | 16 | 设置每批图像的数量。更高的值更有效地利用 GPU 显存,但需要更多的 VRAM。请根据可用的硬件资源进行调整。 |
save_json | bool | False | 如果为 True,则将结果保存为 JSON 文件,以便进行进一步分析、与其他工具集成或提交给 COCO 等评估服务器。 |
conf | float | 0.001 | 设置检测的最低置信度阈值。较低的值会增加召回率,但可能会引入更多误报。在 validation 期间使用,以计算精度-召回率曲线。对于 OBB 验证,默认为 0.01 以减少内存使用。 |
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 | 启用半precision (FP16) 计算,在对 accuracy 影响极小的情况下减少内存使用并可能提高速度。 |
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,将使用矩形推理进行批处理,减少填充(padding),通过按图像原始长宽比进行处理,从而可能提高速度和效率。 |
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 | 启用类无关的 Non-Maximum Suppression,无论其预测类别如何,都会合并重叠的框。这对于以实例为核心的应用非常有用。对于端到端模型(YOLO26、YOLOv10),这仅防止同一检测结果出现多个类别标签(IoU=1.0 重复),而不会在不同框之间执行基于 IoU 阈值的抑制。 |
single_cls | bool | False | 在验证过程中将所有类别视为单一类别。对于评估二分类任务的模型性能,或者当类别区分并不重要时非常有用。 |
visualize | bool | False | 为每张图像可视化真值(ground truths)、真阳性、假阳性及假阴性。有助于调试和模型解释。 |
show_labels | bool | True | 当 visualize=True 时,在验证可视化中显示类别标签。设为 False 可获得更清晰的匹配项和错误查看效果。 |
show_conf | bool | True | 当 visualize=True 时,在验证可视化中显示置信度分数。设为 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 推理(YOLO26、YOLOv10)的 YOLO 模型中的端到端模式。将其设为 False,允许你使用传统的 NMS 流水线运行验证,同时还可以使用 iou 参数。 |
仔细的调整和实验对于确保最佳性能以及检测和防止 overfitting 至关重要。
Link to this section导出设置#
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 导出采用动态输入尺寸,增强了处理不同图像尺寸时的灵活性。 |
simplify | bool | True | 使用 onnxslim 简化 ONNX 导出的模型图,从而潜在地提高性能以及与推理引擎的兼容性。 |
opset | int | None | 指定用于与不同 ONNX 解析器和运行时兼容的 ONNX opset 版本。如果不设置,将使用最新支持的版本。 |
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 Silicon 的 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 推理(YOLO26、YOLOv10)的 YOLO 模型中的端到端模式。将其设为 False,允许你导出这些模型,以使其兼容传统的基于 NMS 的后处理流水线。详情请参阅 端到端检测指南。 |
周全的配置能确保导出模型针对其用例进行优化,并在目标环境中有效运行。
Link to this section解决方案设置#
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' | 用于相似度搜索的图像目录路径。 |
imgsz | int | 640 | 用于模型推理的输入图像尺寸。 |
Link to this section增强设置#
数据增强 技术对于通过向 训练数据 引入变异性来提高 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)。接受转换对象列表以满足特定的增强需求。 |
调整这些设置以满足数据集和任务的要求。尝试不同的数值可以帮助找到实现最佳模型性能的最优增强策略。
Link to this section日志、检查点和绘图设置#
日志记录、检查点、绘图和文件管理在训练 YOLO 模型时非常重要:
- 日志记录:使用 TensorBoard 等库或通过写入文件来追踪模型进度并诊断问题。
- 检查点:定期保存模型,以便恢复训练或尝试不同的配置。
- 绘图:使用 Matplotlib 或 TensorBoard 等库可视化性能和训练进度。
- 文件管理:整理训练期间生成的文件(如检查点、日志文件和图表),以便于访问和分析。
有效管理这些方面有助于追踪进度,并使调试和优化变得更加容易。
| 参数 | 默认值 | 描述 |
|---|---|---|
project | None | 指定用于保存训练运行的根目录。如果未指定,运行将保存在 runs/<task> 下。每次运行都保存在单独的子目录中。 |
name | None | 定义实验名称。如果未指定,YOLO 会使用模式名称并为每次运行递增(例如 train、train-2),以避免覆盖。 |
exist_ok | False | 确定是否覆盖现有的实验目录。True 允许覆盖;False 则禁止。 |
plots | True | 控制训练和验证图表的生成与保存。设为 True 可创建诸如损失曲线、精确率-召回率 曲线以及样本预测图,用于直观地追踪性能。 |
save | True | 启用保存训练检查点和最终模型权重。设为 True 可定期保存模型状态,从而允许恢复训练或部署模型。 |
Link to this section自定义配置文件#
加载保存的 YAML 以复用整套参数,无需内联传入。cfg 参数会覆盖 default.yaml 中的值,而随之传入的其他参数优先级更高。
| 参数 | 默认值 | 描述 |
|---|---|---|
cfg | None | 指向 YAML 文件的路径,其值会替换 default.yaml 中的条目。有关 CLI 示例,请参阅 覆盖默认配置文件。 |
Link to this section常见问题解答#
Link to this section如何提升 YOLO 模型在训练期间的性能?#
通过调整 batch size、learning rate、动量和权重衰减等超参数来提升性能。调整 数据增强 设置,选择合适的优化器,并使用早停或 混合精度 等技术。详情请参阅 训练指南。
Link to this section哪些是影响 YOLO 模型准确率的关键超参数?#
影响准确率的关键超参数包括:
- Batch Size (
batch):较大的值可以稳定训练,但需要更多内存。 - Learning Rate (
lr0):较小的值可以实现微调,但收敛速度较慢。 - Momentum (
momentum):加速梯度向量,抑制振荡。 - Image Size (
imgsz):较大的尺寸可提高准确率,但会增加计算负荷。
请根据你的数据集和硬件进行调整。在 训练设置 中了解更多。
Link to this section如何设置训练 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.
Link to this sectionYOLO 模型的默认推理设置是什么?#
默认设置包括:
- 置信度阈值 (
conf=0.25):检测所需的最小置信度。 - IoU 阈值 (
iou=0.7):用于 非极大值抑制 (NMS)。 - 图像尺寸 (
imgsz=640):调整输入图像大小。 - 设备 (
device=None):选择 CPU、GPU、Apple MPS 或华为昇腾 NPU (npu)。
Link to this section为什么要对 YOLO 模型使用混合精度训练?#
混合精度 训练 (amp=True) 使用 FP16 和 FP32 减少内存使用并加速训练。它对现代 GPU 有利,允许使用更大的模型并进行更快的计算,而不会出现显著的准确率损失。在 训练指南 中了解更多。