【內容摘要】
本文深入解析卷積神經網絡中的轉置卷積(反卷積)技術,重點闡述標準卷積與轉置卷積的計算過程、轉置卷積的上采樣作用,以及其常見問題——棋盤效應的產生原因與解決方法,為圖像分割、超分辨率等任務提供理論支持。
關鍵詞: 轉置卷積 反卷積 棋盤效應 標準卷積 上采樣 卷積神經網絡
在卷積神經網絡(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]? ?= ?000?014?025? ?
-
(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]? ?= ?121?000??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=1n?Aik?Bkj?)(這里(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中實現上采樣的重要工具,但其引入的棋盤效應需特別關注。通過理解標準卷積與轉置卷積的數學本質,合理設計卷積核尺寸與步長,可有效規避棋盤效應,提升模型在語義分割、超分辨率等任務中的性能。