YOLO简介

💡 核心亮点

YOLO (You Only Look Once) 是最流行的实时目标检测算法之一,一次前向即可同时识别图片中多个物体的位置(边界框)与类别:


一、什么是 YOLO

YOLO (You Only Look Once) 是最流行的实时目标检测算法之一。它能在一张图片中同时识别出多个物体的位置(边界框)和类别。

核心能力: - 🖼️ 输入:一张图片 - 📦 输出:每个物体的矩形框 + 类别名 + 置信度

版本对比

版本 特点
YOLOv5 经典稳定,社区生态好
YOLOv8 (Ultralytics) 当前主流,API 简洁,支持检测/分割/分类/姿态
YOLOv11 最新版,精度和速度再提升
YOLO26 2026-01 最新旗舰,端到端无 NMS、边缘优化

💡 想看完整版本家族(v1–v13 + YOLO26 的作者与演进),见 YOLO系列版本演进。


二、安装

需要安装两个包:

pip install ultralytics opencv-python

三、模型选择

模型 大小 速度 精度(mAP)
yolov8n 6MB 最快 37.3
yolov8s 22MB 快 44.9
yolov8m 52MB 中 50.2
yolov8l 84MB 慢 52.9
yolov8x 131MB 最慢 53.9

尺寸代号含义(n/s/m/l/x 代表模型"体格",同一算法的 5 档配置):

代号 全称 含义
n nano 纳米版,最迷你
s small 小号
m medium 中号
l large 大号
x xlarge 超大号

💡 通过缩放网络深度/宽度(层数、通道数)生成 5 档:n 参数量最少、最快但精度最低;x 参数最多、最慢但精度最高。不是 5 个不同算法,而是同一模型的 5 种尺寸配置。

选型建议:

  1. 默认用 yolov8n(最小最快),适合 CPU
  2. 有 GPU 可以换 yolov8s 或 yolov8m 提高精度

越小越强:YOLO26 对比 YOLOv8

YOLO26 是 2026-01 发布的最新旗舰,用更少的参数达到更高的精度("更小、更快、更强"):

型号 参数量 精度 mAP 相对 v8 提升
yolov8n 3.2M 37.3 —
YOLO26n 2.4M(更少) 40.9 +3.6
yolov8x 68.2M 53.9 —
YOLO26x 55.7M(更少) 57.5 +3.6

为什么能"越小越强"? 不是堆参数,而是架构 + 训练全面升级:

  1. 端到端无 NMS:默认一对一检测头,省掉后处理,推理管线更干净
  2. 无 DFL 框回归:移除分布焦点损失,检测头更轻量,同时保持回归精度
  3. 更好的训练配方:MuSGD 优化器(SGD+Muon)、Progressive Loss、STAL 小目标感知标签分配——小目标识别提升明显
  4. 任务级专用损失:分割 AP 最高 +3.7、姿态 +7.2、OBB +3.4

💡 一句话:YOLO26 用更聪明的架构 + 更好的训练取代"大力出奇迹"的堆参数路线,所以更小还更强。


四、第一次加载

首次加载会自动下载模型权重(以 yolov8n.pt 为例,约 6.2MB):

🚀 加载模型: yolov8n
Downloading https://github.com/ultralytics/assets/releases/download/v8.4.0/yolov8n.pt to 'yolov8n.pt': 100% ━━━━━━━━━━━━ 6.2MB 9.4MB/s 0.7s
✅ 模型加载完成 (类别数: 80)
   支持类别: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light']... (共80类)

说明:

COCO 是什么?

模型大小与占用:

为什么 6MB 能装下 80 类?

模型存的不是"80 张图片",而是"判断规则(权重参数)":


五、快速上手

from ultralytics import YOLO

# 1. 加载模型(首次自动下载权重)
model = YOLO('yolov8n.pt')

# 2. 推理:输入图片路径
results = model('bus.jpg')

# 3. 遍历检测结果
for result in results:
    for box in result.boxes:
        # 边界框坐标、类别ID、置信度
        print(box.xyxy, box.cls, box.conf)

六、训练自定义模型

YOLO 支持用你自己的数据训练识别模型,从而识别任意类别(不限于 COCO 80 类)。

三种使用方式:

方式 说明 数据要求
① 直接用预训练模型 开箱即用,识别 COCO 80 类 无需数据
② 微调(最常见) 在预训练权重基础上,用你的数据训练 每类几十~几百张图即可
③ 从零训练 自己搭网络重新训练 需要海量数据,一般没必要

微调流程(4 步):

# 1. 准备数据:图片 + 标注文件(每张图对应一个 .txt,YOLO 格式)
#    标注工具:LabelImg / Roboflow / X-AnyLabeling

# 2. 写数据集配置文件 dataset.yaml
#    train: 图片目录 / val: 验证目录 / names: [类1, 类2, ...]

# 3. 训练(在预训练权重基础上微调)
model = YOLO('yolov8n.pt')          # 用官方预训练权重作起点
model.train(data='dataset.yaml', epochs=100, imgsz=640)

# 4. 用训练好的模型推理
model = YOLO('runs/detect/train/weights/best.pt')
results = model('test.jpg')

关键点:

  1. 几百张图就能跑:微调不需要大数据集,每类几十~几百张即可出效果
  2. 标注是最大工作量:一张图平均标注几十秒到几分钟,标注质量直接决定效果
  3. 硬件:n 型号 8G 显存 GPU 可训;纯 CPU 也能训但要慢很多(小模型几百张图几十分钟~几小时)
  4. 训练产物:best.pt(最优权重)和 last.pt(最后一轮),推理时加载 best.pt

💡 应用场景:识别自己的物品 / 缺陷检测 / 车辆识别 / 文字检测等,都是这个套路。


七、相关资料

📖 资料来源:


📝 创建时间:2026-08-18

相关笔记