Yolo11实战改进:一文读懂Yolo11到实战

2024-11-24 08:45   重庆  
点击下方卡片,关注“机器视觉与AI深度学习

视觉/图像重磅干货,第一时间送达!

摘要

Yolo11是Ultralytics推出的新一代计算机视觉模型,为YOLO家族树立了新的里程碑。它在对象检测、实例分割、图像分类、姿势估计、定向物体检测和对象跟踪等计算机视觉任务上展现了卓越的性能和准确性,相较于YOLOv8有了显著提升。

创新点:

  1. 无与伦比的速度和精度:Yolo11的设计旨在实现快速运行而不牺牲精度。其优化的模型架构提供了快速的推理时间,适用于自动驾驶、安全系统和工业自动化等实时应用。Yolo11在速度和准确性之间取得了平衡,满足了需要快速决策的场景需求。
  2. 高级物体检测功能:Yolo11在复杂环境中的物体检测能力得到了显著提升。它能够容忍遮挡并更好地区分重叠物体,这对于城市监控或事件监控等拥挤环境中的应用至关重要。
  3. 应用多功能性:Yolo11不仅擅长对象检测,还具备实例分割、姿势估计和跟踪等高级功能。这种多功能性使其可应用于从医疗保健到农业的各个领域,提供了广泛的适用性。
  4. 增强的设计和计算效率:Yolo11在YOLOv9和YOLOv10的基础上进行了扩展,集成了卓越的架构框架、精炼的特征提取方法和优化的训练协议。它使用更少的参数实现了更高的平均精度(mAP)得分,提高了计算效率。同时,Yolo11的处理速度也有所提高,使其更适合实时应用。
  5. 高效的部署能力: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=[01])

执行命令:

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        640100%|██████████| 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        640100%|██████████| 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        640100%|██████████| 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        640100%|██████████| 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支持的模型导入有:

ModelFilenamesTaskInferenceValidationTrainingExport
YOLO11yolo11n.pt yolo11s.pt yolo11m.pt yolo11l.pt yolo11x.ptDetection
YOLO11-segyolo11n-seg.pt yolo11s-seg.pt yolo11m-seg.pt yolo11l-seg.pt yolo11x-seg.ptInstance Segmentation
YOLO11-poseyolo11n-pose.pt yolo11s-pose.pt yolo11m-pose.pt yolo11l-pose.pt yolo11x-pose.ptPose/Keypoints
YOLO11-obbyolo11n-obb.pt yolo11s-obb.pt yolo11m-obb.pt yolo11l-obb.pt yolo11x-obb.ptOriented Detection
YOLO11-clsyolo11n-cls.pt yolo11s-cls.pt yolo11m-cls.pt yolo11l-cls.pt yolo11x-cls.ptClassification

参数详解

参数类型默认参数Description (Chinese)
formatstr'torchscript'导出模型的目标格式,如'onnx'、'torchscript'、'tensorflow'等,定义了与各种部署环境的兼容性。
imgszint or tuple640模型输入所需的图像大小。可以是整数(表示正方形图像)或元组(高度,宽度)(表示特定尺寸)。
kerasboolFalse启用导出到Keras格式的TensorFlow SavedModel,提供与TensorFlow serving和API的兼容性。
optimizeboolFalse在导出到TorchScript时,为移动设备应用优化,可能减小模型大小并提高性能。
halfboolFalse启用FP16(半精度)量化,减小模型大小,并可能在支持的硬件上加快推理速度。
int8boolFalse激活INT8量化,进一步压缩模型,并在几乎不损失精度的情况下加快推理速度,主要用于边缘设备。
dynamicboolFalse允许ONNX、TensorRT和OpenVINO导出具有动态输入大小,提高了处理不同图像尺寸的灵活性。
simplifyboolTrue使用onnxslim简化ONNX导出的模型图,可能提高性能和兼容性。
opsetintNone指定ONNX opset版本,以确保与不同的ONNX解析器和运行时兼容。如果未设置,则使用最新支持的版本。
workspacefloat4.0设置TensorRT优化的最大工作区大小(以GiB为单位),以平衡内存使用量和性能。
nmsboolFalse在CoreML导出中添加非极大值抑制(NMS),对于准确且高效的检测后处理至关重要。
batchint1指定导出模型的批量推理大小或在预测模式下并发处理的图像的最大数量。
devicestrNone指定导出时使用的设备: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—

觉得有用,麻烦给个赞和在看 

机器视觉与AI深度学习
专注于机器视觉、AI、深度学习等技术最新资讯、实战内容及应用案例的分享,交流!
 最新文章