-
Notifications
You must be signed in to change notification settings - Fork 0
Conv layers
在深度学习中,卷积的目的是从输入中提取有用的特征。在图像处理中,卷积滤波器的选择范围非常广,每种类型的滤波器(比如Sobel算子、Canny算子等)都有助于从输入图像中提取不同的方面或者特征,比如边缘特征。
输入为单通道(channel=1)情况:
此时卷积层每个卷积核(也就是滤波器)的维度是$H_{kernel}*W_{kernel}$
输入为多通道(channel=n)情况:
此时卷积层每个卷积核的维度是$H_{kernel}*W_{kernel}*n$,图中黄色的就是一个卷积核
一个卷积核对应着一个输出channel(权值共享)
也就是1x1卷积,本质上是Standard Convolutions中$H_{kernel}=1,W_{kernel}=1$的特殊情况,常用来改变输入维度($HWn$中的$n$),以减少计算量
常见于inception block和MBConv中
组卷积最开始出现在Alexnet中
分组就是将输入在channel维度进行分组,然后每个组内部进行卷积操作,最终将得到的组卷积的结果Concate到一起,得到输出的feature map。
Separable Convolutions可以分为 Spatially-Separable-Convolutions(空间可分离卷积)和Depthwise-Separable-Convolutions(深度可分离卷积),目的都是为了减小标准卷积的计算量
空间可分离卷积是将一个$H_{kernel}*W_{kernel}$的卷积核分成$H_{kernel} * 1$和$1 * W_{kernel}$两个卷积核,过程如下图:
空间可分离卷积一般很少用,因为训练得到的标准卷积核很难等价拆分成$H_{kernel} * 1$和$1 *W_{kernel}$两个卷积核,注:sobel算子是一种空间可分离卷积算子
深度可分离卷积分为两步:
第一步是Depthwise Convolution: 独立地施加在每个通道的空间卷积
第二步是进行1x1 Pointwise Convolution
深度可分离卷积大量应用在mobilenet和Xception
Inception模块和可分离卷积的区别:
可分离卷积是先用Depthwise Convolution, 然后再使用1x1卷积;Inception中是先使用1x1 Convolution,然后再使用Depthwise Convolution。
深度可分离卷积实现的时候没有增加非线性特征(也就是使用激活函数)
可分离卷积的计算量约为标准卷积的$1\over H_{kernel} * W_{kernel}$