【Ultralytics】「5」模型家族总览与性能基准对比
本文系统地梳理了 Ultralytics YOLO 框架中的全部模型家族,覆盖从经典 YOLOv3 到最新 YOLO26 的架构演进脉络,以及 SAM、RT-DETR、YOLO-NAS 等异构模型的定位与适用场景。通过对五大视觉任务(目标检测、实例分割、图像分类、姿态估计、旋转目标检测)的官方性能基准数据进行横向与纵向对比,帮助开发者在精度、速度、参数量之间做出理性权衡。
Sources: init.py, models/init.py
模型家族架构总览
Ultralytics 框架以统一模型接口 Model 基类为核心,派生出七大模型入口。每个入口通过 task_map 属性将任务类型映射到专属的模型、训练器、验证器和预测器实现,实现了一套 API 驱动所有任务的工程目标。
上图展示了框架的模型路由机制:当用户通过 YOLO("model.pt") 加载模型时,YOLO.__init__ 会根据文件名自动判断是否需要将实例转换为 YOLOWorld、YOLOE 或 RTDETR 类型。这种设计使用户只需记住 YOLO 一个入口名,框架内部完成自动分发。
Sources: yolo/model.py, engine/model.py
YOLO 系列:架构演进与核心差异
代际时间线与架构特征
YOLO 系列经历了从卷积密集型到注意力融合型的架构演进。下表对比了框架中内置配置支持的各代 YOLO 架构核心差异:
| 架构 | 发布年份 | 核心模块 | Backbone 特征 | Head 类型 | 独有特性 |
|---|---|---|---|---|---|
| YOLOv5 | 2020 | C3, SPPF | C3 + 标准卷积 | FPN-PAN Detect | Ghost 变体、P6 输出 |
| YOLOv8 | 2023 | C2f, SPPF | C2f 模块(跨层特征融合) | Anchor-Free Detect | 开放词汇 World 变体 |
| YOLOv9 | 2024 | RepC3, SPPELAN | RepC3(重参数化) | Detect | 可编程梯度信息 (PGI) |
| YOLOv10 | 2024 | C2f, SPPF | 同 YOLOv8 | v10Detect(无 NMS) | 端到端双标签分配 |
| YOLO11 | 2024 | C3k2, SPPF, C2PSA | C3k2(可分离核卷积) | Detect | C2PSA 空间注意力 |
| YOLO12 | 2025 | A2C2f, C3k2 | A2C2f(区域注意力) | Detect | 区域感知注意力机制 |
| YOLO26 | 2026 | C3k2, SPPF, C2PSA | C3k2 + C2PSA | Detect (end2end) | 端到端推理、reg_max=1 |
架构演进的关键转折点在于三个方向:① 特征提取模块从 C3 → C2f → C3k2 → A2C2f 逐步引入更高效的跨通道交互;② 注意力机制从无 → C2PSA(YOLO11)→ A2C2f(YOLO12)逐步融入 backbone;③ 检测头从后处理 NMS 向端到端无 NMS 演进(YOLOv10/YOLO26)。
Sources: yolo26.yaml, yolov8.yaml, yolo11.yaml, yolo12.yaml, model_data.py
模型缩放体系:Compound Scaling
所有 YOLO 模型通过复合缩放常量 (Compound Scaling Constants) 控制模型的深度、宽度和最大通道数。以 YOLO26 为例,一个 YAML 配置文件通过 scales 字段定义五种规模变体:
| 尺寸 | depth | width | max_channels | 参数量 (M) | GFLOPs | 定位 |
|---|---|---|---|---|---|---|
| n (Nano) | 0.50 | 0.25 | 1024 | 2.4 | 5.4 | 边缘设备 / 极致速度 |
| s (Small) | 0.50 | 0.50 | 1024 | 9.5 | 20.7 | 移动端 / 实时场景 |
| m (Medium) | 0.50 | 1.00 | 512 | 20.4 | 68.2 | 通用场景均衡点 |
| l (Large) | 1.00 | 1.00 | 512 | 24.8 | 86.4 | 高精度需求 |
| x (Extra) | 1.00 | 1.50 | 512 | 55.7 | 193.9 | 极致精度 / 服务器端 |
depth 控制网络层数的重复倍率,width 控制通道数的缩放比例,max_channels 限制中间特征图的最大通道数。当用户指定 model=yolo26n.yaml 时,yaml_model_load() 函数会自动从文件名提取规模字符 n,并将其注入配置字典供 parse_model() 使用。
Sources: yolo26.yaml, tasks.py
YOLO26 vs YOLO11 架构细节对比
以检测任务为例,YOLO26 相较于 YOLO11 的关键架构差异如下:
| 特征 | YOLO11 | YOLO26 |
|---|---|---|
端到端模式 (end2end) |
False |
True |
DFL bins (reg_max) |
16 | 1 |
| P5/32 层 C3k2 额外参数 | 无 | 0.5, True(深层扩展) |
| Head 中 P3/P4 的 C3k2 | False(无 shortcut) |
True(有 shortcut) |
这些看似微小的改动带来了显著的效果提升:YOLO26n 在 COCO val2017 上的 mAP50-95 达到 40.9,相比 YOLO11n 的 39.5 提升了 1.4 个百分点,而 T4 TensorRT 推理延迟仅从 1.5ms 略增至 1.7ms。
Sources: yolo26.yaml, yolo11.yaml, yolo-det-perf.md
五大任务性能基准
以下基准数据均来自 COCO val2017(检测、分割、姿态)、ImageNet(分类)和 DOTA test(OBB),推理速度在 NVIDIA T4 GPU + TensorRT 10 环境下测量。所有模型输入尺寸为 640×640(分类为 224×224,OBB 为 1024×1024)。
目标检测(Detection)
| 模型 | mAP⁵⁰⁻⁹⁵ | mAP⁵⁰⁻⁹⁵(e2e) | T4 TRT (ms) | 参数量 (M) | GFLOPs |
|---|---|---|---|---|---|
| YOLO26n | 40.9 | 40.1 | 1.7 | 2.4 | 5.4 |
| YOLO26s | 48.6 | 47.8 | 2.5 | 9.5 | 20.7 |
| YOLO26m | 53.1 | 52.5 | 4.7 | 20.4 | 68.2 |
| YOLO26l | 55.0 | 54.4 | 6.2 | 24.8 | 86.4 |
| YOLO26x | 57.5 | 56.9 | 11.8 | 55.7 | 193.9 |
代际对比速查(以 l 规模为例):
| 代际 | mAP⁵⁰⁻⁹⁵ | T4 TRT (ms) | 参数量 (M) | GFLOPs |
|---|---|---|---|---|
| YOLOv5l | 49.0 | 6.61 | 53.2 | 135.0 |
| YOLOv8l | 52.9 | 9.06 | 43.7 | 165.2 |
| YOLO11l | 53.4 | 6.2 | 25.3 | 86.9 |
| YOLO12l | 53.7 | 6.77 | 26.4 | 88.9 |
| YOLO26l | 55.0 | 6.2 | 24.8 | 86.4 |
从 YOLOv8 到 YOLO26,同等 l 规模下参数量减少了 43%(43.7M → 24.8M),精度反而提升了 2.1 mAP,体现了架构设计的效率跃升。
Sources: yolo-det-perf.md, model_data.py
实例分割(Segmentation)
| 模型 | mAPᵇᵒˣ⁵⁰⁻⁹⁵(e2e) | mAPᵐᵃˢᵏ⁵⁰⁻⁹⁵(e2e) | T4 TRT (ms) | 参数量 (M) |
|---|---|---|---|---|
| YOLO26n-seg | 39.6 | 33.9 | 2.1 | 2.7 |
| YOLO26s-seg | 47.3 | 40.0 | 3.3 | 10.4 |
| YOLO26m-seg | 52.5 | 44.1 | 6.7 | 23.6 |
| YOLO26l-seg | 54.4 | 45.5 | 8.0 | 28.0 |
| YOLO26x-seg | 56.5 | 47.0 | 16.4 | 62.8 |
分割模型在检测头基础上增加了一个掩码原型分支(Mask Prototype Branch),通过 Segment 或 Segment26 头部模块输出掩码系数与原型模板。参数量相比同规模检测模型约增加 10%-13%。
Sources: yolo-seg-perf.md
图像分类(Classification)
| 模型 | Top-1 Acc (%) | Top-5 Acc (%) | T4 TRT (ms) | 参数量 (M) | GFLOPs |
|---|---|---|---|---|---|
| YOLO26n-cls | 71.4 | 90.1 | 1.1 | 2.8 | 0.5 |
| YOLO26s-cls | 76.0 | 92.9 | 1.3 | 6.7 | 1.6 |
| YOLO26m-cls | 78.1 | 94.2 | 2.0 | 11.6 | 4.9 |
| YOLO26l-cls | 79.0 | 94.6 | 2.8 | 14.1 | 6.2 |
| YOLO26x-cls | 79.9 | 95.0 | 3.8 | 29.6 | 13.6 |
分类模型使用独立的 ClassificationModel,其 backbone 与检测模型共享卷积架构但头部替换为全局平均池化 + 全连接层。值得注意的是,分类任务的 GFLOPs 远低于检测(l 规模仅 6.2 vs 86.4),因为无需多尺度特征金字塔。
Sources: yolo-cls-perf.md
姿态估计(Pose Estimation)
| 模型 | mAPᵖᵒˢᵉ⁵⁰⁻⁹⁵(e2e) | mAPᵖᵒˢᵉ⁵⁰(e2e) | T4 TRT (ms) | 参数量 (M) |
|---|---|---|---|---|
| YOLO26n-pose | 57.2 | 83.3 | 1.8 | 2.9 |
| YOLO26s-pose | 63.0 | 86.6 | 2.7 | 10.4 |
| YOLO26m-pose | 68.8 | 89.6 | 5.0 | 21.5 |
| YOLO26l-pose | 70.4 | 90.5 | 6.5 | 25.9 |
| YOLO26x-pose | 71.6 | 91.6 | 12.2 | 57.6 |
姿态模型通过 Pose 或 Pose26 检测头同时输出边界框和关键点坐标。每个关键点包含 (x, y, confidence) 三个值,框架内置的 COCO-Pose 格式默认检测 17 个身体关键点。
Sources: yolo-pose-perf.md
旋转目标检测(OBB)
| 模型 | mAPᵗᵉˢᵗ⁵⁰⁻⁹⁵(e2e) | mAPᵗᵉˢᵗ⁵⁰(e2e) | T4 TRT (ms) | 参数量 (M) |
|---|---|---|---|---|
| YOLO26n-obb | 52.4 | 78.9 | 2.8 | 2.5 |
| YOLO26s-obb | 54.8 | 80.9 | 4.9 | 9.8 |
| YOLO26m-obb | 55.3 | 81.0 | 10.2 | 21.2 |
| YOLO26l-obb | 56.2 | 81.6 | 13.0 | 25.6 |
| YOLO26x-obb | 56.7 | 81.7 | 30.5 | 57.6 |
OBB 模型使用 1024×1024 的输入分辨率(而非标准的 640×640),这是因为航空/遥感图像中的目标往往尺寸较小且方向任意。OBB 检测头 OBB/OBB26 输出旋转角度参数,将标准的 (x, y, w, h) 扩展为 (x, y, w, h, θ)。
Sources: yolo-obb-perf.md
异构模型定位与适用场景
除了标准 YOLO 系列,框架还集成了三类架构范式完全不同的模型,它们各自瞄准了不同的应用需求:
RT-DETR:Transformer 实时检测器
RT-DETR 基于 Vision Transformer 架构,采用 ResNet 骨干网 + AIFI(Attention-Based Intra-scale Feature Interaction)+ RTDETRDecoder 的三段式设计。与传统 YOLO 的密集预测不同,RTDETR 使用查询选择机制(IoU-aware Query Selection),在 Transformer Decoder 中通过交叉注意力生成固定数量的检测结果。
| 模型 | mAP⁵⁰⁻⁹⁵ | T4 TRT (ms) | 参数量 (M) |
|---|---|---|---|
| RTDETR-L (ResNet50) | 53.4 | 9.76 | 42 |
| RTDETR-X (ResNet101) | 54.3 | 15.03 | 76 |
适用场景:需要在 TensorRT 上获得高精度且对 NMS 延迟敏感的场景。RT-DETR 天然无需后处理 NMS,在 TensorRT 上具有更稳定的推理延迟。
Sources: rtdetr/model.py, rtdetr-resnet50.yaml, model_data.py
SAM / FastSAM:可提示分割
| 模型 | 范式 | 特点 |
|---|---|---|
| SAM (SAM/SAM2/SAM3) | ViT Encoder + Mask Decoder | 支持点、框、文本提示;零样本迁移;SA-1B 预训练 |
| FastSAM | YOLO 检测 + 分割后处理 | 基于 YOLO 的实时方案;支持框/点提示 |
SAM 系列是交互式分割模型,不接受类别标签训练,而是根据用户提供的点、框等提示生成分割掩码。FastSAM 则将 SAM 的能力以 YOLO 架构实现,在保持可提示能力的同时大幅提升推理速度。
适用场景:医学图像分割、数据标注辅助、交互式图像编辑等需要精细掩码的场景。
Sources: sam/model.py, fastsam/model.py
YOLO-NAS:神经架构搜索
YOLO-NAS 由 Deci AI(已被 NVIDIA 收购)通过自动化架构搜索得到,提供 s、m、l 三个规模。与标准 YOLO 不同,NAS 模型仅支持预训练权重加载(不支持 YAML 配置),且通过 super_gradients 库实现加载。
| 模型 | mAP⁵⁰⁻⁹⁵ | T4 TRT (ms) | 参数量 (M) |
|---|---|---|---|
| YOLO-NAS S | 47.5 | 3.09 | 12.2 |
| YOLO-NAS M | 51.6 | 6.07 | 31.9 |
| YOLO-NAS L | 52.2 | 7.84 | 42.0 |
Sources: nas/model.py, model_data.py
开放词汇模型:YOLOWorld 与 YOLOE
| 模型 | 能力 | 提示方式 | 核心模块 |
|---|---|---|---|
| YOLOWorld | 开放词汇检测 | 文本描述 → 检测 | C2fAttn + WorldDetect + CLIP |
| YOLOE | 开放词汇检测 + 分割 | 文本/视觉提示 → 检测/分割 | YOLOEDetect + LRPCHead + MobileCLIP |
这两类模型突破了传统 YOLO 固定类别数的限制:用户可以动态传入任意类别文本列表(如 ["person", "car", "dog"]),模型通过 CLIP 文本编码器将其转换为语义嵌入,在推理时与视觉特征进行匹配。YOLOE 更进一步支持视觉提示(Visual Prompt),可通过参考图像指定检测目标。
适用场景:零样本检测、长尾类别识别、动态类别变更的部署场景。
Sources: yolo/model.py, tasks.py, tasks.py
模型选择决策指南
根据硬件环境的推荐
| 硬件环境 | 推荐模型规模 | 理由 |
|---|---|---|
| 树莓派 / Jetson Nano | n (Nano) |
2.4M 参数,T4 推理仅 1.7ms |
| 移动端 / 嵌入式 | s (Small) |
9.5M 参数,精度与速度的最佳平衡 |
| 桌面 GPU (RTX 3060+) | m (Medium) |
20.4M 参数,mAP 53.1 的通用级精度 |
| 服务器 GPU (A100/T4) | l-x (Large-Extra) |
追求最高精度,不受实时性约束 |
| CPU-only 推理 | n / s |
YOLO26n CPU ONNX 约 38.9ms |
Sources: yolo-det-perf.md, cfg/init.py
任务类型与默认模型映射
框架在配置层维护了任务 → 默认模型的映射关系。当用户未显式指定模型时,系统自动使用最新的 YOLO26 系列作为各任务的默认入口:
| 任务 | 默认模型 | 默认数据集 | 评估指标 |
|---|---|---|---|
detect |
yolo26n.pt |
coco8.yaml |
metrics/mAP50-95(B) |
segment |
yolo26n-seg.pt |
coco8-seg.yaml |
metrics/mAP50-95(M) |
classify |
yolo26n-cls.pt |
imagenet10 |
metrics/accuracy_top1 |
pose |
yolo26n-pose.pt |
coco8-pose.yaml |
metrics/mAP50-95(P) |
obb |
yolo26n-obb.pt |
dota8.yaml |
metrics/mAP50-95(B) |
框架通过 guess_model_task() 函数实现任务自动推断:首先检查 YAML 配置中的头部模块名称,然后检查 PyTorch 模型中包含的检测头类型(如 Segment → segment,Pose → pose),最后尝试从文件名中的 -seg、-cls、-pose、-obb 后缀推断。仅在无法判断时默认为 detect。
Sources: cfg/init.py, tasks.py
快速上手:加载与使用模型
from ultralytics import YOLO
# 加载最新的 YOLO26 检测模型(自动下载预训练权重)
model = YOLO("yolo26n.pt")
# 加载不同任务的变体
seg_model = YOLO("yolo26n-seg.pt") # 实例分割
cls_model = YOLO("yolo26n-cls.pt") # 图像分类
pose_model = YOLO("yolo26n-pose.pt") # 姿态估计
obb_model = YOLO("yolo26n-obb.pt") # 旋转目标检测
# 从 YAML 创建未训练的新模型
new_model = YOLO("yolo26n.yaml")
# 开放词汇模型(自动路由到 YOLOWorld)
world_model = YOLO("yolov8s-world.pt")
# YOLOE 模型(自动路由到 YOLOE)
yoloe_model = YOLO("yoloe-11s.pt")
Sources: yolo/model.py, cfg/init.py
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)