卷积神经网络中十大拍案叫绝的操作

1、卷积只能在同一组进行吗?

分组卷积,最早在AlexNet中出现,由于当时硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。
在这里插入图片描述
分组卷积的思想影响比较深远,当前一些轻量级的SOTA(State Of The Art)网络,都用到了分组卷积的操作,以节省计算量。

2、卷积核一定越大越好?

AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,receptive field(感受野)越大,看到的图片信息越多,因此获得的特征越好。但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是在VGG(最早使用)、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳。因此后来3×3卷积核被广泛应用在各种模型中。
在这里插入图片描述

3、每层卷积只能用一种尺寸的卷积核?

传统的层叠式网络,基本上都是一个个卷积层的堆叠,每层只用一个尺寸的卷积核。事实上,同一层feature map可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好。
在这里插入图片描述
如上图所示,一个输入的feature map分别同时经过1×1、3×3、5×5的卷积核的处理,得出的特征再组合起来,获得更佳的特征。但这个结构会存在一个严重的问题:参数量比单个卷积核要多很多,如此庞大的计算量会使得模型效率低下。

4、怎样才能减少卷积层参数量?

如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数。为了解决这个问题,往往向Inception结构中加入了一些1×1的卷积核。
在这里插入图片描述
加入1×1卷积核的Inception结构

在这里插入图片描述
第一种:256维的输入直接经过一个3×3×256的卷积层,输出一个256维的feature map。参数量为:256×3×3×256 = 589824
第二种:256维的输入先经过一个1×1×64的卷积层,再经过一个3×3×64的卷积层,最后经过一个1×1×256的卷积层,输出256维。参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69632
第二种操作参数量仅为第一种的九分之一

5、越深的网络就越难训练吗?

在这里插入图片描述
传统的卷积层层叠网络当层数加深时,网络的表现越来越差,是因为当层数加深时,梯度消散得越来越严重,以至于反向传播很难训练到浅层的网络。“残差网络”,使得梯度更容易地流动到浅层的网络当中去,而且这种“skip connection”能带来更多的好处。

6、卷积操作时必须同时考虑通道和区域吗?

在这里插入图片描述
一个2×2的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑。如果考虑把通道和空间区域分开,Xception网络就被发明出来。首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道feature maps之后,这时再对这批新的通道feature maps进行标准的1×1跨通道卷积操作。这种操作被称为 “DepthWise convolution”。

假设输入通道数为3,要求输出通道数为256。
第一种操作:一个3×3×256的卷积核。参数量为:3×3×3×256 = 6912
第二种操作:先对3个通道进行各自的卷积操作,再进行标准的1×1跨通道卷积操作,参数量为:3×3×3 + 3×1×1×256 = 795
第二种操作把第一种操作的参数量降低到九分之一

7、分组卷积能否对通道进行随机分组?

在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征。只能在最后时刻才融合不同组之间的特征,对模型的泛化性是不利的。
之后ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle,shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle,然后分到下一层组卷积当中,以此循环。
在这里插入图片描述

8、通道间的特征都是平等的吗?

在Inception、DenseNet或者ShuffleNet里面,我们对所有通道产生的特征都是不分权重直接结合的。
在这里插入图片描述
SEnet 结构。一组特征在上一层被输出,这时候分两条路线,第一条直接通过,第二条首先进行Squeeze操作,把每个通道2维的特征压缩成一个1维,从而得到一个特征通道向量(每个数字代表对应通道的特征)。然后进行Excitation操作,把这一列特征通道向量输入两个全连接层和sigmoid,建模出特征通道间的相关性,得到的输出其实就是每个通道对应的权重,把这些权重通过Scale乘法通道加权到原来的特征上(第一条路),这样就完成了特征通道的权重分配。

9、能否让固定大小的卷积核看到更大范围的区域?

标准的3×3卷积核只能看到对应区域3×3的大小.
在这里插入图片描述
卷积核大小依然是3×3,但是每个卷积点之间有1个空洞,也就是在绿色7×7区域里面,只有9个红色点位置作了卷积处理,其余点权重为0。这样即使卷积核大小不变,但它看到的区域变得更大了。

10、卷积核形状一定是矩形吗?

在这里插入图片描述
传统的卷积核一般都是长方形或正方形。MSRA提出卷积核的形状可以是变化的,变形的卷积核能让它只看感兴趣的图像区域 ,这样识别出来的特征更佳。

在这里插入图片描述
可以直接在原来的过滤器前面再加一层过滤器,这层过滤器学习的是下一层卷积核的位置偏移量(offset),这样只是增加了一层过滤器,或者直接把原网络中的某一层过滤器当成学习offset的过滤器,这样实际增加的计算量是很少,但能实现可变形卷积核,识别特征的效果更好。

卷积核方面:

(1)大卷积核用多个小卷积核代替;
(2)单一尺寸卷积核用多尺寸卷积核代替;
(3)固定形状卷积核趋于使用可变形卷积核;
(4)使用1×1卷积核。

卷积层通道方面:

(1)标准卷积用depthwise卷积代替;
(2)使用分组卷积;
(3)分组卷积前使用channel shuffle;
(4)通道加权计算。

卷积层连接方面:

(1)使用skip connection,让模型更深;
(2)densely connection,使每一层都融合上其它层的特征输出(DenseNet)

注意1:卷积核的大小对提取到的特征有什么影响呢?

卷积核越大,感受野就越大,得到的信息就多,特征越好。
卷积核越小,感受野就越小,局部信息多。
但是大卷积核计算量大,性能会相对较差。目前大多数是使用小卷积核,比如3×3卷积核,或者使用多个小卷积核代替大卷积核

注意2、大卷积核计算量大吗?

达到相同感受野的情况下,多个小卷积核代替大卷积核,使得参数减少,计算量也减小。
两个3×3的卷积核拥有和1个5×5的卷积核相同的感受野
在这里插入图片描述

参数量减少了:5×5-2×3×3=7个参数

参考资料
变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值