YOLO Vision 2026:

配置#

YOLO 设置和超参数在模型的性能、速度和准确率中起着关键作用。这些设置会影响模型在训练、验证和预测等各个阶段的行为。



Watch: Mastering Ultralytics YOLO: Configuration

Ultralytics 命令使用以下语法:

示例
yolo TASK MODE ARGS

其中:

默认的 ARG 值在此页面中定义,来源于 cfg/default.yaml 文件

任务#

Ultralytics YOLO 模型可以执行多种计算机视觉任务,包括:

  • 检测 (Detect)目标检测用于识别并定位图像或视频中的对象。
  • 分割 (Segment)实例分割将图像或视频划分为对应不同对象或类别的区域。
  • 语义分割 (semantic)语义分割为图像中的每个像素分配一个类别标签,以实现密集的场景理解。
  • 深度 (depth)单目深度估计从单个 RGB 图像预测以米为单位的每像素深度图。
  • 分类 (Classify)图像分类预测输入图像的类别标签。
  • 姿态 (Pose)姿态估计识别图像或视频中的对象并估计其关键点。
  • 旋转框 (OBB)旋转边界框使用旋转的边界框,适用于卫星或医疗图像。
参数默认值描述
task'detect'指定 YOLO 任务:detect 用于目标检测segment 用于实例分割,semantic 用于语义分割,depth 用于单目深度估计,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指向数据集 YAML 的路径(例如 coco8.yaml),其中包含训练和验证数据的路径、类别名称以及类别数量。而分类任务则接受数据集目录或内置数据集名称(例如 imagenet10)。
epochsint100训练轮次的总数。每个轮次代表对整个数据集的完整遍历。调整此值会影响训练持续时间和模型性能。
timefloatNone以小时为单位的最大训练时间。如果设置,这会覆盖 epochs 参数,允许训练在指定持续时间后自动停止。对于时间受限的训练场景非常有用。
patienceint100在验证指标没有改善的情况下等待提前停止训练的轮数。通过在性能停滞时停止训练来帮助防止过拟合
batchintfloat16批次大小,具有三种模式:设置为整数(例如 batch=16)、用于 60% GPU 内存利用率的自动模式(batch=-1),或带有指定利用率分数的自动模式(batch=0.70)。
imgszint640训练的目标图像大小。图像被调整大小为边长等于指定值的正方形(如果 rect=False),对于 YOLO 模型会保留宽高比,但对于 RT-DETR 则不然。会影响模型的准确率和计算复杂度。
saveboolTrue启用训练检查点和最终模型权重的保存。对于恢复训练或模型部署非常有用。
save_periodint-1保存模型检查点的频率,以 epoch 为单位。值为 -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=npu:0device=npu:0,1),或者自动选择闲置 GPU(device=-1)或多个闲置 GPU(device=[-1,-1])。
workersint8用于数据加载的工作线程数(多 GPU 训练时每个 RANK 的线程数)。影响数据预处理和输入模型的速度,在多 GPU 设置中尤其有用。
projectstrNone保存训练输出的项目目录名称。允许对不同的实验进行有组织的存储。
namestrNone训练运行的名称。用于在项目文件夹内创建子目录,存储训练日志和输出。
exist_okboolFalse如果为 True,则允许覆盖现有的项目/名称目录。这对于迭代实验非常有用,无需手动清除之前的输出。
save_dirstrNone指定保存运行输出的确切目录,覆盖 project/name 组合。该路径将按原样使用而不会自动递增,因此连续的运行会重复使用同一目录。
pretrainedboolstrTrue决定是否从预训练权重开始训练。可以是布尔值或要加载的权重的字符串路径。pretrained=False 从随机初始化权重开始训练,同时保持模型架构不变。
cls_remapboolTrue跨数据集微调时,只要类名匹配,就会将预训练分类头权重复制到新模型中,因此重叠的类别会保留其学到的偏置,当分类头宽度未变时还会保留其权重。无论类别数量不同还是匹配但类别顺序不同,此规则均适用。
optimizerstr'auto'训练的优化器选择。选项包括 SGDMuSGDAdamAdamaxAdamWNAdamRAdamRMSPropauto,以便根据训练迭代次数选择 AdamWMuSGD。这会影响收敛速度和稳定性。
seedint0设置训练的随机种子,确保在相同配置下的运行结果具有可重复性。
deterministicboolTrue强制使用确定性算法,确保可重复性,但由于对非确定性算法的限制,可能会影响性能和速度。
verboseboolTrue在训练期间启用详细输出,在控制台中显示进度条、每个 epoch 的指标以及其他训练信息。
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 个轮次中禁用马赛克数据增强,以便在完成前稳定训练。将其设置为 0 可禁用此功能。
resumeboolFalse从上一个保存的检查点恢复训练。自动加载模型权重、优化器状态和 epoch 计数,无缝继续训练。
ampboolstrTrue设置训练精度:True"fp16" 使用 FP16,"bf16" 在支持的 CUDA 设备上使用 BF16,False"fp32" 使用 FP32。
fractionfloatintlist1.0要使用的 Dataset 子集:比例(如 0.1)、训练图像数量(如 300),或者 [train, val] 个比例/数量(如 [0.1, 0.2][300, 100][0.1, 100])。整数 1 选择一张图像,而浮点数 1.0 选择所有图像。NDJSON Dataset 在下载前会均匀选择记录,因此重复运行会复用完全相同的图像。
profileboolFalse在训练期间启用 ONNX 和 TensorRT 速度分析,有助于优化模型部署。
freezeintlistNone冻结模型的前 N 层,或者通过索引或模块名称指定特定层(23.cv2,不带前导 model.),以减少可训练参数的数量。这对于微调或迁移学习非常有用。
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预热阶段偏置参数的学习率,有助于在初始轮次中稳定模型训练。在默认的 optimizer='auto' 下会自动设置为 0.0,因此需要显式指定优化器才能使用它。
distill_modelstrNone用于知识蒸馏的教师模型检查点路径(例如 yolo26x.pt)。设置后,学生模型将通过由冻结的教师引导的额外蒸馏损失进行训练。
disfloat6.0添加到标准检测损失中的蒸馏损失权重。较高的值会增加教师特征引导的影响力。
boxfloat7.5损失函数中边界框损失分量的权重,影响对准确预测边界框坐标的强调程度。
clsfloat0.5总损失函数中分类损失的权重,影响正确分类预测相对于其他组件的重要性。
cls_pwfloat0.0使用逆类频率处理类别不平衡的类别加权幂。0.0 禁用类别加权,1.0 应用完整的逆频率加权。0 到 1 之间的值提供部分加权。
dflfloat1.5边界框距离回归项的权重:当检测头使用 reg_max > 1 时为分布焦点损失 (DFL),在无 DFL 的 YOLO26 (reg_max: 1) 上则为归一化边界框距离的 L1 损失。
posefloat12.0针对姿态估计模型训练中的姿态损失权重,影响对关键点预测准确性的重视程度。
kobjfloat1.0姿态估计模型中关键点目标性损失的权重,平衡检测置信度和姿态准确性。
rlefloat1.0姿态估计模型中残差对数似然估计损失的权重,影响关键点定位的精度。
anglefloat1.0obb 模型中角度损失的权重,影响旋转边界框角度预测的精度。
dlogfloat1.0深度估计模型中尺度不变对数 (SILog) 损失的权重,这是驱动深度精度的主要指标。
dgradfloat0.5深度估计模型中梯度损失的权重,用于惩罚深度边缘的误差并促使表面边界更清晰。
dlamfloat1.0深度估计模型中 SILog 损失的方差聚焦因子。1.0 使损失完全具备尺度不变性,而 0.0 将其简化为普通的 log-RMSE。
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 模式。
channels_lastboolFalse在训练期间为卷积使用 channels_last (NHWC) 内存格式,以此加速 CUDA Tensor Core GPU,且不改变结果。在 CPU 和 MPS 上会自动忽略,因为它们无法从中获得收益。
max_detint300指定在训练验证阶段保留的对象最大数量。
关于批次大小设置的说明

batch 参数提供了三个配置选项:

  • 固定批次大小:用整数指定每个批次的图像数量(例如 batch=16)。
  • 自动模式(60% GPU 内存):使用 batch=-1 自动调整到大约 60% 的 CUDA 内存利用率。
  • 带利用率分数的自动模式:设置一个分数(例如 batch=0.70),以便根据指定的 GPU 内存使用情况进行调整。
  • 未找到合适大小:如果没有候选批次大小能够生成可用的配置文件,AutoBatch 会引发明确的 RuntimeError,而不是在不提示的情况下默默回退到不相关的默认值。

训练指南

预测设置#

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。请参阅固定形状与最小矩形
quantizeintstrNone推理精度:16/"fp16" 在支持的 GPU 上启用 FP16 推理;32/"fp32"/未设置则为 FP32。INT8/PTQ 量化在导出期间配置,然后通过加载导出的模型来使用。替换了已弃用的 half 标志。
devicestrNone指定推理设备(例如 cpucuda:00npunpu:0)。允许用户在 CPU、特定 GPU、华为昇腾 NPU 或用于模型执行的其他计算设备之间进行选择。
dnnboolFalse如果为 True,则使用 OpenCV DNN 模块代替 ONNX Runtime 进行 ONNX 模型推理。
datastrNone指向数据集 YAML 的路径(例如 coco8.yaml),该文件仅读取其 names,且仅当加载的模型自身不携带类别名称时:例如第三方导出,或与随附元数据分离的 Ultralytics 导出。否则,此类模型会报告 class0class1 等。
batchint1指定推理的批次大小(仅当源为目录、视频文件或 .txt 文件时有效)。更大的批次大小可以提供更高的吞吐量,从而缩短推理所需的总时间。
max_detint300每张图像允许的最大检测数。限制模型在单次推理中可检测的对象总数,防止在密集场景中输出过多结果。
vid_strideint1视频输入的帧步长。允许跳过视频中的帧以加快处理速度,代价是牺牲时间分辨率。值为 1 处理每一帧,更高的值会跳过帧。
stream_bufferboolFalse决定是否为视频流排队传入的帧。如果为 False,旧帧会被丢弃以适应新帧(针对实时应用进行了优化)。如果为 True,则将新帧排队放入缓冲区,确保不会跳过任何帧,但如果推理 FPS 低于流 FPS,则会导致延迟。
visualizeboolFalse在每项预测旁边保存一个类激活热力图,显示哪些像素提高了预测的类别分数。支持 confclasses,因此 classes=[0] 仅映射该类。仅适用于 Ultralytics PyTorch 模型。
augmentboolFalse为预测启用测试时增强(TTA),可能会以牺牲推理速度为代价提高检测鲁棒性。仅适用于 Ultralytics PyTorch 模型。
agnostic_nmsboolFalse启用类别无关的非极大值抑制(NMS),抑制不同类别之间得分较低的重叠边界框,而不仅仅是同一类别内。这在类别重叠常见的的多类别检测场景中非常有用。对于端到端模型(YOLO26、YOLOv10),这只防止同一检测结果出现多个类别标签(IoU=1.0 重复项),而不在不同边界框之间执行基于 IoU 阈值的抑制。
classeslist[int]None将预测过滤为一组类别 ID。仅返回属于指定类别的检测结果。在多类检测任务中专注于相关对象非常有用。
retina_masksboolFalse返回高分辨率分割掩码。如果启用,返回的掩码(masks.data)将匹配原始图像大小。如果禁用,则它们具有推理期间使用的图像大小。
embedlist[int]None指定用于提取特征向量或 embeddings 的层。使用 model.embed(source) 获取倒数第二层的 embeddings,或使用 model.predict(source, embed=[layer]) 选择特定层。对聚类或相似度搜索等下游任务非常有用。仅适用于 Ultralytics PyTorch models。
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 模式。
channels_lastboolFalse在推理期间为卷积使用 channels_last (NHWC) 内存格式,以此加速 CUDA Tensor Core GPU,且不改变结果。仅适用于原生 PyTorch 模型;对于 CPU、MPS 以及 TensorRT 和 ONNX 等导出格式将被忽略。
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指定数据集 YAML 的路径(例如 coco8.yaml),其中应包含验证数据的路径。分类任务则改为接受数据集目录或内置数据集名称(例如 imagenet10)。
imgszint640定义输入图像的大小。所有图像在处理前都会调整为此尺寸。较大的尺寸可能会提高小对象的精度,但会增加计算时间。
batchint16设置每批图像的数量。更高的值更有效地利用 GPU 显存,但需要更多的 VRAM。请根据可用的硬件资源进行调整。
save_jsonboolFalse如果为 True,则将结果保存到 JSON 文件中,以便进行进一步分析、与其他工具集成或提交给 COCO 等评估服务器。
conffloat0.001设置检测的最低置信度阈值。较低的值会提高召回率,但可能会引入更多假阳性。准确率-召回率曲线默认使用 0.001;检测混淆矩阵使用显式的 conf 值,或在省略时使用 0.25。汇总准确率和召回率使用最大 F1 置信度,因此它们可能与从 confusion_matrix.png 派生的值不同。对于 OBB 验证,默认值为 0.01,以减少内存使用。
ioufloat0.7设置用于 Non-Maximum SuppressionIntersection Over Union 阈值。用于控制消除重复检测。
max_detint300限制每张图像的最大检测数。在密集场景中非常有用,可以防止过多的检测并管理计算资源。
quantizeintstrNone验证精度:16/"fp16" 在支持的 GPU 上启用 FP16 验证;32/"fp32"/未设置则为 FP32。INT8/PTQ 量化在导出期间配置,然后通过验证导出的模型来使用。替换了已弃用的 half 标志。
devicestrNone指定验证设备(cpucuda:0npunpu:0 等)。当为 None 时,自动选择最佳可用设备。可以使用逗号分隔指定多个 CUDA 设备。
dnnboolFalse如果为 True,则使用 OpenCV DNN 模块进行 ONNX 模型推理,为PyTorch 推理方法提供替代方案。
plotsboolTrue当设置为 True 时,生成并保存预测与真实情况的对比图、混淆矩阵和 PR 曲线,以便对模型性能进行视觉评估。
classeslist[int]None指定需要评估的类别 ID 列表。这在评估过程中过滤并仅关注特定类别时非常有用。
rectboolTrue如果 True,则在批处理时使用矩形推理,通过以原始宽高比处理图像来减少填充并可能提高速度和效率。对于 depth 验证,该设置会被忽略,验证会将每张图像拉伸为固定的 imgsz 正方形而不是进行填充。
splitstr'val'决定用于验证的数据集划分(valtesttrain)。在选择性能评估的数据段方面提供了灵活性。
projectstrNone保存验证输出的项目目录名称。有助于整理来自不同实验或模型的结果。
namestrNone验证运行的名称。用于在项目文件夹内创建子目录,存储验证日志和输出。
verboseboolTrue如果为 True,则在验证过程中显示详细信息,包括每个类别的指标、批次进度和其他调试信息。
save_txtboolFalse如果为 True,则将检测结果保存在文本文件中,每张图像一个文件,这对于进一步分析、自定义后处理或与其他系统集成非常有用。
save_confboolFalse如果 True 启用,当启用 save_txt 时,将在保存的文本文件中包含置信度值,从而为分析和过滤提供更详细的输出。
workersint8用于数据加载的工作线程数。更高的数值可以加快数据预处理速度,但可能会增加 CPU 使用率。设为 0 表示使用主线程,在某些环境中可能更稳定。
augmentboolFalse在验证期间启用测试时增强(TTA),通过对输入的变换版本运行推理,可能会以牺牲推理速度为代价提高检测准确率。仅适用于 Ultralytics PyTorch 模型。
agnostic_nmsboolFalse启用类别无关的非极大值抑制,无论预测类别如何,都抑制得分较低的重叠边界框。对于侧重实例的应用非常有用。对于端到端模型(YOLO26、YOLOv10),这只防止同一检测结果出现多个类别标签(IoU=1.0 重复项),而不在不同边界框之间执行基于 IoU 阈值的抑制。
single_clsboolFalse在验证过程中将所有类别视为单一类别。对于评估二分类任务的模型性能,或者当类别区分并不重要时非常有用。
visualizeboolFalse为每张图像可视化真值(ground truths)、真阳性、假阳性及假阴性。有助于调试和模型解释。
show_labelsboolTrue当为 visualize=True 时,在验证可视化中显示类别标签。设置为 False 以更清晰地查看匹配项和错误项。
show_confboolTrue当为 visualize=True 时,在验证可视化中显示置信度得分。设置为 False 以更清晰地查看匹配项和错误项。
compileboolstrFalse启用 PyTorch 2.x torch.compile 图编译与 backend='inductor'。接受 True"default"False → 禁用,或诸如 "default""reduce-overhead""max-autotune-no-cudagraphs" 的字符串模式。如果不支持,则会发出警告并回退到 eager 模式。
channels_lastboolFalse在验证期间对卷积使用 channels_last (NHWC) 内存格式,可加速 CUDA Tensor Core GPU 且结果保持不变。仅适用于原生 PyTorch 模型;对于 CPU、MPS 以及导出格式(如 TensorRT 和 ONNX)则会忽略。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 允许您使用传统的 NMS 管道运行验证,此外还允许您使用 iou 参数。

仔细调参与实验对于确保最佳性能以及检测和防止过拟合至关重要。

验证指南

导出设置#

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

参数类型默认值描述
formatstr'torchscript'导出模型的目标格式,例如 'onnx''torchscript''engine' (TensorRT) 或其他格式。每种格式都能实现与不同部署环境的兼容性。
namestrNone针对需要硬件目标的格式的目标硬件名称:Hailo 架构('hailo8''hailo8l''hailo10h''hailo15h''hailo15l';默认值为 'hailo8l')、Rockchip RKNN 芯片(默认值为 'rk3588')、华为昇腾 SoC(CANN --soc_version;默认值为 'Ascend310B4')或高通 QNN HTP 目标(默认值为 '73')。这与其它模式使用的 project/name 运行命名对不同。
imgszinttuple640模型输入的期望图像大小。可以是一个表示正方形图像的整数(例如,640 表示 640×640),也可以是一个用于指定具体尺寸的元组 (height, width)。当未传入时,导出操作会重用已加载检查点中记录的训练大小:官方 YOLO26 检查点为深度记录了 768,为分类记录了 224,为 OBB 记录了 1024,为其他任务记录了 640,而微调则会记录其训练时所使用的 imgsz。由 YAML 构建的模型没有记录的训练大小,并会使用 640
kerasboolFalse启用导出为 Keras 格式以用于 TensorFlow SavedModel,从而提供与 TensorFlow 服务和 API 的兼容性。
optimizeboolFalse为 DEEPX 启用更高的编译器优化,在增加编译时间的同时减少推理延迟。
quantizeintstrNone量化精度:16(FP16,减小模型大小并可加速受支持硬件上的推理)或 8(INT8/PTQ,在对准确率影响极小的情况下进一步压缩模型,主要用于边缘设备;需要校准 data/fraction);32/未设置则为 FP32。支持混合权重/激活精度的导出格式也接受 'w8a8'/'w16a16'/'w8a16'/'w8a32' 符号。替换了已弃用的 half/int8 标志(half=True16int8=True8,仍然被接受但会发出弃用警告)。仅允许目标格式支持的精度(见下文)。
dynamicboolFalse允许 TorchScript、ONNX、OpenVINO、TensorRT 和 CoreML 导出采用动态输入尺寸,增强了处理不同图像尺寸时的灵活性。
simplifyboolTrue对于构建中间 ONNX 图的导出,使用 onnxslim 简化该图(请参阅导出格式),这可能会提高性能以及与推理引擎的兼容性。
opsetintNone为构建 ONNX 图的导出指定 ONNX opset 版本(请参阅导出格式),以实现与不同 ONNX 解析器和运行时的兼容性。如果未设置,则使用支持的最新版本。
workspacefloatNoneNoneTensorRT 优化设置最大工作空间大小(以 GiB 为单位),在内存使用和性能之间取得平衡。使用 None 可由 TensorRT 自动分配,最高可达设备最大值。
nmsboolFalse在支持时向导出的模型添加非极大值抑制 (NMS)(请参阅导出格式),从而提高检测后处理效率。对于端到端模型不可用。对于 CoreML,仅支持检测模型。
conffloatNone在生成导出时NMS的任何地方使用的置信度阈值:nms=True 导出;Hailo 的非端到端检测导出;以及 IMX 的检测、姿态和分割导出(它们会在内部强制使用 nms=True)。未设置时默认为 0.25,但 IMX 导出除外,其默认值为 0.001
ioufloat0.7在生成导出时NMS的任何地方使用的 IoU 阈值:nms=True 导出;Hailo 的非端到端检测导出;以及 IMX 的检测、姿态和分割导出(它们会在内部强制使用 nms=True)。
max_detint300保留在导出模型输出中的最大检测数量。适用于所有格式的 nms=True 导出(CoreML 除外,其 NMS 流水线没有检测上限),外加无 NMS 的端到端检测导出(YOLO26、YOLOv10,限制为可用锚框的数量)以及 IMX 的检测、姿态和分割导出。
agnostic_nmsboolFalse在通过标准 nms=True 管道生成导出时 NMS 的任何地方启用类别无关 NMS,包括 CoreML 自身的 NMS 阶段,抑制不同类别之间得分较低的重叠边界框,而不仅限于同一类别内。Hailo 或 IMX 自己生成的 NMS 配置不遵循此选项,它们没有类别无关选项,无论此标志如何均保持类别感知。这也内置于无 NMS 的端到端导出(YOLO26、YOLOv10)中,在此类导出中,它仅防止同一检测结果在多个类别标签下出现(IoU=1.0 重复项),而不是在不同边界框之间进行 IoU 阈值抑制。
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,但 TensorRT 11.0 不支持 DLA。
verboseboolFalseformat='engine' 导出期间将 TensorRT 构建器日志提升到 VERBOSE 严重性级别。其他导出格式会忽略它。
datastrNone指向数据集 YAML 的路径,这对 INT8 量化校准至关重要;分类任务则接受数据集目录或内置数据集名称。如果在启用 INT8 的情况下未指定,Ultralytics 将在需要时选择特定于任务的校准数据集,或回退到模型任务的默认数据集。
splitstr'val'用于从 data 构建 INT8 量化校准数据加载器的数据集拆分('train''val''test')。
fractionfloatintlist1.0用于 INT8 校准的 Dataset 子集:一个比例、一个图像数量,或者 [train, val] 个比例/数量。整数 1 选择一张图像,而浮点数 1.0 选择所有图像。列表限制 trainvaltest 保持完整。
end2endboolNone覆盖支持无 NMS 推理的 YOLO 模型(YOLO26、YOLOv10)中的端到端模式。将其设置为 False 允许您导出这些模型以与传统的基于 NMS 的后处理管道兼容。有关详细信息,请参阅端到端检测指南

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

导出指南

解决方案设置#

Ultralytics 解决方案配置设置提供了灵活性,可自定义对象计数、热图生成、运动跟踪、数据分析、区域跟踪、队列管理和基于区域的计数等任务的模型。这些选项允许轻松调整,以根据特定需求获得准确且有用的结果。

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
regionlistdictNone定义感兴趣区域的点,可以是 (x, y) 元组的列表,也可以是将区域名称映射到多个区域的点列表的字典(仅限 RegionCounter)。当为 None 时,需要区域的解决方案将回退到预定义的默认值。
show_inboolTrue控制是否在视频流上显示进入计数的标志。
show_outboolTrue控制是否在视频流上显示离开计数的标志。
analytics_typestr'line'图的类型,即 linebarareapie
colormapintcv2.COLORMAP_DEEPGREEN用于热力图的颜色映射。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用解决方案针对每帧的输入形状、类别计数和处理速度的日志记录。跟踪调用本身始终是静默的。
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[float, float](12.8, 7.2)用于热力图或图表等分析图表的图片尺寸。
fpsfloat30.0用于速度计算的每秒帧数。
max_histint5用于速度/方向计算时,每个对象可跟踪的最大历史点数。
meter_per_pixelfloat0.05用于将像素距离转换为现实世界单位的比例因子。
max_speedint120视觉叠加中的最高限速(用于警报)。
datastr'images'用于相似度搜索的图像目录路径。
imgszint640用于模型推理的输入图像尺寸。

解决方案指南

增强设置#

数据增强技术对于通过向训练数据引入可变性来提高 YOLO 模型的鲁棒性和性能至关重要,这有助于模型更好地泛化到未见过的数据。下表概述了每个增强参数的用途和效果:

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

调整这些设置以满足数据集和任务的要求。尝试不同的数值可以帮助找到实现最佳模型性能的最优增强策略。

增强指南

日志、检查点和绘图设置#

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

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

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

参数默认值描述
projectNone指定用于保存训练运行的根目录。如果未指定,运行将保存在 runs/<task> 下。每次运行都保存在一个单独的子目录中。
nameNone定义实验名称。如果未指定,YOLO 将使用模式名称并为每次运行递增(例如 traintrain-2),以避免覆盖。
exist_okFalse确定是否覆盖现有的实验目录。True 允许覆盖;False 则防止覆盖。
plotsTrue控制训练和验证图表的生成与保存。设置为 True 可以创建损失曲线、准确率-召回率曲线以及样本预测图,以便对性能进行可视化跟踪。
saveTrue启用保存训练检查点和最终模型权重。设置为 True 以定期保存模型状态,从而允许恢复训练或部署模型。

自定义配置文件#

加载保存的 YAML 以复用完整的参数集,而无需内联传递它们。cfg 参数会覆盖来自 default.yaml 的值,而同时传递的其他附加参数仍然具有最高优先级。

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

常见问题解答#

  • 通过调整批大小学习率、动量和权重衰减等超参数来提高性能。调整数据增强设置,选择正确的优化器,并使用早停或混合精度等技术。有关详细信息,请参阅训练指南

  • 影响准确率的关键超参数包括:

    • 批大小(batch:较大的批大小可以稳定训练,但需要更多内存。
    • 学习率(lr0:较小的学习率可以提供微调,但收敛速度较慢。
    • 动量(momentum:加速梯度向量,抑制振荡。
    • 图像尺寸(imgsz:较大的尺寸可以提高准确率,但会增加计算负载。

    根据你的数据集和硬件调整这些参数。在训练设置中了解更多信息。

  • 学习率 (lr0) 至关重要;对于 SGD,请从 0.01 开始,或者对于 Adam optimizer,请从 0.001 开始。监控指标并根据需要进行调整。使用余弦学习率调度器 (cos_lr) 或预热 (warmup_epochswarmup_momentum)。详情请参阅Train Guide

  • 默认设置包括:

    • 置信度阈值(conf=0.25:检测所需的最小置信度。
    • IoU 阈值(iou=0.7:用于非极大值抑制 (NMS)
    • 图像尺寸(imgsz=640:调整输入图像的大小。
    • 设备(device=None:选择 CPU、GPU、Apple MPS 或华为昇腾 NPU(npu)。

    有关完整概述,请参阅预测设置预测指南

  • 混合精度训练(amp=True)使用 FP16 和 FP32 减少内存使用并加快训练速度。这对现代 GPU 非常有利,允许使用更大的模型和更快的计算而不会明显损失准确率。在训练指南中了解更多信息。

评论