YOLO(You Only Look Once)作为目标检测领域最经典的算法之一,以其极致的检测速度与合理的精度平衡,在工业界和学术界得到了广泛应用。
本文从零开始,系统讲解YOLO的核心原理、数据准备、模型训练、推理部署及调优技巧。全程基于Ultralytics YOLOv8/v11最新框架,提供完整可运行的代码案例,覆盖从单类别检测到多类别检测、从图片到视频流、从ONNX导出到TensorRT加速的全链路实践。
目标是通过一个端到端的项目,让读者真正掌握YOLO的落地能力。
核心原理
YOLO的核心思想是将目标检测视为一个端到端的回归问题。输入一张图像,经过一个单一的卷积神经网络,直接输出边界框坐标、类别概率和置信度。
1. 网格划分与锚框
YOLO将输入图像划分为SxS的网格。每个网格负责检测中心点落在该网格内的物体。每个网格预测B个边界框,每个边界框包含5个参数:(x, y, w, h, confidence)。其中(x,y)是边界框中心相对于网格的偏移,(w,h)是相对于整张图像的宽高比,confidence表示该框包含目标的置信度以及预测框与真实框的IoU。此外,每个网格还预测C个类别概率。
2. 损失函数
YOLO的损失函数由三部分组成:
- 边界框回归损失:通常使用CIoU Loss或MSE Loss。
- 置信度损失:二值交叉熵,区分前景与背景。
- 分类损失:交叉熵,计算预测类别与真实类别的差异。