YOLOv7论文解读

引言

yolov7由yolov4原版人马打造,目的是将yolo算法打造的更快,更好!YOLOv7 在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的物体检测器,并且在 GPU V100 上 30 FPS 或更高的所有已知实时物体检测器中具有最高的准确度 56.8% AP。 YOLOv7-E6 目标检测器(56 FPS V100,55.9% AP)比基于变压器的检测器 SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9% AP)的速度和准确度分别高出 509% 和 2%,以及基于卷积的检测器ConvNeXt-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP) 速度提高 551%,准确率提高 0.7%,以及 YOLOv7 的表现优于:YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR、Deformable DETR , DINO-5scale-R50, ViT-Adapter-B 和许多其他物体探测器在速度和准确度上。YOLOv7是在在 MS COCO 数据集上从头开始训练 YOLOv7,而不使用任何其他数据集或预训练的权重。作者提出YOLOv7主要基于以下四个方面,对原有模型进行修改
● 网络架构
● 模型重参数化(model re-paramterization)
● 动态标签匹配技术(dynamic label assignment technology)
● bag-of-freebies
在这里插入图片描述

相关工作

实施目标检测器

目前最先进的目标检测器主要基于YOLO和FCOS
作者认为先进的目标检测模型通常具有以下特征:

  1. 更快更强的网络架构
  2. 更有效的特征集成方法
  3. 更精确的检测方法
  4. 更强大的损失函数
  5. 更有效的标签分配方法
  6. 更有效的训练方法
    而作者主要从上面的4,5,6三点对YOLO算法进行改进

模型参数重参化技术

模型参数重参化技术(model re-parameterization technology)在推理阶段将多个模型合并成为一个。可以看做是一个集成技术。集成分成两类:模块级集成和模型级集成
为了获取最终的推力模型,通常有两种常见的模型级重参化技术

  1. 使用不同的训练数据训练多个相同的模型,然后平均模型权重
  2. 对于不同迭代次数的模型进行加权平均
    模块级重参化也是近几年的研究热点,这种方法在训练期间把一个模块分成多个相同或者不同的模块分支 并在推理阶段将多个不同模块分支合并成完全等价模块。然而,并不是所有提出的重参化模块都能完美的应用在不同的网络架构上,基于这点,作者提出了新的参数重参化模块,并为不同的模型设计了相关应用策略

模型缩放

模型缩放是一种放大或缩小已设计模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,例如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔的数量),在网络参数的数量、计算量、推理速度和准确性上取得良好平衡。

网络架构

ELAN:Extend efficient layer aggregation networks

在这里插入图片描述

作者对网络架构进行新的设计,他在ELAN的基础上进行改进,提出了Extend-ELAN(E-ELAN)。ELAN旨在通过控制最长最短梯度路径,深度网络可以进行有效的学习和收敛。在大规模E-LAN网络中如果大规模堆叠计算模块,会破会模型的稳定状态,导致模型参数利用率下降
作者提出的E-ELAN利用extend,shuffle,merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络的学习能力。利用卷积组扩展通道和计算模块的基数,从而增加特征基数,并以shuffle和merge cardinality的方式组合不同的特征。通过这种方式可以增强不同特征图学到的特征,从而改进参数的使用和计算效率

在体系架构方面,E-ELAN 只改变了计算模块的体系架构,而过渡层的架构完全没有改变。作者使用的策略是用组卷积来扩展计算块的通道和基数。对计算层的所有计算模块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数g被打乱成g个组,然后将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,我们添加 g 组特征图来执行合并基数。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算模块学习更多样化的特征。

Model scaling for concatenation-based models

模型缩放通过改变模型的宽度、深度、分辨率来生成不同大小的模型
如果将上述E-ELAN方法应用到基于级联的模型,作者发现,当对深度进行放大缩小时,基于级联的计算模块之后的过渡层通道会随之减少或增加,如下图a->b所示
在这里插入图片描述

如果按比例放大深度,这种行为会导致输入输出通道比例发生变化,从而导致模型硬件使用率下降。因此对于级联模型,必须提出一种复合模型所方法,在考虑计算模块深度因子缩放的同时也考虑过渡层宽度因子做同等量的变化,如上图c所示

Trainable bag-of-freebies

Planned re-parameterized convolution

尽管RepConv在VGG上取得优异性能,但在其他网络结构(如ResNet ,DenseNet)上精度却会显著下降。基于此,作者利用梯度流传播路径来分析如何将重参化卷积核其他不同的网络模型进行结合,从而提出了规划后的重参化卷积
RepConv通常是在一个卷积层中包含了3X3卷积, 1X1卷积和恒等映射,如下图所示
在这里插入图片描述

在分析了 RepConv 和不同架构的组合和对应的性能后,作者发现RepConv中的恒等映射会破坏ResNet 和 DenseNet 中的连接性,为不同的特征图映射提供更多的梯度多样性。基于此,作者使用无恒等映射的RepConv(RepConvN)来设计规划重参化卷积结构,如下图所示
在这里插入图片描述

在作者的思维中,当一个带有残差或者拼接的卷积层被重新参数化石,不应该存在恒等映射。研究如下
在这里插入图片描述

Coarse for auxiliary and fine for lead loss

在这里插入图片描述

辅助头(Aux head)指使用网络中间层进行损失计算来辅助网络训练。如上图(a)无辅助头,(b)有辅助头。一般来说,在训练时添加辅助头可以带来更好地性能,在推理时,去掉辅助头,加速模型推理速度。作者将最终负责预测的head成为lead head,用于辅助训练的成为aux head。用于训练两个head样本分配策略如图(d)和(e)所示。
在目标检测领域,研究者常常会利用网络输出的质量和分布,其输出结果与ground true相结合,使用一些计算和优化方法来生成可靠的软标签。例如YOLO 使用边界框回归和ground true与预测框的IOU作为软标签。在论文中,作者把将网络预测结果与ground true结合起来然后分配标签的机制成为“label assigner”
那么如何将软标签分配给aux head和lead head呢?
常用的方法如图5(c)所示,使用各自的预测结果和ground true来执行标签分配。本文作者提出了一种新的标签分配方法,通过lead head预测结果来引导aux head和lead head。即使用lead head预测结果作为指导,生成从粗到细的层次标签,用于aux head和lead head训练

Other trainable bag-of-freebies

● Batch normalization in conv-bn-activation topology:这部分主要是将批归一化层直接连接到卷积层。这样做的目的是在推理阶段将批归一化的均值和方差整合到卷积层的偏差和权重中。
● YOLOR中的隐式知识结合卷积特征图加法和乘法方式:YOLOR中的隐式知识可以在推理阶段通过预计算简化成向量,该向量可以与前一层或者后一层卷积层的权重和偏置相结合
● EMA模型:EMA是一种mean teacher中使用的技术,作者使用EMA模型作为最终的推理模型
实验
● 与其他baseline目标检测模型对比
在这里插入图片描述
● 与其他实施先进的目标检测模型作对比
在这里插入图片描述

● 模型缩放消融实验
在这里插入图片描述
● 使用 planned RepCovN的消融实验
在这里插入图片描述

在这里插入图片描述

● 提出辅助头的消融实验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
● 精度、速度对比图
在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heromps

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值