理解yolov6网络结构

yolov6论文地址:https://arxiv.org/abs/2209.02976

 先上一张yolov6的网络架构

图片来源于网络 

BACKBONE

yolov6使用了repVGG作为backbone

        如果不了解repVGG的可以看原文

论文地址https://arxiv.org/pdf/2101.03697.pdf

        这里简单过一下,repVGG其核心思想是:通过结构重参数化思想,让训练网络的多路结构转换为推理网络的单路结构,结构中均为3x3的卷积核,同时,计算库(如CuDNN,Intel MKL)和硬件针对3x3卷积有深度的优化,最终可以使网络有着高效的推理速率。

        其中

1、多路结构在模型训练时具有性能高的优势

2、推理时转化为单路结构具有速度快省内存的好处

        由于多路结构在不同的分支应用不同大小的卷积核,能够获得不同的感受野,从而能够获得更高的性能,但是在计算过程中需要保存中间结果,显存占用量会增大,只有多路融合时,显存才会降低,显存占用增加推理速度就会受到一定的影响。为了提高网络的性能,产生了一些性能优异的网络组件,如深度可分离卷积,分组卷积等,对于可分离卷积,虽然能降低FLOPs,但是内存访问成本增大,这也导致推理速度变慢。

        为了权衡性能和效率,repVGG使用重参数化思想,在训练时使用多分支结构提升网络性能,在推理时,将网络变为单路结构。

        在论文中作者有给出3x3卷积和其他尺寸卷积的效率对比

        3x3卷积的计算密度(理论运算量(Theoretical FLOPs ÷ Time usage)除以所用时间)可达1x1和5x5卷积的4倍;

        另外 VGG是一个直筒型单路结构,单路结构会占有更少的内存,因为不需要保存其中间结果,同时,单路架构非常快,因为并行度高;

        最后多分支结构会引入网络结构的约束,比如Resnet的残差结构要求输入和卷积出来的张量维度要一致,这种约束导致网络不易延伸拓展,也一定程度限制了通道剪枝,同时仅有3x3的卷积方便加速芯片的设计从而提高效率。

        repVGG的结构如下:

        可以看出,在原始VGG基础上,引入残差分支和1x1卷积分支,为了后续重参数化成单路结构,这里调整了分支放置的位置,没有进行跨层连接,repVGG论文中的试验也证明了残差分支和conv_1x1均能对网络性能起到提升作用。

其中有两个比较重要的操作

        1、卷积层和BN层的合并:

BN层的计算公式:

合并后:

         2、卷积层的合并:

        能看到这的相信对卷积这个概念比较熟了,repVGG中的3x3的卷积就不多说了,其中1x1的卷积可以类比于3x3的卷积,在卷积核周围使用全0进行padding,在对输入中的相应位置计算卷积结果。indentity可以看成是特殊的1x1卷积,相当于对应通道上的卷积核参数为1,其余卷积核的参数为0,再对其进行padding,得到3x3的卷积。        

        通过以上的合并,可以大大提升网络的推理速度 

NECK

        在 Neck 设计方面,为了让其在硬件上推理更加高效,以达到更好的精度与速度的平衡,美团提出了Rep-PAN ,Rep-PAN基于 PAN拓扑方式,用 RepBlock 替换了 YOLOv5 中使用的 CSP-Block,同时对整体 Neck 中的算子进行了调整,目的是在硬件上达到高效推理的同时,保持较好的多尺度特征融合能力

 注意:这里的C5对应最顶端流程图SPPF

        为了方便直接用了美团给的neck结构图,C5输出20*20*512大小的特征图,通过1*1卷积后变成20*20*128的大小,上采样成40*40*128后与C4 concat成40*40*384的大小,C4经过repblock和1*1卷积得到40*40*128的特征图,上采样后concat成80*80*192的特征图。最后经过右边的repblock和3*3卷积输出P3,P4,P5(大小分别为80*80*64,40*40*128,20*20*256)。

HEAD

        head分别对应了p3,p4,p5三层输出进行预测 ,借鉴了YOLOX的解耦头设计,并进行了改进,每个分支上先对特征图进行卷积,做特征图的特征融合,之后分成两个分支,一个通过两个卷积完成分类任务,另一个卷积后再分成两个分支,一个卷积完成前背景的分类,另一个卷积完成边界框的回归,最后再通过concat在channel层上融合,输出预测结果,该结果需要进行后处理得到最终结果。

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Visio 是一款非常有效的绘图工具,可以帮助我们绘制各种网络结构图。Yolov7 是一种目标检测算法,具有很高的精度和速度,在图像处理领域得到了广泛应用。 要使用 Visio 绘制 Yolov7 网络结构,我们首先需要了解 Yolov7 的架构。Yolov7 采用了 Darknet53 作为其主干网络,并在其上添加了多个检测层。 我们可以按照以下步骤使用 Visio 绘制 Yolov7 网络结构: 1. 打开 Visio 软件,在空白画布上创建一个新的绘图。 2. 在绘图工具栏上选择需要绘制的形状,例如矩形、圆形等。 3. 将 Darknet53 主干网络作为 Yolov7 的第一层,绘制一个大矩形,并标注为 Darknet53。 4. 在 Darknet53 的下方,绘制多个较小的矩形,代表检测层。根据 Yolov7 的结构,可能有多个检测层,每个检测层负责不同尺度的目标检测。 5. 在每个检测层的矩形内,根据具体的结构要求绘制各个卷积层、池化层和全连接层。这些层可以使用 Visio 的线条和文本工具进行绘制和标注。 6. 确保每个层次之间有适当的连接线,表示数据流的传输和处理。 7. 添加必要的注释,包括各个层次的名称、输入输出的尺寸等信息。 8. 在绘图完成后,检查并调整绘图的布局和格式,以确保图像清晰易读。 通过以上步骤,我们可以使用 Visio 绘制出 Yolov7 的网络结构图。这样的图像可以帮助我们更好地理解 Yolov7 的结构,并在开发和调试过程中提供参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

athrunsunny

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

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

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

打赏作者

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

抵扣说明:

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

余额充值