视觉/图像重磅干货,第一时间送达!
摘要
Yolo11是Ultralytics推出的新一代计算机视觉模型,为YOLO家族树立了新的里程碑。它在对象检测、实例分割、图像分类、姿势估计、定向物体检测和对象跟踪等计算机视觉任务上展现了卓越的性能和准确性,相较于YOLOv8有了显著提升。
创新点:
无与伦比的速度和精度:Yolo11的设计旨在实现快速运行而不牺牲精度。其优化的模型架构提供了快速的推理时间,适用于自动驾驶、安全系统和工业自动化等实时应用。Yolo11在速度和准确性之间取得了平衡,满足了需要快速决策的场景需求。 高级物体检测功能:Yolo11在复杂环境中的物体检测能力得到了显著提升。它能够容忍遮挡并更好地区分重叠物体,这对于城市监控或事件监控等拥挤环境中的应用至关重要。 应用多功能性:Yolo11不仅擅长对象检测,还具备实例分割、姿势估计和跟踪等高级功能。这种多功能性使其可应用于从医疗保健到农业的各个领域,提供了广泛的适用性。 增强的设计和计算效率:Yolo11在YOLOv9和YOLOv10的基础上进行了扩展,集成了卓越的架构框架、精炼的特征提取方法和优化的训练协议。它使用更少的参数实现了更高的平均精度(mAP)得分,提高了计算效率。同时,Yolo11的处理速度也有所提高,使其更适合实时应用。 高效的部署能力:Yolo11的处理能力极其高效,适合在云端和边缘设备上部署。它提供了灵活性,可适应各种计算机视觉挑战,包括自动驾驶、监控、医疗成像、智能零售和工业用例等。
Yolo11以其出色的速度、精度、多功能性和计算效率,成为了Ultralytics迄今为止开发的最熟练的模型之一,为计算机视觉领域带来了新的突破。
关键特性:
❝1、增强的特征提取:采用改进的主干网络和颈部架构,提高了特征提取能力,以实现更精确的目标检测和更复杂的任务性能。2、优化效率和速度:引入了精细的架构设计和优化的训练流程,提供了更快的处理速度,并在准确性和性能之间保持了最佳平衡。3、参数更少,精度更高:凭借模型设计的进步,在数据集上实现了更高的平均精度均值(),同时使用的参数比少,从而在不影响精度的前提下提高了计算效率。4、跨环境适应性:可以无缝部署在各种环境中,包括边缘设备、云平台和支持 GPU的系统,确保了最大的灵活性。5、支持的任务范围广泛:无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(),都旨在应对各种计算机视觉挑战。
支持的任务和模式
YOLO11支持的计算机视觉任务的概述:
对象检测:识别并精确定位图片或视频帧中的对象,用边界框勾勒出它们,用于监控、自动驾驶和零售分析等用途。 实例分割需要在像素级别识别和勾勒出图像中的离散对象。它对医学成像和制造业缺陷识别等应用大有裨益。 图像分类:将整张照片分配到已建立的类别,使其适用于电子商务中的产品分类或野生动物监视等应用。 姿势估计:识别图像或视频帧中的某些重要点以监控运动或姿势,有利于健身追踪、运动分析和医疗保健应用。 定向物体检测:(OBB)识别具有特定方向角的物体,有助于更准确地定位旋转物体,特别有利于航空成像、机器人和仓库自动化应用。 对象跟踪:观察并追踪连续视频帧中对象的动作,这对于众多实时应用来说至关重要。
模型 | 文件名 | 任务 | 推理 | 验证 | 训练 | 导出 |
---|---|---|---|---|---|---|
yolo11n.pt yolo11s.pt yolo11m.pt yolo11l.pt yolo11x.pt | 检测 | ✅ | ✅ | ✅ | ✅ | |
yolo11n-seg.pt yolo11s-seg.pt yolo11m-seg.pt yolo11l-seg.pt yolo11x-seg.pt | 实例分割 | ✅ | ✅ | ✅ | ✅ | |
yolo11n-pose.pt yolo11s-pose.pt yolo11m-pose.pt yolo11l-pose.pt yolo11x-pose.pt | 姿态/关键点检测 | ✅ | ✅ | ✅ | ✅ | |
yolo11n-obb.pt yolo11s-obb.pt yolo11m-obb.pt yolo11l-obb.pt yolo11x-obb.pt | 定向检测 | ✅ | ✅ | ✅ | ✅ | |
yolo11n-cls.pt yolo11s-cls.pt yolo11m-cls.pt yolo11l-cls.pt yolo11x-cls.pt | 分类 | ✅ | ✅ | ✅ | ✅ |
此表概述了模型的各种变体,展示了它们在特定任务中的适用性以及与推理、验证、训练和导出等操作模式的兼容性。这种灵活性使适用于计算机视觉领域的广泛应用,从实时检测到复杂的分割任务。
Yolo11模型架构
Yolo11l的结构图:从结构图中可以看出,核心增加了两个模块,一个是C3k2,一个是C2PSA模块。
C3K2与C2PSA模块总结
C3K2模块:
C3K2模块是YOLO11在backbone部分引入的一种更快速的CSP(Cross Stage Partial Networks)模块变体。CSP模块是一种网络结构设计,旨在通过跨阶段的部分连接来增强特征学习能力,同时减少计算量。C3K2在C3模块的基础上进行了优化,通过指定参数为2,实现了两个C3k(可能是指具有某种特定配置的C3模块变体)的串联,从而进一步提升了特征提取的效率和能力。这种设计使得C3K2能够在保持模型稳定性的同时,提高模型的运行速度,并可能通过增加特征提取的深度来间接提升精度。
C3K2有两种状态,一种是c3k=False为False的时候,这时候就是C2f模块。结构图如下:一种是c3k=True为False的时候,这时候就是C3K2模块,结构图:
C3k模块延续了以前的C3模块。结构图:
C2PSA模块:
C2PSA模块是YOLO11在backbone部分新增的一个具有注意力机制的特征提取和处理模块。它支持一个可以多次叠加的PSA(金字塔切片注意力)模块,该模块是在SE(Squeeze-and-Excitation)注意力机制的基础上进行叠加和改进的。SE注意力机制通过显式地建模特征通道间的相关性,自适应地重新校准通道特征响应,从而提升模型的表示能力。而PSA模块则通过引入金字塔切片的概念,进一步增强了注意力机制的效果,使其能够更精细地捕捉特征间的依赖关系。C2PSA模块将PSA模块作为独立组件插入到模型中,通过替换原有的部分结构,显著增强了模型的特征提取能力,进而提升了模型的精度和mAP(平均精度均值)。这种结构详见:https://arxiv.org/pdf/2105.14447。PSA结构如下:
C2PSA结构图:
训练、验证、以及测试
训练
训练代码以及参数详解
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO(model="ultralytics/cfg/models/11/yolo11l.yaml") # 从头开始构建新模型
print(model)
# Use the model
results = model.train(data="VOC.yaml",patience=0, epochs=2, device='0', batch=8, seed=42,imgsz=[640,640]) # 训练模
参数 | 说明 |
---|---|
lr0 | (float) 初始学习率(例如SGD=0.01, Adam=0.001) |
lrf | (float) 最终学习率(lr0 * lrf) |
momentum | (float) SGD动量/Adam的beta1 |
weight_decay | (float) 优化器权重衰减(0.0005或5e-4) |
warmup_epochs | (float) 预热周期(可以是小数) |
warmup_momentum | (float) 预热初始动量 |
warmup_bias_lr | (float) 预热初始偏置学习率 |
model | (str, 可选) 模型文件路径,例如 yolov8n.pt, yolov8n.yaml |
data | (str, 可选) 数据文件路径,例如 coco8.yaml |
epochs | (int) 训练的总轮数 |
time | (float, 可选) 训练的小时数,如果提供则覆盖 epochs |
patience | (int) 早期停止训练的轮数(无显著改进时等待的轮数) |
batch | (int) 每批次的图像数量(-1 为自动批量) |
imgsz | (int or list) 训练和验证模式的输入图像尺寸(int),或预测和导出模式的列表[h,w] |
save | (bool) 是否保存训练检查点和预测结果 |
save_period | (int) 每 x 轮保存一次检查点(<1 时禁用) |
cache | (bool) True/ram, disk 或 False。用于数据加载的缓存 |
device | (int 、str、 list, 可选) 运行设备,例如 cuda device=0 或 device=0,1,2,3 或device='0,1,2,3 '或 device=cpu |
workers | (int) 数据加载的工作线程数(如果使用 DDP,则为每个 RANK) |
project | (str, 可选) 项目名称 |
name | (str, 可选) 实验名称,结果保存在 'project/name' 目录中 |
exist_ok | (bool) 是否覆盖现有实验 |
pretrained | (bool、str) 是否使用预训练模型(bool)或从字符串路径加载权重的模型 |
optimizer | (str) 使用的优化器,选项=[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto] |
verbose | (bool) 是否打印详细输出 |
seed | (int) 用于可重复性的随机种子 |
deterministic | (bool) 是否启用确定性模式 |
single_cls | (bool) 将多类数据训练为单类 |
rect | (bool) 如果 mode='train' 则进行矩形训练,如果 mode='val' 则进行矩形验证 |
cos_lr | (bool) 使用余弦学习率调度器 |
close_mosaic | (int) 在最后几个轮次中禁用马赛克增强(0 以禁用) |
resume | (bool) 从上一个检查点恢复训练 |
amp | (bool) 自动混合精度(AMP)训练,选项=[True, False],True 运行 AMP 检查 |
fraction | (float) 用于训练的数据集比例(默认为 1.0,即训练集中的所有图像) |
profile | (bool) 在训练期间为记录器分析 ONNX 和 TensorRT 速度 |
freeze | (int 、 list, 可选) 在训练期间冻结前 n 层或冻结层索引列表 |
multi_scale | (bool) 训练期间是否使用多尺度 |
overlap_mask | (bool) 在训练期间将对象掩码合并到单个图像掩码中(仅分段训练) |
mask_ratio | (int) 掩码下采样比例(仅分段训练) |
dropout | (float) 使用 dropout 正则化(仅分类训练) |
box | (float) 框损失增益 |
cls | (float) 类别损失增益(按像素比例缩放) |
dfl | (float) DFL损失增益 |
pose | (float) 姿态损失增益 |
kobj | (float) 关键点对象损失增益 |
label_smoothing | (float) 标签平滑(比例) |
nbs | (int) 名义批量大小 |
hsv_h | (float) 图像HSV-色调增强(比例) |
hsv_s | (float) 图像HSV-饱和度增强(比例) |
hsv_v | (float) 图像HSV-亮度增强(比例) |
degrees | (float) 图像旋转角度(±度) |
translate | (float) 图像平移(±比例) |
scale | (float) 图像缩放(±增益) |
shear | (float) 图像剪切(±度) |
perspective | (float) 图像透视(±比例),范围0-0.001 |
flipud | (float) 图像上下翻转(概率) |
fliplr | (float) 图像左右翻转(概率) |
bgr | (float) 图像BGR通道交换(概率) |
mosaic | (float) 图像马赛克(概率) |
mixup | (float) 图像混合(概率) |
copy_paste | (float) 段落复制粘贴(概率) |
copy_paste_mode | (str) 复制粘贴增强的方法(flip, mixup) |
auto_augment | (str) 分类任务的自动增强策略(randaugment, autoaugment, augmix) |
erasing | (float) 分类训练期间随机擦除的概率(0-0.9),0表示不擦除,必须小于1.0 |
crop_fraction | (float) 分类任务的图像裁剪比例(0.1-1),1.0表示不裁剪,必须大于0 |
cfg | (str, 可选) 用于覆盖defaults.yaml的自定义配置文件 |
tracker | (str) 跟踪器类型,选项=[botsort.yaml, bytetrack.yaml] |
加载预训练模型的写法:
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO(model="ultralytics/cfg/models/11/yolo11l.yaml").load("yolo11l.pt") # 从头开始构建新模型
print(model)
# Use the model
results = model.train(data="VOC.yaml",patience=0, epochs=2, device='0', batch=8, seed=42,imgsz=[640,640]) # 训练模
多GPU训练
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
执行命令:
python -m torch.distributed.launch --nproc_per_node=2 train.py
断点训练
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)
使用苹果电脑训练
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
测试结果
Starting training for 2 epochs...
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/2 5.83G 3.784 5.47 4.073 59 640: 100%|██████████| 259/259 [00:45<00:00, 5.72it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:01<00:00, 8.32it/s]
all 230 1412 0.413 0.0451 0.00809 0.00277
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/2 5.82G 2.808 4.106 3.118 88 640: 100%|██████████| 259/259 [00:52<00:00, 4.91it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 6.34it/s]
all 230 1412 0.219 0.12 0.0292 0.011
2 epochs completed in 0.029 hours.
Optimizer stripped from runs\detect\train\weights\last.pt, 51.2MB
Optimizer stripped from runs\detect\train\weights\best.pt, 51.2MB
Validating runs\detect\train\weights\best.pt...
WARNING ⚠️ validating an untrained model YAML will result in 0 mAP.
Ultralytics 8.3.28 🚀 Python-3.12.4 torch-2.4.1 CUDA:0 (NVIDIA GeForce RTX 4090 Laptop GPU, 16376MiB)
YOLO11l summary (fused): 464 layers, 25,303,984 parameters, 0 gradients
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 6.43it/s]
all 230 1412 0.219 0.119 0.0293 0.011
c17 40 131 0.0664 0.443 0.063 0.0211
c5 19 68 0.0407 0.0735 0.0133 0.00487
helicopter 13 43 0.0797 0.0698 0.0473 0.0236
c130 20 85 0.0273 0.518 0.028 0.0117
f16 11 57 0.0181 0.544 0.0295 0.00771
b2 2 2 0 0 0 0
other 13 86 0.0424 0.279 0.0501 0.0118
b52 21 70 0.0446 0.129 0.0256 0.00872
kc10 12 62 0.0225 0.0323 0.0263 0.00977
command 12 40 0 0 0.00341 0.00134
f15 21 123 0.0834 0.0407 0.0204 0.00636
kc135 24 91 0.181 0.418 0.17 0.0749
a10 4 27 0 0 0.000874 0.00035
b1 5 20 0 0 0 0
aew 4 25 0.0193 0.04 0.0143 0.00699
f22 3 17 1 0 0.00307 0.000307
p3 6 105 0 0 0.00188 0.0008
p8 1 1 1 0 0 0
f35 5 32 1 0 0.0905 0.0421
f18 13 125 0.123 0.476 0.104 0.0363
v22 5 41 0.00524 0.0244 0.00604 0.0026
su-27 5 31 0.127 0.0968 0.0655 0.019
il-38 10 27 0.02 0.037 0.0208 0.00529
tu-134 1 1 1 0 0 0
su-33 1 2 0 0 0 0
an-70 1 2 1 0 0 0
tu-22 8 98 0 0 0.00616 0.0023
加载预训练的测试结果
Starting training for 2 epochs...
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/2 5.76G 1.239 2.468 1.111 56 640: 100%|██████████| 259/259 [01:13<00:00, 3.53it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 7.09it/s]
all 230 1412 0.589 0.575 0.619 0.429
0%| | 0/259 [00:00<?, ?it/s]
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/2 5.85G 1.072 1.183 1.035 109 640: 100%|██████████| 259/259 [00:59<00:00, 4.36it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 7.50it/s]
all 230 1412 0.757 0.774 0.841 0.601
2 epochs completed in 0.039 hours.
Optimizer stripped from runs\detect\train2\weights\last.pt, 51.2MB
Optimizer stripped from runs\detect\train2\weights\best.pt, 51.2MB
Validating runs\detect\train2\weights\best.pt...
WARNING ⚠️ validating an untrained model YAML will result in 0 mAP.
Ultralytics 8.3.28 🚀 Python-3.12.4 torch-2.4.1 CUDA:0 (NVIDIA GeForce RTX 4090 Laptop GPU, 16376MiB)
YOLO11l summary (fused): 464 layers, 25,303,984 parameters, 0 gradients
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 6.80it/s]
all 230 1412 0.757 0.775 0.841 0.601
c17 40 131 0.852 0.939 0.959 0.727
c5 19 68 0.94 0.618 0.864 0.713
helicopter 13 43 0.571 0.884 0.915 0.529
c130 20 85 0.932 0.972 0.983 0.649
f16 11 57 0.595 0.826 0.759 0.482
b2 2 2 0.526 0.5 0.528 0.313
other 13 86 0.933 0.484 0.812 0.446
b52 21 70 0.663 0.957 0.963 0.731
kc10 12 62 0.826 0.903 0.938 0.745
command 12 40 0.945 0.862 0.958 0.718
f15 21 123 0.851 0.838 0.929 0.578
kc135 24 91 0.612 0.945 0.916 0.6
a10 4 27 0.208 0.0784 0.166 0.0556
b1 5 20 0.708 0.85 0.885 0.644
aew 4 25 0.731 0.981 0.942 0.743
f22 3 17 0.363 0.941 0.455 0.335
p3 6 105 0.898 0.971 0.992 0.761
p8 1 1 1 0 0.995 0.597
f35 5 32 0.817 0.438 0.665 0.328
f18 13 125 0.847 0.976 0.983 0.764
v22 5 41 1 0.961 0.995 0.565
su-27 5 31 0.97 1 0.995 0.777
il-38 10 27 0.719 1 0.995 0.803
tu-134 1 1 0.806 1 0.995 0.895
su-33 1 2 1 0 0.137 0.0824
an-70 1 2 0.155 1 0.995 0.895
tu-22 8 98 0.974 0.99 0.994 0.745
验证
验证代码
from ultralytics import YOLO
if __name__ == '__main__':
# Load a model
# model = YOLO('yolov8m.pt') # load an official model
model = YOLO('runs/detect/train/weights/best.pt') # load a custom model
# Validate the model
metrics = model.val(split='val') # no arguments needed, dataset and settings remembered
参数 | 说明 |
---|---|
val | (bool) 在训练过程中进行验证/测试 |
split | (str) 用于验证的数据集划分,例如 'val'、'test' 或 'train' |
save_json | (bool) 是否将结果保存到 JSON 文件 |
save_hybrid | (bool) 是否保存标签的混合版本(标签+附加预测) |
conf | (float, 可选) 检测的对象置信度阈值(默认为 0.25(预测时),0.001(验证时)) |
iou | (float) 非极大值抑制(NMS)的交并比(IoU)阈值 |
max_det | (int) 每张图像的最大检测数量 |
half | (bool) 是否使用半精度(FP16) |
dnn | (bool) 是否使用 OpenCV DNN 进行 ONNX 推理 |
plots | (bool) 在训练/验证过程中是否保存图表和图像 |
验证结果
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:03<00:00, 4.62it/s]
all 230 1412 0.757 0.775 0.841 0.604
c17 40 131 0.852 0.939 0.959 0.729
c5 19 68 0.942 0.618 0.864 0.713
helicopter 13 43 0.571 0.884 0.916 0.53
c130 20 85 0.932 0.973 0.983 0.648
f16 11 57 0.6 0.84 0.758 0.478
b2 2 2 0.527 0.5 0.528 0.312
other 13 86 0.919 0.477 0.811 0.449
b52 21 70 0.663 0.957 0.963 0.733
kc10 12 62 0.826 0.903 0.938 0.745
command 12 40 0.945 0.862 0.958 0.72
f15 21 123 0.857 0.837 0.93 0.579
kc135 24 91 0.612 0.945 0.915 0.601
a10 4 27 0.206 0.0774 0.152 0.054
b1 5 20 0.706 0.85 0.884 0.628
aew 4 25 0.732 0.982 0.94 0.741
f22 3 17 0.371 0.941 0.455 0.326
p3 6 105 0.898 0.971 0.992 0.757
p8 1 1 1 0 0.995 0.697
f35 5 32 0.819 0.438 0.667 0.324
f18 13 125 0.846 0.976 0.983 0.767
v22 5 41 1 0.962 0.995 0.569
su-27 5 31 0.969 1 0.995 0.781
il-38 10 27 0.719 1 0.995 0.803
tu-134 1 1 0.805 1 0.995 0.895
su-33 1 2 1 0 0.137 0.0824
an-70 1 2 0.155 1 0.995 0.895
tu-22 8 98 0.973 0.99 0.994 0.745
测试
测试代码
from ultralytics import YOLO
if __name__ == '__main__':
# Load a model
# model = YOLO('yolov8m.pt') # load an official model
model = YOLO('runs/detect/train2/weights/best.pt') # load a custom model
results = model.predict(source="ultralytics/assets", device='0') # predict on an image
print(results)
参数 | 说明 |
---|---|
source | (str 、 Path 、int、PIL.Image、 np.ndarray、 torch.Tensor 、 List 、 Tuple) 图像或视频的源目录,用于预测的图像源。接受多种类型,包括文件路径、URLs、PIL图像、numpy数组、torch张量,以及列表或元组(这些列表或元组可以包含上述任何类型的组合)。 |
vid_stride | (int) 视频帧率的步长 |
stream_buffer | (bool) 缓冲所有流式帧(True)或返回最新帧(False) |
visualize | (bool) 可视化模型特征 |
augment | (bool) 对预测源应用图像增强 |
agnostic_nms | (bool) 使用类别无关的非极大值抑制(NMS) |
classes | (int 、list[int], 可选) 按类别筛选结果,例如 classes=0 或 classes=[0,2,3] |
retina_masks | (bool) 使用高分辨率分割掩码 |
embed | (list[int], 可选) 从给定层返回特征向量/嵌入 |
show | (bool) 如果环境允许,显示预测的图像和视频 |
save_frames | (bool) 保存预测的单个视频帧 |
save_txt | (bool) 将结果保存为 .txt 文件 |
save_conf | (bool) 保存带有置信度分数的结果 |
save_crop | (bool) 保存带有结果的裁剪图像 |
show_labels | (bool) 显示预测标签,例如“person” |
show_conf | (bool) 显示预测置信度,例如“0.99” |
show_boxes | (bool) 显示预测框 |
line_width | (int, 可选) 边界框的线宽。如果为 None,则根据图像大小进行缩放 |
模型导出
Yolo11支持的模型导入有:
Model | Filenames | Task | Inference | Validation | Training | Export |
---|---|---|---|---|---|---|
YOLO11 | yolo11n.pt yolo11s.pt yolo11m.pt yolo11l.pt yolo11x.pt | Detection | ✅ | ✅ | ✅ | ✅ |
YOLO11-seg | yolo11n-seg.pt yolo11s-seg.pt yolo11m-seg.pt yolo11l-seg.pt yolo11x-seg.pt | Instance Segmentation | ✅ | ✅ | ✅ | ✅ |
YOLO11-pose | yolo11n-pose.pt yolo11s-pose.pt yolo11m-pose.pt yolo11l-pose.pt yolo11x-pose.pt | Pose/Keypoints | ✅ | ✅ | ✅ | ✅ |
YOLO11-obb | yolo11n-obb.pt yolo11s-obb.pt yolo11m-obb.pt yolo11l-obb.pt yolo11x-obb.pt | Oriented Detection | ✅ | ✅ | ✅ | ✅ |
YOLO11-cls | yolo11n-cls.pt yolo11s-cls.pt yolo11m-cls.pt yolo11l-cls.pt yolo11x-cls.pt | Classification | ✅ | ✅ | ✅ | ✅ |
参数详解
参数 | 类型 | 默认参数 | Description (Chinese) |
---|---|---|---|
format | str | 'torchscript' | 导出模型的目标格式,如'onnx'、'torchscript'、'tensorflow'等,定义了与各种部署环境的兼容性。 |
imgsz | int or tuple | 640 | 模型输入所需的图像大小。可以是整数(表示正方形图像)或元组(高度,宽度)(表示特定尺寸)。 |
keras | bool | False | 启用导出到Keras格式的TensorFlow SavedModel,提供与TensorFlow serving和API的兼容性。 |
optimize | bool | False | 在导出到TorchScript时,为移动设备应用优化,可能减小模型大小并提高性能。 |
half | bool | False | 启用FP16(半精度)量化,减小模型大小,并可能在支持的硬件上加快推理速度。 |
int8 | bool | False | 激活INT8量化,进一步压缩模型,并在几乎不损失精度的情况下加快推理速度,主要用于边缘设备。 |
dynamic | bool | False | 允许ONNX、TensorRT和OpenVINO导出具有动态输入大小,提高了处理不同图像尺寸的灵活性。 |
simplify | bool | True | 使用onnxslim简化ONNX导出的模型图,可能提高性能和兼容性。 |
opset | int | None | 指定ONNX opset版本,以确保与不同的ONNX解析器和运行时兼容。如果未设置,则使用最新支持的版本。 |
workspace | float | 4.0 | 设置TensorRT优化的最大工作区大小(以GiB为单位),以平衡内存使用量和性能。 |
nms | bool | False | 在CoreML导出中添加非极大值抑制(NMS),对于准确且高效的检测后处理至关重要。 |
batch | int | 1 | 指定导出模型的批量推理大小或在预测模式下并发处理的图像的最大数量。 |
device | str | None | 指定导出时使用的设备:GPU(device=0)、CPU(device=cpu)、Apple silicon的MPS(device=mps)或NVIDIA Jetson的DLA(device=dla:0或device=dla:1)。 |
导出代码
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
CLI命令
yolo export model=yolo11n.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
int8量化
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a model
model.export(format="engine", int8=True)
本文仅做学术分享,如有侵权,请联系删文。
—THE END—
觉得有用,麻烦给个赞和在看