摘要 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 YOLOif __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 YOLOif __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.83 G 3.784 5.47 4.073 59 640 : 100 %|██████████| 259 /259 [00 :45 <00 :00 , 5.72 it/s] Class Images Instances Box(P R mAP50 mAP50-95 ): 100 %|██████████| 15 /15 [00 :01 <00 :00 , 8.32 it/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.82 G 2.808 4.106 3.118 88 640 : 100 %|██████████| 259 /259 [00 :52 <00 :00 , 4.91 it/s] Class Images Instances Box(P R mAP50 mAP50-95 ): 100 %|██████████| 15 /15 [00 :02 <00 :00 , 6.34 it/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.2 MB Optimizer stripped from runs\detect\train\weights\best.pt, 51.2 MB 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, 16376 MiB) 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.43 it/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.76 G 1.239 2.468 1.111 56 640 : 100 %|██████████| 259 /259 [01 :13 <00 :00 , 3.53 it/s] Class Images Instances Box(P R mAP50 mAP50-95 ): 100 %|██████████| 15 /15 [00 :02 <00 :00 , 7.09 it/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.85 G 1.072 1.183 1.035 109 640 : 100 %|██████████| 259 /259 [00 :59 <00 :00 , 4.36 it/s] Class Images Instances Box(P R mAP50 mAP50-95 ): 100 %|██████████| 15 /15 [00 :02 <00 :00 , 7.50 it/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.2 MB Optimizer stripped from runs\detect\train2\weights\best.pt, 51.2 MB 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, 16376 MiB) 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.80 it/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 YOLOif __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.62 it/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 YOLOif __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 )