五、卷积神经网络CNN5(卷积相关问题1)

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

传统的层叠式网络,基本上都是一个个卷积层的堆叠,每层只用一个尺寸的卷积核,例如VGG结构中使用了大量的3×3卷积层。事实上,同一层 feature map 可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,谷歌的 GoogLeNet,或者说 Inception 系列的网络,就使用了多个卷积核的结构:

五、卷积神经网络CNN5(卷积相关问题1)_第1张图片

如上图所示,一个输入的feature map分别同时经过 1×1、3×3、5×5的卷积核的处理, 得出的特征再组合起来,获得更佳的特征。

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

发明 GoogleNet 的团队发现,如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数,受到 Network In Network 中 1×1 卷积核的启发,为了解决这个问题,他们往Inception结构中加入了一些 1×1 的卷积核,如图所示

五、卷积神经网络CNN5(卷积相关问题1)_第2张图片

 加入 1×1 卷积核的 Inception 结构

五、卷积神经网络CNN5(卷积相关问题1)_第3张图片

根据上图,我们来做个对比计算,假设输入 feature map 的维度为 256 维,要求输出维度也是 256 维。有以下两种操作:

(1)256 维的输入直接经过一个 3×3×256 的卷积层,输出一个 256 维的 feature map,那么参数量为:256×3×3×256 = 589,824

(2)256 维的输入先经过一个 1×1×64 的卷积层,再经过一个 3×3×64 的卷积层,最后经过一个 1×1×256的卷积层,输出256维,参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一种操作的参数量降低到九分之一!

1×1 卷积核也被认为是影响深远的操作,往后大型的网络为了降低参数量都会应用上 1×1 卷积核.

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

五、卷积神经网络CNN5(卷积相关问题1)_第4张图片

标准的卷积过程可以看上图,一个 2×2 的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道和空间区域分开考虑?

五、卷积神经网络CNN5(卷积相关问题1)_第5张图片

Xception网络就是基于以上的问题发明而来。我们首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道feature maps之后,这时再对这批新的通道feature maps 进行标准的 1×1 跨通道卷积操作。

这种操作被称为 “DepthWise convolution” ,缩写“DW”。这种操作是相当有效的,在imagenet 1000 类分类任务中已经超过了InceptionV3的表现, 而且也同时减少了大量的参数,我们来算一算,假设输入通道数为 3,要求输出通道数为 256, 两种做法:

1. 直接接一个 3×3×256 的卷积核,参数量为:3×3×3×256 = 6,912

2. DW 操作,分两步完成,参数量为:3×3×3 + 3×1×1×256 = 795,又把参数量降低到九分之一!

因此,一个depthwise操作比标准的卷积操作降低不少的参数量,同时论文中指出这个模 型得到了更好的分类效果。

你可能感兴趣的:(深度学习(上),cnn,深度学习,神经网络)