Skip to content

Conv layers

LianShuaiLong edited this page Jan 24, 2021 · 2 revisions

主要介绍应用在CNN中的各种卷积层

在深度学习中,卷积的目的是从输入中提取有用的特征。在图像处理中,卷积滤波器的选择范围非常广,每种类型的滤波器(比如Sobel算子、Canny算子等)都有助于从输入图像中提取不同的方面或者特征,比如边缘特征。

Standard Convolutions:

输入为单通道(channel=1)情况:

image

此时卷积层每个卷积核(也就是滤波器)的维度是$H_{kernel}*W_{kernel}$

输入为多通道(channel=n)情况:

image

此时卷积层每个卷积核的维度是$H_{kernel}*W_{kernel}*n$,图中黄色的就是一个卷积核

一个卷积核对应着一个输出channel(权值共享)

Pointwise Convolutions

也就是1x1卷积,本质上是Standard Convolutions中$H_{kernel}=1,W_{kernel}=1$的特殊情况,常用来改变输入维度($HWn$中的$n$),以减少计算量

image

常见于inception block和MBConv中

image

Grouped Convolutions

组卷积最开始出现在Alexnet中

image

分组就是将输入在channel维度进行分组,然后每个组内部进行卷积操作,最终将得到的组卷积的结果Concate到一起,得到输出的feature map。

Separable Convolutions

Separable Convolutions可以分为 Spatially-Separable-Convolutions(空间可分离卷积)和Depthwise-Separable-Convolutions(深度可分离卷积),目的都是为了减小标准卷积的计算量

空间可分离卷积是将一个$H_{kernel}*W_{kernel}$的卷积核分成$H_{kernel} * 1$和$1 * W_{kernel}$两个卷积核,过程如下图:

image

image

空间可分离卷积一般很少用,因为训练得到的标准卷积核很难等价拆分成$H_{kernel} * 1$和$1 *W_{kernel}$两个卷积核,注:sobel算子是一种空间可分离卷积算子

image

深度可分离卷积分为两步:

第一步是Depthwise Convolution: 独立地施加在每个通道的空间卷积

第二步是进行1x1 Pointwise Convolution

深度可分离卷积大量应用在mobilenet和Xception

Inception模块和可分离卷积的区别:

可分离卷积是先用Depthwise Convolution, 然后再使用1x1卷积;Inception中是先使用1x1 Convolution,然后再使用Depthwise Convolution。

深度可分离卷积实现的时候没有增加非线性特征(也就是使用激活函数)

可分离卷积的计算量约为标准卷积的$1\over H_{kernel} * W_{kernel}$