文章目录
- 1.(反)卷积
- (反)卷积原理
- (反)卷积过程
- 2. 上池化(Unpooling)
- 3. 上采样(Upsampling)
利用 CNN 做有关图像的任务时,肯定会遇到 需要从低分辨率图像恢复到到高分辨率图像 的问题。解决方法目前无非就是 1)插值,2)反卷积
一般 上采样 (upsamping) 就使用了插值法,包括 “最近邻插值”,“双线性插值”,“双三次插值”。这些方向好比时手工的特征工程,网络是不会对此有任何学习行为的。
如果想要让网络学习如何才能最优地进行上采样,就可以使用 转置卷积,转置卷积没有预先定义好的插值方法,而是具有可学习的参数。
1.(反)卷积
卷积(Convolution)的主要目的就是对事物进行特征提取,然后根据特征对其进行识别或决策。而 反卷积(Deconvolution)也叫做转置卷积(Transposed Convolution),其目的是恢复特征图的分辨率,一般用于图像分割任务中,需要恢复特征图到原图大小的情况。
(反)卷积原理
假设有一张 的输入矩阵(Input),现在要用 的卷积核(Kernel)对其进行卷积操作,无 padding,stride 为 1,容易知道输出矩阵(Output)是一个
卷积输出维度计算公式:
其中,input 为输入矩阵的大小,p 为 padding,k 为卷积核大小,s 为卷积步长。根据计算公式可知,卷积后输出大小为 。
具体的卷积过程是这样的:Kernel 每次覆盖在 Input 上进行元素级相乘再求和,就得到了 。
可以看出,卷积操作是 “一对多” 的过程,即 多个值对应一个值,从而达到提取特征的作用。
通常卷积操作会使得输入矩阵变小,如果想要保留原尺寸,只需要修改 pad 大小为
反过来,我们已经得到了 大小的输出矩阵(Output),现在要将其恢复到原本的
反卷积输出维度计算公式:
其中,input 为输入矩阵的大小(此时的 Input 是 大小的矩阵,即经过卷积得到的矩阵),p 为 padding,k 为卷积核大小,s 为卷积步长。根据计算公式可知,反卷积后输出大小为 。
(反)卷积过程
上面卷积核在输入矩阵上不停移动和计算的过程,在实际运算时,其实是将 卷积核重新排列为了 “卷积矩阵”、输入矩阵拉成了一列:如下是 的卷积核,将它重排列为 的矩阵,空余的地方用 0 来填充。这个 是根据输入矩阵的大小决定的,4 表示卷积核会在输入矩阵上进行卷积运算 4 次(也就是每一行都表示一次卷积运算),16 为输入矩阵的数据个数。
输入矩阵 Input 原本是 大小的矩阵,现在拉平为一个 的列向量,然后将卷积矩阵与输入矩阵的列向量进行相乘,得到 的列向量,然后 reshape 到 ,就得到了卷积结果。
反卷积就是卷积的逆操作,想要根据得到的 大小的输出矩阵恢复到 大小的输入矩阵,只需要将 shape 为 的 卷积矩阵 C 转置一下,得到 shape 为 的 转置卷积矩阵 C.T,然后用这个转置卷积矩阵与拉成列向量的 输出矩阵进行矩阵相乘,就可以得到一个 的列向量,同样将它 reshape 到 就 OK 啦。
需要注意的是,反卷积并不能还原出卷积之前的特征图,只能还原出卷积之前特征图的尺寸。
反卷积(Transposed Convolution)在搭建网络时主要有两个作用:
- 像素级分割,需要将图像尺寸恢复到原本的大小;
- 可视化特征,通过反卷积将网络中间层输出的 feature map 还原到像素空间,观察 feature map 对哪些 pattern 响应最大,即卷积结果受到哪部分的影响最大。
2. 上池化(Unpooling)
池化(Pooling)操作通常用于将输入特征图缩小一半,达到筛选重要特征的作用。
上池化(Unpooling) 是在 CNN 中常用的来表示 max pooling 的逆操作。这是论文《Visualizing and Understanding Convolutional Networks》中产生的思想,下图示意:
反卷积和上池化效果对比:
- b,d,f,h,j 为反卷积结果
- c,e,g,i 为上池化结果
3. 上采样(Upsampling)
在 FCN、U-net 等网络结构中,涉及到了上采样。上采样概念:上采样指的是任何可以让图像变成更高分辨率的技术。最简单的方式是 重采样 和 插值:将输入图片进行 rescale 到一个想要的尺寸,并计算每个点的像素值,使用如双线性插值等插值方法对其余点进行插值来完成上采样过程。
对比上采样和上池化的示意图,可以发现区别:
- 上采样(UnSampling)没有使用 MaxPooling 时的位置信息,而是直接通过内容的复制来扩充 Feature Map。
- 上池化(UnPooling)过程在 Maxpooling 时保留了最大值的位置信息,之后在上池化时使用该位置信息扩充 Feature Map,除最大值位置以外,其余位置补 0。