EfficientDet 与 YOLOX:全面技术比较
选择合适的物体检测架构是计算机视觉开发中的关键决策。Google 为实现最佳可扩展性而开发的EfficientDet 和 Megvii 的高性能无锚检测器YOLOX 是影响这一领域的两个著名模型。EfficientDet 专注于在严格的计算预算范围内利用复合扩展最大限度地提高准确性,而 YOLOX 则优先考虑推理速度和简化的训练管道。
本指南详细分析了它们的架构、性能指标和理想的部署方案,以帮助您选择最适合您项目的方案。此外,我们还探讨了现代替代方案,如 Ultralytics YOLO11等现代替代方案如何将这些前辈的优势整合到一个统一、用户友好的框架中。
EfficientDet:可扩展效率
EfficientDet 的推出是为了应对高效缩放物体检测模型的挑战。与以往任意缩放尺寸的架构不同,EfficientDet 采用了一种原则性的复合缩放方法,可统一缩放分辨率、深度和宽度。
架构和主要特性
EfficientDet 的核心创新在于其双向特征金字塔网络(BiFPN)。传统的特征金字塔网络对不同尺度的特征不加区分地进行加总,但 BiFPN 引入了可学习的权重,以便在融合过程中强调最重要的特征。结合EfficientNet 主干网,该模型能够以更少的参数和 FLOP(每秒浮点运算)达到最先进的精度。
- 复合缩放使用简单的复合系数同时缩放网络宽度、深度和图像分辨率。
- BiFPN:实现简单快速的多尺度特征融合。
- 效率:经过优化,最大限度地减少资源使用,同时最大限度地提高mAP (平均精度)。
模型元数据
- 作者: Mingxing Tan、Ruoming Pang 和 Quoc V. Le
- 组织机构Google
- 日期: 2019-11-20
- Arxiv:EfficientDet:可扩展的高效物体检测
YOLOX:无锚进化论
YOLOX 代表着YOLO 系列向无锚点设计的转变。通过消除对预定义锚框的需求,YOLOX 简化了训练过程,并提高了在不同数据集上的泛化能力。
架构和主要特性
YOLOX 分离了检测头,将分类和回归任务分成不同的分支。这种 "解耦头 "设计通常能带来更快的收敛速度和更好的性能。此外,它还采用了SimOTA(一种先进的标签分配策略,可动态分配正样本,从而减少训练时间并提高准确性)。
- 免锚:无需手动调整锚箱,降低了设计的复杂性。
- 解耦头:通过分离分类和定位任务来提高性能。
- 高级增强功能:利用Mosaic 和MixUp增强功能进行强大的训练。
模型元数据
- 作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, 和 Jian Sun
- 组织机构Megvii
- 日期: 2021-07-18
- Arxiv:YOLOX:2021 年超越YOLO 系列
性能与基准比较
这两种模型之间的权衡是截然不同的。EfficientDet 专为提高参数效率而设计,使其成为CPU限制的应用或模型大小(存储)是主要限制因素的应用场景的有力竞争者。相反,YOLOX 则针对GPU 延迟进行了优化,利用硬件友好型操作,在NVIDIA T4 或 V100 等设备上实现快速推理。
下表突出显示了COCO 数据集上的这些差异。请注意,与精度类似的 EfficientDet 变体相比,YOLOX 模型在GPU 硬件上的推理速度通常更快。
| 模型 | 尺寸 (像素) | 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 |
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
主要内容
- 延迟与吞吐量对比:YOLOX-s 在 T4TensorRT 上实现了 2.56 毫秒的惊人速度,尽管参数更多,但明显快于 EfficientDet-d0(3.92 毫秒)。这说明 YOLOX 对 GPU 上的实时推理进行了卓越的优化。
- 型号大小:对于存储空间极其有限的边缘设备而言,EfficientDet-d0 仍然具有很强的竞争力,它的参数数量仅为 3.9M。
- 扩展性:EfficientDet-d7 的mAP 值高达 53.7,但其代价是高延迟(128 毫秒),因此与较轻的型号相比,它不太适合实时视频流。
Ultralytics 的优势
虽然 EfficientDet 和 YOLOX 首创了重要的技术,但计算机视觉领域的发展日新月异。 Ultralytics YOLO11代表了最前沿的技术,它将前几代产品的最佳架构经验集成到一个统一的高性能软件包中。
对于开发人员和研究人员来说,与传统模型相比,Ultralytics 具有令人信服的优势:
- 易用性: Ultralytics Python API 设计简单。只需几行代码,您就可以加载一个模型,在图像上进行预测,并将结果可视化,从而降低了人工智能解决方案的准入门槛。
- 全面的生态系统:与独立的存储库不同,Ultralytics 模型由一个强大的生态系统提供支持。这包括与 MLOps 工具的无缝集成,如 Weights & Biases和 ClearML等 MLOps 工具的无缝集成,以及活跃的社区支持。
- 性能平衡: Ultralytics YOLO 模型旨在提供速度与准确性之间的最佳平衡。它们在延迟方面往往优于 YOLOX,同时又与 EfficientDet 的参数效率相匹配。
- 内存要求 Ultralytics 模型经过优化,与许多transformer CNN 架构或较早的 CNN 架构相比,在训练过程中使用的CUDA 内存更少,因此您可以在标准硬件上进行更大批量的训练。
- 多功能性:单个Ultralytics 框架即可支持对象检测、实例分割、姿势估计 、分类和定向边框(旋转框检测)。这种多功能性消除了为不同任务学习不同代码库的需要。
简单推理示例
了解与复杂的传统管道相比,使用Ultralytics YOLO11 运行推理是多么容易:
from ultralytics import YOLO
# Load a pre-trained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on a local image
results = model("bus.jpg")
# Display the results
results[0].show()
总结:理想的使用案例
在 EfficientDet、YOLOX 和Ultralytics YOLO 之间做出选择取决于您的具体限制条件。
- 如果您的应用部署在存储空间和 FLOPs是绝对瓶颈的硬件上,例如非常小的嵌入式微控制器,那么请选择 EfficientDet。它的原则性扩展允许对模型大小进行精细控制。
- 如果您要在GPU上进行部署并需要原始速度,请选择 YOLOX。它的架构避免了基于锚的方法的一些操作开销,使其在支持的硬件上进行实时视频分析时非常有效。
- 选择Ultralytics YOLO11可获得最佳的综合性能。它结合了 YOLOX 的速度和现代架构设计的效率。此外,它的生态系统、文档和多任务支持大大缩短了开发时间,使其成为快速原型开发和可扩展生产部署的最佳选择。
其他模型对比
深入探讨主流计算机视觉模型之间的技术差异: