yolo11参数信息
yolo11参数信息
本文介绍yolo11训练和推理默认参数信息
一、训练参数
训练脚本:
import sys
import torch
torch.cuda.empty_cache()
sys.path.append('/ultralytics')
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11-seg.yaml")
# Train the model
results = model.train(data="/home/zx/code/datasets/zx.yaml", epochs=10000, imgsz=640, lr0=0.0001, batch=32, workers=12)
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
model | str | None | 指定用于训练的模型文件。接受指向 .pt 预训练模型或 .yaml 配置文件。 |
data | str | None | 数据集配置文件的路径(例如 coco8.yaml ),包含训练和验证数据的类名和类数。 |
epochs | int | 100 | 训练的总轮数,每个轮数遍历整个数据集一次。 |
time | float | None | 训练的最长时间(小时),若设置则覆盖 epochs 参数。 |
patience | int | 100 | 在验证指标无改善的情况下提前停止训练的轮数。 |
batch | int | 16 | 批量大小,整数(如 batch=16 ),自动模式 (batch=-1 约 60% GPU 内存),或指定利用率 (batch=0.70 )。 |
imgsz | int/list | 640 | 训练时的目标图像大小,所有图像都会被调整到此尺寸。 |
save | bool | True | 是否保存训练检查点和最终模型权重。 |
save_period | int | -1 | 每 N 个轮数保存一次检查点,-1 禁用。 |
cache | bool | False | 是否缓存数据集图像,提高训练速度,代价是增加内存使用。 |
device | int/str | None | 训练设备,如 0 (单GPU)、0,1 (多GPU)、cpu (CPU 训练)或 mps (Apple Silicon)。 |
workers | int | 8 | 加载数据的线程数,影响数据预处理速度。 |
project | str | None | 训练结果的保存目录。 |
name | str | None | 训练运行的名称,在 project 目录下创建子目录存储训练输出。 |
exist_ok | bool | False | 是否允许覆盖现有的项目目录。 |
pretrained | bool/str | True | 是否从预训练模型开始训练,可以为模型路径。 |
optimizer | str | ‘auto’ | 选择优化器,如 SGD 、Adam 、AdamW ,或 auto 自动选择。 |
seed | int | 0 | 设置随机种子,以确保可复现的训练结果。 |
deterministic | bool | True | 是否强制使用确定性算法,影响可复现性和速度。 |
single_cls | bool | False | 是否将所有类别视为单一类别,适用于二分类任务。 |
classes | list[int] | None | 训练时筛选指定类别的 ID。 |
rect | bool | False | 是否进行矩形训练,以减少填充,提高效率。 |
multi_scale | bool | False | 是否启用多尺度训练,动态调整 imgsz 。 |
cos_lr | bool | False | 余弦学习率调度,逐渐调整学习率。 |
close_mosaic | int | 10 | 训练最后 N 轮禁用马赛克数据增强。 |
resume | bool | False | 是否从上次保存的检查点恢复训练。 |
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 | 预热轮数,逐步增加学习率。 |
warmup_momentum | float | 0.8 | 预热阶段的动量初始值。 |
warmup_bias_lr | float | 0.1 | 预热阶段的偏置学习率。 |
box | float | 7.5 | 边框损失权重。 |
cls | float | 0.5 | 分类损失权重。 |
dfl | float | 1.5 | 分布焦点损失权重。 |
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 | 是否生成训练和验证结果的可视化图表。 |
二、推理参数
推理脚本:
import sys
sys.path.append('/ultralytics')
from ultralytics import YOLO
# 加载模型
model = YOLO("/ultralytics/runs/segment/train10/weights/best.pt")
# 进行预测
results = model.predict(
source="/home/zx/code/test/source", # 输入数据路径
imgsz=640, # 图像大小
conf=0.3, # 置信度阈值
project="/home/zx/code/test/out", # 输出结果的项目路径
name="result", # 结果文件夹名称
save=True
)
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
source | str | ‘ultralytics/assets’ | 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或用于实时馈送的设备 ID。支持多种格式和来源,可灵活应用于不同类型的输入。 |
conf | float | 0.25 | 设置检测的最小置信度阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整该值有助于减少误报。 |
iou | float | 0.7 | 非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。较低的数值可以消除重叠的方框,从而减少检测次数,这对减少重复检测非常有用。 |
imgsz | int/tuple | 640 | 定义用于推理的图像大小。可以是一个整数 640 或一个 (高度, 宽度) 元组。适当调整大小可以提高检测效率、精确度和处理速度。 |
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 | 视频输入的帧间距。允许跳过视频中的帧,以加快处理速度,但会牺牲时间分辨率。数值越大,跳帧越多。 |
stream_buffer | bool | False | 决定是否对接收到的视频流帧进行排队。如果为 False,则丢弃旧帧,优化实时应用;如果为 True,则排队新帧,确保不跳帧,但可能会造成延迟。 |
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 | 指定从中提取特征向量或嵌入的层。这对聚类或相似性搜索等下游任务非常有用。 |
project | str | None | 保存预测结果的项目目录名称(如果 save 已启用)。 |
name | str | None | 预测运行的名称。用于在项目文件夹内创建一个子目录,在 save 已启用的情况下存储预测输出结果。 |
stream | bool | False | 通过返回结果对象生成器,而不是一次性将所有帧加载到内存中,从而实现对长视频或大量图像的高效内存处理。 |
verbose | bool | True | 控制是否在终端显示详细的推理日志,提供预测过程的实时反馈。 |
可视化参数:
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
show | bool | False | 如果为 True,则在一个窗口中显示带有注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。 |
save | bool | False (Python) / True (CLI) | 可将注释的图像或视频保存到文件中,对记录、进一步分析或共享结果非常有用。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 或 int | None | 指定边界框的线宽。如果为 None,则根据图像大小自动调整线宽,以优化可视化效果。 |
font_size | float | None | 注释文本的字体大小。如果设置为 None,则使用默认字体大小。 |
font | str | ‘Arial.ttf’ | 可视化文本注释的字体名称或路径。 |
pil | bool | False | 以 PIL 图像对象(而非 numpy 数组)的形式返回图像。 |
kpt_radius | int | 5 | 在姿态估计可视化时,关键点的半径。 |
kpt_line | bool | True | 在姿势估计可视化时,用线条连接关键点。 |
masks | bool | True | 在可视化输出中显示分割掩码。 |
probs | bool | True | 在可视化中加入分类概率。 |
filename | str | None | 当 save=True 时,指定保存注释图像的路径和文件名。 |
color_mode | str | ‘class’ | 指定可视化的着色模式,例如 "instance" 或 "class" 。 |
txt_color | tuple[int, int, int] | (255, 255, 255) | 分类任务注释的 RGB 文本颜色。 |
三、验证参数
验证参数:
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
data | str | None | 指定数据集配置文件的路径(如 coco8.yaml ),该文件包括指向验证数据、类名和类别数的信息。 |
imgsz | int | 640 | 定义输入图像的尺寸,所有图像在处理前都会调整到该尺寸。较大尺寸可以提高小物体的检测精度,但会增加计算时间。 |
batch | int | 16 | 设置每批图像的数量。较大值可提高 GPU 内存利用效率,但需要更多 VRAM,需根据硬件资源进行调整。 |
save_json | bool | False | 若为 True ,则将结果保存为 JSON 文件,以便进一步分析、与其他工具集成或提交至 COCO 评估服务器。 |
save_hybrid | bool | False | 若为 True ,保存混合版本的标签,将原始注释与额外的模型预测结合,适用于半监督学习和数据增强。 |
conf | float | 0.001 | 设置最小置信度阈值。较低的值会提高召回率,但可能带来更多误报,在计算精确度-召回曲线时使用。 |
iou | float | 0.6 | 设置非最大抑制(NMS)的交并比(IoU)阈值,以控制重复检测的消除。 |
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 曲线,以可视化评估模型性能。 |
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 共同启用,以提供更详细的分析数据。 |
save_crop | bool | False | 若为 True ,保存检测到的目标裁剪图像,可用于创建重点数据集、视觉验证或分析检测结果。 |
workers | int | 8 | 设置数据加载的工作线程数。较大值可加快数据预处理速度,但可能增加 CPU 占用。设为 0 时使用主线程,适用于某些稳定性要求较高的环境。 |
augment | bool | False | 若为 True ,在验证过程中启用测试时间增强(TTA),通过在转换后的输入上运行推理,以推理速度为代价提高检测精度。 |
agnostic_nms | bool | False | 启用类别无关的非最大抑制(NMS),可合并重叠框,而不考虑类别。这在实例检测任务中较有用。 |
single_cls | bool | False | 在验证过程中将所有类别视为单一类别,适用于二元检测任务或类别区分不重要的应用场景。 |
四、导出参数
导出脚本:
import sys
sys.path.append('/ultralytics')
from ultralytics import YOLO
# Load a model
model = YOLO("/ultralytics/runs/segment/train4/weights/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
format | str | ‘torchscript’ | 导出模型的目标格式,例如 'onnx' 、'torchscript' 、'engine' (TensorRT)等,每种格式适用于不同的部署环境。 |
imgsz | int 或 tuple | 640 | 模型输入所需的图像尺寸,可为整数(如 640 ,表示 640×640 )或元组 (height, width) 以指定具体尺寸。 |
keras | bool | False | 若为 True ,则导出为 Keras 格式(TensorFlow SavedModel),以支持 TensorFlow Serving 和 API。 |
optimize | bool | False | 导出至 TorchScript 时进行优化,以缩小模型大小并提高推理性能。不兼容 NCNN 格式或 CUDA 设备。 |
half | bool | False | 启用 FP16(半精度)量化,适用于支持的硬件,可减少模型大小并可能加快推理速度。与 INT8 量化或 ONNX CPU 输出不兼容。 |
int8 | bool | False | 启用 INT8 量化,以进一步压缩模型并提高推理速度,同时尽可能减少精度损失。与 TensorRT 结合使用时,将执行训练后量化(PTQ)。 |
dynamic | bool | False | 允许 ONNX、TensorRT 和 OpenVINO 生成动态输入尺寸,提高处理不同图像尺寸的灵活性。启用 TensorRT INT8 时自动设为 True 。 |
simplify | bool | True | 简化 ONNX 模型图(onnxslim ),可能提高推理引擎的性能和兼容性。 |
opset | int | None | 指定 ONNX 操作集版本,以确保与不同的 ONNX 解析器和运行时兼容。如果未设置,则使用最新支持的版本。 |
workspace | float 或 None | None | 设定工作区的最大大小(单位:GiB),用于 TensorRT 优化,以平衡内存使用和性能。若设为 None ,则 TensorRT 会自动分配,最高可达设备最大值。 |
nms | bool | False | 若支持(视导出格式而定),则在导出模型中添加非最大值抑制(NMS),以优化检测后处理。该功能不适用于端对端模型。 |
batch | int | 1 | 指定导出模型的批量推理大小,即可同时处理的最大图像数。在 predict 模式下生效。若导出至边缘 TPU,该值自动设为 1 。 |
device | str | None | 指定导出设备,如 GPU (device=0 )、CPU (device=cpu )、Apple Silicon 的 MPS (device=mps ),或 NVIDIA Jetson 的 DLA (device=dla:0 或 device=dla:1 )。TensorRT 输出默认使用 GPU。 |
data | str | ‘coco8.yaml’ | 指定数据集配置文件(默认:coco8.yaml ),在 INT8 量化校准时至关重要。若启用 INT8 但未指定数据集,则系统会分配默认数据集。 |