跳转至内容

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

欢迎访问 Ultralytics YOLOv4 文档页面。YOLOv4 是 Alexey Bochkovskiy 于 2020 年发布的一种先进的实时目标检测器,其代码库位于 https://github.com/AlexeyAB/darknet。YOLOv4 旨在提供速度和准确性之间的最佳平衡,使其成为许多应用的绝佳选择。

YOLOv4 架构图 YOLOv4 架构图展示 YOLOv4 复杂的网络设计,包括主干、颈部和头部组件,以及它们之间相互连接的层,以实现最佳的实时目标检测。

简介

YOLOv4 代表 You Only Look Once version 4(你只需看一次第 4 版)。它是一种实时目标检测模型,旨在解决之前 YOLO 版本(如 YOLOv3)和其他目标检测模型的局限性。与其他基于卷积神经网络 (CNN) 的目标检测器不同,YOLOv4 不仅适用于推荐系统,还适用于独立的流程管理和减少人工输入。它可在传统图形处理单元 (GPU) 上运行,从而能够以经济实惠的价格进行大规模使用,并且它被设计为在传统 GPU 上实时工作,训练时也仅需一个 GPU。

架构

YOLOv4 利用多种创新功能协同工作以优化其性能。这些功能包括加权残差连接 (WRC)、跨阶段局部连接 (CSP)、跨 mini-批归一化 (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 的架构创新使其在许多需要实时性能的应用中仍然具有重要意义。

使用示例

截至撰写本文时,Ultralytics 目前不支持 YOLOv4 模型。因此,任何有兴趣使用 YOLOv4 的用户都需要直接参考 YOLOv4 GitHub 仓库以获取安装和使用说明。

以下是使用 YOLOv4 的典型步骤的简要概述:

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

  2. 按照 README 文件中提供的说明进行安装。这通常包括克隆仓库、安装必要的依赖项以及设置任何必要的环境变量。

  3. 安装完成后,您可以按照仓库中提供的使用说明来训练和使用模型。这通常包括准备您的数据集、配置模型参数、训练模型,然后使用训练好的模型来执行目标检测。

请注意,具体步骤可能会因您的具体用例和 YOLOv4 仓库的当前状态而异。因此,强烈建议直接参考 YOLOv4 GitHub 仓库中提供的说明。

对于由此可能造成的任何不便,我们深表歉意,并将努力在 Ultralytics 实现对 YOLOv4 的支持后,立即更新本文档,提供使用示例。

结论

YOLOv4 是一种强大而高效的目标检测模型,可在速度和准确性之间取得平衡。它在训练期间使用独特的功能和免费赠品技术,使其在实时目标检测任务中表现出色。任何拥有传统 GPU 的人都可以训练和使用 YOLOv4,这使其可用于包括监控系统自动驾驶汽车工业自动化在内的广泛应用,并且非常实用。

对于那些希望在项目中实施对象检测的用户来说,YOLOv4 仍然是一个强大的竞争者,尤其是在实时性能是首要考虑因素时。虽然 Ultralytics 目前专注于支持较新的 YOLO 版本,如 YOLOv8YOLO11,但 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 上访问代码库。我们感谢他们为推进该领域并使其工作能够为更广泛的社区所用而做出的努力。

常见问题

什么是 YOLOv4?我为什么应该使用它进行目标检测

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

YOLOv4 的架构如何提高其性能?

YOLOv4 的架构包括几个关键组件:backbone、neck 和 head。backbone 可以是 VGG、ResNet 或 CSPDarknet53 等模型,经过预训练以预测类别和边界框。neck 利用 PANet 连接来自不同阶段的特征图,以进行全面的数据提取。最后,head 使用 YOLOv3 中的配置进行最终对象检测。YOLOv4 还采用了“免费赠品”技术,如 mosaic 数据增强和 DropBlock 正则化,从而进一步优化了其速度和准确性。

在 YOLOv4 的上下文中,“免费赠品(bag of freebies)”是什么?

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

为什么 YOLOv4 被认为适合在传统 GPU 上进行实时对象检测?

YOLOv4 旨在优化速度和准确性,使其成为需要快速可靠性能的实时目标检测任务的理想选择。它可以在传统 GPU 上高效运行,训练和推理都只需要一个 GPU。这使得它在从推荐系统到独立流程管理的各种应用中都具有可访问性和实用性,从而减少了对大量硬件设置的需求,并使其成为一种经济高效的实时目标检测解决方案。

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

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



📅 创建于 1 年前 ✏️ 更新于 5 个月前

评论