RCAN——Image Super-Resolution Using Very Deep Residual Channel Attention Networks
1. 摘要
在圖像超分辨領域,卷積神經網絡的深度非常重要,但過深的網絡卻難以訓練。低分辨率的輸入以及特征包含豐富的低頻信息,但卻在通道間被平等對待,因此阻礙了網絡的表示能力。
為了解決上述問題,作者提出了一個深度殘差通道註意力網絡(RCAN)。特別地,作者設計了一個殘差中的殘差(RIR)結構來構造深層網絡,每個 RIR 結構由數個殘差組(RG)以及長跳躍連接(LSC)組成,每個 RG 則包含一些殘差塊和短跳躍連接(SSC)。
RIR 結構允許豐富的低頻信息通過多個跳躍連接直接進行傳播,使主網絡專註於學習高頻信息。此外,我們還提出了一種通道註意力機制(CA),通過考慮通道之間的相互依賴性來自適應地重新調整特征。
2. 介紹
網絡的深度在許多視覺識別任務中展示了非常重要的作用,特別是在 ResNet 引入殘差塊之後,最近許多圖像超分辨效果的重大提升都是基於網絡表示的深度來改進的。
但是,另一方面,現在的大多數 CNN 都平等對待特征的每一個通道,這無疑缺少處理不同類型信息的靈活度。圖像超分辨是為了盡可能多地恢復高頻信息,而低分辨率的圖片卻包含著許多可以直接被傳播到輸出的低頻信息,因此,特征的所有通道如果被平等對待則會使網絡缺乏辨別學習能力。
基於上面的分析,作者提出了一個 RIR(Residual In Residual)架構,其中 RG(Residual Group)作為基本模塊,LSC(Long Skip Connection)則用來進行粗略的殘差學習,在每個 RG 內部則疊加數個簡單的殘差塊和 SSC(Short Skip Connection)。LSC、SSC 和殘差塊內部的短連接可以允許豐富的低頻信息直接通過恒等映射向後傳播,這可以保證信息的流動,加速網絡的訓練。
進一步,作者提出了通道註意力(Channel Attention)機制,通過對特征通道之間的相互依賴性建模來自適應地重新縮放每個通道的特征。實驗證明,這種機制允許網絡專註於更有用的信道並增強辨別學習能力。
3. 網絡結構
3.1. CA
如上圖所示,輸入是一個 H×W×C 的特征,我們先進行一個空間的全局平均池化得到一個 1×1×C 的通道描述。接著,再經過一個下采樣層和一個上采樣層得到每一個通道的權重系數,將權重系數和原來的特征相乘即可得到縮放後的新特征,整個過程實際上就是對不同通道的特征重新進行了加權分配。
其中,下采樣和上采樣層都利用 1×1 的卷積來實現,下采樣層的通道數減少 r 倍,激活函數為 Relu,上采樣層的激活函數為 Sigmoid。在論文中,作者采用的通道數 C=64,r = 16。
3.2. RCAB
RCAB 就是將 CA 和殘差思想融合在一起。
輸入一個特征 input,我們首先進行一個卷積-Relu-卷積操作得到 f,然後 f 再經過一個 CA 模塊進行重新縮放得到 x,最後將 x 和 input 相加得到輸出特征。其中,卷積操作都采用 3×3 的卷積核。
RCAB 的一個 TensorFlow 實現如下所示:
def RCAB(input, reduction):
"""
@Image super-resolution using very deep residual channel attention networks
Residual Channel Attention Block
"""
batch, height, width, channel = input.get_shape() # (B, W, H, C)
f = tf.layers.conv2d(input, channel, 3, padding='same', activation=tf.nn.relu) # (B, W, H, C)
f = tf.layers.conv2d(f, channel, 3, padding='same') # (B, W, H, C)
x = tf.reduce_mean(f, axis=(1, 2), keepdims=True) # (B, 1, 1, C)
x = tf.layers.conv2d(x, channel // reduction, 1, activation=tf.nn.relu) # (B, 1, 1, C // r)
x = tf.layers.conv2d(x, channel, 1, activation=tf.nn.sigmoid) # (B, 1, 1, C)
x = tf.multiply(f, x) # (B, W, H, C)
x = tf.add(input, x)
return x
3.3. RG
一個 RG 則由 B 個 RCAB、一個卷積層和一個 SSC 組成,在本文中,B 取 20。
3.4. RCAN
輸入一個低分辨率圖片,先經過一個 3×3 的卷積提取特征 F,然後經過一個 RIR 模塊:包含 10 個 RG、一個 3×3 的卷積和一個 LSC,最後是一個上采樣層和一個 3×3 的卷積層,上采樣層采取 ESPCNN。網絡的損失函數是 L1 損失。
4. 實驗結果
可以看到,如果移除 LSC 和 SSC 的話,無論有沒有引入 CA 實驗結果都很差,而添加這些跳躍連接後,模型的整體性能都會有所提升,說明 LSC 和 SSC 非常有效。同時,在同樣的條件下,引入 CA 後模型性能也有所提升,驗證了註意力機制的有效性。
在幾個數據集上的測試結果,也表明 RCAN 取得了比以往方法更好的效果。如果采用幾個模型集成的話,效果還能再提升,如上面 RCAN+ 所示。
一個主觀的超分辨效果如下所示,可以看到 RCAN 恢復出了更多的細節和紋理。
獲取更多精彩,請關註「seniusen」!
RCAN——Image Super-Resolution Using Very Deep Residual Channel Attention Networks