【YOLO 入门到精通 04】理解任务与模型家族:7 大 CV 任务与 YOLO26 选型指南
标签 :
YOLO26模型选型目标检测实例分割姿态估计难度 :⭐⭐ | 阅读时长 :约 55 分钟 | 系列 :第 04/12 集

写在前面
很多人一上来就 yolo26x.pt 猛训,结果发现:要么显存爆炸,要么速度不够。问题往往不在代码,而在 「任务选错、模型选大」。
本集帮你建立选型框架:你的业务需要哪种 CV 任务?该用 n/s/m/l/x 哪一档?
本集学习目标
- 区分 7 大计算机视觉任务及输出形式
- 掌握 YOLO26 模型命名规则
- 根据场景选择合适模型尺寸
- 理解 YOLO26 双头架构与端到端推理
文章目录
- [【YOLO 入门到精通 04】理解任务与模型家族:7 大 CV 任务与 YOLO26 选型指南](#【YOLO 入门到精通 04】理解任务与模型家族:7 大 CV 任务与 YOLO26 选型指南)
-
- 写在前面
- 本集学习目标
- [4.1 七大任务全景](#4.1 七大任务全景)
- [4.2 目标检测 (Detection)](#4.2 目标检测 (Detection))
- [4.3 实例分割与姿态估计](#4.3 实例分割与姿态估计)
-
- [检测 vs 分割](#检测 vs 分割)
- [姿态估计(17 关键点)](#姿态估计(17 关键点))
- [4.4 YOLO26 模型家族](#4.4 YOLO26 模型家族)
- [4.5 YOLO26 核心创新](#4.5 YOLO26 核心创新)
- [4.6 选型决策树](#4.6 选型决策树)
- [4.7 踩坑指南](#4.7 踩坑指南)
- [4.8 常见问题 FAQ](#4.8 常见问题 FAQ)
- [4.9 本集小结](#4.9 本集小结)
4.1 七大任务全景
| 任务 | 模型后缀 | 输入 | 输出 | 典型场景 |
|---|---|---|---|---|
| 目标检测 | 无 | 图/视频 | 框+类别 | 安防、自动驾驶 |
| 实例分割 | -seg |
图/视频 | 像素掩码 | 医学、抠图 |
| 语义分割 | -sem |
图 | 每像素类别 | 场景理解 |
| 图像分类 | -cls |
图 | 类别概率 | 质检、审核 |
| 姿态估计 | -pose |
图/视频 | 关键点 | 健身、体育 |
| 旋转检测 | -obb |
图 | 带角度框 | 航拍、文档 |
| 深度估计 | -depth |
图 | 深度图 | AR、机器人 |
同一张图,不同任务输出:
检测: ┌───┐ 分割: ████████ 姿态: ●─●─●
│🚗│ ████████ │ │ │
└───┘ ████████ ● ●
矩形框 精确轮廓 关键点
4.2 目标检测 (Detection)
python
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("street.jpg")
for box in results[0].boxes:
print(f"{model.names[int(box.cls[0])]}: {float(box.conf[0]):.2f}")
COCO 预训练 80 类,涵盖人、车、动物、家具等日常物体。
4.3 实例分割与姿态估计
检测 vs 分割
| 检测 | 分割 | |
|---|---|---|
| 输出 | 矩形框 | 像素级掩码 |
| 精度 | 粗略 | 精确 |
| 速度 | 更快 | 稍慢 |
| 场景 | 通用 | 需精确轮廓 |
python
# 分割
model = YOLO("yolo26n-seg.pt")
results = model("image.jpg")
if results[0].masks:
print(f"掩码数: {len(results[0].masks)}")
姿态估计(17 关键点)
python
model = YOLO("yolo26n-pose.pt")
results = model("person.jpg")
if results[0].keypoints is not None:
print(f"检测到 {len(results[0].keypoints)} 人")
4.4 YOLO26 模型家族
命名规则
yolo26{n/s/m/l/x}[-task].pt
│ │
│ └── -seg / -pose / -cls / -obb / -depth
└── n最小 → x最大
五档性能对比(COCO 检测)
| 模型 | mAP50-95 | T4(ms) | 参数 | 场景 |
|---|---|---|---|---|
| n | 40.9 | 1.7 | 2.4M | 树莓派、实时 |
| s | 48.6 | 2.5 | 9.5M | 手机、嵌入式 |
| m | 53.1 | 4.7 | 20.4M | 通用首选 |
| l | 55.0 | 6.2 | 24.8M | 高精度 |
| x | 57.5 | 11.8 | 55.7M | 服务器离线 |
任务-模型对应
| 任务 | 加载示例 |
|---|---|
| 检测 | YOLO("yolo26n.pt") |
| 分割 | YOLO("yolo26n-seg.pt") |
| 姿态 | YOLO("yolo26n-pose.pt") |
| 分类 | YOLO("yolo26n-cls.pt") |
| OBB | YOLO("yolo26n-obb.pt") |
| 深度 | YOLO("yolo26n-depth.pt") |
4.5 YOLO26 核心创新
| 创新 | 说明 | 价值 |
|---|---|---|
| 端到端无 NMS | 一对一头直接输出 | 部署简单 |
| 无 DFL | 简化检测头 | 导出友好 |
| MuSGD | 混合优化器 | 训练稳定 |
| STAL | 小目标增强 | 远距离检测更好 |
双头架构
python
model = YOLO("yolo26n.pt")
# 默认:一对一头,无需 NMS(推荐部署)
results = model.predict("image.jpg")
# 一对多头,需 NMS,精度略高
results = model.predict("image.jpg", end2end=False)
| 检测头 | 输出 | NMS | 场景 |
|---|---|---|---|
| 一对一(默认) | (N,300,6) | 不需要 | 生产部署 |
| 一对多 | (N,nc+4,8400) | 需要 | 精度优先 |
4.6 选型决策树
#mermaid-svg-tQPs1MBU3LntKb7P{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-tQPs1MBU3LntKb7P .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-tQPs1MBU3LntKb7P .error-icon{fill:#552222;}#mermaid-svg-tQPs1MBU3LntKb7P .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tQPs1MBU3LntKb7P .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tQPs1MBU3LntKb7P .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tQPs1MBU3LntKb7P .marker.cross{stroke:#333333;}#mermaid-svg-tQPs1MBU3LntKb7P svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tQPs1MBU3LntKb7P p{margin:0;}#mermaid-svg-tQPs1MBU3LntKb7P .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-tQPs1MBU3LntKb7P .cluster-label text{fill:#333;}#mermaid-svg-tQPs1MBU3LntKb7P .cluster-label span{color:#333;}#mermaid-svg-tQPs1MBU3LntKb7P .cluster-label span p{background-color:transparent;}#mermaid-svg-tQPs1MBU3LntKb7P .label text,#mermaid-svg-tQPs1MBU3LntKb7P span{fill:#333;color:#333;}#mermaid-svg-tQPs1MBU3LntKb7P .node rect,#mermaid-svg-tQPs1MBU3LntKb7P .node circle,#mermaid-svg-tQPs1MBU3LntKb7P .node ellipse,#mermaid-svg-tQPs1MBU3LntKb7P .node polygon,#mermaid-svg-tQPs1MBU3LntKb7P .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-tQPs1MBU3LntKb7P .rough-node .label text,#mermaid-svg-tQPs1MBU3LntKb7P .node .label text,#mermaid-svg-tQPs1MBU3LntKb7P .image-shape .label,#mermaid-svg-tQPs1MBU3LntKb7P .icon-shape .label{text-anchor:middle;}#mermaid-svg-tQPs1MBU3LntKb7P .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-tQPs1MBU3LntKb7P .rough-node .label,#mermaid-svg-tQPs1MBU3LntKb7P .node .label,#mermaid-svg-tQPs1MBU3LntKb7P .image-shape .label,#mermaid-svg-tQPs1MBU3LntKb7P .icon-shape .label{text-align:center;}#mermaid-svg-tQPs1MBU3LntKb7P .node.clickable{cursor:pointer;}#mermaid-svg-tQPs1MBU3LntKb7P .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-tQPs1MBU3LntKb7P .arrowheadPath{fill:#333333;}#mermaid-svg-tQPs1MBU3LntKb7P .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-tQPs1MBU3LntKb7P .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-tQPs1MBU3LntKb7P .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tQPs1MBU3LntKb7P .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-tQPs1MBU3LntKb7P .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tQPs1MBU3LntKb7P .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-tQPs1MBU3LntKb7P .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-tQPs1MBU3LntKb7P .cluster text{fill:#333;}#mermaid-svg-tQPs1MBU3LntKb7P .cluster span{color:#333;}#mermaid-svg-tQPs1MBU3LntKb7P div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-tQPs1MBU3LntKb7P .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-tQPs1MBU3LntKb7P rect.text{fill:none;stroke-width:0;}#mermaid-svg-tQPs1MBU3LntKb7P .icon-shape,#mermaid-svg-tQPs1MBU3LntKb7P .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tQPs1MBU3LntKb7P .icon-shape p,#mermaid-svg-tQPs1MBU3LntKb7P .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-tQPs1MBU3LntKb7P .icon-shape .label rect,#mermaid-svg-tQPs1MBU3LntKb7P .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tQPs1MBU3LntKb7P .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-tQPs1MBU3LntKb7P .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-tQPs1MBU3LntKb7P :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 边缘/嵌入式
服务器
一般
高
选模型
部署环境?
yolo26n/s
精度要求?
yolo26m
yolo26l/x
| 场景 | 推荐 | 理由 |
|---|---|---|
| 树莓派/Jetson Nano | yolo26n | 资源受限 |
| 手机 App | yolo26n/s | 平衡 |
| 安防监控 | yolo26s/m | 实时+精度 |
| 工业质检 | yolo26m/l | 精度优先 |
| 科研/离线 | yolo26x | 最高 mAP |
实战:同图对比
python
from ultralytics import YOLO
import time
image = "test.jpg"
for size in ["n", "s", "m"]:
model = YOLO(f"yolo26{size}.pt")
t0 = time.time()
results = model(image, verbose=False)
elapsed = (time.time() - t0) * 1000
n = len(results[0].boxes)
print(f"yolo26{size}: {n} 个目标, {elapsed:.1f}ms")
4.7 踩坑指南
| 坑 | 解决 |
|---|---|
| 一上来就用 x 档 | 先用 n 验证流程,再换大模型 |
检测任务加载 -seg 模型 |
后缀必须匹配任务 |
| 以为越大越好 | 需平衡速度、显存、精度 |
忽略 -pose 只能检人 |
姿态模型针对人体关键点 |
4.8 常见问题 FAQ
Q1:YOLO26 和 YOLO11 怎么选?
A:新项目用 YOLO26;老项目不必强行迁移。
Q2:n 和 s 差距大吗?
A:mAP 差约 8 点,速度差约 0.8ms,按场景权衡。
Q3:能混用不同任务的模型吗?
A:可以分别加载,但不能一个模型同时做检测+分割。
4.9 本集小结
速度 ←――――――――――――――→ 精度
n(2.4M) s(9.5M) m(20M) l(25M) x(56M)
| 需求 | 选 |
|---|---|
| 知道有什么在哪 | Detection |
| 精确轮廓 | -seg |
| 人体动作 | -pose |
| 航拍倾斜目标 | -obb |
| ← 第03集 | 第05集:数据准备 → |
|---|