PP-YOLOE+ 与YOLOv9:技术比较
要为计算机视觉项目选择最佳架构,就需要在快速发展的模型中进行导航。本页提供了百度 PP-YOLOE+ 与 YOLOv9 的详细技术比较。 YOLOv9这两个复杂的单级物体检测器进行了详细的技术比较。我们分析了它们的架构创新、性能指标和生态系统集成,以帮助您做出明智的决定。虽然这两种模型都展示了很高的性能,但它们代表了不同的设计理念和框架依赖性。
PP-YOLOE+:PaddlePaddle 生态系统内的高精度
PP-YOLOE+ 是 PP-YOLOE 的进化版,由百度开发,是PaddleDetection套件的一部分。它的设计目的是在精度和推理速度之间实现平衡,专门针对 PaddlePaddle深度学习框架进行了专门优化。
作者: PaddlePaddle 作者
组织:百度
日期:2022-04-02
Arxiv:https://arxiv.org/abs/2203.16250
GitHubPaddlePaddle
文档:PaddleDetection PP-YOLOE+ README
架构和主要特性
PP-YOLOE+ 是一种无锚、单级检测器。它以 CSPRepResNet 为骨干,利用任务对齐学习(TAL)策略来改进分类和定位任务之间的对齐。其主要特点是高效任务对齐头(ET-Head),在保持准确性的同时减少了计算开销。该模型使用变焦损失函数来处理训练过程中的类不平衡问题。
优势与劣势
PP-YOLOE+ 的主要优势在于针对百度的硬件和软件栈进行了优化。它提供的可扩展模型(s、m、l、x)在标准物体检测基准测试中表现出色。
然而,它对PaddlePaddle 生态系统的严重依赖给更广泛的人工智能社区带来了巨大障碍,因为该生态系统主要倾向于 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 提供了一个辅助监督分支,确保梯度生成的可靠性,使模型能够 "记住 "物体跟踪和检测任务的关键特征,而不增加推理成本。
- GELAN:这一架构设计优化了参数效率,与使用深度卷积的传统骨干网相比,该模型能够以更少的计算资源(FLOP)达到更高的精度。
你知道吗?
YOLOv9 的 PGI 技术解决了信息瓶颈问题,而这一问题以前需要繁琐的深度监督方法来解决。这使得模型更轻便、更准确,大大改善了性能平衡。
优势与劣势
YOLOv9 在训练效率和参数利用方面表现出色。它在COCO 数据集上取得了最先进的结果,在保持实时速度的同时,准确率超过了之前的迭代版本。它与Ultralytics 生态系统的集成意味着它可以从维护良好的生态系统中获益,包括通过导出模式到ONNX 和TensorRT 等格式的简单部署。
一个潜在的考虑因素是,最大的变体YOLOv9)需要大量GPU 资源进行训练。不过,推理内存占用仍然具有竞争力,避免了与transformer模型相关的高成本。
性能对比分析
通过直接比较,YOLOv9 显示出更高的效率。例如,YOLOv9 模型的mAP 值(53.0%)高于 PP-YOLOE+l 模型(52.9%),而使用的参数却只有 PP-YOLOE+l 模型的一半(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 模型则更进一步,实现了 55.6% 的mAP,与最大的 PP-YOLOE+ 变体相比优势明显。
Ultralytics 的优势
虽然 PP-YOLOE+ 是一款功能强大的探测器,但通过Ultralytics 框架选择YOLOv9 在易用性和多功能性方面具有明显优势。
简化用户体验
Ultralytics 优先考虑开发人员的友好体验。与 PaddleDetection 通常需要的复杂配置文件不同,Ultralytics 模型只需几行Python 代码即可加载、训练和部署。这大大降低了工程师和研究人员的入门门槛。
多功能性和生态系统
Ultralytics 不仅支持简单的检测,还支持多种任务,包括实例分割、姿势估计 和定向边界框(旋转框检测)检测。这种多功能性使开发人员能够使用单一、统一的应用程序接口应对各种挑战。此外,活跃的社区和频繁的更新可确保用户获得最新的优化和与 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 生态系统的团队,或PaddlePaddle 硬件支持占主导地位的地区的特定传统工业应用。
- YOLOv9:非常适合要求最高精度-效率比的应用,如自动驾驶汽车、实时视频分析,以及内存要求和存储受限的边缘部署。
结论与建议
对于大多数开发人员和企业来说,YOLOv9 是一个更好的选择,因为它具有现代化的架构(GELAN/PGI)、出色的参数效率以及Ultralytics 生态系统的强大支持。它提供了一个面向未来的解决方案,具有随时可用的预训练权重和无缝导出功能。
如果您需要更多功能和更快的速度,我们还推荐您探索 YOLO11是YOLO 系列的最新迭代产品。YOLO11 进一步完善了性能和延迟之间的平衡,以紧凑的封装为检测、分割和分类任务提供了最先进的功能。
对于那些对久经考验的主力机型感兴趣的人来说、 YOLOv8仍然是一个高度可靠的选择,拥有广泛的社区资源和第三方集成。