卷积神经网络进阶:转置卷积与棋盘效应详解
【内容摘要】
本文深入解析卷积神经网络中的转置卷积(反卷积)技术,重点阐述标准卷积与转置卷积的计算过程、转置卷积的上采样作用,以及其常见问题——棋盘效应的产生原因与解决方法,为图像分割、超分辨率等任务提供理论支持。
关键词: 转置卷积 反卷积 棋盘效应 标准卷积 上采样 卷积神经网络
在卷积神经网络(CNN)中,转置卷积(Transposed Convolution,又称反卷积Deconvolution)是实现特征图上采样的关键技术,广泛应用于语义分割、超分辨率等需要恢复空间分辨率的任务中。本文将从标准卷积的计算原理出发,详细解析转置卷积的操作过程,并重点讨论其常见问题——棋盘效应的产生机制与解决方法。
一、标准卷积的计算过程
要理解转置卷积,首先需要明确标准卷积的运算方式。标准卷积是通过卷积核对输入特征图进行滑窗点乘求和的过程,其核心步骤包括卷积核旋转(通常为180°)、中心对齐与局部区域计算。
以图1所示的标准卷积输出计算为例,输入为一个3×3的像素矩阵,卷积核为3×3的矩阵(值为[-1,-2,-1;0,0, 0;1,2, 1])。计算左上角(第1行第1列)像素的卷积值时,需将卷积核旋转180°后与输入矩阵的左上角3×3区域对齐,逐元素相乘后求和:
-
(x)矩阵和(h)矩阵
-
(x)矩阵:
X = [ x [ − 1 , − 1 ] x [ 0 , − 1 ] x [ 1 , − 1 ] x [ − 1 , 0 ] x [ 0 , 0 ] x [ 1 , 0 ] x [ − 1 , 1 ] x [ 0 , 1 ] x [ 1 , 1 ] ] = [ 0 0 0 0 1 2 0 4 5 ] X=\begin{bmatrix} x[-1,-1]&x[0,-1]&x[1,-1]\\ x[-1,0]&x[0,0]&x[1,0]\\ x[-1,1]&x[0,1]&x[1,1] \end{bmatrix}=\begin{bmatrix} 0&0&0\\ 0&1&2\\ 0&4&5 \end{bmatrix} X= x[−1,−1]x[−1,0]x[−1,1]x[0,−1]x[0,0]x[0,1]x[1,−1]x[1,0]x[1,1] = 000014025
-
(h)矩阵:
H = [ h [ 1 , 1 ] h [ 1 , 0 ] h [ 1 , − 1 ] h [ 0 , 1 ] h [ 0 , 0 ] h [ 0 , − 1 ] h [ − 1 , 1 ] h [ − 1 , 0 ] h [ − 1 , − 1 ] ] = [ 1 0 − 1 2 0 − 2 1 0 − 1 ] H=\begin{bmatrix} h[1,1]&h[1,0]&h[1,-1]\\ h[0,1]&h[0,0]&h[0,-1]\\ h[-1,1]&h[-1,0]&h[-1,-1] \end{bmatrix}=\begin{bmatrix} 1&0& - 1\\ 2&0& - 2\\ 1&0& - 1 \end{bmatrix} H= h[1,1]h[0,1]h[−1,1]h[1,0]h[0,0]h[−1,0]h[1,−1]h[0,−1]h[−1,−1] = 121000−1−2−1
-
-
矩阵运算过程
- 这里计算(y[0,0])相当于计算矩阵(X)和(H)的一种特殊卷积形式(在这种小矩阵情况下类似矩阵乘法的元素对应相乘再求和),从矩阵乘法角度看,可看作是对矩阵元素对应相乘后求和。
- 按照矩阵乘法规则( C i j = ∑ k = 1 n A i k B k j C_{ij}=\sum_{k = 1}^{n}A_{ik}B_{kj} Cij=∑k=1nAikBkj)(这里(n = 3) ),对于(y[0,0]),它等于(X)和(H)对应元素乘积之和。
- 具体计算:
y [ 0 , 0 ] = X ⋅ H T = x [ − 1 , − 1 ] ⋅ h [ 1 , 1 ] + x [ 0 , − 1 ] ⋅ h [ 0 , 1 ] + x [ 1 , − 1 ] ⋅ h [ − 1 , 1 ] + x [ − 1 , 0 ] ⋅ h [ 1 , 0 ] + x [ 0 , 0 ] ⋅ h [ 0 , 0 ] + x [ 1 , 0 ] ⋅ h [ − 1 , 0 ] + x [ − 1 , 1 ] ⋅ h [ 1 , − 1 ] + x [ 0 , 1 ] ⋅ h [ 0 , − 1 ] + x [ 1 , 1 ] ⋅ h [ − 1 , − 1 ] = 0 × 1 + 0 × 2 + 0 × 1 + 0 × 0 + 1 × 0 + 2 × 0 + 0 × ( − 1 ) + 4 × ( − 2 ) + 5 × ( − 1 ) \begin{align*} y[0,0]=X \cdot\ H^T&=x[-1,-1]\cdot h[1,1]+x[0,-1]\cdot h[0,1]+x[1,-1]\cdot h[-1,1]\\ &+x[-1,0]\cdot h[1,0]+x[0,0]\cdot h[0,0]+x[1,0]\cdot h[-1,0]\\ &+x[-1,1]\cdot h[1,-1]+x[0,1]\cdot h[0,-1]+x[1,1]\cdot h[-1,-1]\\ &=0\times1 + 0\times2+0\times1+0\times0 + 1\times0+2\times0+0\times(-1)+4\times(-2)+5\times(-1) \end{align*} y[0,0]=X⋅ HT=x[−1,−1]⋅h[1,1]+x[0,−1]⋅h[0,1]+x[1,−1]⋅h[−1,1]+x[−1,0]⋅h[1,0]+x[0,0]⋅h[0,0]+x[1,0]⋅h[−1,0]+x[−1,1]⋅h[1,−1]+x[0,1]⋅h[0,−1]+x[1,1]⋅h[−1,−1]=0×1+0×2+0×1+0×0+1×0+2×0+0×(−1)+4×(−2)+5×(−1)
通过滑动卷积核(步长为1),最终得到3×3的输出特征图(图2为更直观的卷积值计算过程示意图)。
图1:标准卷积输出计算
图2:更直观的卷积值计算过程示意图
二、转置卷积的操作原理
转置卷积的核心目标是将小尺寸的特征图上采样为大尺寸特征图,其名称源于其数学本质是标准卷积的转置操作(即矩阵运算中的转置)。以下通过具体示例说明其计算过程。
假设输入特征图大小为2×2,卷积核大小为4×4,滑动步长为3,输出特征图大小可通过公式计算:
o u t = ( i n − 1 ) × s + k out = (in-1)×s + k out=(in−1)×s+k
其中,in为输入大小,s为步长,k为卷积核大小。代入数值得:
o u t = ( 2 − 1 ) × 3 + 4 = 7 out = (2-1)×3 + 4 = 7 out=(2−1)×3+4=7
即输出特征图为7×7。
转置卷积的具体步骤如下(图3为图像的转置卷积过程示意图):
- 全卷积展开:输入特征图的每个像素独立进行全卷积(即填充后卷积),每个像素生成一个4×4的特征图(大小为1+4-1=4)。输入有4个像素,因此生成4个4×4的特征图。
- 步长叠加:将4个特征图按步长3进行叠加,重叠区域的像素值相加。例如,输出的第1行第4列像素由第一个特征图的第1行第4列与第二个特征图的第1行第1列相加得到。
图3:图像的转置卷积过程
三、棋盘效应的产生与解决
转置卷积虽能有效上采样,但常伴随“棋盘效应”(Checkerboard Artifacts),即输出图像中出现类似棋盘格的不均匀色块(图4为棋盘效应示意图)。
图4:棋盘效应示意图
(一)产生原因
棋盘效应的本质是卷积核大小无法被步长整除时的不均匀重叠。以图5为例,当卷积步长为2,卷积核尺寸为3或5时,输出像素接收到的输入信息量不一致:
- 若卷积核尺寸能被步长整除(如步长2、核尺寸4),输出像素的信息重叠均匀,无棋盘效应;
- 若无法整除(如步长2、核尺寸3),相邻像素的信息重叠量不同,导致局部颜色深浅不一。
图5:卷积步长改为2时的棋盘效应示意图
(二)解决方法
为减轻或避免棋盘效应,可采用以下策略:
- 匹配核尺寸与步长:确保卷积核大小能被步长整除,例如步长2时选择核尺寸4,避免不均匀重叠;
- 使用步长1的转置卷积:步长为1时,卷积核的重叠区域均匀,可有效减少棋盘效应;
- 替代上采样方法:如采用双线性插值、最近邻插值等传统上采样方法,或结合转置卷积与像素重组(Pixel Shuffle)技术。
四、总结
转置卷积是CNN中实现上采样的重要工具,但其引入的棋盘效应需特别关注。通过理解标准卷积与转置卷积的数学本质,合理设计卷积核尺寸与步长,可有效规避棋盘效应,提升模型在语义分割、超分辨率等任务中的性能。