YOLO:你只看一次 - 实时物体检测

17 Mar 2025 | 4 分钟阅读

目标检测

这是一项计算机视觉任务,用于对视频或图像中的对象进行分类和识别。这种目标检测算法主要可分为两种类型。

  • 单阶段检测器
  • 双阶段检测器
YOLO : You Only Look Once - Real Time Object Detection

单阶段检测器

单阶段检测器(一次只看一遍)使用完整的 CNN 来处理图像。在此过程中,它仅使用一次通过来做出预测并识别对象的。与其他方法相比,其准确性较低。

双阶段检测器

双阶段检测器使用两次输入图像通过,并对对象的存在和位置做出预测。这具有更高的准确性。考虑到准确性,通常单阶段检测器用于实时应用;而双阶段检测器则用于需要更高准确性的场景。

什么是 YOLO?

YOLO : You Only Look Once - Real Time Object Detection

YOLO 是一种用于目标检测的卷积神经网络(CNN)算法。与其他目标检测算法不同,YOLO 不需要区域提议或多个阶段。相反,它将输入图像划分为一个网格,并为每个网格单元预测边界框和类别概率。这使其比其他目标检测算法更快、更有效。它使用单阶段方法来预测输入图像中对象的边界框和类别概率。

YOLO V2

它于 2016 年推出,是 YOLO 算法的更新版本。它也称为 YOLO9000,旨在实现更快的速度和更高的准确性。使用锚框是 YOLO v2 的主要升级之一。具有不同纵横比和尺度的边界框集合称为“锚框”。YOLO v2 通过组合锚框和预测的偏移量来创建最终边界框,从而进行边界框预测。因此,该算法可以处理更大范围的项目大小和纵横比。

YOLO v2 的另一个发展是引入了批量归一化,这有助于提高模型的准确性和稳定性。YOLO v2 中的另一项技术是多尺度训练,它包括在不同尺度的图像上训练模型并平均预测。这提高了对小型目标检测的有效性。

以下是 YOLO v2 与原始模型和其他现代模型相比所产生的发现。

YOLO : You Only Look Once - Real Time Object Detection

YOLO V3

它是 YOLO V2 的升级版本,于 2018 年推出,旨在提高算法的速度和准确性。它使用一种称为 Darknet-53 的新卷积神经网络架构。具有不同尺度和纵横比的锚框是 YOLO v3 的一个特点。由于 YOLO v2 中的锚框大小相同,算法在检测不同大小和形状的对象时遇到了困难。为了更好地匹配检测到的对象的尺寸和形状,YOLO v3 更改了锚框的纵横比和尺度。

YOLO : You Only Look Once - Real Time Object Detection

YOLO V4

它是 YOLO 的第四个版本,由 Bochkovskiy 等人在 2020 年提出。与 YOLO v3 相比,YOLO v4 的主要进步是使用了称为 CSPNet(下图所示)的新 CNN 架构。“Cross Stage Partial Network”的首字母缩写是指一种专门为目标检测任务创建的 ResNet 变体。它具有相对较浅的结构,只有 54 个卷积层。然而,它可以在多个目标检测基准上产生最先进的结果。

YOLO : You Only Look Once - Real Time Object Detection

两者都使用锚框,但具有不同的尺度以更好地匹配所检测对象的尺寸和形状,并且 YOLO V4 引入了“k-means 聚类”,两者都使用相似的损失函数,而 YOLO V4 提出了一个名为“GHM loss”的新损失函数。

YOLO V5

它由开发 YOLO 算法的同一团队构建。基于先前版本的成功,此版本添加了额外的更新功能。与 YOLO 一样,YOLOV5 使用 EfficientDet 架构,该架构基于 EfficientNet 且更复杂,因为它能获得更高的准确性。YOLO V4 和 YOLO V5 使用相似的损失函数;然而,YOLO V5 引入了“CIoU loss”来提高模型性能。

YOLO : You Only Look Once - Real Time Object Detection

YOLO V6

YOLO V6 由 Li 等人在 2022 年推出,YOLO VS 使用 EfficientDet 架构。YOLO V6 使用 EfficientNet-L2。这是 YOLO V5 和 YOLO V6 之间的唯一区别。

YOLO : You Only Look Once - Real Time Object Detection

YOLO V7

YOLO 的最新版本,即第七个版本,在早期版本的基础上进行了多项改进。使用锚框是关键改进之一。

锚框是一组具有不同纵横比的预设框,用于识别各种形状的对象。YOLO v7 使用九个锚框,比早期版本可以检测到更多种类的对象形状和大小,这有助于减少误报的数量。在 YOLO v7 中实现一种名为“focal loss”的新损失函数是一项重大改进。早期版本的 YOLO 使用标准的交叉熵损失函数,该函数在识别小型对象方面效果不佳。Focal loss 通过降低易于分类的示例的损失并强调难以检测的示例来解决这个问题。

此外,YOLO v7 比早期版本具有更高的分辨率。与处理 416x416 像素图像的 YOLO v3 相比,它以 608x608 像素的分辨率处理图像。YOLO v7 凭借其更高的分辨率,能够更精确地检测小型对象。

YOLOV7 的优点

  1. 对于某些尺度的对象检测,此算法也不是完美的。与其他对象相比,它也无法检测到一些非常大或非常小的对象。
  2. 在光照条件可能发生变化的实际应用中,YOLO v7 可能难以使用,因为它对光照或其他环境因素的变化敏感。

YOLO V8

Ultralytics 已确认将推出 YOLO v8,该版本有望在其前代产品的基础上提供更多功能并提高性能。YOLO v8 中的新 API 简化了 CPU 和 GPU 设备上的训练和推理,同时该框架仍支持早期的 YOLO 版本。开发人员仍在编写科学出版物,其中将提供有关模型设计和性能的详细解释。