YOLOv5 对比 EfficientDet:评估实时目标检测架构
当你开启一个全新的 计算机视觉 项目时,选择正确的神经网络架构是你需要做出的最关键的决定之一。本指南对 Ultralytics YOLOv5 和 Google 的 EfficientDet 进行了深入的技术对比。通过分析它们的架构、性能指标和训练生态系统,我们旨在帮助开发者和研究人员为他们的特定部署环境确定最佳的 目标检测 模型。
虽然 EfficientDet 在复合缩放和特征融合方面引入了新颖的概念,但 YOLOv5 通过其极具直观性的 PyTorch 实现、简化的用户体验以及在速度和精度之间无与伦比的平衡,实现了高性能 AI 的普及,从而彻底改变了行业。
Ultralytics YOLOv5:行业易用性标准
YOLOv5 发布于 2020 年夏季,标志着 YOLO 系列的一次关键转型。它从基于 C 语言的 Darknet 框架迁移到原生的 PyTorch,成为了开发者快速构建、训练和部署模型的首选架构。
- 作者: Glenn Jocher
- 组织: Ultralytics
- 日期: 2020-06-26
- GitHub: https://github.com/ultralytics/yolov5
- 文档: https://platform.ultralytics.com/ultralytics/yolov5
架构创新
YOLOv5 因其高度优化的架构而广受赞誉,该架构优先考虑了无缝的 机器学习 生命周期。它利用修改后的 CSPDarknet53 主干网络并配合路径聚合网络 (PANet) 颈部,显著改善了跨多个空间尺度的特征传播。
主要改进包括:
- Mosaic 数据增强: 这种训练技术将四张不同的训练图像合并为一张马赛克图。这迫使模型学习如何在复杂的空间背景下识别物体,并显著增强了其检测小目标的能力。
- 自动学习锚框: 在训练开始前,YOLOv5 会分析你的自定义 训练数据,并使用 k-means 聚类自动计算最优的 锚框 尺寸。
- 内存效率: 与基于 Transformer 的笨重模型相比,YOLOv5 在训练和推理过程中都保持了显著较低的内存占用,使其能够在消费级硬件上流畅运行。
EfficientDet:可扩展的目标检测
EfficientDet 由 Google Research 于 2019 年推出,旨在提供一系列可扩展的目标检测器。它基于 EfficientNet 图像分类主干网络,并引入了一种新颖的特征融合机制。
- 作者: Mingxing Tan, Ruoming Pang, and Quoc V. Le
- 组织: Google
- 日期: 2019-11-20
- Arxiv: https://arxiv.org/abs/1911.09070
- GitHub: https://github.com/google/automl/tree/master/efficientdet
- 文档: https://github.com/google/automl/tree/master/efficientdet#readme
架构创新
EfficientDet 的核心主张在于其系统化的缩放和特征聚合方法:
- BiFPN(双向特征金字塔网络): 与仅进行自顶向下信息传递的传统 FPN 不同,BiFPN 通过引入可学习权重来学习不同输入特征的重要性,从而实现快速且简单的多尺度特征融合。
- 复合缩放: EfficientDet 联合缩放所有主干、特征网络和框/类预测网络的分辨率、深度和宽度,从而产生从轻量级的 D0 到巨大的 D7 的各种模型。
虽然 EfficientDet 严重依赖 TensorFlow 生态系统和 AutoML 库,但 YOLOv5 原生运行在 PyTorch 中,为许多开发者提供了更直观、更 Python 化且易于调试的工作流程。
性能与指标对比
在比较这些模型时,在 COCO 数据集 等标准基准上评估其性能至关重要。下表重点展示了规模、计算需求 (FLOPs) 和推理速度之间的权衡。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (ms) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| EfficientDet-d0 | 640 | 34.6 | 10.2 | 3.92 | 3.9 | 2.54 |
| EfficientDet-d1 | 640 | 40.5 | 13.5 | 7.31 | 6.6 | 6.1 |
| EfficientDet-d2 | 640 | 43.0 | 17.7 | 10.92 | 8.1 | 11.0 |
| EfficientDet-d3 | 640 | 47.5 | 28.0 | 19.59 | 12.0 | 24.9 |
| EfficientDet-d4 | 640 | 49.7 | 42.8 | 33.55 | 20.7 | 55.2 |
| EfficientDet-d5 | 640 | 51.5 | 72.5 | 67.86 | 33.7 | 130.0 |
| EfficientDet-d6 | 640 | 52.6 | 92.8 | 89.29 | 51.9 | 226.0 |
| EfficientDet-d7 | 640 | 53.7 | 122.0 | 128.07 | 51.9 | 325.0 |
平衡分析
YOLOv5 的优势在于其部署灵活性和对原始硬件加速的兼容性。请注意在 T4 GPU 上惊人的 TensorRT 速度。这使得 YOLOv5 非常适合高吞吐量的视频分析和 实时推理 流水线。此外,Ultralytics 生态系统使得导出到 ONNX、CoreML 和 TensorRT 等格式只需一行命令。
EfficientDet 提供了出色的参数效率。对于给定的参数数量,它通常能提取出较高的 平均精度均值 (mAP)。然而,由于 BiFPN 层复杂的路由,这种理论上的效率并不总能转化为边缘 GPU 上更快的实际推理时间,因为它可能受限于内存带宽而非计算能力。
生态系统与易用性
选择 Ultralytics 模型的决定性优势在于其周边的生态系统。YOLOv5 是一个维护良好、积极开发且拥有庞大社区支持的存储库的一部分。
随着 Ultralytics Platform 的推出,用户可以无缝地从数据收集过渡到部署。该平台直接支持自动标注、云训练和模型监控。相比之下,训练 EfficientDet 通常需要处理旧版 TensorFlow 目标检测 API 的复杂性,这对快速原型设计来说可能存在较高的学习曲线。
此外,YOLOv5 的多功能性不仅限于边界框。通过持续更新,Ultralytics 框架原生支持 实例分割 和 图像分类,为多种计算机视觉任务提供统一的 API。
理想用例
- 选择 YOLOv5,当你: 需要快速原型设计、流畅的训练体验以及高度优化的边缘部署。它非常适合无人机、零售分析 和移动应用程序,在这些场景中低延迟至关重要。
- 选择 EfficientDet,当你: 严格在 Google Cloud/TensorFlow AutoML 环境中操作,并且在没有严格实时延迟限制的情况下,需要每个参数获得最高精度。
下一代:拥抱 YOLO26
虽然 YOLOv5 仍然是一个可靠的主力,但计算机视觉领域已经进步了。对于在 2026 年寻求绝对最先进技术的开发者来说,YOLO26 代表了 Ultralytics 产品阵容的新巅峰。
基于其前身(如 YOLOv8 和 YOLO11)的遗产,YOLO26 引入了突破性的创新:
- 端到端无 NMS 设计: YOLO26 原生消除了对非极大值抑制 (NMS) 后处理的需求。这显著降低了延迟方差并简化了部署架构。
- CPU 推理速度提升高达 43%: 针对 边缘 AI 进行了深度优化,它为低功耗边缘设备和没有专用 GPU 的标准 CPU 带来了前所未有的速度。
- MuSGD 优化器: 受大语言模型 (LLM) 训练技术的启发,这种 SGD 和 Muon 的混合体确保了高度稳定的训练和快速收敛。
- 先进的损失函数: ProgLoss 和 STAL 的集成显著改善了对小目标的识别,这对于高空无人机图像和 机器人技术 至关重要。
- 移除 DFL: 通过移除分布焦点损失 (Distribution Focal Loss),简化了模型导出过程,进一步增强了在各种硬件加速器上的兼容性。
对探索 Ultralytics 生态系统中其他最新架构感兴趣的用户,也可以比较 YOLOv10 或 RT-DETR 等模型。
Ultralytics Python API 的设计考虑了向后和向前的兼容性。从 YOLOv5 升级到 YOLO26 简直就像更改代码中的模型权重字符串一样简单!
代码示例:训练和推理
为了展示 Ultralytics 生态系统无与伦比的易用性,这是你如何使用现代 YOLO 模型进行训练和推理的方法。此代码 100% 可运行,并会自动处理数据集下载、训练循环和验证。
from ultralytics import YOLO
# Load a modern model (Swap 'yolov5s.pt' for 'yolo26n.pt' to test the newest architecture!)
model = YOLO("yolov5s.pt")
# Train the model on the COCO8 example dataset for 20 epochs
results = model.train(data="coco8.yaml", epochs=20, imgsz=640)
# Run inference on an image from the web
inference_results = model("https://ultralytics.com/images/bus.jpg")
# Display the image with bounding boxes
inference_results[0].show()通过优先考虑用户体验、维护强大的生态系统,并利用 YOLO26 等更新不断突破可能的界限,Ultralytics 确保开发者始终拥有解决现实世界视觉智能挑战的最佳工具。