首页IT科技yolov5讲解(关于YOLOv7的分析)

yolov5讲解(关于YOLOv7的分析)

时间2025-05-03 05:32:23分类IT科技浏览3778
导读:YOLOv6刚刚推出不久,YOLOv7就带着论文和源码来了,并且获得了YOLO社区各位大佬的认可,在速度和精度上的提升很大。和YOLO系列类似,YOLOv7也分别对边缘GPU、常规GPU和云端GPU做了几种不同深度和宽度的模型,论文的最后也与YOLOv6进行了比较,也是有较大的提升,但性能曲线仍然需要进行测试与更新完善。同样的,这...

YOLOv6刚刚推出不久           ,YOLOv7就带着论文和源码来了               ,并且获得了YOLO社区各位大佬的认可     ,在速度和精度上的提升很大           。和YOLO系列类似           ,YOLOv7也分别对边缘GPU          、常规GPU和云端GPU做了几种不同深度和宽度的模型                ,论文的最后也与YOLOv6进行了比较     ,也是有较大的提升     ,但性能曲线仍然需要进行测试与更新完善               。同样的                ,这篇文章我也将从网络结构和tricks的角度与YOLO系列进行对比分析          ,鉴于目前论文与源码有较大出入     ,此处我选择使用源码为主要的参考对象     。此篇文章是在7月初编写                ,可能会与现有的源码有所出入          ,如在月末增加了关于head部分阴性参数的融合           。

论文: https://arxiv.org/abs/2207.02696

源码: https://github.com/WongKinYiu/yolov7

backbone & neck

在主干网络和neck上最大的区别是使用了E-ELAN代替原来的CSPDarknet53和设计了DownC代替普通卷积进行下采样,在结构方面与YOLOv5相差并不算大                ,以及参考CSP结构重新设计了SPP模块               ,最后也是输出三种尺寸的特征图和使用FPN-PAN进行特征融合与提取                。在YOLOv7的模型中并没有使用论文中标准的E-ELAN结构,而是设计了简化的ELAN           ,但是在YOLOv7-E6E的yamI文件中有单独算子组成的结构配置     。

在设计高效网络时               ,作者认为不仅可以从参数量                、计算量和计算密度考虑     ,还可以分析输入和输出的信道比     、架构的分支数和元素级操作对网络推理速度的影响     。因此           ,作者提出了基于ELAN网络扩展的E-ELAN                ,采用了expand     、shuffle                、merge cardinality结构     ,使得在不破坏原始梯度路径的前提下     ,提高网络的学习能力                。论文的思路是使用分组卷积来扩展计算模块的通道和基数                ,将相同的组参数和通道参数用于计算每一层中的所有模块(expand);然后将每个模块计算出的特征图根据之前设定的分组数打乱成X组          ,再将它们连在一起(shuffle);最后     ,添加X组特征将每个模块融合在一起(merge)          。以上内容在目前的源码中还未更新                ,甚至ELAN的论文:Designing network design strategies[1]也尚未发表          ,因此仍然需要持续的关注     。

DownC模块使用了三种最基本的结构,包括1x1和3×3两种卷积核和Maxpool                ,源码中作者将Maxpool分为两种               ,一种是k=2,s=2的MP           ,另一种是k=3               ,p=1     ,s=1的SP           ,而DownC使用的是MP方案                。同样参考了多支路的方案                ,一条路使用MP进行特征图尺度的缩放     ,另一条使用s=2的3×3卷积进行尺寸缩放     ,最后在通道方向上进行concat合并          。

利用金字塔池化操作与CSP结构设计的SPPCSP来代替原有的SPP也是为了创造多支路的模块                ,由1×1和3×3卷积核以及SPP模块组成          ,CSP结构[2]的加入可以实现更丰富的梯度组合     ,同时减少计算量。此处的Maxpool为SP池化方案                ,分别取k = 5, 9,13          ,并令P = k // 2实现金字塔池化操作                。

head

在head部分,YOLOv7加入了RepConv,RepConv在训练时有3个支路分别为1×1           、3×3卷积和BN                ,而在模型部署时可以将3个支路的卷积和BN进行等效融合               ,形成VGG结构的3×3卷积,从而加速模型推理的速度               。论文中也详细研究了RepConv在多支路网络中的效果           ,发现RepConv自带的多支路会削弱如CSP和残差网络的特征提取能力               ,因此选择了只有1×1     、3x3卷积两支路的RepConvN结构在多支路网络中使用。RepConvN在源码中有体现     ,但在现有的YOLOv7网络中           ,并没有运用到多支路的结构           。

此外                ,在head部分还引入了深度监督(Deep supervision)[3]和标签分类器(label assigner)等tricks     ,虽然添加了很多可训练的内容     ,但不会过多的增加网络的计算量和参数量                ,因此作者称之为Trainable bag-of-freebies               。论文中还提到了YOLOR[4]中隐式知识结合卷积特征映射和乘法方式;并使用了EMA模型[5]作为最终的推理模型          ,利用多种tricks结合来提升推理速度和精度     。

深度监督即在网络中添加额外的辅助头(auxiliary head)     ,并以浅层网络权重的辅助损失为指导                ,用于辅助网络的训练;作者也将最终输出结果的检测头称为引导头(lead head)           。不过YOLOv7中只使用了与YOLOR相似的IDetect作为检测头          ,作者将auxiliary head和lead head集成到了IAUXDetect中,在YOLOv7-E6E等较大的模型中有所展现                。作者还认为                ,可以通过较浅的辅助头直接学习引导头已经学习到的东西               ,使得引导头可以更加专注于尚未学习到的残余信息     。

标签分类器首先使用引导头的预测作为指导,生成从粗到细的层次标签           ,分别用于辅助头和引导头的学习     。设计软标签的好处时使得引导头有较强的学习能力               ,且软标签更能代表源数据与目标之间的分布差异和相关性                。此处     ,作者生成了两种标签           ,粗标签和细标签                ,其中细标签与引导头在标签分类器上生成的软标签相同     ,而粗标签是通过降低正样本分配的约束     ,允许更多的网络作为正目标          。

总结

YOLOv7的作者是CSPNet               、YOLOR等论文的作者之一                ,因此YOLOv7的文章包括代码都保留了他们先前的工作经验          ,尤其是在设计多支路的特征提取层和YOLOR的隐式知识检测头方面     。源码中提供了CSPNet中提到的3种不同的多支路排列方式A           、B、C     ,且对于RepConv也做出了相当多的实验和改进;也对YOLOR的隐式知识检测头进行了扩展                ,有I-Detect               、I-AUXDetect和I-Bin三种                。至于为什么RepConv删去identity支路在多支路模块中会有更好的表现结果          ,以及ELAN网络的设计思路和主要优势等问题,仍然需要论文 Designing network design strategies 发表后做出解释          。

此外                ,源码还需要等待更新               ,不同模型和数据集上的实验也需要社区的人跟进,目前与论文仍有较大的出入           ,如深度监督和完整的E-ELAN并没有应用到边缘GPU的模型中               ,现在的网络设计训练速度较慢等问题。鉴于YOLOv7可以连接多种任务头进行训练和部署     ,也期待其在如分类                、分割、3D姿态估计等方面的表现                。

Reference

1.Designing network design strategies

2.CSPNet: A New Backbone that can Enhance Learning Capability of CNN

3.Deeply-Supervised Nets

4.You Only Learn One Representation: Unified Network for Multiple Tasks

5.Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
脉冲神经网络芯片(一文通俗入门·脉冲神经网络(SNN)·第三代神经网络) 域名备案app(新顶级域名vip备案攻略:简单快速备案正解)