YOLOv8 详解
YOLOv8: 多任务统一新时代
代码: github.com/ultralytics/ultralytics
作者: Ultralytics (2023年1月)
特点: ❌ 无正式论文,但标志着 Anchor-Free + 多任务统一 时代
历史性转变
| YOLOv5 | YOLOv8 | |
|---|---|---|
| 锚框 | Anchor-Based | Anchor-Free |
| Head | 耦合 Head | 解耦 Head |
| 任务 | 仅检测 | 检测 + 分割 + 分类 + 姿态 |
| C3 模块 | C3 (CSP Bottleneck) | C2f (Fast CSP) |
网络架构
整体结构
1 | 输入 640×640×3 |
C2f vs C3
1 | C3 (v5): Conv → Bottleneck×N → Conv + 直通 → Concat → Conv |
优势: C2f 保留了更多中间梯度信息,特征更丰富。
Anchor-Free Head
1 | 传统 Anchor-Based Head: |
好处:
- 不需要预设锚框尺寸(自动适配任意长宽比)
- 减少超参数
- NMS 更简单高效
多任务统一
YOLOv8 的核心架构同一 Backbone+Neck,仅切换 Head:
1 | ┌──→ Detect Head → 目标检测 |
| 任务 | 模型命名 | 示例 |
|---|---|---|
| 检测 | yolov8n.pt | model = YOLO("yolov8n.pt") |
| 分割 | yolov8n-seg.pt | model = YOLO("yolov8n-seg.pt") |
| 分类 | yolov8n-cls.pt | model = YOLO("yolov8n-cls.pt") |
| 姿态 | yolov8n-pose.pt | model = YOLO("yolov8n-pose.pt") |
DFL Loss(Distribution Focal Loss)
YOLOv8 在回归分支引入 DFL,将边界框位置建模为离散概率分布而非单一数值。
思想: 边界框的每条边不是精确的一个值,而是一个概率分布。
$$\text{DFL}(S_i, S_{i+1}) = -((y_{i+1}-y)\log(S_i) + (y-y_i)\log(S_{i+1}))$$
总回归损失:
$$\mathcal{L}{reg} = \mathcal{L}{CIoU} + \lambda \cdot \mathcal{L}_{DFL}$$
模型变体
| 变体 | 参数量 | mAP (COCO) | 适用 |
|---|---|---|---|
| yolov8n | 3.2M | 37.3% | Nano,移动端 |
| yolov8s | 11.2M | 44.9% | Small |
| yolov8m | 25.9M | 50.2% | Medium,通用 |
| yolov8l | 43.7M | 52.9% | Large |
| yolov8x | 68.2M | 53.9% | X-Large,极致 |
实战: 2行代码跑推理
1 | from ultralytics import YOLO |
实战: 训练自己的数据集
1 | from ultralytics import YOLO |
📦 完整教程见 [[30.resources/yolo-master/docs/Hands_on_YoLo_with_ultralytics/0-dog-breed-detection/README|狗品种检测入门教程]]
相关链接
- 📝 [[YOLO 系列总览]]
- 📝 [[YOLO 核心概念]]
- 📝 [[YOLOv5 详解]]
- 📦 [[30.resources/yolo-master/docs/Hands_on_YoLo_with_ultralytics/0-dog-breed-detection/README|YOLOv8 狗品种检测]]
- 📦 [[30.resources/yolo-master/docs/Hands_on_YoLo_with_ultralytics/1-DOTA-obb/README|YOLOv11 OBB 进阶]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TeachCraft Blog!
评论