反卷积 deconvolution
在应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(e.g.图像的语义分割),这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)。
反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:
反卷积是一种特殊的正向卷积,先按照一定的比例通过补 来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
4x4的输入,卷积Kernel为3x3, 没有Padding / Stride, 则输出为2x2。
输入矩阵可展开为16维向量,记作X
输出矩阵可展开为4维向量,记作Y
则有Y=CX
通过推导,我们可以得到稀疏矩阵C
反卷积的操作就是要对这个矩阵运算过程进行逆运算,即通过C和Y得到X。我们能很轻易的得到计算的过程,即为反卷积的操作:
空洞卷积 dilated convolution
图中(a)就是普通的3x3卷积核,也叫3x3的1-dilated conv。
图中(b)发现在(a)的卷积核的红点中间有1个空洞,即空洞=1,我们称之为3x3的2-dilated conv。
图中(c)的卷积核的红点中间有3个空洞,即空洞=3,我们称之为3x3的4-dilated conv。
空洞卷积的好处:
- 扩大感受野:
- 在deep net中为了增加感受野且降低计算量,总要进行降采样(pooling或s2/conv),这样虽然可以增加感受野,但空间分辨率降低了。为了能不丢失分辨率,且仍然扩大感受野,可以使用空洞卷积。
- 结合3x3的1-dilated conv和3x3的2-dilated conv,我们的感受野就可以扩大到7x7,即图中(b)绿色部分。而传统的叠加2层的3x3conv,只有5x5的感受野
- 结合3x3的1-dilated conv、3x3的2-dilated conv、3x3的4-dilated conv,感受野扩大到15x15,即图中(c)绿色部分。而传统的叠加3层的3x3conv,只有7x7的感受野
- 通过上面的例子我们发现,通过叠加dilated conv,感受野呈现指数级的增加。
- 捕获多尺度上下文信息:空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息。
因果卷积 Causal Convolutions
因果卷积,是一维卷积的一种应用。对于时间序列来说,使用核大小是2的一维卷积,如果我们想考虑前面的5个时间点,即感受野是5,那我们可以堆积4个卷积核为2的1维卷积层:
但如果想要考虑之前1000个时间点呢?视野域要是1000,那意味着要999层卷积,计算量太过于巨大,所以引入了膨胀因果卷积,即上面说到的空洞卷积。
比如下图所示的第1个隐藏层就是2-dilated的卷积核为2的1维卷积层,第2个隐藏层是4-dilated的卷积核为2的1维卷积层,第3个隐藏层是8-dilated的卷积核为2的1维卷积层。这样output的感受野可以达到16。
图卷积
见https://blog.csdn.net/jzwei023/article/details/115025343?spm=1001.2014.3001.5501