[卷积神经网络]基干网络之VGG、ShuffleNet

一、VGG

        VGG是传统神经网络堆叠能达到的极限深度

        VGG分为VGG16和VGG19,其均有以下特点:

                ①按2x2的Pooling层,网络可以分成若干段

                ②每段之内由若干same卷积操作构成,段内Feature Map数量固定不变;

                ③Feature Map按2的倍数递增(64-128-256-512),第四段后均为512

        由于这种特性,可以根据任务灵活调整段数,段每增加一段,Feature Map尺寸减小一半

        ①网络结构

                 两个模型均分为5个Block,每个Blcok以下采样连接;每个Block均使用3x3卷积核;随着模块边深,Channel数会翻倍。

                其均具备以下性质:

                        ①输入尺寸均为224x224;

                        ②均有5层Max Pooling,最终都会产生7x7的Feature Map;

                        ③特征层会经过两个4096的全连接,最后再连接一个1000类的softmax分类器;

                        ④其模型均可表述为mx(nx(conv33)+max_pooling)

                一般会将VGG的卷积核更换为3x3或1x1的小尺寸卷积核来提升性能。(同感受野的情况下,小尺寸卷积核有更深的深度;感受野公式—rf size=(out-1)x stride+ksize)

                VGG网络的卷积核个数:

                        VGG-16:2,2,3,3,3

                        VGG-19:2,2,4,4,4

                随着网络层数的增加,像素维度的长宽降低,语义层面的通道上升。

        ②VGG16

                特征图尺寸变化如下

                 资源消耗:     内存占用大部分由前两个卷积层贡献

                                        参数量大部分由第一个全连接层贡献

                VGG精度一般,且参数量较大

                相较于AlexNet,VGG使用3x3卷积核(1步长),丢失信息量较少,且不使用归一化。

        ③3x3卷积核

                2层叠加的3x3卷积核等价于一个5x5卷积核;3层叠加的3x3卷积核等价于一个7x7卷积核

                虽然其感受野尺寸相同,但是更深的网络可以带来:更强的非线性、更好的表示能力;更少的参数个数

二、ShuffleNet V1

        ①Group Pointwise Convolution(分组1x1卷积)

                 每个卷积核仅处理一部分通道(传统卷积一个卷积核处理全部通道),可以有效减少参数数量。

        ②Channel Shuffle(通道重排)

                目的是引入跨组的信息交融

                 Channel Shuffle操作:

                        ①将通道重组为一个n列矩阵

                        ②将矩阵转置

                        ③重新将其展平(Flatten)

                 Channel shuffle可以直接使用pytorch的api实现,且可微分、可导(能实现端到端的训练);同时不会引入额外的计算量

        ③网络结构

                Shuffle Block改进自ResNet的Bottleneck Block:

                        1.将1x1的降维和升维均改为组卷积

                        2.降维后引入channel Shuffle

                        3.将3x3的标准卷积替换为Depthwise卷积。

                下图所示为标准Shuffle Block(左侧为标准模块,右侧为下采样模块<Stride=2>)

                                

                 分组卷积组数不同,可用的卷积核个数不同(组数与可用卷积核数成正比

                Concat操作:将计算得到的特征图进行堆叠而不是诸元素相加

                网络构造:通常来说g=3是常用的ShuffleNet V1

                 超参数g可以用来控制分组组数;分组组数越高,正确率越高

三、ShuffleNet V2

        ①网络轻量化的准则

                1.输入输出通道相同时,内存占用量(MAC)最小(对1x1卷积而言)

                2.分组数过大的分组卷积会增大MAC

                3.碎片化操作对并行加速不友好

                4.逐元素操作带来的内存和耗时不可忽略

        ②ShuffleNet V2模块

                下图所示为基本模块(左图);下采样模块(右图)

                                               

                改进如下:

                        ①Channel Split操作:将输入通道一分为二分别分给残差连接和卷积网络

                        ②Concat操作:将计算得到的特征图进行堆叠而不是诸元素相加

                        ③1x1卷积不带分组卷积

                                 Channel Shuffle和Channel Split在代码中是一个操作

猜你喜欢

转载自blog.csdn.net/weixin_37878740/article/details/129176857