跳转至内容

配置

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

观看: 掌握 Ultralytics YOLO:配置



观看: 精通 Ultralytics YOLO:配置

Ultralytics 命令使用以下语法:

示例

yolo TASK MODE ARGS
from ultralytics import YOLO

# Load a YOLO model from a pre-trained weights file
model = YOLO("yolo11n.pt")

# Run MODE mode using the custom arguments ARGS (guess TASK)
model.MODE(ARGS)

其中:

默认值 ARG 值在此页面上定义,并且来自 cfg/defaults.yaml 文件.

任务

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

  • 检测: 物体检测 识别并定位图像或视频中的物体。
  • 分割实例分割将图像或视频划分为对应于不同对象或类别的区域。
  • 分类: 图像分类 预测输入图像的类别标签。
  • 姿势估计姿势估计识别图像或视频中的对象并估计其关键点。
  • 旋转框检测旋转边界框使用旋转的边界框,适用于卫星或医学图像。
参数 默认值 描述
task 'detect' 指定 YOLO 任务: detect 用于 对象检测, segment 用于分割, classify 用于分类, pose 用于姿势估计,以及 obb 用于定向边界框。每项任务都针对图像和视频分析中的特定输出和问题量身定制。

任务指南

模式

Ultralytics YOLO 模型以不同的模式运行,每种模式都专为模型生命周期的特定阶段而设计:

  • 训练:在自定义数据集上训练 YOLO 模型。
  • Val:验证已训练的 YOLO 模型。
  • 预测:使用训练好的 YOLO 模型对新图像或视频进行预测。
  • 导出:导出 YOLO 模型以进行部署。
  • 跟踪:使用 YOLO 模型实时跟踪对象。
  • 基准测试: 对 YOLO 导出(ONNX、TensorRT 等)的速度和准确性进行基准测试。
参数 默认值 描述
mode 'train' 指定 YOLO 模型的运行模式: train 用于模型训练, val 用于验证, predict 用于推理, export 用于转换为部署格式, track 用于对象跟踪,以及 benchmark 用于性能评估。每种模式都支持从开发到部署的不同阶段。

模式指南

训练设置

YOLO 模型的训练设置包括影响模型性能、速度和准确性的超参数和配置。 关键设置包括批量大小学习率、动量和权重衰减。 优化器、损失函数和数据集组成的选定也会影响训练。 调整和实验对于获得最佳性能至关重要。 有关更多详细信息,请参见Ultralytics entrypoint 函数

参数 类型 默认值 描述
model str None 指定用于训练的模型文件。接受指向 .pt 预训练模型或 .yaml 配置文件的路径。对于定义模型结构或初始化权重至关重要。
data str None 数据集配置文件的路径(例如, coco8.yaml)。此文件包含数据集特定的参数,包括训练和 验证数据的路径,类别名称和类别数量。
epochs int 100 训练的总轮数。每个epoch代表对整个数据集的一次完整遍历。调整此值会影响训练时长和模型性能。
time float None 最长训练时间(以小时为单位)。如果设置此参数,它将覆盖 epochs 参数,允许训练在指定时长后自动停止。适用于时间受限的训练场景。
patience int 100 在验证指标没有改善的情况下,等待多少个epoch后提前停止训练。通过在性能停滞时停止训练,有助于防止过拟合
batch intfloat 16 批次大小,具有三种模式:设置为整数(例如, batch=16),自动模式,GPU 内存利用率为 60%(batch=-1),或具有指定利用率分数的自动模式(batch=0.70)。
imgsz int 640 用于训练的目标图像大小。图像被调整为边长等于指定值的正方形(如果 rect=False),为 YOLO 模型保留宽高比,但不为 RTDETR 保留。影响模型 准确性 和计算复杂度。
save bool True 启用保存训练检查点和最终模型权重。可用于恢复训练或模型部署
save_period int -1 保存模型检查点的频率,以 epoch 为单位指定。值为 -1 时禁用此功能。适用于在长时间训练期间保存临时模型。
cache bool False 启用在内存中缓存数据集图像(True/ram),在磁盘上缓存(disk),或禁用缓存(False)。通过减少磁盘 I/O 来提高训练速度,但会增加内存使用量。
device intstrlist None 指定用于训练的计算设备:单个 GPU(device=0),多个 GPU(device=[0,1]),CPU(device=cpu),适用于 Apple 芯片的 MPS(device=mps),或自动选择最空闲的 GPU(device=-1)或多个空闲 GPU (device=[-1,-1])
workers int 8 用于数据加载的工作线程数(每个 RANK ,如果是多 GPU 训练)。影响数据预处理和输入模型的速度,在多 GPU 设置中尤其有用。
project str None 项目目录的名称,训练输出保存在此目录中。允许有组织地存储不同的实验。
name str None 训练运行的名称。用于在项目文件夹中创建一个子目录,训练日志和输出存储在该子目录中。
exist_ok bool False 如果为 True,则允许覆盖现有的 project/name 目录。适用于迭代实验,无需手动清除之前的输出。
pretrained boolstr True 确定是否从预训练模型开始训练。可以是一个布尔值,也可以是加载权重的特定模型的字符串路径。增强训练效率和模型性能。
optimizer str 'auto' 训练优化器的选择。选项包括 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 等等,或者 auto 用于基于模型配置自动选择。影响收敛速度和稳定性。
seed int 0 设置训练的随机种子,确保在相同配置下运行结果的可重复性。
deterministic bool True 强制使用确定性算法,确保可重复性,但由于限制了非确定性算法,可能会影响性能和速度。
single_cls bool False 在多类别数据集中,将所有类别视为单个类别进行训练。适用于二元分类任务或侧重于对象是否存在而非分类时。
classes list[int] None 指定要训练的类 ID 列表。可用于在训练期间过滤掉并仅关注某些类。
rect bool False 启用最小填充策略——批量中的图像被最小程度地填充以达到一个共同的大小,最长边等于 imgsz。可以提高效率和速度,但可能会影响模型精度。
multi_scale bool False 通过增加/减少来启用多尺度训练 imgsz 高达 0.5 在训练期间。训练模型,使其在多次迭代中更加准确 imgsz 在推理过程中。
cos_lr bool False 使用余弦学习率调度器,在 epochs 上按照余弦曲线调整学习率。有助于管理学习率,从而实现更好的收敛。
close_mosaic int 10 在最后 N 个 epochs 中禁用 mosaic 数据增强,以在完成前稳定训练。设置为 0 可禁用此功能。
resume bool False 从上次保存的检查点恢复训练。自动加载模型权重、优化器状态和 epoch 计数,无缝继续训练。
amp bool True 启用自动混合精度(AMP)训练,减少内存使用,并可能在对准确性影响最小的情况下加快训练速度。
fraction float 1.0 指定用于训练的数据集比例。允许在完整数据集的子集上进行训练,这在实验或资源有限时非常有用。
profile bool False 在训练期间启用 ONNX 和 TensorRT 速度的分析,有助于优化模型部署。
freeze intlist 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 学习率预热的 epochs 数,将学习率从低值逐渐增加到初始学习率,以在早期稳定训练。
warmup_momentum float 0.8 预热阶段的初始动量,在预热期间逐渐调整到设定的动量。
warmup_bias_lr float 0.1 预热阶段偏差参数的学习率,有助于稳定初始 epochs 中的模型训练。
box float 7.5 损失函数中框损失分量的权重,影响对准确预测边界框坐标的重视程度。
cls float 0.5 分类损失在总损失函数中的权重,影响正确类别预测相对于其他成分的重要性。
dfl float 1.5 分布焦点损失的权重,在某些 YOLO 版本中用于细粒度分类。
pose float 12.0 在为姿势估计训练的模型中,姿势损失的权重会影响对准确预测姿势关键点的强调。
kobj float 2.0 姿势估计模型中关键点对象性损失的权重,用于平衡检测置信度和姿势准确性。
nbs int 64 用于损失归一化的标称批量大小。
overlap_mask bool True 确定是否应将对象掩码合并为单个掩码以进行训练,还是为每个对象保持分离。如果发生重叠,则在合并期间,较小的掩码会覆盖在较大的掩码之上。
mask_ratio int 4 分割掩码的下采样率,影响训练期间使用的掩码分辨率。
dropout float 0.0 分类任务中用于正则化的 Dropout 率,通过在训练期间随机省略单元来防止过拟合。
val bool True 在训练期间启用验证,从而可以定期评估模型在单独数据集上的性能。
plots bool False 生成并保存训练和验证指标的图表,以及预测示例,从而提供对模型性能和学习进度的可视化见解。

关于批量大小设置的说明

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

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

训练指南

预测设置

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

推理参数:

参数 类型 默认值 描述
source str 'ultralytics/assets' 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时馈送的设备 ID。 支持多种格式和来源,从而可以在不同类型的输入上灵活应用。
conf float 0.25 设置检测的最小置信度阈值。 将忽略置信度低于此阈值的检测到的对象。 调整此值有助于减少误报。
iou float 0.7 用于非极大值抑制 (NMS) 的 Intersection Over Union (IoU) 阈值。较低的值会通过消除重叠的框来减少检测结果,这对于减少重复项很有用。
imgsz inttuple 640 定义推理的图像大小。可以是一个整数 640 表示正方形调整大小,也可以是 (height, width) 元组。适当的大小调整可以提高检测 准确性 和处理速度。
rect bool True 如果启用,则对图像较短的一边进行最小填充,直到可以被步长整除,以提高推理速度。如果禁用,则在推理期间将图像填充为正方形。
half bool False 启用半精度 (FP16) 推理,这可以加快在支持的 GPU 上的模型推理速度,同时对准确性的影响极小。
device str None 指定用于推理的设备(例如, cpu, cuda:00)。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。
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),它会合并不同类别的重叠框。在类别重叠很常见的多类别检测场景中非常有用。
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 控制是否在终端中显示详细的推理日志,从而提供有关预测过程的实时反馈。

已启用,则预测输出存储在该子目录中。

参数 类型 默认值 描述
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 None or int 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 设置交并比(Intersection Over Union)阈值,用于非极大值抑制(Non-Maximum Suppression)。控制重复检测的消除。
max_det int 300 限制每幏图像的最大检测数量。在密集场景中非常有用,可防止过度检测和管理计算资源。
half bool True 启用半精度 (FP16) 计算,从而减少内存使用量,并可能在对准确性影响最小的情况下提高速度。
device str None 指定验证的设备(cpu, cuda:0,等等)。当 None,自动选择最佳可用设备。多个 CUDA 设备可以用逗号分隔指定。
dnn bool False 可视化参数: True,使用 OpenCV DNN 模块进行 ONNX 模型推理,从而提供了一种替代 PyTorch 推理方法。
plots bool False 当设置为 True,生成并保存预测与真实值的对比图、混淆矩阵和 PR 曲线,以便对模型性能进行可视化评估。
classes list[int] None 指定要训练的类 ID 列表。可用于在评估期间过滤并仅关注某些类。
rect bool True 可视化参数: True,使用矩形推理进行批处理,减少填充,并通过以原始宽高比处理图像来潜在地提高速度和效率。
split str 'val' 确定用于验证的数据集分割(val, testtrain)。 允许灵活选择数据段进行性能评估。
project str None 用于保存验证输出的项目目录的名称。有助于组织来自不同实验或模型的结果。
name str None 验证运行的名称。用于在项目文件夹中创建一个子目录,用于存储验证日志和输出。
verbose bool False 可视化参数: 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 启用与类别无关的 非极大值抑制,它合并重叠的框,而不管其预测的类别如何。对于以实例为中心的应用程序很有用。
single_cls bool False 在验证期间将所有类别视为单一类别。这对于评估二元检测任务中的模型性能或类别区分并不重要时非常有用。
visualize bool False 可视化每张图像的真值、真正例、假正例和假反例。 有助于调试和模型解释。

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

验证指南

导出设置

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

参数 类型 默认值 描述
format str 'torchscript' 导出模型的目标格式,例如 'onnx', 'torchscript', 'engine' (TensorRT)等。每种格式都支持与不同的 部署环境.
imgsz inttuple 640 模型输入所需的图像大小。可以是正方形图像的整数(例如, 640 对于 640x640)或元组 (height, width) 用于指定特定维度。
keras bool False 启用导出为 Keras 格式,用于 TensorFlow SavedModel,提供与 TensorFlow serving 和 API 的兼容性。
optimize bool False 导出到 TorchScript 时,应用针对移动设备的优化,可能会减小模型大小并提高 推理 性能。与 NCNN 格式或 CUDA 设备不兼容。
half bool False 启用 FP16(半精度)量化,从而减小模型大小并可能加快受支持硬件上的推理速度。与 ONNX 的 INT8 量化或仅 CPU 导出不兼容。
int8 bool False 激活 INT8 量化,进一步压缩模型并加速推理,同时最大限度地减少精度损失,主要用于边缘设备。与 TensorRT 结合使用时,执行训练后量化 (PTQ)。
dynamic bool False 允许 ONNX、TensorRT 和 OpenVINO 导出使用动态输入大小,从而提高处理不同图像尺寸的灵活性。自动设置为 True 当将TensorRT与INT8一起使用时。
simplify bool True 使用以下方式简化 ONNX 导出的模型图 onnxslim,从而可能提高性能以及与推理引擎的兼容性。
opset int None 指定 ONNX opset 版本,以与不同的 ONNX 解析器和运行时兼容。如果未设置,则使用最新支持的版本。
workspace floatNone None 设置最大工作区大小,单位为GiB,用于 TensorRT 优化,平衡内存使用和性能。使用 None 用于 TensorRT 自动分配,最高可达设备最大值。
nms bool False 如果支持,则将非极大值抑制 (NMS) 添加到导出的模型(请参阅导出格式),从而提高检测后处理效率。不适用于 end2end 模型。
batch int 1 指定导出模型批量推理大小,或导出模型将并发处理的最大图像数量,单位为。 predict 模式。对于 Edge TPU 导出,此项会自动设置为 1。
device str None 指定导出设备:GPU (device=0),CPU(device=cpu),适用于 Apple 芯片的 MPS(device=mps)或适用于 NVIDIA Jetson 的 DLA(device=dla:0device=dla:1)。TensorRT 导出自动使用 GPU。
data str 'coco8.yaml' 路径指向 数据集 配置文件(默认: coco8.yaml),这对于 INT8 量化校准至关重要。如果启用 INT8 但未指定,则将分配默认数据集。
fraction float 1.0 指定用于 INT8 量化校准的数据集比例。允许在完整数据集的子集上进行校准,这对于实验或资源有限时非常有用。如果未在使用 INT8 启用时指定,则将使用完整数据集。

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

导出指南

解决方案设置

Ultralytics Solutions 配置设置提供了灵活性,可以自定义模型以执行对象计数、热图创建、锻炼跟踪、数据分析、区域跟踪、队列管理和基于区域的计数等任务。这些选项允许轻松调整,以获得根据特定需求量身定制的准确且有用的结果。

参数 类型 默认值 描述
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, areapie.
colormap int cv2.COLORMAP_JET 用于热图的颜色映射。
json_file str None 包含所有停车坐标数据的 JSON 文件路径。
up_angle float 145.0 “向上”姿势的角度阈值。
kpts list[int, int, int] '[6, 8, 10]' 用于监控锻炼的关键点列表。这些关键点对应于身体关节或部位,例如肩部、肘部和腕部,适用于俯卧撑、引体向上、深蹲、腹部锻炼等运动。
down_angle float 90.0 “向下”姿势的角度阈值。
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 等)的路径。仅适用于 Solutions 命令行界面 (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 0.0 - 1.0 通过色轮的一小部分调整图像的色调,从而引入颜色变化。帮助模型在不同的光照条件下进行泛化。
hsv_s float 0.7 0.0 - 1.0 通过一小部分改变图像的饱和度,从而影响颜色的强度。可用于模拟不同的环境条件。
hsv_v float 0.4 0.0 - 1.0 通过一小部分修改图像的明度(亮度),帮助模型在各种光照条件下表现良好。
degrees float 0.0 0.0 - 180 在指定的角度范围内随机旋转图像,提高模型识别各种方向物体的能力。
translate float 0.1 0.0 - 1.0 通过图像尺寸的一小部分在水平和垂直方向上平移图像,帮助学习检测部分可见的物体。
scale float 0.5 >=0.0 通过增益因子缩放图像,模拟物体与相机的不同距离。
shear float 0.0 -180 - +180 按指定的角度错切图像,模仿从不同角度观察物体的效果。
perspective float 0.0 0.0 - 0.001 对图像应用随机透视变换,增强模型理解 3D 空间中物体的能力。
flipud float 0.0 0.0 - 1.0 以指定的概率将图像上下翻转,增加数据变化,而不影响物体的特征。
fliplr float 0.5 0.0 - 1.0 以指定的概率将图像左右翻转,有助于学习对称物体并增加数据集的多样性。
bgr float 0.0 0.0 - 1.0 以指定的概率将图像通道从 RGB 翻转到 BGR,有助于提高对不正确通道排序的鲁棒性。
mosaic float 1.0 0.0 - 1.0 将四个训练图像组合成一个,模拟不同的场景组成和物体交互。对于复杂的场景理解非常有效。
mixup float 0.0 0.0 - 1.0 混合两个图像及其标签,创建一个合成图像。通过引入标签噪声和视觉变化,增强模型的泛化能力。
cutmix float 0.0 0.0 - 1.0 组合两张图像的部分区域,创建局部混合,同时保持清晰的区域。通过创建遮挡场景来增强模型的鲁棒性。
copy_paste float 0.0 0.0 - 1.0 仅分割。在图像中复制和粘贴对象,以增加对象实例。
copy_paste_mode str flip - 仅分割。指定了 copy-paste 要使用的策略。选项包括 'flip''mixup'.
auto_augment str randaugment - 仅分类。应用预定义的增强策略('randaugment', 'autoaugment''augmix')通过视觉多样性来增强模型性能。
erasing float 0.4 0.0 - 0.9 仅分类。在训练过程中随机擦除图像的区域,以鼓励模型关注不那么明显的特征。

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

数据增强指南

日志记录、检查点和绘图设置

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

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

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

参数 默认值 描述
project 'runs' 指定保存训练运行的根目录。每次运行都保存在一个单独的子目录中。
name 'exp' 定义实验名称。如果未指定,YOLO 会为每次运行递增此名称(例如, exp, exp2)以避免覆盖。
exist_ok False 确定是否覆盖现有实验目录。 True 允许覆盖; False 阻止覆盖。
plots False 控制训练和验证图的生成和保存。设置为 True 创建诸如损失曲线之类的图表, 精度-召回率 曲线和样本预测,用于性能的可视化跟踪。
save False 启用保存训练检查点和最终模型权重。设置为 True 以定期保存模型状态,从而允许恢复训练或模型部署。

常见问题

如何在训练期间提高 YOLO 模型的性能?

通过调整超参数(如批量大小学习率、动量和权重衰减)来提高性能。调整数据增强设置,选择合适的优化器,并使用诸如提前停止或混合精度之类的技术。有关详细信息,请参见训练指南

YOLO 模型准确性的关键超参数是什么?

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

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

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

如何为训练 YOLO 模型设置学习率?

学习率(lr0)至关重要;从 0.01 (用于 SGD)或 0.001 用于 Adam 优化器。监控指标并根据需要进行调整。使用余弦学习率调度器(cos_lr)或 warmup (warmup_epochs, warmup_momentum)。详情请参见 训练指南.

YOLO 模型的默认推理设置是什么?

默认设置包括:

  • 中查找更多详细信息conf=0.25):检测的最小置信度。
  • IoU 阈值(iou=0.7): 适用于 非极大值抑制 (NMS).
  • 图像尺寸(imgsz=640): 调整输入图像大小。
  • 设备(device=None): 选择 CPU 或 GPU。

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

为什么 YOLO 模型要使用混合精度训练?

混合精度 训练 (amp=True)减少内存使用,并通过 FP16 和 FP32 加速训练。它有益于现代 GPU,允许更大的模型和更快的计算,而不会显著降低准确性。在 训练指南.



📅 创建于 1 年前 ✏️ 更新于 2 个月前

评论