YOLOv7 详解
YOLOv7: Trainable Bag-of-Freebies
论文: YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (CVPR 2023)
作者: Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao (同 v4 团队)
核心哲学
不追求全新架构,而是在训练策略和网络设计细节上做精细优化。
核心贡献:提出 可训练 BoF (Trainable Bag-of-Freebies) 概念。
关键创新
1. 计划重参数化 (Planned Re-Parameterization)
不是所有层都适合重参数化!需要根据梯度传播路径有选择性地使用。
1 | 串联网络层: 重参数化 ✅ (多分支融合收益大) |
策略: 在无残差连接的层使用 RepConv,有残差的地方保持原始结构。
2. 由粗到细的引导标签分配
问题: 多输出层时,如何为不同分支动态分配目标?
解决:
- 粗阶段: 用简单的 IOU 匹配生成初始标签
- 细阶段: 用精细化度量(如 SimOTA)重新分配
1 | Head1 (大尺度) ← 分配小目标 |
3. 扩展与复合缩放
为实时检测器设计的专用缩放策略。
| 缩放方法 | 说明 |
|---|---|
| 深度缩放 | 加深 Backbone |
| 宽度缩放 | 加宽通道 |
| 复合缩放 | 深度+宽度+分辨率同步缩放 |
效果: 参数和计算量减少 40%,速度提升 50%,精度不降。
E-ELAN 架构
ELAN (Efficient Layer Aggregation Network)
1 | 输入 → 多分支卷积 → 聚合 → 输出 |
设计原则: “最短最长梯度路径” —— 控制梯度流动的路径长度,让最浅和最深路径都获得有效梯度。
E-ELAN (Extended ELAN)
用分组卷积扩展 ELAN 的计算块,保持原梯度路径不变的同时增加多样性:
1 | ELAN → 分组扩展 → shuffle → merge → E-ELAN |
模型系列
| 变体 | 特点 |
|---|---|
| yolov7-tiny | 轻量级,边缘设备 |
| yolov7 | 标准版 |
| yolov7-x | 加大版 |
| yolov7-w6 | 更高分辨率输入 |
| yolov7-e6 | 扩展版 |
| yolov7-d6 | 最大版 |
| yolov7-e6e | 极致版 |
性能
| 模型 | mAP (COCO) | FPS (V100) |
|---|---|---|
| YOLOX-L | 50.0% | 68 |
| YOLOv5-L | 49.0% | — |
| YOLOv7 | 51.2% | 161 |
| YOLOv7-X | 53.1% | 114 |
| YOLOv7-E6 | 56.8% | 36 |
| YOLOv5-X | 50.7% | — |
| YOLOR-D6 | 55.4% | — |
在 5~160 FPS 范围内,速度和精度均超过所有已知实时检测器。
局限性
- 仅支持推理,无训练代码(社区实现可用)
- 架构较复杂,不如 v5/v8 易用
- v6(美团版)在工业部署上更具优势
相关链接
- 📝 [[YOLO 系列总览]]
- 📝 [[YOLOv6 详解]]
- 📋 [[10.clippings/感知算法/2D检测/单阶段/YOLO/一文全面梳理YOLO系列|从YOLOv1到YOLOv13,再到YOLO26]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TeachCraft Blog!
评论