DeConvNet 中的 unpooling 和 deconvolution 如何工作

How does the unpooling and deconvolution work in DeConvNet

我一直在尝试了解反池化和反卷积在 DeConvNets 中的工作原理。

去池化

虽然在 unpooling 阶段,激活被恢复到最大激活选择的位置,这是有道理的,但剩下的激活呢?那些剩余的激活是否也需要恢复或以某种方式进行插值,或者只是在未合并的映射中填充为零。

解卷积

在卷积部分(即卷积层、Relu、池化)之后,通常会有多个特征图输出,这些特征图将被视为连续层的输入通道(Deconv..)。如何将这些特征图组合在一起以获得与原始输入具有相同分辨率的激活图?

1 去池化。

original paper unpooling 中,剩余的激活被清零。

2 解卷积。

反卷积层只是其对应的卷积层的转置。例如。如果 conv 层的形状是 [height, width, previous_layer_fms, next_layer_fms],那么 deconv 层的形状将是 [height, width, next_layer_fms, previous_layer_fms]。 conv 和 deconv 层的权重是共享的! (例如参见this paper

去池化

正如 etoropov 所写,您可以在 Zeiler 和 Ferguson 的 Visualizing and Understanding Convolutional Networks 中阅读关于 unpooling 的内容:

Unpooling: In the convnet, the max pooling operation is non-invertible, however we can obtain an approximate inverse by recording the locations of the maxima within each pooling region in a set of switch variables. In the deconvnet, the unpooling operation uses these switches to place the reconstructions from the layer above into appropriate locations, preserving the structure of the stimulus. See Fig. 1(bottom) for an illustration of the procedure.

解卷积

反卷积是这样工作的:

  • 您在每个像素周围添加填充
  • 你应用了一个卷积

例如,在下图中,原始蓝色图像用零(白色)填充,应用灰色卷积滤波器以获得绿色输出。

来源:What are deconvolutional layers?