深入理解1*1卷积作用

时光毁灭记忆、已成空白 提交于 2020-12-28 09:32:51

1 . 前言

1*1 卷积在很多模型结构中都使用过, 例如最出名的Inception网络

在这里插入图片描述
其主要目的就是 进行一次1 × 1 的卷积来减少特征映射的深度.

在实际操作中, 对于1*1的卷积操作, 我们可以通过改变输出的out channel 来使得输出维度的变化,也就是降维和升维, 例如 112 * 112 * 3 经过一个一维卷积 当我们的out channel 设置为32时候, 输出为112 * 112 * 32

2. 二维卷积过程概述

因为1*1的卷积也是一个二维卷积, 所以我们可以先了解一下二维卷积是如何操作的

还是以112 * 112 * 3 的图片为例:

在这里插入图片描述
在图中, 高度 宽度 都是 112, 深度为3 , 我们经过一个3 * 3 的卷积,步长为1, padding 为1, out channel 为 3, 输出的图像还是 112 * 112 * 3, 具体计算的话可以自己画个55的图 过 33 的卷积来操作, 一般公式为 :

新维度 = (图片长 - 卷积核长 + 2 * padding )/ 步长

我们的卷积核的维度为 3 * 3 * 3(深度), 最后一维和图片本身的深度相同

一次卷积的过程如下:

  • 每一层的112*112 和 对应的 卷积核的 3 * 3 进行卷积

  • 每一个 channel卷积的结果进行求和

  • 最后加上偏置

  • 就得到 一个新的输出 我们前面计算过, 长和宽 维度 依然不变 112 * 112 也就是图中的yp,

每一个卷积核只得到一个yp, out channel 数 表示着 用多少不同的卷积核 做相同工作,每一个yp 就代表着一个channel(通道)
在这里插入图片描述
然后 out channel 则是对应 一共有多少个卷积核, 每一个卷积核操作都是和前面相同, 所以最终的output 是
112 * 112 * out channel


3. 1×1卷积 作用

在理解了二维卷积后, 我们就想一下, 1维卷积 因为是1*1 ,那么它的感受野就是 一个像素, 所以它没法感受到它旁边的像素,但是由于 我们前面讲过的 , 二维卷积有一个求和的过程,也就是将不同channel的卷积结果进行求和

在这里插入图片描述
1*1的卷积也不例外, 所以1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。

我借用知乎大佬的回答里面的图进行分析
在这里插入图片描述

我们可以脑海中走一遍 1 * 1 卷积的过程
实际上就是同一像素点, 不同 channel 的值进行 加权求和 加偏置

在这里插入图片描述
然后 重复out channel

虽然我们知道可以用1*1 来进行特征的升维和降维, 但是我们更加应该取深入的思考这样一些问题,才能对卷积更加的理解:

  • 先降维本质上是具体代表什么意义?
  • 1*1 的卷积, 也就是单个像素不同channel 进行加权的意义?
  • 应用于其他的特征降维的实际作用?

4. 参考资料

《神经网络与深度学习》 https://nndl.github.io/
卷积神经网络中用1*1 卷积有什么作用或者好处呢?

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!