博客
关于我
YOLOv7的一些理解
阅读量:497 次
发布时间:2019-03-06

本文共 2629 字,大约阅读时间需要 8 分钟。

官方版的YOLOv7相同体量下比YOLOv5精度更高,速度快120%(FPS),比 YOLOX 快180%(FPS),比 Dual-Swin-T 快1200%(FPS),比 ConvNext 快550%(FPS),比 SWIN-L快500%(FPS)。在5FPS到160FPS的范围内,无论是速度或是精度,YOLOv7都超过了目前已知的检测器,并且在GPU V100上进行测试,精度为56.8% AP的模型可达到30 FPS(batch=1)以上的检测速率,与此同时,这是目前唯一一款在如此高精度下仍能超过30FPS的检测器。具体比较详见下图:

YOLOv7在实时检测任务中展现了显著的性能优势,其在速度和精度之间的平衡远超现有模型。与YOLOv5相比,YOLOv7在相同体量下实现了更高的检测精度,同时在推理速度上提升了120%的FPS,显著提升了实时检测的效率。

1. 简介

近年来,模型结构重参数化和动态标签分配已成为网络训练和目标检测中重要的优化方向。然而,现有方法仍存在一些不足之处,例如:

  • 对于模型结构重参数化,用梯度传播路径的概念分析了适用于不同网络中各层结构重参化策略,提出了规划的模型结构重参化。
  • 当使用动态标签分配策略时,多输出层的模型在训练时会产生新的问题,例如怎样才能为不同分支更好的输出匹配动态目标。针对这个问题,作者提出了一种新的标签分配方法,称为coarse-to-fine(由粗到细)引导标签分配策略。

本文贡献

本文提出了一些关键技术和方法,具体包括:

  • 设计了几种可训练的bag-of-freebies,使实时检测器可以在不提高推理成本的情况下提高检测精度。
  • 提出了一种新的目标检测方法,解决了模型重参数化和动态标签分配策略中的关键问题。
  • 提出的“扩展”和“复合缩放”方法能够更高效地利用参数和计算量,同时降低实时检测器50%的参数量,并提升推理速度和检测精度。
  • 相关工作

    当前最先进的目标检测器通常具有以下特点:

    • 更快和更高效的网络架构
    • 更有效的特征积分方法
    • 更准确的检测方法
    • 更鲁棒的损失函数
    • 更有效的标签分配方法
    • 更有效的训练方式

    模型重参数化

    模型级重参数化主要有两种操作方式:

  • 使用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。
  • 对不同迭代次数下模型权重进行加权平均。
  • 模块重参数化是近年来一个比较流行的研究课题。在训练过程中将一个整体模块分割为多个相同或不同的模块分支,但在推理过程中将多个分支集成到一个完全等价的模块中。然而并不是所有提出的重参数化的模块都可以完美地应用于不同地架构。因此作者开发了新的重参数化的模块,并为各种架构设计了相关的应用程序策略。

    模型缩放

    模型缩放通过扩大或缩小baseline中rate,使其适用于不同的计算设备。NAS是现在常用的模型缩放方法之一。缩放因子通常包括以下内容:

    • input size
    • depth
    • width
    • stage

    模型设计

    在高效聚合网络的设计中,除了传统的参数量、计算量和计算密度外,还需要从内存访存的角度出发考虑输入/输出信道比、架构的分支数和元素级操作对网络推理速度的影响。Shufflenet论文提出了这一观点。在执行模型缩放时还需考虑激活函数,即更多地考虑卷积层输出张量中的元素数量。

    CSPVoVNet是VoVNet的一个变体,前者的体系结构还分析了梯度路径,使不同层能够学习更多样化的特征。E-ELAN是基于ELAN的扩展版本,在大规模ELAN中,无论梯度路径长度和计算模块数量如何,都达到了稳定的状态。但如果更多计算模块被无线堆叠,这种稳定状态可能会被破坏,参数利用率也会降低。本文提出地E-ELAN采用expand、shuffle、merge cardinality结构,实现在不破坏原始梯度路径情况下,提高网络地学习能力。

    在体系结构方面,E-ELAN只改变了计算模块中的结构,而过渡层结构则完全不变。作者的策略:利用分组卷积来扩展计算模块的通道和基数,将相同的group parameter和channel multiplier用于计算每一层中的所有模块。然后,将每个模块计算出的特征图根据设置的分组数打乱成G组,最后将它们连接在一起。这样,每一组特征图中的通道数将与原始体系结构中的通道数相同。最后,作者添加了G组特征来merge cardinality。除了维护原始的ELAN设计架构外,E-ELAN还可以指导不同的分组模块来学习更多样化的特性。

    bag-of-freebies

    卷积重参化

    尽管RepConv在VGG上取得了优异的性能,但将它直接应用于ResNet和DenseNet或其他网络架构时,它的精度会显著降低。作者使用梯度传播路径来分析不同的重参化模块应该和哪些网络搭配使用。通过分析RepConv与不同架构的组合以及产生的性能,作者发现RepConv中的identity破坏了ResNet中的残差结构和DenseNet中的跨层连接。

    辅助训练模块

    深度监督是一种常用于训练深度网络的技术,其主要概念是在网络的中间层增加额外的辅助头(Google也是这样),以及以辅助损失为指导的浅层网络权重。尽管对于像ResNet和DenseNet这样收敛效果好的网络结构,深度监督仍然可以显著提高模型在许多任务上的性能。本文中提出的方法是一种新的标签分配方法:通过引导头的预测来引导辅助头。首先使用引导头的预测作为指导,生成从粗到细的层次标签,分别用于辅助头和引导头的学习。这样做的目的是使引导头具有较强的学习能力,由此产生的软标签更能代表源数据与目标之间的分布差异和相关性。此外,作者还可以将这种学习看作是一种广义上的余量学习。通过让较浅的辅助头直接学习引导头已经学习到的信息,引导头能更加专注于尚未学习到的残余信息。

    其他可训练的bag-of-freebies

    • Batch normalization:目的是在推理阶段将批归一化的均值和方差整合到卷积层的偏差和权重中。
    • YOLOR中的隐式知识结合卷积特征映射和乘法方式:YOLOR中的隐式知识可以在推理阶段将计算值简化为向量。这个向量可以与前一层或后一层卷积层的偏差和权重相结合。
    • EMA Model:EMA 是一种在mean teacher中使用的技术,作者使用 EMA 模型作为最终的推理模型。

    实验

    该部分内容较为详细,建议阅读原文查看具体实验结果。

    转载地址:http://zqqfz.baihongyu.com/

    你可能感兴趣的文章
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    MySQL 常见的 9 种优化方法
    查看>>
    MySQL 常见的开放性问题
    查看>>
    Mysql 常见错误
    查看>>
    mysql 常见问题
    查看>>
    MYSQL 幻读(Phantom Problem)不可重复读
    查看>>
    mysql 往字段后面加字符串
    查看>>
    mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
    查看>>
    MySQL 快速创建千万级测试数据
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    MySql 手动执行主从备份
    查看>>
    Mysql 批量修改四种方式效率对比(一)
    查看>>
    mysql 批量插入
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>