YOLOv4:高速且精确的目标检测

欢迎阅读 Ultralytics 关于 YOLOv4 的文档页面。YOLOv4 是由 Alexey Bochkovskiy 于 2020 年在 https://github.com/AlexeyAB/darknet 上推出的尖端实时目标检测器。YOLOv4 旨在提供速度与精度之间的最佳平衡,使其成为许多应用场景的出色选择。

YOLOv4 架构图 YOLOv4 架构图。展示了 YOLOv4 复杂的网络设计,包括骨干(backbone)、颈部(neck)和头部(head)组件,以及它们为实现最佳实时目标检测而相互连接的层。

介绍

YOLOv4 代表 You Only Look Once version 4。它是一款实时目标检测模型,旨在解决先前 YOLO 版本(如 YOLOv3)及其他目标检测模型的局限性。与其他基于 卷积神经网络 (CNN) 的目标检测器不同,YOLOv4 不仅适用于推荐系统,还适用于独立流程管理和减少人工输入。它在常规图形处理单元 (GPU) 上的运行能力支持其以经济实惠的成本进行大规模使用,且设计上可以在常规 GPU 上实现实时工作,仅需一个 GPU 即可完成训练。

架构

YOLOv4 采用了多种创新特性,这些特性共同作用以优化其性能。其中包括加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批量 批归一化 (CmBN)、自对抗训练(SAT)、Mish 激活函数、Mosaic 数据增强、DropBlock 正则化 和 CIoU 损失。这些特性结合在一起,实现了最先进的成果。

一个典型的目标检测器由多个部分组成,包括输入、骨干、颈部和头部。YOLOv4 的骨干在 ImageNet 上进行了预训练,用于预测对象的类别和 边界框。骨干网络可以来自多种模型,包括 VGG、ResNet、ResNeXt 或 DenseNet。检测器的颈部部分用于收集来自不同阶段的 特征图,通常包括几条自下而上的路径和几条自上而下的路径。头部部分则用于进行最终的目标检测和分类。

免费赠品包 (Bag of Freebies)

YOLOv4 还使用了被称为“免费赠品包”的方法,这些技术能在不增加推理成本的情况下提高模型训练期间的 准确率数据增强目标检测 中常用的免费赠品包技术,它增加了输入图像的多样性以提高模型的鲁棒性。数据增强的一些例子包括光度失真(调整图像的亮度、对比度、色调、饱和度和噪点)以及几何失真(添加随机缩放、裁剪、翻转和旋转)。这些技术有助于模型更好地泛化到不同类型的图像。

特性与性能

YOLOv4 专为实现最佳的目标检测速度和精度而设计。YOLOv4 的架构包括 CSPDarknet53 作为骨干,PANet 作为颈部,以及 YOLOv3 作为 检测头。这种设计使 YOLOv4 能够以令人印象深刻的速度执行目标检测,使其适合实时应用。YOLOv4 在精度方面也表现出色,在 COCO 等目标检测基准测试中取得了最先进的成果。

与 YOLO 系列中的其他模型(如 YOLOv5YOLOv7)相比,YOLOv4 在速度和精度之间保持了强大的平衡。虽然更新的模型可能提供某些优势,但 YOLOv4 的架构创新使其对于许多需要实时性能的应用而言依然具有相关性。

使用示例

YOLOv4 is a Darknet-based model and is not natively supported by the Ultralytics Python package: there are no yolov4.pt pretrained weights published on ultralytics/assets and no ultralytics/cfg/models/v4/ YAMLs. This page is kept as an architectural reference. Users interested in running YOLOv4 should refer directly to the YOLOv4 GitHub repository for installation and usage instructions.

以下是你使用 YOLOv4 时可能采取的典型步骤简要概述:

  1. 访问 YOLOv4 GitHub 存储库:https://github.com/AlexeyAB/darknet

  2. 按照 README 文件中提供的安装说明操作。这通常涉及克隆存储库、安装必要的依赖项以及设置任何必要的环境变量。

  3. 安装完成后,你可以根据存储库中提供的使用说明来训练和使用该模型。这通常涉及准备数据集、配置模型参数、训练模型,然后使用训练好的模型执行目标检测。

请注意,具体步骤可能会因你的具体使用场景和 YOLOv4 存储库的当前状态而有所不同。因此,强烈建议直接参考 YOLOv4 GitHub 存储库中提供的说明。

若要在 Ultralytics 框架内进行训练和推理,请参阅 YOLO11YOLO26

总结

YOLOv4 是一款强大且高效的目标检测模型,在速度和精度之间取得了平衡。它在训练过程中使用独特的功能和免费赠品包技术,使其在实时目标检测任务中表现出色。YOLOv4 可以由任何拥有常规 GPU 的人进行训练和使用,使其在包括 监控系统自动驾驶汽车工业自动化 在内的广泛应用中变得易于使用且实用。

对于那些希望在项目中实现目标检测的人来说,YOLOv4 依然是一个强有力的竞争者,特别是在实时性能作为首要优先级时。虽然 Ultralytics 目前专注于支持更新的 YOLO 版本,如 YOLO11YOLO26,但 YOLOv4 中引入的架构创新已经对这些后续模型的开发产生了影响。

引文与致谢

我们希望感谢 YOLOv4 的作者们在实时目标检测领域所做的重大贡献:

引用
@misc{bochkovskiy2020yolov4,
      title={YOLOv4: Optimal Speed and Accuracy of Object Detection},
      author={Alexey Bochkovskiy and Chien-Yao Wang and Hong-Yuan Mark Liao},
      year={2020},
      eprint={2004.10934},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

原始的 YOLOv4 论文可以在 arXiv 上找到。作者们已将其工作公开,代码库可在 GitHub 上获取。我们感谢他们在推动该领域发展并使广大社区能够使用其研究成果方面所做的努力。

常见问题 (FAQ)

什么是 YOLOv4,为什么我应该将其用于 目标检测

YOLOv4 代表“You Only Look Once version 4”,是 Alexey Bochkovskiy 于 2020 年开发的最先进的实时目标检测模型。它在速度和 准确率 之间实现了最佳平衡,使其非常适合实时应用。YOLOv4 的架构结合了多种创新特性,如加权残差连接(WRC)、跨阶段部分连接(CSP)和自对抗训练(SAT)等,以取得最先进的成果。如果你正在寻找一款能在常规 GPU 上高效运行的高性能模型,YOLOv4 是一个绝佳的选择。

YOLOv4 的架构是如何增强其性能的?

YOLOv4 的架构包含几个关键组件:骨干、颈部和头部。骨干网络(可以是 VGG、ResNet 或 CSPDarknet53 等模型)经过预训练以预测类别和边界框。利用 PANet 的颈部将来自不同阶段的 特征图 连接起来,以便进行全面的数据提取。最后,使用 YOLOv3 配置的头部执行最终的目标检测。YOLOv4 还采用了“免费赠品包”技术,如 Mosaic 数据增强和 DropBlock 正则化,进一步优化了其速度和精度。

在 YOLOv4 的背景下,什么是“免费赠品包”?

“免费赠品包”是指那些在不增加推理成本的情况下提高 YOLOv4 训练准确率的方法。这些技术包括各种形式的数据增强,如光度失真(调整亮度、对比度等)和几何失真(缩放、裁剪、翻转、旋转)。通过增加输入图像的多样性,这些增强手段有助于 YOLOv4 更好地泛化到不同类型的图像,从而在不牺牲其实时性能的前提下,提高了其鲁棒性和准确率。

为什么 YOLOv4 被认为适合在常规 GPU 上进行实时目标检测?

YOLOv4 的设计旨在同时优化速度和精度,使其成为需要快速、可靠性能的实时目标检测任务的理想选择。它在常规 GPU 上运行高效,训练和推理仅需一个 GPU。这使其在从 推荐系统 到独立流程管理的各种应用中变得易于使用且实用,从而减少了对庞大硬件设置的需求,使其成为实时目标检测的一种高性价比解决方案。

如果 Ultralytics 目前不支持 YOLOv4,我该如何开始使用它?

要开始使用 YOLOv4,你应该访问官方的 YOLOv4 GitHub 存储库。按照 README 文件中提供的安装说明操作,这些说明通常包括克隆存储库、安装依赖项以及设置环境变量。安装完成后,你可以通过准备数据集、配置模型参数并遵循提供的使用说明来训练模型。由于 Ultralytics 目前不支持 YOLOv4,建议直接参考 YOLOv4 GitHub 以获取最新、最详细的指导。

评论