💡 核心亮点
YOLO (You Only Look Once) 是最流行的实时目标检测算法之一,一次前向即可同时识别图片中多个物体的位置(边界框)与类别:
- 实时性:单次推理同时输出全部目标,无需多阶段扫描
- 易上手:
pip install ultralytics即可使用,API 简洁- 选型灵活:从 6MB 的 yolov8n 到 131MB 的 yolov8x,按精度/速度需求任选
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 种尺寸配置。
选型建议:
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 |
.pt 文件约 5MB 左右为什么能"越小越强"? 不是堆参数,而是架构 + 训练全面升级:
💡 一句话: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 是什么?
模型大小与占用:
yolov8n 仅 6.2MB,yolov8x 约 131MB,对硬盘占用几乎可忽略ONNX / TensorRT 格式(半精度/INT8 量化后体积可再缩小数倍),适合嵌入式部署为什么 6MB 能装下 80 类?
模型存的不是"80 张图片",而是"判断规则(权重参数)":
yolov8n 只有约 320 万参数,每个参数 4 字节(FP32),约 12.8MB 原始数据,打包后仅 6.25MBperson、car…),几乎不占空间;类别对应的"知识"编码在卷积核权重里yolov8x 有 6800 万参数,所以需要 131MBfrom 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')
关键点:
best.pt(最优权重)和 last.pt(最后一轮),推理时加载 best.pt💡 应用场景:识别自己的物品 / 缺陷检测 / 车辆识别 / 文字检测等,都是这个套路。
📖 资料来源:
📝 创建时间:2026-08-18