YOLOv9 详解
YOLOv9: 用可编程梯度信息学习
论文: YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024)
作者: Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao (同 v4/v7 团队)
核心问题
深度神经网络逐层处理时,信息会不可逆地丢失。这导致最终用于计算损失的梯度不够可靠,影响模型学习。
YOLOv9 的回答: 用 PGI (Programmable Gradient Information,可编程梯度信息) 来确保梯度可靠。
两大核心技术
1. PGI (Programmable Gradient Information)
1 | PGI 由三部分组成: |
核心直觉:
- 深度网络 = 信息有损压缩管道
- 辅助可逆分支 = 保持原始信息的”备份通道”
- 多级辅助 = 确保各层都学到正确语义
2. GELAN (Generalized Efficient Layer Aggregation Network)
GELAN = ELAN 的泛化版本
1 | 传统 ELAN: 固定使用卷积块 |
设计原理: 梯度路径规划
1 | ┌─→ Block1 ──→ Block2 ─┐ |
通过精心设计路径确保每层都获得有效的梯度流,避免”梯度消失”。
架构
1 | 输入图像 |
训练时使用 PGI 完整架构,推理时仅保留主分支(无额外开销)。
信息瓶颈问题的可视化
不同架构在随机初始权重下,输出特征图的信息保留程度:
1 | PlainNet: ░░░░ 大量信息丢失 |
GELAN 保留最完整的信息 → 提供给损失函数的梯度最可靠
模型变体
| 变体 | 说明 |
|---|---|
| yolov9s | Small |
| yolov9m | Medium |
| yolov9c | Compact (紧凑版) |
| yolov9e | Extended (扩展版) |
优点与局限
✅ 优点
- 理论上优雅:从根本上解决深度网络信息丢失问题
- PGI 通用性强:可以用于其他网络架构
❌ 局限
- 训练架构 vs 推理架构不同,调试复杂
- 代码基于 v5 代码库实验性实现,不如 Ultralytics 稳定
- 工业落地不如 v8/v11 成熟
相关链接
- 📝 [[YOLO 系列总览]]
- 📝 [[YOLOv7 详解]] — 同作者团队
- 📋 [[10.clippings/感知算法/2D检测/单阶段/YOLO/一文全面梳理YOLO系列|从YOLOv1到YOLOv13,再到YOLO26]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TeachCraft Blog!
评论