正文
卷积核的种类
除了普通的卷积操作外,也有一些变种,本文我们先介绍概念,对于每一种卷积的作用,我们会再出文章介绍。
- 转置卷积(反卷积)
一般正常卷积称为下采样,相反方向的转换称为上采样。转置卷积是相对正常卷积的相反操作,但它只恢复尺寸,因为卷积是一个不可逆操作。下面通过一个例子来说明转置卷积的具体操作过程。
假设一个3*3的卷积核,其输入矩阵是4*4的形状,经过步长为1,填充为0的卷积结果为:
转置卷积过程为,第一步,将卷积核矩阵重新排列为4*16形状:
第二步,将卷积结果重新排列为1维行向量:
第三步,将重排矩阵转置后与行向量转置后相乘,得到16个元素的1维列向量:
第四步,对列向量进行重排为4*4的矩阵,得到最终结果:
这样就通过转置卷积将2x2的矩阵反卷为一个4x4的矩阵,但从结果也可以看出反卷积的结果与原始输入信号不同。只是保留了位置信息,以及得到了想要的形状。
- 空洞卷积(扩张卷积)
空洞卷积也叫扩张卷积,指的是在正常的卷积核的点之间插入空洞。它是相对正常的离散卷积而言的,对于步长为2,填充为1的正常卷积如下图:
插入空洞后,卷积过程变为:
空洞卷积通过空洞率(dilation_rate)控制,上图是空洞率为2的情况。
- 可分离卷积
可分离卷积分为空间可分离卷积和深度可分离卷积。
空间可分离卷积有个前提条件,就是卷积核可以表示为两个向量的乘积:
这样,3x1的kennel首先与图像进行卷积,然后应用1x3的kennel。在执行相同操作时,可以减少参数数量。所以,空间可分离卷积节省了成本,但是一般不使用它做训练,而深度可分离卷积是更常见的形式。
深度可分离卷积包括两个步骤:深度卷积和1*1卷积.下面是一个深度可分离卷积的例子:
对于形状是7*7*3的输入层,有3个通道。
第一步在输入层上应用深度卷积。我们在2D-卷积中分别使用 3 个卷积核(每个filter的大小为3*3*1),每个卷积核仅对输入层的 1 个通道做卷积,这样的卷积每次都得到大小为5*5*1 的映射,之后再将这些映射堆叠在一起创建一个 5*5*3 的特征图:
第二步进行扩大深度。我们用大小为1*1*3的卷积核做1x1卷积。每个卷积核对5*5*3输入图像做卷积后都得到一个大小为5*5*1的特征图,重复做128次1*1卷积,就得到了最终的结果:
从本质上说,深度可分离卷积就是3D卷积kernels的分解(在深度上的分解),而空间可分离卷积就是2D卷积kernels的分解(在WH上的分解)
- 分组卷积
分组卷积,顾名思义,filters被拆分为不同的组,每一个组都负责具有一定深度的传统 2D 卷积的工作。
比如下面这张图就展示了分组卷积的原理:
上图表示的是被拆分为 2 个filters组的分组卷积。在每一组中,其深度仅为传统2D-卷积的一半——Din/2,而每个filters组都包含Dout/2个filters。第一个filters组(红色)对输入层的前半部分做卷积([:,:,0:Din/2]),第二个filters组(蓝色)对输入层的后半部分做卷积([:,:,Din/2:Din])。最终,每个filters组都输出了Dout/2个通道。整体上,两个组输出的通道数为Dout ,之后,我们再将这些通道堆叠到输出层.
分组卷积有三个优点:有效的训练;模型参数随着filters组数的增加而减少;可以提供比标准2D卷积更好的模型。
参考资料: