早期的卷积神经网络结构比较简单,随着深度学习的发展卷积神经网络的结构也在不断优化,很多优秀的结构不断被提出,本文主要对一些常用的优秀网络结构进行总结。
ResNet网络结构提出了一种残差结构,通过short connetction连接将底层特征图和高层特征图进行连接。如下图所示,假设输入x学习到的特征图为H(x),现在希望可以学习到一个残差结构F(x)=H(x)-x,所以真实原始的学习特征是F(x)+x。
resNet认为学习F(x)+x要比直接学习H(x)更容易,(直观上我们可以认为F(x)需要学习的内容少一些,所以学习难度小些),而且可以解决深层网络的梯度消失问题。
inception结构是GoogleNet的核心模块,Inception V1结构图如下:
其核心思想不是从深度出发,而是从网络的宽度出发,通过1*1卷积,3*3卷积,5*5卷积,3*3最大池化四种网络层进行组合,通过多个卷积核提取输入不同尺度的信息,最后进行并行融合让特征图得到更好的表征。其中也巧妙使用了1*1卷积核对特征图进行升降维。
Inception V2结构主要使用两个3*3卷积代替了5*5卷积,降低参数量;另外提出了BN提升忘了训练速度。
Inception V3结构提出将二维卷积拆分为两个较小卷积,比如将7*7卷积拆分为7*1和1*7。这种非对称卷积拆分不仅降低了参数量,而且有更丰富的空间特征。
Inception-resnet结构将inception结构结合了残差结构。
densenet的网络结构如下图所示,dense结构是残差结构的升级版,每一层的输入来自所有层的输出。由于每一层都和前面层相连,不同层之间建立了联系充分利用了特征图,也进一步减轻了梯度小时问题。另外densenet网络中每层都设计的很窄,减少了参数量和计算量。
shuffleNet是一种轻量级网络,ShuffleNetV1提出了通道洗牌操作提升性能的同时解决分组通道之间的信息流通;shuffleNet V2指出不能仅使用FLOPs评估模型性能,还需要从内存消耗,GPU执行效率等方便进行优化,从而提出更高效的网络。下面简单介绍下shufflenet V1和V2。
mobilenet提出的深度可分离卷积在前文我们已经进行了详细的介绍,它也是为了在移动端部署提出的轻量级网络,其FLOPs为
通常情况下c2是要远大于k*k的,所以深度可分离卷积的性能瓶颈不在depthwise部分而在pointwise 部分。所以要进行优化需要可以从pointwise conv入手,引入分组卷积来提升性能,如下图(a)所示。但是此结构有个缺点是分组后,组与组之间的信息没有沟通,会降低特征表达影响精度。应该如图(b)所示结构让不同组的输入进行重组得到关联。shufflenet v1提出了通道洗牌的一个更高雅的实现方式(c)
Channel Shuffle的操作为:
ShuffleNet V2从内存访问代价(Memory Access Cost,MAC)和GPU并行性进一步提升模型效率。主要从以下几个准则上进行提升:
这篇文章对shuffleNet进行了详细的:https://zhuanlan.zhihu.com/p/51566209
Squeeze-and-Excitation Networks(SENet)是2017年LSVR竞赛的冠军。
其网络结构如下:
SENet是一个通道级别的attention机制,seBlock是一个可插入式结构,可以方便的在原有网络层加入。
如上图,首先对于特征图U,在通道上进行Squeeze过程,可以使用Global Average Pooling,每个通道压缩为一个点;然后进行Excitation过程,使用全连接对GAP后的特征通道间的信息进行交互得到一个1*1*C的矩阵(后面会接一个sigmoid),可以认为它代表了每个通道的权重或者说是attention;最后将这个通道attention和特征图U相乘得到新的重要通道增强,不重要通道削弱了的特征图。
双重注意网络(Dual Attention Network)在通道和位置维度上融合了局部特征和全局特征。
结构图如下:
结构中分为位置注意力模块和通道注意力模块。
其中Position attention module考虑了局部信息,每个位置的值是特征图中每个位置加权求和。如上图A 所示,特征图A通过卷积得到特征图BCD,BCD通过reshape得到C*(HW);然后B的transpose(HW)*C和C特征图C*(HW)相乘,通过softmax得到HW*HW的空间注意力矩阵S;D矩阵(C*HW)再和S矩阵进行乘法,得到加权后的矩阵最后和A进行相加得到最终输出E。
Channel attention module考虑的通道信息,每个通道是由所有通道加权求和。如上图B所示。其中注意力特征channel attention map X矩阵为C*C。
两个注意力模块最终进行求和融合得到最终特征图。
Asymmetric Convolution Net(ACNet)的优势是在提升效果的同时,没有带来额外的参数以及计算量。ACNet的主要思路是在训练阶段增加卷积层来强化特征提取提升效果,在推理阶段融合卷积核,实现0计算量增加的等价卷积。
其中在推理阶段能不增加计算量的原因是卷积原理,K(1)和I卷积,K(2)和I卷积,然后结果相加,与先进行K(1)和K(2)相加后再和I卷积的得到的结果是一致的。如下公式:
下图展示了ACNet的思想
ACNet的训练阶段:将原始的3*3的卷积换为3*3,3*1和1*3卷积,最终将这三个卷积层的结果进行融合作为输出。
ACnet的推理阶段:将三个卷积融合为一个3*3的卷积,这样就和原始网络结构一致了,只是参数采用的是特征能力更强的参数也就是三个卷积融合后的卷积核参数,所以和原始结构相比,推理结构并没有增加计算量。
总结ACnet在训练阶段强化了原始网络的特征提取能力,在推理阶段融合卷积达到不增加计算量的目的。
结构重参数化指的是首先构造一个结构用于训练,然后在推理阶段将参数等价转换为另一组参数。这样在训练过程中我们可以利用较大开销,但是在推理阶段使用小开销。也可以理解微重参数化结构在训练阶段加入了一些可以在推理阶段去掉的参数。
上面介绍的ACNet就是利用了结构重参数化,用K*K,1*K,K*1三个结构替换K*K的卷积。
RepVGG
论文连接:https://arxiv.org/pdf/2101.03697.pdf
RepVGG的重参数化结构,是Reparam(3*3)3*3-BN + 1*1-BN + BN。也就是对于3*3的卷积在训练过程中使用构造一个并行的恒等和1*1的卷积分支,并各自经过BN层后再相加。
结构和实现原理如下图,其中第二个图很好的解释了去BN的过程
Diverse Branch Block(DBB)
论文连接:https://arxiv.org/abs/2103.13425
DBB的重参数化采用了Peparam(K*K)=K*K-BN + 1*1-BN-AVG-BN + 1*1-BN-K*K-BN。主要是用了多分支的结构来丰富特征,其效果要优于ACNet。
其结构图如下图
论文指出DBB使用了六种转化结构
https://zhuanlan.zhihu.com/p/360939086 文章对论文有详细的解析,本文不重点介绍。
参考:
https://zhuanlan.zhihu.com/p/79727336
https://zhuanlan.zhihu.com/p/51566209
https://zhuanlan.zhihu.com/p/361090497
https://zhuanlan.zhihu.com/p/131282789
https://zhuanlan.zhihu.com/p/360939086
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。