YOLO 系列模型的关键概念
YOLO系列模型主要用于实时目标检测任务,即在图片或视频中识别出目标物体的位置并分类。YOLO模型的核心特征包括:
-
单次检测(One-stage detection):YOLO是一种 "one-stage" 检测器,与 "two-stage" 检测器(如 R-CNN 系列)不同。YOLO在单次前向传播中输出所有的检测框和类别。单次检测的好处是速度快,适合实时应用。
-
全局预测:YOLO将图像划分为多个网格(grid),每个网格负责预测多个边界框及其对应的类别。这样可以避免在图像中重复检测同一目标。
-
分类与定位同时进行:YOLO模型通过卷积神经网络(CNN)同时预测边界框的位置、大小以及类别。由于不需要单独的区域提案阶段,YOLO的速度明显快于传统的目标检测方法。
-
实时性:YOLO 的设计专注于速度,能够在移动设备或实时视频流中使用,因此被广泛应用于自动驾驶、监控摄像头、智能家居等场景。
YOLO 各版本的迭代改进
从 YOLOv1 到 YOLOv8,每个版本都在准确性、速度和可用性方面做了改进。
YOLOv1
- 最初的 YOLO 模型,于 2016 年发布。
- 模型将整个图像分成网格,每个网格预测固定数量的边界框和类别。
- 计算效率高,但定位精度较低,对小物体检测不佳。
YOLOv2(YOLO9000)
- 于 2017 年发布。
- 引入了多尺度训练和锚框(anchor boxes),显著提高了检测精度。
- 可以检测 9000 种类别,因此得名 YOLO9000。
YOLOv3
- 增加了更深的网络层,引入了多尺度特征融合(FPN结构),显著提高了小物体检测的精度。
- 使用 Darknet-53 作为基础网络,进一步提升了模型的检测精度和速度。
YOLOv4
- 社区驱动的更新,引入了数据增强技术(如 Mosaic 数据增强)、CSPDarknet 基础网络、多尺度预测、CIoU 损失 等新技术。
- 在提升精度的同时保持了高速度。
YOLOv5
- 由 Ultralytics 社区开发,并非原 YOLO 作者发布,但在开发者社区中非常流行。
- YOLOv5 提供了易用的框架和多个预训练模型(如
yolov5s
,yolov5m
,yolov5l
,yolov5x
),支持 PyTorch 和导出到多种格式(如 ONNX、CoreML)。 - 引入了自动数据增强、超参数优化等功能,易于部署和训练。
YOLOv6、YOLOv7 和 YOLOv8
- YOLOv6 和 YOLOv7 是不同团队开发的版本,进一步提升了速度和精度。YOLOv7 特别在小模型的检测精度上表现优异,适用于边缘设备。
- YOLOv8 是 Ultralytics 推出的最新版本,继续优化网络结构,支持更简洁的 API,提升了小物体检测和模型在不同设备上的兼容性。
YOLO 的工作原理
YOLO 模型的工作流程主要包括以下几个步骤:
- 图像划分:将输入图像划分为 SxS 的网格,每个网格负责预测目标的边界框。
- 边界框预测:每个网格预测多个边界框(使用锚框),并输出每个框的位置、大小和置信度。
- 类别预测:每个边界框还预测目标的类别概率,模型最终输出置信度高于一定阈值的框。
- 后处理:通过非极大值抑制(NMS)去除冗余的检测框,并输出最终的检测结果。
YOLO 的优缺点
优点:
- 速度快:YOLO是实时检测模型,能在低延迟的情况下处理大量数据,适合实时应用。
- 单次预测:将目标检测作为一个回归问题,可以在一个网络中完成检测任务。
- 结构简单:相比于复杂的 R-CNN 系列,YOLO 的实现较为简单,易于部署。
缺点:
- 小物体检测能力较弱:YOLO 对小物体的检测精度较低,因为小物体的特征在下采样过程中容易丢失。
- 定位误差较高:YOLO 在边界框定位上精度略低于
two-stage
检测器。 - 对网格的依赖:YOLO 将图像划分为网格,如果一个物体跨越多个网格,检测效果可能受影响。
YOLO 的应用场景
由于 YOLO 的高效性和实时性,它被广泛应用于以下场景:
- 自动驾驶:识别车辆、行人、交通标志等。
- 监控摄像头:实时监控和识别异常行为。
- 智能家居:人脸识别、物体检测等。
- 工业检测:自动化质量检测,识别缺陷或异常。
如何使用 YOLO 进行训练和推理
在 PyTorch 和 TensorFlow 等框架中,YOLOv5 和 YOLOv8 提供了开箱即用的训练和推理工具。
- 数据准备:准备标注好的数据集,格式符合 YOLO 的要求(图像 + YOLO 格式标签)。
- 模型训练:使用预训练模型进行微调。YOLOv5 提供了多种预训练权重(例如
yolov5s
、yolov5m
等),可以快速进行迁移学习。 - 推理和评估:使用训练好的模型进行目标检测任务,通过置信度和非极大值抑制(NMS)来筛选和过滤检测结果。
- 部署:YOLOv5 和 YOLOv8 支持将模型导出到 ONNX、CoreML、TensorRT 等格式,方便在移动设备或嵌入式系统上部署。