EfficientDet 与YOLOv7:全面的技术比较
在快速发展的计算机视觉领域,选择正确的物体检测架构对项目的成功至关重要。本分析比较了EfficientDet 和 YOLOv7。 YOLOv7和 YOLOv7 进行了比较,YOLOv7 是一种实时检测器,专为GPU 硬件上的速度和精度而设计。虽然这两种模型在各自发布时都代表了最先进的性能,但了解它们的技术细节有助于开发人员在现代部署中做出明智的决策。
性能指标和分析
下表详细比较了主要性能指标,包括平均精度mAP)、在不同硬件上的推理速度和计算复杂度(参数和 FLOPs)。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
主要内容
- 效率与延迟:EfficientDet 通过复合缩放实现了出色的参数效率(低模型大小)。然而,在GPU 硬件(T4TensorRT)上、 YOLOv7显示出更优越的延迟。例如,YOLOv7l 仅需 6.84ms 的延迟就能实现 51.4% 的mAP ,而 EfficientDet-d5 需要 67.86ms 才能实现 51.5% 的类似mAP 。
- 架构影响:EfficientDet 中使用的深度可分离卷积最大限度地减少了 FLOP,但与YOLOv7 中的密集卷积相比,在 GPU 上的优化程度较低,从而导致了观察到的速度差异。
EfficientDet 概述
EfficientDet 在 2019 年实现了模式转变,提出了一种同时优化准确性和效率的可扩展架构。它建立在 EfficientNet 骨干之上,并引入了 BiFPN(双向特征金字塔网络)。
EfficientDet 详情:
作者: Mingxing Tan、Ruoming Pang 和 Quoc V. Le:Mingxing Tan、Ruoming Pang 和 Quoc V. Le
机构: 谷歌 Google
日期: 2019-11-20
Arxiv:https://arxiv.org/abs/1911.09070
GitHub:https:google
建筑亮点
EfficientDet 的核心创新点是BiFPN,它允许轻松快速地进行多尺度特征融合。与传统的 FPN 不同,BiFPN 使用加权特征融合来学习不同输入特征的重要性。结合统一缩放分辨率、深度和宽度的复合缩放技术,EfficientDet 可提供一系列模型(D0 至 D7),以满足各种资源限制。
YOLOv7 概览
YOLOv7 于 2022 年发布,通过重点优化推理速度的训练过程和架构,推动了实时物体检测的发展。它引入了多个 "免费包",在不增加推理成本的情况下提高了准确性。
YOLOv7 详情:
作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark LiaoChien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
机构: 台湾中央研究院信息科学研究所台湾中央研究院资讯科学研究所
日期: 2022-07-06
Arxiv:https://arxiv.org/abs/2207.02696
GitHub:https://github.com/WongKinYiu/yolov7
建筑亮点
YOLOv7 利用E-ELAN(扩展高效层聚合网络)控制最短和最长梯度路径,使网络能够学习更多不同的特征。它还为基于串联的模型采用了模型缩放技术,使其能在不同大小的模型中保持最佳结构。该架构专门针对GPU 效率进行了调整,尽管 FLOP 数较低,但避免了内存访问成本较高的操作。
理想用例
在这些架构之间做出选择,在很大程度上取决于部署硬件和具体的应用要求。
何时选择 EfficientDet
EfficientDet 适用于CPU限制的环境或内存带宽和存储空间严格受限的边缘设备。它的参数数量少,因此适用于:
- 移动应用程序: AndroidiOS 应用程序,应用程序大小(APK 大小)是一个关键限制因素。
- 嵌入式系统:在CPU 上运行的设备,如 Raspberry Pi(老一代)。
- 学术研究:研究复合缩放和特征融合技术的效果。
何时选择YOLOv7
YOLOv7 在高性能GPU 环境中表现出色,在这种环境中,低延迟是不可或缺的。它是以下应用的首选
- 实时监控:在边缘服务器上同时处理多个视频流。
- 自动驾驶:毫秒级延迟对安全的影响。
- 机器人用于动态环境中的快速物体检测和互动。
现代替代方案
虽然 EfficientDet 和YOLOv7 功能强大,但该领域已经取得了进步。对于新项目 YOLO11通常是推荐使用的。它结合了现代主干网的效率概念和YOLO 系列的实时速度,在准确性和部署简便性方面往往优于前两者。
为什么选择 Ultralytics YOLO 模型?
尽管 EfficientDet 和YOLOv7 仍然是对计算机视觉的重大贡献,但Ultralytics 生态系统(包括以下模型 YOLOv8和尖端的 YOLO11-等模型,为开发人员和研究人员提供了独特的优势。
易用性和生态系统
传统模型通常需要复杂的安装步骤、特定的CUDA 版本或零散的代码库。相比之下,Ultralytics 注重统一、简化的用户体验。通过一个简单的 pip install ultralytics用户可以访问强大的Python 应用程序接口和 CLI 命令 使培训、验证和部署标准化。培训 维护良好的生态系统 确保频繁更新、广泛的硬件支持以及与以下工具的集成 Ultralytics HUB 实现无缝 MLOps。
性能平衡与内存效率
Ultralytics 模型的设计旨在实现最佳性能平衡。它们既能提供一流的准确性,又能保持出色的推理速度,因此适用于从边缘部署到云 API 的各种场景。此外,训练Ultralytics YOLO 模型的内存要求通常低于transformer的架构或旧式 ConvNets,因此可以在消费级 GPU 上进行高效训练。
多功能性和培训效率
与许多特定的检测器不同,Ultralytics 模型具有很强的通用性。单个框架即可支持
这种多功能性与训练效率相结合--得益于优化的数据加载器和随时可用的预训练权重。COCO-大大缩短了人工智能解决方案的上市时间。
实例:运行现代YOLO 模式
下面的例子说明了如何轻松利用现代Ultralytics 模型进行推理,这与老式架构通常需要的模板形成了鲜明对比。
from ultralytics import YOLO
# Load the latest YOLO11 model (pre-trained on COCO)
model = YOLO("yolo11n.pt")
# Perform inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
# Process results
for result in results:
result.save() # Save the annotated image to disk
print(f"Detected {len(result.boxes)} objects.")
结论
EfficientDet 和YOLOv7 代表了计算机视觉历史上两种不同的理念:一种是针对理论效率(FLOPs/Params)进行优化,另一种是针对实际硬件延迟进行优化。EfficientDet 仍然是参数受限的CPU 应用程序的有力参考,而YOLOv7 则为高速GPU 工作负载提供了良好的服务。
然而,对于追求速度、准确性和无摩擦开发Ultralytics 的开发人员而言,像 YOLO11等 Ultralytics 模型是最佳选择。它们简化了复杂的训练和部署流程,同时提供的性能可满足现代计算机视觉应用的严格要求。
其他模型对比
探索更多技术比较,找到最适合您特定需求的型号:
- EfficientDet vs YOLOv8
- YOLOv7 vsYOLOv8
- EfficientDet vs YOLOv5
- YOLOv6 vsYOLOv7
- RT-DETR vsYOLOv7
- YOLOX vs EfficientDet