YOLO(You Only Look Once)系列算法作为目标检测领域的一阶段代表,以端到端、高速度、高精度著称。
本文从YOLO的核心思想出发,深入分析其网络架构与损失函数设计,并基于YOLOv8官方框架,提供一套从数据准备、模型训练、评估到ONNX部署的完整可运行案例。
全文代码均经过验证,可直接复制运行,旨在帮助读者建立从理论到工程落地的系统认知。
核心原理
1. 目标检测任务定义
目标检测需要同时解决两个子问题:
- 定位:预测目标边界框(Bounding Box),通常表示为(x_center, y_center, width, height)。
- 分类:预测目标所属类别。
2. YOLO的核心思想
YOLO将目标检测视为一个端到端的回归问题。其核心设计为:
- 网格划分:将输入图像划分为S×S的网格。每个网格负责检测其中心落在该网格内的目标。
- 边界框预测:每个网格预测B个边界框。每个边界框包含5个参数:(x, y, w, h, confidence)。其中(x, y)是框中心相对于网格的偏移,(w, h)是框的宽高相对于整图的归一化值,confidence表示该框包含目标的置信度。
- 类别预测:每个网格预测C个类别概率(条件概率,即该网格包含目标的前提下属于各类的概率)。