作者:毛毛-刘庆 | 来源:互联网 | 2023-08-06 04:59
本文主要介绍关于人工智能,深度学习,计算机视觉的知识点,对理解yolov6网络结构和yolov5训练目标检测模型有兴趣的朋友可以看下由【athrunsunny】投稿的技术文章,希望该技术和经验能帮到你
本文主要介绍关于人工智能,深度学习,计算机视觉的知识点,对理解yolov6网络结构和yolov5训练目标检测模型有兴趣的朋友可以看下由【athrunsunny】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的深度学习笔记相关技术问题。
yolov5训练目标检测模型
先上一张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层上融合,输出预测结果,该结果需要进行后处理得到最终结果。
本文《理解yolov6网络结构》版权归athrunsunny所有,引用理解yolov6网络结构需遵循CC 4.0 BY-SA版权协议。