(FSRCNN)_Accelerating the Super-Resolution Convolutional Neural Network——超分辨率(三)

Accelerating the Super-Resolution Convolutional Neural Network

論文鏈接: Accelerating the Super-Resolution Convolutional Neural Network, ECCV2016

FSRCNN與SRCNN都是香港中文大學Dong Chao, Xiaoou Tang等人的工作。FSRCNN是對之前SRCNN的改進,主要在三個方面:一是在最后使用了一個反卷積層放大尺寸,因此可以直接將原始的低分辨率圖像輸入到網(wǎng)絡(luò)中,而不是像之前SRCNN那樣需要先通過bicubic方法放大尺寸。二是改變特征維數(shù),使用更小的卷積核和使用更多的映射層。三是可以共享其中的映射層,如果需要訓練不同上采樣倍率的模型,只需要fine-tuning最后的反卷積層。

由于FSRCNN不需要在網(wǎng)絡(luò)外部進行放大圖片尺寸的操作,同時通過添加收縮層和擴張層,將一個大層用一些小層來代替,因此FSRCNN與SRCNN相比有較大的速度提升。FSRCNN在訓練時也可以只fine-tuning最后的反卷積層,因此訓練速度也更快。FSRCNN與SCRNN的結(jié)構(gòu)對比如下圖所示。


在這里插入圖片描述

SRCNN和FSRCNN計算復雜度對比

SRCNN 的處理過程如下:

  1. 對輸入圖片利用雙立方采樣做上采樣,使得其分辨率為目標分辨率
  2. 然后分別利用 9x9, 1x1, 5x5 的卷積來提高圖片質(zhì)量。其中 1x1 卷積是用來把低分辨率(LR)圖像向量非線性映射為高分辨率 (HR) 圖像向量.
    計算復雜度為:
    O\left\{\left(f_{1}^{2} n_{1}+n_{1} f_{2}^{2} n_{2}+n_{2} f_{3}^{2}\right) S_{H R}\right\}
    計算復雜度和HR圖像大小成線性比例,SHR。HR圖像越大,復雜度越高。

FSRCNN 包含如下五個主要處理步驟:

  1. 特征提取:利用一個 5x5 卷積代替 SRCNN 中的雙立方差值
  2. 壓縮:利用 1x1 卷積把特征層從 d 壓縮為 s,其中 s 小于 d
  3. 非線性映射:多個 3x3 網(wǎng)絡(luò)層代替單個的寬網(wǎng)絡(luò)層
  4. 擴大: 1x1 卷積把特征層從 s 擴大為 d
  5. 反卷積: 利用 9x9 過濾器重建 HR 圖像

以上結(jié)構(gòu)就是 FSRCNN(d,s,m). 其計算復雜度如下:
O\left\{\left(25 d+s d+9 m s^{2}+d s+81 d\right) S_{L R}\right\}=O\left\{\left(9 m s^{2}+2 s d+106 d\right) S_{L R}\right\}

可見復雜度和 LR 圖像大小成線性比例,SLR,所以它的復雜度小于 SRCNN

網(wǎng)絡(luò)中激活函數(shù)是 PReLU. PReLU意為帶參數(shù)的ReLu,目的是比 ReLU 更好。
PReLU:對于每個卷積層之后的激活函數(shù),我們建議使用參數(shù)整流線性單元(PReLU)代替常用的整流線性單元(ReLU)。它們在負數(shù)部分的系數(shù)上是不同的。對于ReLU和PReLU,我們可以將一般激活函數(shù)定義為
f\left(x_{i}\right)=\max \left(x_{i}, 0\right)+a_{i} \min \left(0, x_{i}\right)

其中xi是第i個通道上激活f的輸入信號,并且 ai是負數(shù)部分的系數(shù)。 對于ReLU,參數(shù)ai固定為零,但對于PReLU是可學習的。 我們選擇PReLU主要是為了避免ReLU中零梯度引起的“死亡特征”。 然后我們可以充分利用所有參數(shù)來測試不同網(wǎng)絡(luò)設(shè)計的最大容量。 實驗表明,PReLU激活網(wǎng)絡(luò)的性能更穩(wěn)定。

代價函數(shù)是均方誤差(MSE):
\min _{\theta} \frac{1}{n} \sum_{i=1}^{n}\left\|F\left(Y_{s}^{i} ; \theta\right)-X^{i}\right\|_{2}^{2}

如何利用 1x1 卷積對網(wǎng)絡(luò)進行壓縮和擴大

假設(shè)我們在不使用 1x1 卷積的情況下運行 5x5 卷積,如下所示


在這里插入圖片描述

計算次數(shù) = (14x14x48)x(5x5x480) = 112.9M

如果使用 1x1 卷積:


在這里插入圖片描述

1x1 卷積計算次數(shù) = (14x14x16)x(1x1x480) = 1.5M
5x5 卷積計算此時 = (14x14x48)x(5x5x16) = 3.8M
兩者總共計算次數(shù) = 1.5M + 3.8M = 5.3M,比只使用 5x5 足足少了 112.9M 次計算。
因此在兩個卷積層之前使用 1x1 卷積來減少連接(參數(shù))。通過減少參數(shù),我們只需要更少的乘法和加法運算,最終加速網(wǎng)絡(luò)。這就是 FSRCNN 比 SRCNN 快的原因。

如何利用多個 3x3 卷積實現(xiàn)非線性映射

在這里插入圖片描述

如上圖所示通過使用2層 3x3 濾波器來覆蓋 5x5 濾波器的區(qū)域,讓參數(shù)數(shù)量變少。

1層 5x5 濾波器的參數(shù)數(shù)量 = 5x5 = 25
2層 3x3 濾波器的參數(shù)數(shù)量 = 3x3+3x3 = 18
參數(shù)量減少了28%。而更少的參數(shù)意味著網(wǎng)絡(luò)在訓練的時候可以更快的收斂,并減少過擬合問題。

實驗訓練數(shù)據(jù)

訓練集:之前傳統(tǒng)SR method基本都在Set91上訓練,但是對CNN來說,Set91并不夠去訓練大的網(wǎng)絡(luò)結(jié)構(gòu)。由于BSD500是jpeg格式,存在壓縮所以也不適合做訓練dataset。本文提出general-100 + Set91進行充當訓練集。并且進行數(shù)據(jù)增強,1)downscale 0.9, 0.8, 0.7 and 0.6。 2) Rotation 90,180,270。因此我們將會得到20倍的訓練數(shù)據(jù)。

在這里插入圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容