Transposed Convolution arithmetic (转置卷积算法,上采样)

当我们需要将4维空间映射到16维空间的时候,我们需要用到转置卷积 (Transposed convolution)。
1. No zero padding, unit strides, transposed

在4x4的输入上使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,零填充 (即 i = 4 , k = 3 , s = 1 , p = 0 i=4, k=3, s=1, p=0 )(上图为输入,下图为输出)。这个过程相当于在2x2的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 2x2的边界填充 (即 i = 2 , k = k , s = 1 , p = 2 i'=2, k'=k, s'=1, p'=2 )(下图为输入,上图为输出)。
在这种情况下, 卷积输入输出的关系为:  o = i + ( k 1 ) o^{'}=i^{'}+(k-1)

2. Zero padding, unit strides, transposed
在这里插入图片描述
在5x5的输入使用4x4的核(滤波器)进行转置卷积,其中使用单位步长,2x2的边界填充(即 i = 5 x 5 , k = 4 , s = 1 , p = 2 i=5x5, k=4, s=1, p=2 )(上图为输入,下图为输出)。这个过程相当于在6x6的输入上使用4x4的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即 i = 6 , k = k , s = 1 , p = 1 i'=6, k'=k, s'=1, p'=1 )(下图为输入,上图为输出)。
在这种情况下, 卷积输入输出的关系为:  o = i + ( k 1 ) 2 p   ( w h e r e   p = 2 ) o^{'}=i^{'}+(k-1)-2p\ (where\ p=2)

3. Half (same) padding, transposed
在这里插入图片描述
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,半填充(half padding, same padding )(即 i = 5 x 5 , k = 3 , s = 1 , p = 1 i=5x5, k=3, s=1, p=1 )(上图为输入,下图为输出)。这个过程相当于在6x6的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即 i = 5 , k = k , s = 1 , p = 1 i'=5, k'=k, s'=1, p'=1 )(下图为在这种情况下, 卷积输入输出的关系为:  o = i o^{'}=i^{'}

4. Full padding, transposed
在这里插入图片描述
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,全填充(full padding)(即 i = 5 x 5 , k = 3 , s = 1 , p = 2 i=5x5, k=3, s=1, p=2 )(上图为输入,下图为输出)。这个过程相当于在7x7的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即 i = 7 , k = k , s = 1 , p = 0 i'=7, k'=k, s'=1, p'=0 )(下图为在这种情况下, 卷积输入输出的关系为:  o = i ( k 1 ) o^{'}=i^{'}-(k-1)

5. No zero padding, non-unit strides, transposed
在这里插入图片描述
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,零填充(即 i = 5 × 5 , k = 3 , s = 2 × 2 , p = 0 i=5 \times 5, k=3, s=2 \times 2, p=0 )(上图为输入,下图为输出)。这个过程相当于在2x2的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 2x2的边界填充 (即 i = 2 , i ~ = 3 , k = k , s = 1 , p = 2 i'=2, \widetilde{i}^{'}=3, k'=k, s'=1, p'=2 )(下图为在这种情况下, 卷积输入输出的关系为:  o = s × ( i 1 ) + k o^{'}=s\times (i^{'}-1)+k (注意这里为s)

6. Zero padding, non-unit strides, transposed
在这里插入图片描述
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,1x1的边界填充(即 i = 5 × 5 , k = 3 , s = 2 × 2 , p = 1 i=5 \times 5, k=3, s=2 \times 2, p=1 )(上图为输入,下图为输出)。这个过程相当于在3x3的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即 i = 3 , i ~ = 5 , k = k , s = 1 , p = 1 i'=3, \widetilde{i}^{'}=5, k'=k, s'=1, p'=1 )(下图为在这种情况下, 卷积输入输出的关系为:  o = s × ( i 1 ) + k 2 p o^{'}=s\times (i^{'}-1)+k-2p (注意这里为s)

在这里插入图片描述
在6x6的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,1x1的边界填充(即 i = 5 × 6 , k = 3 , s = 2 × 2 , p = 1 i=5 \times 6, k=3, s=2 \times 2, p=1 )(上图为输入,下图为输出)。这个过程相当于在2x2的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充(其中额外的边界填充到下面和右面边界) (即 i = 3 , i ~ = 5 , a = 1 , k = k , s = 1 , p = 1 i'=3, \widetilde{i}^{'}=5, a=1, k'=k, s'=1, p'=1 )(下图为在这种情况下, 卷积输入输出的关系为:  o = s × ( i 1 ) + a + k 2 p o^{'}=s\times (i^{'}-1)+a+k-2p (注意这里为s)

以上为转置卷积以及卷积之间的过程。

参考:https://arxiv.org/abs/1603.07285

猜你喜欢

转载自blog.csdn.net/Hansry/article/details/82866062