PP-YOLOE+ 对比 YOLOv9:技术对比
为计算机视觉项目选择最优架构需要在快速发展的模型领域中进行探索。本页面详细比较了百度的PP-YOLOE+和YOLOv9,这两个复杂的单阶段对象detect器。我们分析了它们的架构创新、性能指标和生态系统集成,以帮助您做出明智的决策。虽然这两个模型都展现出强大的能力,但它们代表了不同的设计理念和框架依赖性。
PP-YOLOE+:PaddlePaddle 生态系统内的高精度
PP-YOLOE+ 是 PP-YOLOE 的演进版本,由百度作为PaddleDetection套件的一部分开发。它旨在提供精度和推理速度之间的平衡权衡,并专门针对PaddlePaddle深度学习框架进行了优化。
作者: PaddlePaddle 作者
机构:百度
日期: 2022-04-02
预印本:https://arxiv.org/abs/2203.16250
GitHub:https://github.com/PaddlePaddle/PaddleDetection/
文档:PaddleDetection PP-YOLOE+ README
架构和主要特性
PP-YOLOE+ 作为一个无锚框、单阶段检测器运行。它基于 CSPRepResNet 主干网络,并利用任务对齐学习 (TAL) 策略来改善分类和定位任务之间的对齐。一个关键特性是高效任务对齐头 (ET-Head),它在保持精度的同时降低了计算开销。该模型使用 Varifocal Loss 损失函数来处理训练期间的类别不平衡问题。
优势与劣势
PP-YOLOE+ 的主要优势在于其针对百度硬件和软件栈的优化。它提供了可扩展的模型(s、m、l、x),在标准物体检测基准测试中表现良好。
然而,它对PaddlePaddle生态系统的严重依赖对更广泛的AI社区来说是一个重大障碍,因为该社区主要青睐PyTorch。将现有的PyTorch工作流程迁移到PaddlePaddle可能需要大量资源。此外,与较新的架构相比,PP-YOLOE+需要更多参数才能达到相似的准确性,这会影响受限设备的存储和内存。
YOLOv9:用于增强学习的可编程梯度信息
Ultralytics YOLOv9 通过解决深度神经网络固有的“信息瓶颈”问题,在实时目标检测领域引入了范式转变。
作者:王建尧、廖鸿源Chien-Yao Wang and Hong-Yuan Mark Liao
组织:台湾中央研究院信息科学研究所
日期:2024-02-21
Arxiv:https://arxiv.org/abs/2402.13616
GitHub:https://github.com/WongKinYiu/yolov9
Documentation:ultralytics
架构和主要特性
YOLOv9 集成了两项开创性概念:可编程梯度信息 (PGI) 和 广义高效层聚合网络 (GELAN)。
- PGI:随着网络加深,输入数据信息在前向传播过程中经常丢失。PGI 提供了一个辅助监督分支,确保可靠的梯度生成,使模型能够“记住”用于 目标跟踪 和 detect 任务的关键特征,而不会增加推理成本。
- GELAN:这种架构设计优化了参数效率,与使用深度可分离卷积的传统骨干网络相比,使模型能够以更少的计算资源(FLOPs)实现更高的准确性。
您知道吗?
YOLOv9 的 PGI 技术解决了信息瓶颈问题,该问题此前需要繁琐的深度监督方法。这使得模型更轻量、更准确,显著提升了性能平衡。
优势与劣势
YOLOv9 在训练效率和参数利用率方面表现出色。它在 COCO 数据集上取得了最先进的结果,在精度上超越了以前的版本,同时保持了实时速度。它集成到 Ultralytics 生态系统意味着它得益于一个维护良好的生态系统,包括通过 导出模式轻松部署到 ONNX 和 TensorRT 等格式。
一个潜在的考虑因素是,最大的变体 (YOLOv9-E) 在训练时需要大量的 GPU 资源。然而,推理内存占用仍然具有竞争力,避免了与 Transformer 模型相关的高成本。
对比性能分析
通过直接比较,YOLOv9 展现出卓越的效率。例如,YOLOv9-C 模型实现了比 PP-YOLOE+l (52.9%) 更高的 mAP (53.0%),同时参数量约为其一半 (25.3M 对比 52.2M)。这种在不牺牲精度的情况下大幅减小模型尺寸的特点,凸显了 GELAN 架构的有效性。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| PP-YOLOE+t | 640 | 39.9 | - | 2.84 | 4.85 | 19.15 |
| PP-YOLOE+s | 640 | 43.7 | - | 2.62 | 7.93 | 17.36 |
| PP-YOLOE+m | 640 | 49.8 | - | 5.56 | 23.43 | 49.91 |
| PP-YOLOE+l | 640 | 52.9 | - | 8.36 | 52.2 | 110.07 |
| PP-YOLOE+x | 640 | 54.7 | - | 14.3 | 98.42 | 206.59 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
该表表明,对于相似的准确性目标,YOLOv9始终需要更少的计算资源。YOLOv9-E模型进一步突破了极限,实现了55.6%的mAP,明显优于最大的PP-YOLOE+变体。
Ultralytics 优势
尽管PP-YOLOE+是一个有能力的检测器,但通过Ultralytics框架选择YOLOv9在易用性和多功能性方面提供了显著优势。
简化的用户体验
Ultralytics 优先考虑开发者友好的体验。与 PaddleDetection 通常所需的复杂配置文件不同,Ultralytics 模型只需几行 python 代码即可加载、训练和部署。这显著降低了工程师和研究人员的入门门槛。
多功能性与生态系统
Ultralytics 支持除了简单检测之外的广泛任务,包括实例分割、姿势估计和旋转框检测 (obb)。这种多功能性使开发者能够使用单一、统一的 API 应对各种挑战。此外,活跃的社区和频繁的更新确保用户能够获取最新的优化以及与 TensorBoard 和 MLflow 等工具的集成。
代码示例:使用 YOLOv9
以下示例演示了如何轻松地使用Ultralytics Python API运行YOLOv9推理。这种简洁性与PP-YOLOE+通常需要的更繁琐的设置形成了对比。
from ultralytics import YOLO
# Load a pre-trained YOLOv9 model
model = YOLO("yolov9c.pt")
# Run inference on an image
results = model("path/to/image.jpg")
# Display results
results[0].show()
理想用例
- PP-YOLOE+:最适合已深度集成到百度/PaddlePaddle生态系统中的团队,或在PaddlePaddle硬件支持占主导地位的地区用于特定的传统工业应用。
- YOLOv9: 适用于需要最高精度效率比的应用,例如自动驾驶汽车、实时视频分析以及内存要求和存储受限的边缘部署。
结论与建议
对于大多数开发者和组织,YOLOv9 是更优的选择,因为它拥有现代架构 (GELAN/PGI)、卓越的参数效率以及 Ultralytics 生态系统的强大支持。它提供了一个面向未来的解决方案,具有现成的预训练权重和无缝导出能力。
如果您正在寻找更高的通用性和速度,我们还推荐探索 YOLO11,它是 YOLO 系列的最新迭代。YOLO11 进一步优化了性能与延迟之间的平衡,在一个紧凑的包中提供了最先进的 detect、分割和分类任务能力。
对于那些对久经考验的主力感兴趣的用户,YOLOv8 仍然是一个高度可靠的选择,拥有丰富的社区资源和第三方集成。