Pytorch学习笔记(六)——1x1卷积核的理解

理解1x1卷积核

  • 一.1x1卷积核的提出
  • 二.1x1卷积核的应用
    • 2.1.多通道数据中1x1卷积的作用
    • 2.2.单通道数据中1x1卷积的作用
    • 2.3.应用非线性

一.1x1卷积核的提出

《Network in network》这篇经典论文可以说是最早使用1x1卷积核并做出相应解释的,是一篇非常经典并且影响深远的论文,之后的Googlenet和ResNet模型中的inception块和残差块均有借鉴其1x1卷积的设计。在这篇论文中,作者提出了NIN块,并在块中使用1x1卷积来增强模块的抽象表达能力,以现在的眼光来看,1x1卷积也可以实现了跨通道特征融合和通道升维降维。
在NiN中最重要的是NiN块,它由一个卷积层加两个充当全连接层的 1×1 卷积层串联而成。其中第一个卷积层的超参数可以自行设置,而第二和第三个卷积层的超参数一般是固定的。

NIN块的结构如下:
Pytorch学习笔记(六)——1x1卷积核的理解_第1张图片
其网络模型如下图,论文取名为Network in network很贴切,其相当于在卷积神经网络中嵌入了一个小型的神经网络,其实现便是通过1x1的卷积来替代全连接层。
第一个点:1x1卷积层可以用了替代全连接层。
Pytorch学习笔记(六)——1x1卷积核的理解_第2张图片
来看一些1x1卷积核的应用
残差块中的1x1卷积
Pytorch学习笔记(六)——1x1卷积核的理解_第3张图片
inception块中的1x1卷积

Pytorch学习笔记(六)——1x1卷积核的理解_第4张图片

二.1x1卷积核的应用

2.1.多通道数据中1x1卷积的作用

对有多个通道的图片数据,使用1x1卷积操作的常见的作用是对通道进行升维和降维,如下图所示。
第二个点:1x1卷积层可以进行通道数的升维与降维,调整网络层之间的通道数,减少参数量。

Pytorch学习笔记(六)——1x1卷积核的理解_第5张图片

对于一个有多个通道的图片数据,我们可以视作一个3维的立方体,其体积为
H ∗ W ∗ C H*W*C HWC
其中:
H 、 W 表 示 图 片 的 宽 度 和 高 C 表 示 通 道 数 H、W表示图片的宽度和高 \\C表示通道数 HWC
我们同样可以将一组卷积核视为一个立方体,其中H、W表示卷积核大小,C表示卷积核数量,其卷积过程如下图。

Pytorch学习笔记(六)——1x1卷积核的理解_第6张图片
现在,我们用动图来看一组卷积核具体是如何对多通道的图片进行降维操作的:
第一步,对每3个通道中的每一个使用一个卷积核进行卷积操作。
Pytorch学习笔记(六)——1x1卷积核的理解_第7张图片
第二步,将3个通道做完卷积之后得到的结果进行叠加,得到输出的特征图,将一个3个通道的图片降维为1个通道。
Pytorch学习笔记(六)——1x1卷积核的理解_第8张图片
其一维卷积可以看下图:
Pytorch学习笔记(六)——1x1卷积核的理解_第9张图片

这里值得注意的一点是,升维与降维不仅仅只是1x1的卷积可以做,其他尺寸的卷积都可以,但是1x1的卷积的优势在于减少了参数量。
1.用于降维降低输出的feature map数量,也就是通道数。
2.用于升维相当于用最少参数扩宽网络。
3.升维降维也可以视为跨通道信息交互。

Pytorch学习笔记(六)——1x1卷积核的理解_第10张图片

2.2.单通道数据中1x1卷积的作用

单通道数据中1x1卷积的作用是作为全连接层,之前关于NiN中已经讲解过了,不在赘述。
Pytorch学习笔记(六)——1x1卷积核的理解_第11张图片

Pytorch学习笔记(六)——1x1卷积核的理解_第12张图片

2.3.应用非线性

Pytorch学习笔记(六)——1x1卷积核的理解_第13张图片

参考
卷积神经网络中用1*1 卷积有什么作用或者好处呢?

你可能感兴趣的:(Pytorch学习笔记,cnn,计算机视觉,深度学习)