YOLOv7 是目标检测领域的一个重要模型,其在速度和精度之间取得了较好的平衡。其中的**辅助检测头(Auxiliary Head)和重参数化(Re-parameterization)**是其核心创新点。以下是对这两个技术的详细解析:
一、辅助检测头(Auxiliary Head)
1. 设计动机
- 问题:深层神经网络在训练时,浅层特征可能难以直接学习到有效的目标信息,导致梯度消失或收敛困难。
- 解决方案:引入辅助检测头,通过在中间层(浅层)添加额外的检测头,提供额外的监督信号,帮助浅层特征更好地学习目标定位和分类信息。
2. 实现细节
- 结构位置:辅助检测头通常附加在网络的中间层(例如 Backbone 的某些阶段),而非最终的输出层。
- 作用阶段:
- 训练阶段:辅助头和主检测头(Main Head)同时参与损失计算,通过加权损失(如分类损失、回归损失)共同优化模型。
- 推理阶段:仅保留主检测头,移除辅助头,因此不会增加推理时的计算量。
- 损失权重:辅助头的损失通常会被赋予较小的权重(例如 0.25),以避免干扰主检测头的学习。
3. 优势
- 梯度传播优化:辅助头通过中间层的监督信号,缓解了深层网络的梯度消失问题。
- 特征强化:浅层特征在辅助头的监督下能更好地提取细节信息(如小目标特征)。
- 精度提升:实验表明,辅助头可以显著提升模型在复杂场景下的检测精度。
二、重参数化(Re-parameterization)
1. 设计动机
- 问题:传统卷积网络在训练和推理时结构固定,难以同时兼顾训练时的多样性和推理时的高效性。
- 解决方案:通过重参数化技术,在训练时使用复杂的多分支结构(提升性能),在推理时将其等价转换为单分支结构(提升速度)。
2. 实现细节
- 训练阶段:
- 使用多分支结构,例如并行多个卷积层(3×3 卷积、1×1 卷积、Identity 分支等)。
- 每个分支可能附加 Batch Normalization(BN)层。
- 分支的多样性增强了模型的表征能力。
- 推理阶段:
- 通过数学等价变换,将多分支结构合并为单一卷积操作。
- 例如,将多个卷积核参数融合为一个,同时合并 BN 层的参数。
3. 具体操作(以 RepConv 为例)
- 训练阶段结构:
RepConv = 3×3 Conv + 1×1 Conv + Identity (Skip Connection)
- 推理阶段合并:
- 将 1×1 卷积和 Identity 分支通过零填充转换为等效的 3×3 卷积。
- 将所有 3×3 卷积的权重和偏置相加,合并为单个卷积层。
- 合并 BN 层的参数(均值、方差、缩放因子等)。
4. 优势
- 训练性能提升:多分支结构增强了模型的非线性表达能力。
- 推理速度优化:合并后的单分支结构减少了计算量,保持高推理速度。
- 无缝切换:无需额外微调,训练和推理结构自动转换。
三、辅助头与重参数化的协同作用
- 训练阶段:
- 辅助头提供中间监督信号,优化浅层特征。
- 重参数化的多分支结构提升模型表征能力。
- 推理阶段:
- 移除辅助头,减少计算量。
- 重参数化合并分支,进一步提升速度。
四、实验效果
- 精度提升:在 COCO 数据集上,YOLOv7 相比 YOLOv5 在相同速度下精度提升显著。
- 速度优化:重参数化技术使得推理速度与单分支模型相当,甚至更快。
五、总结
- 辅助检测头:通过中间监督优化训练过程,提升浅层特征质量。
- 重参数化:通过训练时多分支、推理时单分支的设计,兼顾性能与速度。
- YOLOv7 的核心思想:在训练阶段引入复杂性以提升性能,在推理阶段通过结构优化保持高效性。
这两个技术共同作用,使得 YOLOv7 在目标检测任务中达到了 SOTA 的平衡。