UpPooling/UpSampling/Deconvolution/Transposed convolution

在图像的语义分割领域, 经常需要将分辨率较低的特征图通过某些方式将其恢复到原图分辨率. 这个时候很多的网络结构中使用UpPooling, UpSamping, Deconvolution 等操作进行恢复. 这几个操作之前还是有一些区别的, 这里做个笔记记录具体的区别情况.

UpPooling

UpPooling/UpSampling/Deconvolution/Transposed convolution_第1张图片
(这里针对MaxPooling)可以看到UnPooling操作相当于在进行MaxPooling操作时候对局部最大值的出现位置进行了记录,然后在反向过程补全的时候将最大值填充回原处,然后剩余的地方全部填充零。

UpSampling

UpPooling/UpSampling/Deconvolution/Transposed convolution_第2张图片
(这里针对MaxPooling)与UnPooling操作不同的是UnSampling不需要记录最大值所在的位置,这个操作直接使用Pooling得到的最大值填充整个对应区域,不再考虑位置。

Deconvolution/Transposed convolution

反卷积也称为转置卷积,相当于卷积的逆操作。它和卷积的操作过程是类似的,只是分辨率的变换方向相反而已。和上面的UpPooling以及UpSampling最大的区别是反卷积是有参数(卷积核)需要进行学习才能得到的。
用下面几张图可以更加形象的了解具体的操作。
UpPooling/UpSampling/Deconvolution/Transposed convolution_第3张图片
上图展示的是一个普通的卷积操作(没有Padding没有Stride),分辨率从高变低。
UpPooling/UpSampling/Deconvolution/Transposed convolution_第4张图片
这里展示的是一个使用Padding实现的转置卷积操作,Stride为0,
UpPooling/UpSampling/Deconvolution/Transposed convolution_第5张图片
这里是一个使用Padding+stride为1进行的转置卷积操作。

这几个图片就可以很好的展示这几个操作的具体过程,直观而又容易理解。

文中卷积的动图来自这里,这个作者的动图真的做的超级漂亮!

你可能感兴趣的:(机器学习)