deconvolution
起初是看FCN图像分割论文的时候,看到论文中用到deconvolution和up-sampling,不是特别理解up-samping和deconv之间的关系,也不知道deconv是以一种怎么样计算过程完成的。所以就去搜了相关资料,同时了解了空洞卷积-dilated conv的原理,在此博客记录一下。
deconv(反卷积、转置卷积)
deconv和up-sampling是FCN图像分割网络中用到的两个扩大feature map尺寸的重要操作。因为在FCN全卷积网络中,其要实现的是一个图像分割的任务,在网络的前半部分,其通过卷积和池化层实现对输入图像的特征提取,一步步将feature map降到很小,然后对其每一个像素进行分类,在网络的后半段,FCN又通过up-samping将网络层前半段不同阶段的feature map进行上采样和反卷积操作(虽然FCN提到了deconv,但是其并没有用到,而是直接使用的up-sampling中的双线性插值直接对feature扩大几倍以达到恢复输入尺寸的效果),以将feature map复原到输入图像的尺寸大小,以此输出针对每一个像素分类后的分割图像。
很多人都将deconv反卷积称作转置卷积,但是好像也有说它们两者还是有一点区别,目前还不知道究竟有什么区别,所以我暂且先认为它俩的概念一致好了。
普通的卷积和池化
-
计算feature_map输出尺寸的公式也比较简单,如下所示:
output:卷积后输出feature map的尺寸大小
input:输入图像尺寸大小
padding:在输入图像周围补圈数,padding=1表示在输入图像周围加一圈0
kernel_size:卷积核的大小
stride:卷积核在输入图像作卷积时每一次卷积移动的步长 -
以图二为例:
input=5,padding=1,kernel_size=3,stride=2
output=(5+2x1-3)/2+1=3
- No padding,no strides 图一
- Padding,strides 图二