配置

YOLO 设置和超参数对于模型的性能、速度和 精度 至关重要。这些设置会影响模型在不同阶段的表现,包括训练、验证和预测。



Watch: Mastering Ultralytics YOLO: Configuration

Ultralytics 命令使用以下语法:

示例
yolo TASK MODE ARGS

说明:

默认的 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 入口函数

参数类型默认值描述
modelstrNone指定用于训练的模型文件。接受 .pt 预训练模型路径或 .yaml 配置文件路径。这对于定义模型结构或初始化权重至关重要。
datastrNone数据集配置文件的路径(例如 coco8.yaml)。该文件包含数据集特定的参数,包括训练和 验证数据 的路径、类别名称和类别数量。
epochsint100训练总轮数。每个 epoch 代表对整个数据集进行一次完整遍历。调整此值会影响训练时长和模型性能。
timefloatNone最大训练时长(以小时为单位)。如果设置,这将覆盖 epochs 参数,使训练在达到指定时长后自动停止。适用于有时间限制的训练场景。
patienceint100在验证指标不再提升的情况下,等待早停的训练轮数。当性能趋于平缓时停止训练,有助于防止 过拟合
batchintfloat16批量大小,具有三种模式:设置为整数(例如 batch=16)、用于 60% GPU 显存利用率的自动模式(batch=-1),或具有指定利用率百分比的自动模式(batch=0.70)。
imgszint640训练的目标图像尺寸。图像将被调整为边长等于该指定值的正方形(如果 rect=False),YOLO 模型会保持长宽比,但 RT-DETR 不会。这会影响模型的 精度 和计算复杂度。
saveboolTrue启用训练检查点和最终模型权重的保存。这对恢复训练或 模型部署 非常有用。
save_periodint-1保存模型检查点的频率,以轮数为单位。设置为 -1 可禁用此功能。对于在长时间训练过程中保存中间模型非常有用。
cacheboolFalse启用内存缓存(True/ram)、磁盘缓存(disk)或禁用缓存(False)数据集图像。通过减少磁盘 I/O 来提高训练速度,但会增加内存使用量。
deviceintstrlistNone指定用于训练的计算设备:单个 GPU(device=0)、多个 GPU(device=[0,1])、CPU(device=cpu)、Apple 芯片的 MPS(device=mps)、华为昇腾 NPU(device=npudevice=npu:0),或自动选择最空闲的 GPU(device=-1)或多个空闲 GPU(device=[-1,-1])。
workersint8数据加载的工作线程数(如果是多 GPU 训练,则为每个 RANK 的线程数)。影响数据预处理和输入模型速度,在多 GPU 设置中尤为有用。
projectstrNone保存训练输出的项目目录名称。便于有组织地存储不同的实验结果。
namestrNone训练运行的名称。用于在项目文件夹内创建子目录,存储训练日志和输出。
exist_okboolFalse如果为 True,允许覆盖现有的项目/名称目录。无需手动清理以前的输出即可进行迭代实验,非常有用。
pretrainedboolstrTrue确定是否从预训练权重开始训练。可以是布尔值,也可以是要加载的权重字符串路径。pretrained=False 表示在保留模型架构的同时,从随机初始化的权重开始训练。
optimizerstr'auto'训练优化器的选择。选项包括 SGDMuSGDAdamAdamaxAdamWNAdamRAdamRMSProp 或根据模型配置自动选择的 auto。这会影响收敛速度和稳定性。
seedint0设置训练的随机种子,确保在相同配置下多次运行的结果具有可重复性。
deterministicboolTrue强制使用确定性算法,确保可重复性,但由于限制了非确定性算法,可能会影响性能和速度。
verboseboolTrue启用训练期间的详细输出,在控制台中显示进度条、每轮指标和其他训练信息。
single_clsboolFalse在训练期间将多类数据集中的所有类别视为单个类别。对于二分类任务或关注对象是否存在而非分类的任务非常有用。
classeslist[int]None指定要训练的类别 ID 列表。对于过滤掉不需要的类、仅关注特定类别非常有用。
rectboolFalse启用最小填充策略——批次中的图像被最小程度地填充以达到统一大小,最长边等于 imgsz。可以提高效率和速度,但可能会影响模型精度。
multi_scalefloat0.0每批次随机变化 imgsz,幅度为 multi_scale(例如 0.25 -> 0.75x1.25x),四舍五入到模型步长的倍数;0.0 禁用多尺度训练。
cos_lrboolFalse使用余弦 学习率 调度器,使学习率随轮数按照余弦曲线调整。有助于管理学习率以获得更好的收敛效果。
close_mosaicint10在最后 N 个 epoch 中禁用马赛克 数据增强,以在结束前稳定训练。设置为 0 可禁用此功能。
resumeboolFalse从上一个保存的检查点恢复训练。它会自动加载模型权重、优化器状态和 epoch 计数,从而无缝继续训练。
ampboolTrue启用自动 混合精度 (AMP) 训练,减少内存使用,并在对准确率影响最小的情况下加快训练速度。
fractionfloat1.0指定用于训练的数据集比例。允许在完整数据集的子集上进行训练,这对于实验或资源有限时非常有用。
profileboolFalse在训练期间启用对 ONNX 和 TensorRT 速度的性能分析,有助于优化模型部署。
freezeintlistNone冻结模型的前 N 层或按索引指定的层,减少可训练参数的数量。适用于微调或 迁移学习
lr0float0.01初始学习率(例如 SGD=1E-2Adam=1E-3)。调整该值对优化过程至关重要,它会影响模型权重的更新速度。
lrffloat0.01最终学习率,作为初始学习率的分数 = (lr0 * lrf),与调度程序结合使用以随时间调整学习率。
momentumfloat0.937SGD 的动量因子或 Adam 优化器 的 beta1 参数,影响当前更新中对过去梯度的采纳程度。
weight_decayfloat0.0005L2 正则化 项,通过惩罚较大的权重来防止过拟合。
warmup_epochsfloat3.0学习率预热的 epoch 数,将学习率从低值逐渐增加到初始学习率,以便在早期稳定训练。
warmup_momentumfloat0.8预热阶段的初始动量,在预热期间逐渐调整到设定的动量值。
warmup_bias_lrfloat0.1预热阶段偏差参数的学习率,有助于在初始 epoch 中稳定模型训练。
boxfloat7.5损失函数 中框损失分量的权重,影响预测 边界框 坐标的准确性程度。
clsfloat0.5总损失函数中分类损失的权重,影响相对于其他组件的正确类别预测的重要性。
cls_pwfloat0.0用于处理类别不平衡的类别加权幂,使用逆类别频率。0.0 禁用类别加权,1.0 应用完全的逆频率加权。0 到 1 之间的值提供部分加权。
dflfloat1.5分布焦点损失(Distribution Focal Loss)的权重,用于某些 YOLO 版本中进行精细分类。
posefloat12.0姿态估计模型中姿态损失的权重,影响对关键点预测准确性的侧重。
kobjfloat1.0姿态估计模型中关键点目标性(Keypoint Objectness)损失的权重,平衡检测置信度与姿态准确性。
rlefloat1.0姿态估计模型中残差对数似然估计损失的权重,影响关键点定位的精度。
anglefloat1.0OBB 模型中角度损失的权重,影响旋转边界框角度预测的精度。
nbsint64用于损失归一化的标称批次大小。
overlap_maskboolTrue决定在训练时是否应将对象掩码合并为单个掩码,还是为每个对象保持独立。如果重叠,较小的掩码会在合并时覆盖在较大掩码之上。
mask_ratioint4分割掩码的下采样率,影响训练期间所用掩码的分辨率。
dropoutfloat0.0分类任务中正则化的 Dropout 率,通过在训练期间随机省略单元来防止过拟合。
valboolTrue启用训练期间的验证,允许在单独的数据集上定期评估模型性能。
plotsboolTrue生成并保存训练和验证指标图表,以及预测示例,从而提供有关模型性能和学习进度的视觉洞察。
compileboolstrFalse启用 PyTorch 2.x torch.compile 图编译,使用 backend='inductor'。接受 True"default"False → 禁用,或字符串模式如 "default""reduce-overhead""max-autotune-no-cudagraphs"。如果不支持,将回退到 eager 模式并显示警告。
max_detint300指定训练验证阶段保留的对象最大数量。
关于批次大小设置的说明

batch 参数提供三种配置选项:

  • 固定批次大小:使用整数指定每个批次的图像数量(例如 batch=16)。
  • 自动模式 (60% GPU 内存):使用 batch=-1 自动调整以占用约 60% 的 CUDA 内存。
  • 带利用率分数的自动模式:设置一个比例(例如 batch=0.70)以根据指定的 GPU 内存使用量进行调整。

训练指南

预测设置

YOLO 模型的预测设置包括超参数和配置,这些设置会影响推理期间的性能、速度和 准确率。关键设置包括置信度阈值、非极大值抑制 (NMS) 阈值以及类别数量。输入数据大小、格式和诸如掩码等补充功能也会影响预测结果。调整这些设置对于获得最佳性能至关重要。

推理参数:

参数类型默认值描述
sourcestrintNoneNone指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时馈送的设备 ID。如果省略,将记录警告,模型将回退到内置演示资产(ultralytics/assets 或 OBB 的演示 URL)。支持多种格式和来源,从而能在 不同类型的输入 上实现灵活应用。
conffloat0.25设置检测的最低置信度阈值。置信度低于此阈值的检测对象将被忽略。调整此值有助于减少误报。
ioufloat0.7用于非极大值抑制 (NMS) 的 交并比 (IoU) 阈值。较低的值通过消除重叠框来减少检测结果,有助于减少重复。
imgszinttuple640Letterbox 目标尺寸。整数表示正方形 N×N;元组表示 (height, width)。使用 rect=True 时,由于最小矩形填充,实际张量可能小于此目标。使用 rect=False 可获得固定尺寸。请参阅 固定形状与最小矩形
rectboolTrue如果为 True,则在可能时使用最小矩形填充(相同形状的批次和支持的后端)。如果为 False,则始终填充到完整的 imgsz。请参阅 固定形状与最小矩形
halfboolFalse启用半 精度 (FP16) 推理,这可以在支持的 GPU 上加快模型推理速度,且对准确率的影响极小。
devicestrNone指定推理设备(例如 cpucuda:00npunpu:0)。允许用户在 CPU、特定 GPU、华为昇腾 NPU 或其他计算设备之间选择以执行模型。
batchint1指定推理的批次大小(仅当源为 目录、视频文件或 .txt 文件 时有效)。较大的批次大小可以提供更高的吞吐量,从而缩短推理所需的总时间。
max_detint300每张图片允许的最大检测数量。限制模型在单次推理中可以检测到的对象总数,防止在密集场景中输出过多结果。
vid_strideint1视频输入的帧步长。允许在视频中跳帧,以牺牲时间分辨率为代价加快处理速度。数值为 1 时处理每一帧,更高的数值则会跳过部分帧。
stream_bufferboolFalse确定是否为视频流对输入帧进行排队。如果设为 False,旧帧将被丢弃以容纳新帧(针对实时应用进行了优化)。如果设为 True,会将新帧放入缓冲区队列,确保不丢失任何帧,但在推理 FPS 低于视频流 FPS 时会导致延迟。
visualizeboolFalse在推理过程中激活模型特征可视化,深入了解模型“看到”的内容。这对于调试和模型解释非常有用。
augmentboolFalse为预测启用测试时增强 (TTA),这可能会提高检测的稳健性,但会牺牲一定的推理速度。
agnostic_nmsboolFalse启用类别无关的非极大值抑制 (NMS),它会合并不同类别的重叠框。这在类别重叠常见的多类检测场景中非常有用。对于端到端模型(YOLO26、YOLOv10),这仅防止同一检测结果以多个类别标签出现(IoU=1.0 的重复项),而不会对不同框之间执行基于 IoU 阈值的抑制。
classeslist[int]None将预测结果过滤为指定的一组类别 ID。仅返回属于指定类别的检测结果。对于在多类检测任务中专注于相关对象非常有用。
retina_masksboolFalse返回高分辨率分割掩码。如果启用,返回的掩码 (masks.data) 将与原始图像大小匹配。如果禁用,它们将具有推理过程中使用的图像大小。
embedlist[int]None指定从中提取特征向量或 嵌入 的层。这对聚类或相似度搜索等下游任务非常有用。
projectstrNone如果启用了 save,预测结果保存的项目目录名称。
namestrNone预测运行的名称。用于在项目文件夹内创建子目录,如果启用了 save,预测结果将存储在其中。
streamboolFalse通过返回 Results 对象的生成器而不是一次性将所有帧加载到内存中,为长视频或大量图像启用内存高效处理。
verboseboolTrue控制是否在终端显示详细的推理日志,提供有关预测过程的实时反馈。
compileboolstrFalse启用 PyTorch 2.x torch.compile 图编译,使用 backend='inductor'。接受 True"default"False → 禁用,或字符串模式如 "default""reduce-overhead""max-autotune-no-cudagraphs"。如果不支持,将回退到 eager 模式并显示警告。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 可以让你使用传统的 NMS 流水线运行预测,并允许你利用 iou 参数。详见 端到端检测指南

可视化参数:

参数类型默认值描述
showboolFalse如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。
saveboolFalse or True启用将标注后的图像或视频保存到文件。这对于文档记录、进一步分析或共享结果非常有用。使用 CLI 时默认为 True,在 Python 中使用时默认为 False。
save_framesboolFalse处理视频时,将单独的帧保存为图像。这对于提取特定帧或进行详细的逐帧分析非常有用。
save_txtboolFalse[class] [x_center] [y_center] [width] [height] [confidence] 格式将检测结果保存到文本文件中。这对于与其他分析工具集成非常有用。
save_confboolFalse在保存的文本文件中包含置信度分数。增强了用于后期处理和分析的细节信息。
save_cropboolFalse保存检测结果的裁剪图像。这对于数据集增强、分析或为特定对象创建聚焦数据集非常有用。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签。提供对检测对象的即时了解。
show_confboolTrue在标签旁边显示每个检测结果的置信度分数。让你可以洞察模型对每个检测的确定性。
show_boxesboolTrue在检测到的对象周围绘制边界框。这对于在图像或视频帧中进行视觉识别和定位对象至关重要。
line_widthint or NoneNone指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。

预测指南

验证设置

YOLO 模型的验证设置包含用于评估 验证数据集 上性能的超参数和配置。这些设置影响性能、速度和 准确度。常见设置包括批次大小、验证频率和性能指标。验证数据集的大小和组成以及特定任务也会影响该过程。

参数类型默认值描述
datastrNone指定数据集配置文件的路径(例如 coco8.yaml)。此文件应包含 验证数据 的路径。
imgszint640定义输入图像的大小。所有图像在处理前都会调整为此尺寸。较大的尺寸可能会提高小对象的准确度,但会增加计算时间。
batchint16设置每个批次的图像数量。更高的值可以更有效地利用 GPU 内存,但需要更多 VRAM。根据可用的硬件资源进行调整。
save_jsonboolFalse如果设为 True,则将结果保存到 JSON 文件中,以便进行进一步分析、与其它工具集成或提交到 COCO 等评估服务器。
conffloat0.001设置检测的最低置信度阈值。较低的值会增加召回率,但可能会引入更多的误报。在 验证 过程中用于计算查准率-召回率曲线。
ioufloat0.7Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination.
max_detint300限制每张图片的最大检测数量。在密集场景中很有用,可以防止过多的检测结果并管理计算资源。
halfboolFalse启用半 精度 (FP16) 计算,减少内存使用量,并可能在对 准确度 影响最小的情况下提高速度。
devicestrNone指定验证使用的设备(cpucuda:0npunpu:0 等)。当为 None 时,自动选择最佳可用设备。多个 CUDA 设备可以通过逗号分隔指定。
dnnboolFalse如果设为 True,则使用 OpenCV DNN 模块进行 ONNX 模型推理,提供了一种替代 PyTorch 推理方法的选择。
plotsboolTrue当设为 True 时,生成并保存预测与真实标签的对比图、混淆矩阵和 PR 曲线,以便对模型性能进行视觉评估。
classeslist[int]None指定要评估的类别 ID 列表。有助于在评估过程中过滤掉非相关类别并仅关注特定类别。
rectboolTrue如果设为 True,则使用矩形推理进行批处理,减少填充,并通过以图像的原始纵横比进行处理,从而潜在地提高速度和效率。
splitstr'val'确定用于验证的数据集拆分(valtesttrain)。允许灵活选择数据段进行性能评估。
projectstrNone保存验证输出的项目目录名称。有助于组织来自不同实验或模型的结果。
namestrNone验证运行的名称。用于在项目文件夹内创建子目录,验证日志和输出将存储在其中。
verboseboolTrue如果设为 True,则在验证过程中显示详细信息,包括每类指标、批次进度以及额外的调试信息。
save_txtboolFalse如果设为 True,则将检测结果保存到文本文件中,每张图像一个文件,便于进行进一步分析、自定义后期处理或与其他系统集成。
save_confboolFalse如果设为 True 且启用了 save_txt,则在保存的文本文件中包含置信度数值,为分析和过滤提供更详细的输出。
workersint8用于数据加载的工作线程数。较高的值可以加快数据预处理速度,但可能会增加 CPU 使用率。设为 0 表示使用主线程,在某些环境中可能更稳定。
augmentboolFalse在验证期间启用测试时增强 (TTA),通过对输入图像的变换版本运行推理,从而在牺牲推理速度的情况下提高检测准确度。
agnostic_nmsboolFalse启用类别无关的 非极大值抑制,无论预测类别如何,都会合并重叠的框。这对于以实例为中心的应用很有用。对于端到端模型(YOLO26、YOLOv10),这仅防止同一检测结果以多个类别标签出现(IoU=1.0 的重复项),而不会对不同框之间执行基于 IoU 阈值的抑制。
single_clsboolFalse在验证过程中将所有类别视为单一类别。这对于评估二分类任务的模型性能或当类别区分不重要时非常有用。
visualizeboolFalse将每张图像的真实标签、真阳性、假阳性和假阴性可视化。对调试和模型解释很有用。
compileboolstrFalse启用 PyTorch 2.x torch.compile 图编译,使用 backend='inductor'。接受 True"default"False → 禁用,或字符串模式如 "default""reduce-overhead""max-autotune-no-cudagraphs"。如果不支持,将回退到 eager 模式并显示警告。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 可以让你使用传统的 NMS 流水线运行验证,并允许你使用 iou 参数。

谨慎的调整和实验对于确保最佳性能以及检测和防止 过拟合 至关重要。

验证指南

导出设置

YOLO 模型的导出设置包含用于保存或导出模型以在不同环境中使用。这些设置会影响性能、大小和兼容性。关键设置包括导出的文件格式(例如 ONNX、TensorFlow SavedModel)、目标设备(例如 CPU、GPU)以及掩码等功能。模型的任务和目标环境的约束也会影响导出过程。

参数类型默认值描述
formatstr'torchscript'导出模型的目标格式,例如 'onnx''torchscript''engine' (TensorRT) 等。每种格式都能与不同的 部署环境 兼容。
imgszinttuple640模型输入的期望图像大小。可以是正方形图像的整数(例如 640 表示 640×640),也可以是特定尺寸的元组 (height, width)
kerasboolFalse启用导出为 TensorFlow SavedModel 的 Keras 格式,提供与 TensorFlow 服务和 API 的兼容性。
optimizeboolFalse在导出为 TorchScript 时应用针对移动设备的优化,这可以减小模型大小并提高 推理 性能。与 NCNN 格式或 CUDA 设备不兼容。对于 DeepX,启用更高级的编译器优化,这会减少推理延迟但会增加编译时间。
halfboolFalse启用 FP16(半精度)量化,减小模型大小并可能加快支持硬件上的推理速度。与 INT8 量化或仅 CPU 导出不兼容。仅适用于特定格式,例如 ONNX(见下文)。
int8boolFalse激活 INT8 量化,进一步压缩模型并以最小的 准确度 损失加速推理,主要用于 边缘设备。与 TensorRT 一起使用时,执行训练后量化 (PTQ)。
dynamicboolFalse允许 TorchScript、ONNX、OpenVINO、TensorRT 和 CoreML 导出支持动态输入大小,从而增强处理不同图像尺寸的灵活性。当在 TensorRT 中使用 INT8 时,此项自动设置为 True
simplifyboolTrue使用 onnxslim 简化 ONNX 导出的模型图,潜在地提高性能和与推理引擎的兼容性。
opsetintNone指定 ONNX opset 版本,以与不同的 ONNX 解析器和运行时兼容。如果未设置,则使用最新支持的版本。
workspacefloatNoneNone设置 TensorRT 优化的最大工作空间大小(以 GiB 为单位),从而平衡内存使用和性能。使用 None 可让 TensorRT 自动分配,最高可达设备上限。
nmsboolFalse在支持的情况下(请参阅 导出格式),将非极大值抑制 (NMS) 添加到导出模型中,从而提高检测后处理效率。端到端模型不可用。
batchint1指定导出模型的批量推理大小,或者在 predict 模式下导出的模型将同时处理的最大图像数量。对于 Edge TPU 导出,此项自动设置为 1。
devicestrNone指定用于导出的设备:GPU (device=0)、CPU (device=cpu)、Apple 芯片的 MPS (device=mps)、华为昇腾 NPU (device=npudevice=npu:0) 或 NVIDIA Jetson 的 DLA (device=dla:0device=dla:1)。TensorRT 导出将自动使用 GPU。
datastr'coco8.yaml'数据集配置文件的路径,这对 INT8 量化校准至关重要。如果在启用 INT8 时未指定,将使用 coco8.yaml 作为校准的备选。
fractionfloat1.0指定用于 INT8 量化校准的数据集比例。允许在完整数据集的子集上进行校准,这对于实验或资源受限时非常有用。如果在启用 INT8 时未指定,将使用完整数据集。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26, YOLOv10)中的端到端模式。将其设置为 False,你可以将这些模型导出为兼容传统的基于 NMS 的后处理流水线。详情请参阅 端到端检测指南

周全的配置可确保导出模型针对其用例进行了优化,并在目标环境中有效运行。

导出指南

解决方案设置

Ultralytics 解决方案配置设置提供了灵活性,可针对目标检测计数、热图创建、健身追踪、数据分析、区域追踪、队列管理和基于区域的计数等任务自定义模型。这些选项支持轻松调整,以获得针对特定需求量身定制的准确且有用的结果。

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
regionlist'[(20, 400), (1260, 400)]'定义计数区域的点列表。
show_inboolTrue用于控制是否在视频流中显示进入计数的标志。
show_outboolTrue用于控制是否在视频流中显示离开计数的标志。
analytics_typestr'line'图表类型,例如 line(折线图)、bar(柱状图)、area(面积图)或 pie(饼图)。
colormapintcv2.COLORMAP_DEEPGREEN用于热图的配色方案。
json_filestrNone包含所有停车坐标数据的 JSON 文件路径。
up_anglefloat145.0“向上”姿势的角度阈值。
kptslist[int]'[6, 8, 10]'用于监控健身训练的三个关键点索引列表。这些关键点对应于身体关节或部位,例如肩部、肘部和腕部,适用于俯卧撑、引体向上、深蹲和腹部训练等动作。
down_angleint90“向下”姿势的角度阈值。
blur_ratiofloat0.5调节模糊强度百分比,取值范围为 0.1 - 1.0
crop_dirstr'cropped-detections'用于存储裁剪后的检测结果的目录名称。
recordsint5触发带有安全警报系统的电子邮件所需的总检测计数。
vision_pointtuple[int, int](20, 20)使用 VisionEye 解决方案追踪对象并绘制路径的点。
sourcestrNone输入源(视频、RTSP 等)的路径。仅可用于解决方案命令行界面 (CLI)。
figsizetuple[int, int](12.8, 7.2)用于分析图表(如热图或统计图)的图形大小。
fpsfloat30.0用于速度计算的每秒帧数。
max_histint5用于速度/方向计算时,每个对象最大追踪的历史点数。
meter_per_pixelfloat0.05用于将像素距离转换为现实世界单位的比例因子。
max_speedint120视觉叠加层中的最高速度限制(用于警报)。
datastr'images'用于相似度搜索的图像目录路径。

解决方案指南

增强设置

数据增强技术对于提高 YOLO 模型鲁棒性和性能至关重要,它通过在训练数据中引入差异性,帮助模型更好地泛化到未知数据。下表概述了每个增强参数的用途和效果:

参数类型默认值支持的任务范围描述
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0按色轮的一小部分调整图像色相,引入色彩差异。帮助模型在不同的光照条件下进行泛化。
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0按一小部分改变图像的饱和度,影响颜色的强度。有助于模拟不同的环境条件。
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0按一小部分修改图像的明度(亮度),帮助模型在各种光照条件下表现良好。
degreesfloat0detect, segment, pose, obb0.0 - 180在指定的角度范围内随机旋转图像,提高模型识别不同方向物体的能力。
translatefloat0.1detect, segment, pose, obb0.0 - 1.0将图像按图像尺寸的一小部分进行水平和垂直平移,有助于学习检测部分可见的物体。
scalefloat0.5detect, segment, pose, obb, classify0 - 1按增益因子缩放图像,模拟相机与物体不同距离的情况。
shearfloat0detect, segment, pose, obb-180 - +180将图像按指定角度进行剪切,模拟从不同角度观察物体时产生的效果。
perspectivefloat0detect, segment, pose, obb0.0 - 0.001对图像应用随机透视变换,增强模型对 3D 空间中物体的理解能力。
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0以指定的概率将图像上下翻转,在不影响对象特征的情况下增加数据变异性。
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0以指定的概率将图像左右翻转,这对学习对称对象和增加数据集多样性非常有用。
bgrfloat0detect, segment, pose, obb0.0 - 1.0以指定的概率将图像通道从 RGB 翻转为 BGR,这对于提高对错误通道排序的鲁棒性很有用。
mosaicfloat1detect, segment, pose, obb0.0 - 1.0将四张训练图像合并为一张,模拟不同的场景组合和对象交互。对于复杂场景理解非常有效。
mixupfloat0detect, segment, pose, obb0.0 - 1.0混合两张图像及其标签,创建合成图像。通过引入标签噪声和视觉变异性,增强模型的泛化能力。
cutmixfloat0detect, segment, pose, obb0.0 - 1.0结合两张图像的部分内容,在保持不同区域的同时创建部分混合。通过创建遮挡场景增强模型鲁棒性。
copy_pastefloat0segment0.0 - 1.0在图像之间复制和粘贴对象,以增加对象实例。
copy_paste_modestrflipsegment-指定要使用的 copy-paste 策略。选项包括 'flip''mixup'
auto_augmentstrrandaugmentclassify-应用预定义的增强策略('randaugment''autoaugment''augmix')以通过视觉多样性提高模型性能。
erasingfloat0.4classify0.0 - 1.0在训练期间随机擦除图像区域,以鼓励模型关注不太明显的特征。
augmentationslist``detect, segment, pose, obb-用于高级数据增强的自定义 Albumentations 转换(仅限 Python API)。接受转换对象列表以满足特定的增强需求。

调整这些设置以满足数据集和任务需求。尝试不同的值有助于找到最佳的增强策略,以获得最佳模型性能。

增强指南

日志、检查点和绘图设置

训练 YOLO 模型时,日志记录、检查点、绘图和文件管理非常重要:

  • 日志记录:使用 TensorBoard 等库或通过写入文件来跟踪模型进度并诊断问题。
  • 检查点:定期保存模型以恢复训练或尝试不同的配置。
  • 绘图:使用 Matplotlib 或 TensorBoard 等库可视化性能和训练进度。
  • 文件管理:整理训练期间生成的文件(如检查点、日志文件和图表),以便于访问和分析。

有效管理这些方面有助于跟踪进度,并使调试和优化变得更容易。

参数默认值描述
project'runs'指定保存训练运行的根目录。每次运行都保存在单独的子目录中。
name'exp'定义实验名称。如果未指定,YOLO 会为每次运行递增此名称(例如 expexp-2)以避免覆盖。
exist_okFalse确定是否覆盖现有的实验目录。True 允许覆盖;False 则防止覆盖。
plotsTrue控制训练和验证图表的生成与保存。设置为 True 可创建损失曲线、precision-recall 曲线和样本预测等图表,以便进行性能的视觉跟踪。
saveTrue启用保存训练检查点和最终模型权重。设置为 True 可定期保存模型状态,从而允许恢复训练或进行模型部署。

自定义配置文件

加载保存的 YAML 以重用整套参数,而无需内联传递它们。cfg 参数会覆盖 default.yaml 中的值,而同时传递的其他参数仍然具有优先权。

参数默认值描述
cfgNoneYAML 文件的路径,其值将替换 default.yaml 条目。请参阅 覆盖默认配置文件 以获取 CLI 示例。

常见问题 (FAQ)

如何提高我的 YOLO 模型在训练过程中的性能?

通过调整 batch sizelearning 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 有益,允许更大的模型和更快的计算,而不会显着降低精度。在 训练指南 中了解更多信息。

评论