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
2
串联网络层: 重参数化 ✅  (多分支融合收益大)
残差连接层: 重参数化 ❌ (破坏恒等映射,梯度路径变差)

策略: 在无残差连接的层使用 RepConv,有残差的地方保持原始结构。

2. 由粗到细的引导标签分配

问题: 多输出层时,如何为不同分支动态分配目标?

解决:

  • 粗阶段: 用简单的 IOU 匹配生成初始标签
  • 细阶段: 用精细化度量(如 SimOTA)重新分配
1
2
3
Head1 (大尺度) ← 分配小目标
Head2 (中尺度) ← 分配中目标
Head3 (小尺度) ← 分配大目标

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]]