配置
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)
其中:
TASK
(可选)是以下之一(detect, 分割, 分类, 姿势估计, 旋转框检测)MODE
(必需)是以下之一(train, val, 预测, 导出, 追踪, 基准测试)ARGS
(可选)是arg=value
键值对,例如imgsz=640
用于覆盖默认值。
默认值 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 |
int 或 float |
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 |
int 或 str 或 list |
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 |
bool 或 str |
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 |
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 |
学习率预热的 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 |
int 或 tuple |
640 |
定义推理的图像大小。可以是一个整数 640 表示正方形调整大小,也可以是 (height, width) 元组。适当的大小调整可以提高检测 准确性 和处理速度。 |
rect |
bool |
True |
如果启用,则对图像较短的一边进行最小填充,直到可以被步长整除,以提高推理速度。如果禁用,则在推理期间将图像填充为正方形。 |
half |
bool |
False |
启用半精度 (FP16) 推理,这可以加快在支持的 GPU 上的模型推理速度,同时对准确性的影响极小。 |
device |
str |
None |
指定用于推理的设备(例如, cpu , cuda:0 或 0 )。允许用户在 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 , test 或 train )。 允许灵活选择数据段进行性能评估。 |
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 |
int 或 tuple |
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 |
float 或 None |
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:0 或 device=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 , area 或 pie . |
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,允许更大的模型和更快的计算,而不会显著降低准确性。在 训练指南.