卷积与反卷积理解

卷积:
卷积(Convolutional):卷积在图像处理领域被广泛的应用,像滤波、边缘检测、图片锐化等,都是通过不同的卷积核来实现的。在卷积神经网络中通过卷积操作可以提取图片中的特征,低层的卷积层可以提取到图片的一些边缘、线条、角等特征,高层的卷积能够从低层的卷积层中学到更复杂的特征,从而实现到图片的分类和识别。
比如一个4×4的输入,经过3×3的卷积核,得到2×2的输出,可以用矩阵相乘来表示卷积的过程,就是
C·X=Y。将卷积核按如下形式表示成4×16的矩阵C,输入为16×1,得到4×1的输出。
在这里插入图片描述
卷积与反卷积理解_第1张图片

什么是反卷积?
上采样(Upsample)
在应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(e.g.:图像的语义分割),这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。
反卷积(Transposed Convolution)
上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)。这里的反卷积,也叫转置卷积,可以按照来恢复输入特征的原始尺寸,但不能恢复原始数据。
它并不是正向卷积的完全逆过程,用一句话来解释:
反卷积是一种特殊的正向卷积,先按照一定的比例通过补0,来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
通过反卷积可以用来可视化卷积的过程,反卷积在GAN等领域中有着大量的应用。

卷积通过通过卷积核可以得到一个矩阵C,将C左乘输入矩阵X,即可得到输出矩阵Y,也就是经过卷积处理后的输出。
反卷积具体过程是将矩阵C转置后左乘卷积得到的输出矩阵Y得到X’。在步长、卷积核大小等参数变化时,输出结果也会随之变换。

以4×4卷积后得到2×2为例:
利用个其中卷积核可得到,矩阵C:
在这里插入图片描述

卷积与反卷积过程步骤:
1.卷积 s,k,p,i
得到输出尺寸o
o=(i+2p-k)/s+1,其中(i+2p—k) /s若不能整除则向下取整。
2.反卷积 i’(就是第一步的输出o)
p’=k-p-1
o’=s(i’-1) +a+k-2p,其中a=(i+k-2p) mod (s)
得到的o’就与之前卷积得到的i相同。

反卷积的不同形式:
通式:o’=s(i’-1) +a+k-2p,其中a=(i-k+2p) mod (s)
1.No zero padding、unit strides、transposed
p=0、s=1,所以a=0
o’=i’+k-1

2.Zero padding、unit strides、transposed
①Half padding,p=k/2=n (k=2n+1)
o’=i’-1+k-n=i’
②Full padding,p=k-1
o’=i’-1+k-2p=i’-1+k-2k+2=i’-k+1
3.No zero padding、non-unit strides、transposed
p=0,s≠1
带入得到o’=s(i’-1) +a+k,a=mod((i-k) /s)
因为p=0,所以i-k一定是s的整倍数,a=0
o’=s(i’-1) +k
卷积与反卷积理解_第2张图片
i = 5, k = 3, s = 2 and p = 0
i’= 2, i’’= 3, k’= k, s’ = 1 and p’ = 2

4.Zero padding、non-unit strides、transposed
p≠0,s≠1
o’=s(i’-1) +a+k-2p,其中a=mod((i+p-2k) /s)

卷积与反卷积理解_第3张图片
i = 5, k = 3, s = 2 and p = 1)
i’= 3, i’’ = 5, k’ = k, s’ = 1 and p’ = 1

卷积与反卷积理解_第4张图片
卷积与反卷积理解_第5张图片

你可能感兴趣的:(笔记,学习任务)