上池化(unpooling),上采样(unsampling)和反
池化也叫下采样(down-sampling), 操作与普通卷积基本相同, 不过根据取最大值或平均值可分为最大池化和平均池化, 同时无反向传播过程(无需学习参数).
上池化, 上采样与反卷积上池化保留位置信息补0, 上采样不保留位置信息直接复制. 但二者均无反向传播过程(无需学习参数), 也就是对中间地带不采取过渡值只是简单处理.
图(a)表示上池化UnPooling的过程,特点是在池化Maxpooling的时候保留最大值的位置信息,之后在上池化UnPooling阶段使用该信息扩充Feature Map,除最大值位置以外,其余补0。
与之相对的是图(b),两者的区别在于上采样UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map。从图中即可看到两者结果的不同。
图(c)为反卷积的过程,反卷积是卷积的逆过程,又称作转置卷积(Transposed Convolution)。最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),而上池化和上采样是无反向传播过程的. 理论上反卷积可以实现UnPooling和unSampling,只要卷积核的参数设置的合理。
反卷积和卷积的关系
参考文章
https://blog.csdn.net/fate_fjh/article/details/52882134
反卷积=转置卷积
卷积计算和对应的反卷积操作,输入输出关系正好相反。如果不考虑通道,以卷积运算的反向运算来计算反卷积运算的话,我们甚至可以通过离散卷积的方法来求反卷积(这里只是为了说明,实际工作中不会这么做)。
图中蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图中的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。可以看到卷积后的图像是4X4,比原图2X2大了,我们还记1维卷积大小是n1+n2-1,这里原图是2X2,卷积核3X3,卷积后结果是4X4,与一维完全对应起来了(通过普通卷积后,新图像的大小跟原来一样,或者变小, 但一维卷积后是变大的)。其实这才是完整的卷积计算,其他比它小的卷积结果都是省去了部分像素的卷积。
这里,我们可以总结出full,same,valid三种卷积后图像大小的计算公式:
1.full: 滑动步长为1,图片大小为Input x Input,卷积核大小为KxK,卷积后图像大小:(Input+K-1) x (Input+K-1)
如上图, 滑动步长为1,图片大小为2x2,卷积核大小为3x3,卷积后图像大小:4x4
2.same: 滑动步长为1,图片大小为Input x Input,卷积核大小为KxK,卷积后图像大小:Input x Input
SAME时卷及前后图片大小不变, padding补0
3.valid:滑动步长为S,图片大小为Input x Input,卷积核大小为KxK,卷积后图像大小:((Input-K)/S+1) x ((Input-K)/S+1)
VALID时padding=0, 卷积核左上角和图片左上角对齐, 舍弃边缘部分的信息.
空洞卷积(微步卷积)
空洞卷积是针对图像语义分割问题中下采样(即池化操作)会降低图像分辨率,丢失信息而提出的一种卷积思路。空洞卷积通过对卷积核添加空洞来扩大感受野,感受野是指数级增长的。
空洞卷积并不增加参数量,多出的点给出的权值就是0,无需训练。
注: 此处指的就是空洞卷积. 空洞卷积是在卷积核元素之间塞入0的, 0的个数等于s-1, s为原卷积的步长(>1), 要引入新的超参数dilation而不是padding, 插0后stride从小数变为1
空洞卷积动图演示
蓝色表示输入,绿色表示输出
另外,微步卷积新的卷积核K = k+(k-1)*(dilation-1) = dilation*(k-1)+1,显然dilation=1就相当于一般意义上的卷积,所以说空洞卷积更具一般性,事实也证明如此,Caffe中就是实现了空洞卷积和转置卷积。
这里引入了一个新的超参数 d(dilation),(d - 1) 的值则为塞入的空格数,假定原来的卷积核大小为 k,那么塞入了 (d - 1) 个空格后的卷积核大小 n 为:
进而,假定输入空洞卷积的大小为 i,步长 为 s ,空洞卷积后特征图大小 o 的计算公式为: