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

yolov5讲解(关于YOLOv7的分析)

时间2025-07-31 01:18:00分类IT科技浏览4587
导读: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
用js做一个倒计时(时分秒)(如何利用js来制作时间倒计时效果) grapeseed葡萄籽胶囊功效(GraphQL在react中的应用示例详解)