1. 摘要
在圖像超分辨領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)的深度非常重要,但過深的網(wǎng)絡(luò)卻難以訓(xùn)練。低分辨率的輸入以及特征包含豐富的低頻信息,但卻在通道間被平等對(duì)待,因此阻礙了網(wǎng)絡(luò)的表示能力。
為了解決上述問題,作者提出了一個(gè)深度殘差通道注意力網(wǎng)絡(luò)(RCAN)。特別地,作者設(shè)計(jì)了一個(gè)殘差中的殘差(RIR)結(jié)構(gòu)來構(gòu)造深層網(wǎng)絡(luò),每個(gè) RIR 結(jié)構(gòu)由數(shù)個(gè)殘差組(RG)以及長跳躍連接(LSC)組成,每個(gè) RG 則包含一些殘差塊和短跳躍連接(SSC)。
RIR 結(jié)構(gòu)允許豐富的低頻信息通過多個(gè)跳躍連接直接進(jìn)行傳播,使主網(wǎng)絡(luò)專注于學(xué)習(xí)高頻信息。此外,我們還提出了一種通道注意力機(jī)制(CA),通過考慮通道之間的相互依賴性來自適應(yīng)地重新調(diào)整特征。
2. 介紹
網(wǎng)絡(luò)的深度在許多視覺識(shí)別任務(wù)中展示了非常重要的作用,特別是在 ResNet 引入殘差塊之后,最近許多圖像超分辨效果的重大提升都是基于網(wǎng)絡(luò)表示的深度來改進(jìn)的。
但是,另一方面,現(xiàn)在的大多數(shù) CNN 都平等對(duì)待特征的每一個(gè)通道,這無疑缺少處理不同類型信息的靈活度。圖像超分辨是為了盡可能多地恢復(fù)高頻信息,而低分辨率的圖片卻包含著許多可以直接被傳播到輸出的低頻信息,因此,特征的所有通道如果被平等對(duì)待則會(huì)使網(wǎng)絡(luò)缺乏辨別學(xué)習(xí)能力。
基于上面的分析,作者提出了一個(gè) RIR(Residual In Residual)架構(gòu),其中 RG(Residual Group)作為基本模塊,LSC(Long Skip Connection)則用來進(jìn)行粗略的殘差學(xué)習(xí),在每個(gè) RG 內(nèi)部則疊加數(shù)個(gè)簡單的殘差塊和 SSC(Short Skip Connection)。LSC、SSC 和殘差塊內(nèi)部的短連接可以允許豐富的低頻信息直接通過恒等映射向后傳播,這可以保證信息的流動(dòng),加速網(wǎng)絡(luò)的訓(xùn)練。
進(jìn)一步,作者提出了通道注意力(Channel Attention)機(jī)制,通過對(duì)特征通道之間的相互依賴性建模來自適應(yīng)地重新縮放每個(gè)通道的特征。實(shí)驗(yàn)證明,這種機(jī)制允許網(wǎng)絡(luò)專注于更有用的信道并增強(qiáng)辨別學(xué)習(xí)能力。
3. 網(wǎng)絡(luò)結(jié)構(gòu)
3.1. CA

如上圖所示,輸入是一個(gè) H×W×C 的特征,我們先進(jìn)行一個(gè)空間的全局平均池化得到一個(gè) 1×1×C 的通道描述。接著,再經(jīng)過一個(gè)下采樣層和一個(gè)上采樣層得到每一個(gè)通道的權(quán)重系數(shù),將權(quán)重系數(shù)和原來的特征相乘即可得到縮放后的新特征,整個(gè)過程實(shí)際上就是對(duì)不同通道的特征重新進(jìn)行了加權(quán)分配。
其中,下采樣和上采樣層都利用 1×1 的卷積來實(shí)現(xiàn),下采樣層的通道數(shù)減少 r 倍,激活函數(shù)為 Relu,上采樣層的激活函數(shù)為 Sigmoid。在論文中,作者采用的通道數(shù) C=64,r = 16。
3.2. RCAB
RCAB 就是將 CA 和殘差思想融合在一起。

輸入一個(gè)特征 input,我們首先進(jìn)行一個(gè)卷積-Relu-卷積操作得到 f,然后 f 再經(jīng)過一個(gè) CA 模塊進(jìn)行重新縮放得到 x,最后將 x 和 input 相加得到輸出特征。其中,卷積操作都采用 3×3 的卷積核。
RCAB 的一個(gè) TensorFlow 實(shí)現(xiàn)如下所示:
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

一個(gè) RG 則由 B 個(gè) RCAB、一個(gè)卷積層和一個(gè) SSC 組成,在本文中,B 取 20。
3.4. RCAN

輸入一個(gè)低分辨率圖片,先經(jīng)過一個(gè) 3×3 的卷積提取特征 F,然后經(jīng)過一個(gè) RIR 模塊:包含 10 個(gè) RG、一個(gè) 3×3 的卷積和一個(gè) LSC,最后是一個(gè)上采樣層和一個(gè) 3×3 的卷積層,上采樣層采取 ESPCNN。網(wǎng)絡(luò)的損失函數(shù)是 L1 損失。
4. 實(shí)驗(yàn)結(jié)果

可以看到,如果移除 LSC 和 SSC 的話,無論有沒有引入 CA 實(shí)驗(yàn)結(jié)果都很差,而添加這些跳躍連接后,模型的整體性能都會(huì)有所提升,說明 LSC 和 SSC 非常有效。同時(shí),在同樣的條件下,引入 CA 后模型性能也有所提升,驗(yàn)證了注意力機(jī)制的有效性。

在幾個(gè)數(shù)據(jù)集上的測試結(jié)果,也表明 RCAN 取得了比以往方法更好的效果。如果采用幾個(gè)模型集成的話,效果還能再提升,如上面 RCAN+ 所示。