YOLOv4:高速且精准的目标检测#
欢迎阅读 YOLOv4 的 Ultralytics 文档页面。YOLOv4 是一个先进的实时目标检测器,由 Alexey Bochkovskiy 于 2020 年在 https://github.com/AlexeyAB/darknet 上发布。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 还利用了被称为“免费赠品包(bag of freebies)”的方法,这些技术可以在训练期间提高模型的准确率,而不会增加推理成本。数据增强是目标检测中常用的免费赠品包技术,它增加了输入图像的可变性,以提高模型的鲁棒性。数据增强的一些示例包括光度畸变(调整图像的亮度、对比度和色调、饱和度及噪声)和几何畸变(添加随机缩放、裁剪、翻转和旋转)。这些技术有助于模型更好地泛化到不同类型的图像。
特性与性能#
YOLOv4 旨在实现目标检测的最佳速度和准确率。YOLOv4 的架构包括作为骨干网络的 CSPDarknet53、作为颈部的 PANet 以及作为检测头的 YOLOv3。这种设计使 YOLOv4 能够以惊人的速度执行目标检测,使其适用于实时应用。YOLOv4 在准确率方面也表现出色,在 COCO 等目标检测基准测试中取得了先进的结果。
当与 YOLO 系列中的其他模型(如 YOLOv5 和 YOLOv7)相比时,YOLOv4 在速度和准确率的平衡上保持了强劲的地位。虽然更新的模型可能提供某些优势,但 YOLOv4 的架构创新使其在许多需要实时性能的应用中依然具有相关性。
使用示例#
YOLOv4 是一个基于 Darknet 的模型,Ultralytics Python 软件包原生不支持它:在 ultralytics/assets 上没有发布任何 yolov4.pt 预训练权重,也没有 ultralytics/cfg/models/v4/ YAML 文件。本页仅作为架构参考保留。有兴趣运行 YOLOv4 的用户应直接参考 YOLOv4 GitHub 仓库以获取安装和使用说明。
以下是使用 YOLOv4 通常需要采取的步骤概述:
-
访问 YOLOv4 GitHub 仓库:https://github.com/AlexeyAB/darknet。
-
按照 README 文件中提供的安装说明进行操作。这通常涉及克隆仓库、安装必要的依赖项以及设置任何所需的环境变量。
-
安装完成后,你可以根据仓库中提供的说明来训练和使用该模型。这通常涉及准备数据集、配置模型参数、训练模型,然后使用训练好的模型执行目标检测。
请注意,具体步骤可能会根据你的特定用例和 YOLOv4 仓库的当前状态而有所不同。因此,强烈建议直接参考 YOLOv4 GitHub 仓库中提供的说明。
有关在 Ultralytics 框架内进行训练和推理的内容,请参见 YOLO11 或 YOLO26。
结论#
YOLOv4 是一个强大且高效的目标检测模型,在速度和准确率之间取得了平衡。它在训练期间对独特功能和免费赠品包技术的使用使其在实时目标检测任务中表现出色。任何拥有常规 GPU 的人都可以训练和使用 YOLOv4,这使其在包括监控系统、自动驾驶汽车和工业自动化在内的广泛应用中变得易于使用且切实可行。
对于那些希望在项目中实现目标检测的人来说,YOLOv4 仍然是一个强有力的竞争者,尤其是当实时性能是首要任务时。虽然 Ultralytics 目前专注于支持更新的 YOLO 版本(如 YOLO11 和 YOLO26),但 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 的架构包括几个关键组件:骨干网络、颈部和头部。骨干网络可以是 VGG、ResNet 或 CSPDarknet53 等模型,经过预训练以预测类别和边界框。颈部利用 PANet 连接来自不同阶段的特征图以进行全面的数据提取。最后,使用 YOLOv3 配置的头部负责进行最终的目标检测。YOLOv4 还采用了诸如 mosaic 数据增强和 DropBlock 正则化之类的“免费赠品包”技术,进一步优化了其速度和准确率。
在 YOLOv4 的语境下,“免费赠品包”(Bag of Freebies)是什么?#
“免费赠品包”是指那些能够在不增加推理成本的情况下提高 YOLOv4 训练准确率的方法。这些技术包括各种形式的数据增强,如光度畸变(调整亮度、对比度等)和几何畸变(缩放、裁剪、翻转、旋转)。通过增加输入图像的多样性,这些增强手段有助于 YOLOv4 更好地泛化到不同类型的图像,从而在不影响实时性能的情况下提高其鲁棒性和准确率。
为什么 YOLOv4 被认为适用于在传统 GPU 上进行实时目标检测?#
YOLOv4 旨在优化速度和准确率,使其成为需要快速且可靠性能的实时目标检测任务的理想选择。它在常规 GPU 上高效运行,训练和推理只需一个 GPU。这使得它对于从推荐系统到独立流程管理的各种应用都易于访问且实用,从而减少了对大量硬件设置的需求,并使其成为实时目标检测的经济高效的解决方案。
如果 Ultralytics 目前不支持 YOLOv4,我该如何入门?#
要开始使用 YOLOv4,你应该访问官方的 YOLOv4 GitHub 仓库。遵循 README 文件中提供的安装说明,通常包括克隆仓库、安装依赖项以及设置环境变量。安装完成后,你可以通过准备数据集、配置模型参数并遵循提供的使用说明来训练模型。由于 Ultralytics 目前不支持 YOLOv4,建议直接参考 YOLOv4 GitHub 以获取最新、最详细的指导。